﻿/* Sign-in shell: no sidebar, no tab strip, nothing to navigate to yet. */
.auth-shell {
    min-height: 100vh;
    display: grid;
    grid-template-rows: auto 1fr;
    gap: 8px;
    padding: 26px clamp(20px, 5vw, 64px) 48px;
}

.auth-shell .brand { display: inline-flex; align-items: center; gap: 12px; width: max-content; color: #173d35; text-decoration: none; }
.auth-shell .brand-mark { display: grid; place-items: center; width: 42px; height: 42px; border-radius: 12px; background: #173d35; color: #f5d4a9; font-weight: 800; }
.auth-shell .brand-name strong { display: block; font-size: 1.15rem; }
.auth-shell .brand-name small { display: block; color: var(--cor-texto-fraco); font-size: .72rem; }
.auth-shell main { display: grid; align-content: center; }

.auth-shell .auth-card { margin: 0 auto; }
.auth-shell .standalone-panel { padding: 0; }
.auth-shell .auth-card .ui-hint { margin-top: var(--e-1); }

/* Editing windows, entry grids, settings hub and the unsaved-changes signals. */

.dirty-dot, .tab .dirty-dot {
    display: inline-block;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: #d79a52;
    flex: 0 0 auto;
}

.tab .dirty-dot { margin-left: 7px; }
.tab.is-dirty .tab-title { font-style: italic; }

.close-guard {
    position: absolute;
    top: 48px;
    right: 14px;
    z-index: 40;
    display: grid;
    gap: 11px;
    width: min(420px, calc(100vw - 28px));
    padding: 15px 17px;
    border: 1px solid #ecd7a8;
    border-radius: 13px;
    background: #fffaf1;
    box-shadow: 0 18px 45px rgba(39, 51, 47, .18);
}

.close-guard-body { display: grid; gap: 3px; font-size: .84rem; }
.close-guard-body span { color: var(--cor-texto-fraco); }
.close-guard-actions { display: flex; justify-content: flex-end; gap: 9px; }
.button.danger { border-color: #a1382f; background: #a1382f; }
.button.danger:hover { background: #8d2f28; }

.muted-inline { display: block; color: #5b6862; font-size: .72rem; }

.grid-panel { padding: 0; overflow: hidden; }
.grid-panel .panel-heading { padding: 20px 22px 12px; }
.grid-scroll { overflow-x: auto; border-top: 1px solid #e7e1d7; }

.entry-grid { min-width: 1080px; }
.entry-grid th { position: sticky; top: 0; z-index: 1; }
.entry-grid th, .entry-grid td { padding: 7px 9px; vertical-align: middle; }
.entry-grid input, .entry-grid select { padding: 7px 9px; font-size: .82rem; }
.entry-grid input.num { text-align: right; }
.entry-grid td.strong { font-weight: 750; }
.entry-grid .col-index { width: 42px; text-align: center; }
.entry-grid .col-tiny { width: 82px; }
.entry-grid .col-date { width: 140px; }
.entry-grid .col-number { width: 118px; }
.entry-grid .col-small { width: 130px; }
.entry-grid .col-product { min-width: 220px; }
.entry-grid .col-text { min-width: 200px; }

.grid-total { display: flex; align-items: baseline; justify-content: flex-end; gap: 14px; padding: 14px 22px; border-top: 1px solid #e7e1d7; }
.grid-total strong { font-size: 1.3rem; color: #173d35; }

.inline-panel { border-color: #d0c7b4; box-shadow: 0 12px 30px rgba(39, 51, 47, .09); }

.workflow-step, .workflow-transition { display: flex; flex-wrap: wrap; align-items: flex-end; gap: var(--e-3); padding: var(--e-3) 0; border-bottom: 1px solid var(--cor-linha-suave); }
.workflow-step .ui-field, .workflow-transition .ui-field { flex: 1; min-width: 180px; }
.workflow-step .ui-check, .workflow-transition .ui-check { flex: 0 0 auto; }
.workflow-step:last-of-type, .workflow-transition:last-of-type { border-bottom: 0; }
.step-order { display: grid; place-items: center; flex: 0 0 auto; width: var(--alvo-compacto); height: var(--alvo-compacto); margin-bottom: var(--e-1); border-radius: var(--raio-redondo); background: var(--cor-superficie-fria); font-weight: var(--peso-forte); font-size: var(--t-s); }

.workflow-preview { display: flex; flex-wrap: wrap; align-items: center; gap: var(--e-2); margin-top: var(--e-4); padding: var(--e-4); border-radius: var(--raio-l); background: var(--cor-superficie-suave); }
.preview-node { display: grid; gap: 1px; padding: var(--e-2) var(--e-3); border: 1px solid var(--cor-linha); border-radius: var(--raio-m); background: var(--cor-superficie); font-size: var(--t-s); font-weight: var(--peso-medio); }
.preview-node.is-initial { border-color: var(--cor-destaque); background: var(--cor-aviso-fundo); }
.preview-node small { color: var(--cor-texto-fraco); font-size: var(--t-xs); font-weight: var(--peso-normal); }
.preview-arrow { color: var(--cor-texto-fraco); }

@media (max-width: 820px) {
    .close-guard { right: 8px; left: 8px; width: auto; }
}

/* Entity children, technical sheet stages and their material flow. */

.child-row { display: grid; gap: var(--e-3); padding: var(--e-4) 0; border-bottom: 1px solid var(--cor-linha-suave); }
.child-row:last-of-type { border-bottom: 0; }
.child-row-actions { display: flex; align-items: center; flex-wrap: wrap; gap: var(--e-3); }

.io-columns { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--e-4); }
.io-block { display: grid; gap: var(--e-3); align-content: start; padding: var(--e-4); border: 1px solid var(--cor-linha); border-radius: var(--raio-m); background: var(--cor-superficie-suave); }
.io-head { display: flex; align-items: center; justify-content: space-between; gap: var(--e-3); }
.io-head h3 { margin: 0; font-size: var(--t-m); font-weight: var(--peso-forte); }
.io-row { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1fr) minmax(0, 1fr) auto; align-items: end; gap: var(--e-2); }
.io-row .ui-field input, .io-row .ui-field select { min-height: var(--alvo-compacto); }
.io-row input[type="number"] { text-align: right; font-variant-numeric: tabular-nums; }

.io-block .ui-hint { margin: 0; }

.flow-preview { display: flex; flex-wrap: wrap; align-items: stretch; gap: var(--e-2); }
.flow-stage { display: grid; gap: var(--e-1); align-content: start; min-width: 190px; padding: var(--e-3) var(--e-4); border: 1px solid var(--cor-linha); border-radius: var(--raio-m); background: var(--cor-superficie); font-size: var(--t-s); }
.flow-stage.has-warning { border-color: var(--cor-aviso-linha); background: var(--cor-aviso-fundo); }
.flow-items { color: var(--cor-texto-suave); }
.flow-items small { display: inline-block; min-width: 62px; color: var(--cor-texto-fraco); font-size: var(--t-xs); text-transform: uppercase; letter-spacing: .05em; }
.flow-items em { color: var(--cor-erro); font-style: normal; }
.flow-warning { margin-top: var(--e-1); color: var(--cor-aviso); font-size: var(--t-xs); font-weight: var(--peso-forte); }

@media (max-width: 1100px) {
    .io-columns { grid-template-columns: 1fr; }
}

@media (max-width: 820px) {
    .io-row { grid-template-columns: 1fr; }
    .io-row .ui-icon-button { justify-self: start; }
}

/* Segurança: utilizadores, funções e sessões ------------------------------ */

.restoring {
    display: grid;
    justify-items: center;
    gap: 14px;
    padding: 60px 0;
    color: var(--cor-texto-fraco);
}

.restoring .brand-mark { animation: restoring-pulse 1.4s ease-in-out infinite; }
.restoring p { margin: 0; font-size: .9rem; }

@keyframes restoring-pulse {
    0%, 100% { opacity: .35; }
    50% { opacity: 1; }
}

@media (prefers-reduced-motion: reduce) {
    .restoring .brand-mark { animation: none; opacity: .7; }
}

/* Auditoria -------------------------------------------------------------- */

@media (max-width: 720px) {
}

/* Impressão ------------------------------------------------------------- */

.zpl-editor {
    width: 100%;
    font-family: "Cascadia Code", "Consolas", ui-monospace, monospace;
    font-size: .8rem;
    line-height: 1.55;
    tab-size: 2;
    white-space: pre;
    overflow-x: auto;
}

.zpl-preview {
    margin: 0;
    padding: 15px 17px;
    border: 1px solid #e2ddd2;
    border-radius: 11px;
    background: #2b2f2c;
    color: #d8e0d9;
    font-family: "Cascadia Code", "Consolas", ui-monospace, monospace;
    font-size: .78rem;
    line-height: 1.6;
    white-space: pre;
    overflow-x: auto;
}

td.num.is-alert { color: #8f3f38; font-weight: 600; }
small.muted-inline.is-alert { color: #8f3f38; }
