:root{--ink:#211a2b;--muted:#7c7887;--primary:#6631a8;--primary-dark:#4d2383;--line:#eeeaf3;--bg:#f8f7fb;--gold:#eabf41}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;font-size:.92rem}.app-shell{display:flex;min-height:100vh}.sidebar{width:248px;background:#21172d;color:#fff;display:flex;flex-direction:column;padding:22px 16px;flex-shrink:0}.brand{display:flex;align-items:center;gap:10px;color:#fff;text-decoration:none;padding:0 8px 28px}.brand img{width:42px;height:42px;border-radius:11px;object-fit:cover;border:1px solid #be9f40}.brand span{font-family:Georgia,serif;font-weight:700;font-size:1.15rem;letter-spacing:.09em}.brand small{display:block;color:#d5b84e;font:600 .48rem Inter,sans-serif;letter-spacing:.15em;margin-top:2px}.sidebar-label{color:#948ba0;text-transform:uppercase;font-size:.65rem;font-weight:700;letter-spacing:.1em;padding:12px 12px 7px}.nav-link{color:#bdb5c8;border-radius:8px;padding:11px 12px;margin:2px 0;font-weight:500;display:flex;align-items:center;gap:12px}.nav-link i{font-size:1.05rem;width:18px;text-align:center}.nav-link:hover,.nav-link.active{color:#fff;background:#362246}.nav-link.active{box-shadow:inset 3px 0 var(--gold)}.sidebar-footer{margin-top:auto;border-top:1px solid #3b3046;padding:18px 8px 0;display:flex;gap:10px;align-items:center}.sidebar-footer img{height:33px;width:33px;border-radius:50%;object-fit:cover}.sidebar-footer strong{display:block;font-size:.8rem}.sidebar-footer small{display:block;color:#9d94a8;font-size:.65rem}.main-content{flex:1;min-width:0}.topbar{background:#fff;border-bottom:1px solid var(--line);height:83px;padding:16px 34px;display:flex;align-items:center;justify-content:space-between}.page-context h1{font-size:1.2rem;margin:3px 0 0;font-weight:700}.eyebrow{font-size:.62rem;color:#a29ca9;letter-spacing:.12em;font-weight:700}.user-menu{display:flex;align-items:center;gap:10px}.user-menu small,.user-menu strong{display:block}.user-menu strong{font-size:.8rem}.user-menu small{font-size:.68rem;color:var(--muted)}.avatar{background:#f0e8fb;color:var(--primary);height:36px;width:36px;border-radius:50%;display:grid;place-items:center;font-weight:700}.content-area{padding:30px 34px;max-width:1600px;margin:auto}.welcome-row,.page-actions{display:flex;justify-content:space-between;align-items:center;margin-bottom:25px}.welcome-row h2,.page-actions h2{font-size:1.55rem;font-weight:750;margin:0}.btn-primary{background:var(--primary);border-color:var(--primary)}.btn-primary:hover{background:var(--primary-dark);border-color:var(--primary-dark)}.metric-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:17px;display:flex;gap:13px;align-items:center;height:100%}.metric-icon{height:42px;width:42px;border-radius:11px;display:grid;place-items:center;font-size:1.2rem}.metric-icon.purple{background:#f1eafe;color:#7440b5}.metric-icon.orange{background:#fff1dc;color:#d98716}.metric-icon.green{background:#e7f7ef;color:#20915d}.metric-icon.red{background:#fff0f0;color:#d74949}.metric-card small,.metric-card strong,.metric-card .metric-note{display:block}.metric-card small{color:var(--muted);font-size:.75rem}.metric-card strong{font-size:1.3rem;margin:2px 0}.metric-note{color:#a09ba7;font-size:.67rem}.panel{background:#fff;border:1px solid var(--line);border-radius:12px;padding:22px}.panel h3{font-size:1rem;margin:0 0 3px;font-weight:700}.panel-heading{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:18px}.panel-heading p,.panel>p{color:var(--muted);font-size:.78rem;margin:0}.link-primary{color:var(--primary);text-decoration:none;font-size:.78rem;font-weight:600}.table{margin-bottom:0;color:var(--ink)}.table>:not(caption)>*>*{padding:13px 10px;border-color:var(--line)}.table thead th{font-size:.68rem;color:#9a95a1;text-transform:uppercase;letter-spacing:.04em;font-weight:700;white-space:nowrap}.table td{font-size:.82rem}.table a{color:var(--primary);text-decoration:none}.badge-soft{font-size:.69rem;background:#f3eff8;color:#6d587e;border-radius:20px;padding:5px 9px}.status-badge{font-size:.68rem;font-weight:600;padding:5px 9px;border-radius:20px}.status-badge.active{color:#208855;background:#e7f7ee}.status-badge.inactive{color:#8a8790;background:#f0eff2}.stock-pill{font-weight:700;color:#277a55}.stock-pill.low{color:#d44e4e}.stock-pill small{font-weight:400;color:#a19da6;margin-left:3px}.empty-state{color:#98939e;text-align:center!important;padding:28px!important}.cash-highlight{background:#f8f4fd;border-radius:10px;padding:18px;margin-bottom:15px}.cash-highlight span,.cash-highlight strong,.cash-highlight small{display:block}.cash-highlight span{font-size:.72rem;color:var(--muted)}.cash-highlight strong{font-size:1.65rem;color:var(--primary);margin:7px 0}.cash-highlight small{font-size:.7rem;color:var(--muted)}.status-dot{display:block;width:10px;height:10px;background:#d8d5da;border-radius:50%}.status-dot.is-open{background:#27a868;box-shadow:0 0 0 4px #e3f7eb}.empty-box{text-align:center;padding:25px 10px}.empty-box i{font-size:2.4rem;color:#a892c2;display:block;margin-bottom:10px}.empty-box p{color:var(--muted);font-size:.8rem}.stock-line,.report-line{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);padding:11px 0;font-size:.8rem}.stock-line:last-child,.report-line:last-child{border:0}.stock-line small{display:block;color:var(--muted);font-size:.66rem;margin-top:2px}.footer{text-align:center;color:#aaa3af;font-size:.68rem;padding:25px}.filter-bar{display:flex;align-items:center;gap:10px;margin-bottom:20px;flex-wrap:wrap}.filter-bar .input-group{max-width:390px;flex:1}.filter-bar .form-control,.filter-bar .form-select{min-width:140px}.input-group-text{background:#fff;border-color:#dee2e6;color:#999}.form-label{font-size:.78rem;font-weight:600}.form-control,.form-select{font-size:.85rem;padding:.62rem .75rem;border-color:#ddd8e4}.form-control:focus,.form-select:focus{border-color:#a981d0;box-shadow:0 0 0 .2rem #eee5f8}.form-panel{max-width:950px}.form-actions{display:flex;justify-content:flex-end;gap:10px;border-top:1px solid var(--line);margin-top:24px;padding-top:20px}.detail-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:25px}.detail-grid.compact{grid-template-columns:repeat(4,1fr)}.detail-grid small,.detail-grid strong{display:block}.detail-grid small{font-size:.68rem;color:var(--muted);text-transform:uppercase}.detail-grid strong{margin-top:7px}.sale-item{padding-bottom:10px;border-bottom:1px solid var(--line)}.subtotal{height:38px;display:flex;align-items:center;justify-content:flex-end;font-size:.78rem;font-weight:600}.sale-total{display:flex;justify-content:space-between;background:#faf8fd;border-radius:9px;padding:16px;margin-top:15px;font-weight:600}.sale-total strong{font-size:1.2rem;color:var(--primary)}.movement{font-size:.68rem;border-radius:20px;padding:4px 8px}.movement.in{color:#218555;background:#e7f7ee}.movement.out{color:#c55252;background:#fff0f0}.login-page{background:#21172d;display:grid;place-items:center;min-height:100vh;padding:20px}.login-card{background:#fff;border-radius:16px;width:min(100%,420px);padding:34px;box-shadow:0 22px 60px #0e091480}.login-brand{display:flex;gap:11px;align-items:center;margin-bottom:30px}.login-brand img{height:48px;width:48px;object-fit:cover;border-radius:12px}.login-brand strong,.login-brand span{display:block}.login-brand strong{font:700 1.2rem Georgia,serif;letter-spacing:.12em}.login-brand span{font-size:.58rem;color:#b88b16;letter-spacing:.12em;font-weight:700}.login-card h1{font-size:1.45rem}.login-card p{font-size:.8rem}.login-hint{text-align:center;margin-top:20px;font-size:.7rem;color:#aaa}.receipt-page{background:#eee;padding:30px}.receipt{background:#fff;width:80mm;max-width:100%;margin:auto;padding:18px;font-size:11px;color:#111}.receipt-brand{text-align:center}.receipt-brand img{display:block;width:52px;height:52px;object-fit:cover;border-radius:50%;margin:auto}.receipt-brand strong,.receipt-brand small{display:block}.receipt-brand strong{font-size:13px;margin-top:5px}.receipt-brand small{font-size:8px}.receipt table{width:100%;border-collapse:collapse}.receipt td,.receipt th{padding:5px 0;text-align:left}.receipt td:last-child,.receipt th:last-child{text-align:right}.text-center{text-align:center}@media(max-width:991px){.sidebar{position:fixed;z-index:10;inset:0 auto 0 -250px;transition:.2s}.sidebar.open{left:0}.content-area{padding:22px 18px}.topbar{padding:14px 18px}.detail-grid,.detail-grid.compact{grid-template-columns:repeat(2,1fr)}}@media(max-width:576px){.welcome-row,.page-actions{align-items:flex-start;gap:13px;flex-direction:column}.filter-bar>*{width:100%;max-width:none!important}.panel{padding:16px}.detail-grid,.detail-grid.compact{grid-template-columns:repeat(2,1fr);gap:15px}.login-card{padding:25px}}
@media print{.sidebar,.topbar,.footer,.page-actions button,.filter-bar{display:none!important}.main-content{width:100%}.content-area{padding:0}.panel{border:0}.metric-card{break-inside:avoid}}

/* Controlo de dimensões dos campos e dos formulários */
.form-control,.form-select,.form-panel textarea{width:100%;max-width:100%;min-width:0}
.panel form,.form-panel form{min-width:0;max-width:100%}
.filter-bar{width:100%;min-width:0;align-items:center}
.filter-bar .input-group{flex:1 1 280px;width:auto;min-width:0;max-width:420px}
.filter-bar>.form-control,.filter-bar>.form-select{flex:1 1 160px;width:auto;min-width:0;max-width:240px}
.filter-bar>.btn{flex:0 0 auto;white-space:nowrap}
.table-responsive{max-width:100%;overflow-x:auto}
.table td,.table th{overflow-wrap:anywhere}
.table input.form-control,.table select.form-select,.table textarea.form-control{width:100%;min-width:0;max-width:190px;padding:.45rem .55rem}
.table .input-group{width:min(100%,260px);min-width:0}
.sale-item,.sale-item>[class*=col]{min-width:0}
.sale-item .product-select{min-width:0;text-overflow:ellipsis}
.sale-item .subtotal{min-width:100px;white-space:nowrap}
.form-actions{flex-wrap:wrap}
@media(max-width:768px){.filter-bar{align-items:stretch}.filter-bar .input-group,.filter-bar>.form-control,.filter-bar>.form-select{flex:1 1 100%;width:100%;max-width:none}.filter-bar>span{align-self:center}.input-group{max-width:100%}}
@media(max-width:576px){.sale-item>[class*=col],.sale-item>.col-3,.sale-item>.col-2{flex:0 0 100%;width:100%}.sale-item>.col-auto{flex:0 0 auto;width:auto}.sale-item .subtotal{justify-content:flex-start;min-height:30px;height:auto}.form-actions .btn{flex:1 1 auto}}

/* Identidade visual baseada no logotipo: preto, púrpura, dourado e fogo. */
:root{--ink:#130d19;--primary:#5b2579;--primary-dark:#3d164f;--gold:#e7b52e;--accent-red:#b52c2f;--accent-orange:#f0781b}
.sidebar,.login-page{background:var(--ink)}
.btn-primary{background:var(--primary);border-color:var(--primary)}
.btn-primary:hover,.btn-primary:focus{background:var(--primary-dark);border-color:var(--primary-dark)}
.btn-outline-primary{color:var(--primary);border-color:var(--primary)}
.btn-outline-primary:hover,.btn-outline-primary:focus{background:var(--primary);border-color:var(--primary);color:#fff}
.btn-dark{background:var(--ink);border-color:var(--ink)}
.btn-dark:hover,.btn-dark:focus{background:#2b1837;border-color:#2b1837}
.brand img,.sidebar-footer img{background:transparent;border-color:var(--gold)}
.brand small,.login-brand span{color:var(--gold)}
.metric-icon.purple{background:#f1e7f8;color:var(--primary)}
.metric-icon.orange{background:#fff0dc;color:var(--accent-orange)}
.metric-icon.red{background:#fff0f0;color:var(--accent-red)}
.status-badge.active{color:#218450;background:#e6f6ed}
.status-badge.inactive{color:#847c88;background:#efedf1}
.movement.in{color:#218450;background:#e6f6ed}
.movement.out{color:var(--accent-red);background:#fff0f0}
.text-danger{color:var(--accent-red)!important}
.login-card{border-top:4px solid var(--gold)}
.brand img,.sidebar-footer img,.login-brand img,.receipt-brand img{border:0!important;border-radius:0!important;background:transparent;object-fit:contain!important}
.profile-trigger{display:flex;align-items:center;gap:10px;border:0;background:transparent;padding:2px 4px;color:var(--ink)}
.profile-trigger:after{margin-left:2px}.profile-trigger strong,.profile-trigger small{display:block}.profile-trigger strong{font-size:.8rem}.profile-trigger small{font-size:.68rem;color:var(--muted)}
.profile-dropdown{min-width:210px;border:1px solid var(--line);border-radius:10px;padding:7px;box-shadow:0 12px 30px #21172d1c}.profile-dropdown .dropdown-item{border-radius:7px;padding:9px 10px;font-size:.8rem}.profile-dropdown .dropdown-item i{width:20px}.profile-dropdown .dropdown-header{font-size:.68rem;color:var(--muted)}
.page-actions-buttons{display:flex;gap:10px;flex-wrap:wrap}.permission-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.permission-card{display:flex;align-items:flex-start;gap:10px;border:1px solid var(--line);border-radius:9px;padding:12px;cursor:pointer}.permission-card:hover{border-color:#c7a8d9;background:#fbf8fd}.permission-card .form-check-input{margin-top:3px}.permission-card strong,.permission-card small{display:block}.permission-card strong{font-size:.8rem}.permission-card small{color:var(--muted);font-size:.68rem;margin-top:2px}.profile-summary{text-align:center;padding:30px}.profile-avatar{display:grid;place-items:center;width:64px;height:64px;margin:0 auto 14px;border-radius:50%;background:#f1e7f8;color:var(--primary);font-size:1.5rem;font-weight:700}.profile-summary h3{margin-bottom:4px}.profile-summary hr{border-color:var(--line)}
@media(max-width:576px){.permission-grid{grid-template-columns:1fr}.page-actions-buttons{width:100%}.page-actions-buttons .btn{flex:1}}
.receipt-preview-page{background:#eee8ef;min-height:100vh;padding:22px}.receipt-toolbar{display:flex;justify-content:center;gap:10px;margin-bottom:20px}.receipt-preview-list{display:flex;flex-wrap:wrap;justify-content:center;gap:20px}.receipt-preview-list .receipt{width:80mm;max-width:100%;margin:0}.receipt-copy-label{text-align:center;color:var(--primary);font-size:9px;font-weight:700;margin:6px 0}.receipt-preview-list .receipt-brand img{width:52px;height:52px;object-fit:contain}@media print{.receipt-preview-page{background:#fff;padding:0}.receipt-toolbar{display:none!important}.receipt-preview-list{display:block}.receipt-preview-list .receipt{width:80mm;max-width:none;margin:0 auto;box-shadow:none;page-break-after:always}.receipt-preview-list .receipt:last-child{page-break-after:auto}}
.payment-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:16px;padding:13px;border:1px solid var(--line);background:#fbf8fd}.payment-summary div{min-width:0}.payment-summary small,.payment-summary strong{display:block}.payment-summary small{color:var(--muted);font-size:.68rem}.payment-summary strong{font-size:1rem;color:var(--primary);margin-top:3px}@media(max-width:576px){.payment-summary{grid-template-columns:1fr}}
.stock-legend{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.stock-status{display:inline-flex;align-items:center;border-radius:999px;padding:5px 9px;font-size:.68rem;font-weight:700;white-space:nowrap}.stock-status.rupture{color:#b42318;background:#fee4e2}.stock-status.low{color:#a15c00;background:#fff0d1}.stock-status.normal{color:#1769aa;background:#e5f2ff}.stock-status.full{color:#167347;background:#dcf8e8}.stock-pill.rupture{color:#b42318}.stock-pill.low{color:#d44e4e}.stock-pill.normal{color:#1769aa}.stock-pill.full{color:#167347}
.sidebar-overlay{display:none}
@media(max-width:991px){.sidebar-overlay{display:block;position:fixed;inset:0;background:rgba(21,12,31,.48);opacity:0;pointer-events:none;transition:opacity .2s ease;z-index:9}.sidebar-overlay.show{opacity:1;pointer-events:auto}}
.status-action{font-weight:600}.status-action.is-active{color:#208855;background:#e7f7ee;border-color:#c8ecd7}.status-action.is-active:hover{color:#fff;background:#208855;border-color:#208855}.status-action.is-inactive{color:#8a8790;background:#f0eff2;border-color:#dedbe1}.status-action.is-inactive:hover{color:#fff;background:#77727d;border-color:#77727d}
.chart-panel{min-height:100%}.chart-wrap{position:relative;height:285px}.chart-wrap-small{height:245px}.stock-summary{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}.stock-summary span{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:.72rem}.stock-summary strong{margin-left:auto;color:var(--ink)}.stock-dot{width:9px;height:9px;border-radius:50%;display:inline-block}.stock-dot.rupture{background:#b42318}.stock-dot.low{background:#d98716}.stock-dot.normal{background:#4c8dcc}.stock-dot.full{background:#20915d}
.metric-icon.blue{background:#e5f2ff;color:#3578b5}
@media(max-width:576px){.chart-wrap{height:240px}.chart-wrap-small{height:225px}.stock-summary{grid-template-columns:1fr}}
