/* Acabamento visual e gráficos: mesmos contrastes nos temas claro e noite. */
:root {
  --glass:rgba(255,255,255,.84);--glass-edge:rgba(255,255,255,.85);
  --soft-glow:rgba(237,122,47,.1);--button-glow:rgba(202,92,24,.2);
  --primary-gradient:linear-gradient(115deg,#ffb077 0%,#f79450 35%,#eb7b32 70%,#ee914e 100%);
  --chart-color:#b65318;
}
:root[data-theme=dark] {
  --glass:rgba(31,30,33,.84);--glass-edge:rgba(255,255,255,.08);
  --soft-glow:rgba(244,140,69,.07);--button-glow:rgba(244,140,69,.16);
  --primary-gradient:linear-gradient(115deg,#ffbc88 0%,#f9a164 35%,#f18c45 70%,#f9aa71 100%);
  --chart-color:#ffab70;
}
body {background-image:radial-gradient(ellipse at 100% 0,var(--soft-glow),transparent 48%);background-attachment:fixed}
.primary,.secondary,.danger-button,.filter-button,.category-nav button,.add-product,.qty-row button,.icon-button,.modal-close,.theme-toggle,.side-nav button {
  transition:transform .17s ease,box-shadow .2s ease,background-position .4s ease,border-color .2s ease,color .2s ease;
  -webkit-tap-highlight-color:transparent;
}
.primary {
  background:var(--primary-gradient);background-size:180% 100%;background-position:100% 0;
  color:#28170c;border-color:#f093555c;border-radius:10px;
  box-shadow:inset 0 1px 0 #ffffff66,0 3px 8px var(--button-glow);
}
.primary:hover {filter:none}
.secondary,.filter-button,.category-nav button,.add-product,.icon-button,.qty-row button,.modal-close {
  background:linear-gradient(160deg,var(--glass),var(--card));border-radius:10px;
  box-shadow:inset 0 1px 0 var(--glass-edge),0 2px 5px #00000003;
}
.secondary {backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.category-nav button.active,.filter-button.active {background:linear-gradient(135deg,var(--ink),color-mix(in srgb,var(--ink) 80%,var(--muted)));box-shadow:0 4px 12px #0000000c;color:var(--card)}
.brand-mark {background:var(--primary-gradient);box-shadow:inset 0 1px 0 #ffffff60,0 4px 10px var(--button-glow)}
.topbar,.admin-top,.mobile-order-bar {background:var(--glass);backdrop-filter:blur(18px) saturate(130%);-webkit-backdrop-filter:blur(18px) saturate(130%)}
.mobile-order-count {background:var(--primary-gradient);box-shadow:inset 0 1px 0 #ffffff60}
.welcome {box-shadow:0 12px 30px #18181b12}
.order-panel,.login-card {background:linear-gradient(150deg,var(--glass),var(--card));backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
.product-card,.admin-card {transition:border-color .18s ease,box-shadow .2s ease,transform .2s ease}
.sidebar {background:radial-gradient(ellipse at 0 0,#f48c450a,transparent 50%),linear-gradient(165deg,#262427,var(--sidebar) 55%)}
.side-nav button.active {background:linear-gradient(120deg,#f48c4528,#f48c4510);box-shadow:inset 0 1px 0 #ffffff08,0 3px 12px #00000008}
.sidebar-link {background:#ffffff04;color:#ddd8d4;border-color:#49474a;box-shadow:inset 0 1px 0 #ffffff06}
.modal {background:linear-gradient(145deg,var(--glass),var(--card));backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px)}
.modal::backdrop {background:#101013aa;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.modal[open] {animation:dialog-appear .19s cubic-bezier(.2,.7,.2,1)}
.product-photo-field>.field-label {display:flex;align-items:baseline;gap:8px;margin-bottom:8px}
.photo-optional {font-size:11px;font-weight:400}
.photo-dropzone {display:grid;grid-template-columns:106px minmax(0,1fr);gap:17px;align-items:center;padding:16px;border:1px dashed var(--line);border-radius:13px;background:linear-gradient(135deg,var(--surface),var(--glass));cursor:pointer;transition:border-color .2s,background .2s,box-shadow .2s}
.photo-dropzone:hover,.photo-dropzone.dragging {border-color:var(--brand);background:linear-gradient(135deg,var(--accent),var(--glass));box-shadow:0 0 0 3px var(--soft-glow)}
.photo-preview {width:106px;height:106px;display:grid;place-items:center;overflow:hidden;border-radius:10px;background:var(--accent);color:var(--brand)}
.photo-preview img {width:100%;height:100%;object-fit:cover}
.photo-preview .icon {width:30px;height:30px}
.photo-copy {min-width:0}
.photo-copy strong {font-size:13px}
.photo-copy p {color:var(--muted);font-size:11px;margin-top:3px}
.photo-actions {display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.photo-actions button {min-height:38px;font-size:11px;padding:8px 12px}
.product-photo-field>.choice-hint,.photo-status,.product-photo-field>.error-text {margin-top:7px}
.photo-status {font-size:11px;color:var(--muted);overflow-wrap:anywhere}
@keyframes dialog-appear {from{opacity:0;transform:translateY(7px) scale(.99)}to{opacity:1;transform:translateY(0) scale(1)}}
@media(hover:hover) {
  .primary:not(:disabled):hover {background-position:0 0;transform:translateY(-2px);box-shadow:inset 0 1px 0 #ffffff80,0 7px 18px var(--button-glow)}
  .secondary:not(:disabled):hover,.filter-button:not(:disabled):hover,.category-nav button:not(:disabled):hover,.add-product:not(:disabled):hover,.icon-button:not(:disabled):hover {transform:translateY(-1px);box-shadow:inset 0 1px 0 var(--glass-edge),0 4px 12px #0000000b;border-color:var(--brand)}
  .product-card:hover {box-shadow:0 8px 22px #00000008}
  .theme-toggle:hover,.side-nav button:hover {box-shadow:inset 0 1px 0 var(--glass-edge)}
}
button:not(:disabled):active,a.primary:active,a.secondary:active {transform:translateY(0) scale(.975);box-shadow:inset 0 2px 4px #0000000b}
button:disabled {transform:none!important;box-shadow:none!important;filter:none!important}

.sr-only {position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.finance-controls {margin-bottom:24px}
.finance-controls .toolbar-group {gap:9px}
.finance-month {display:grid;grid-template-columns:44px minmax(150px,210px) 44px;align-items:end}
.finance-month .secondary {padding:8px;font-size:18px}
.finance-month input {min-width:0}
.finance-context {display:flex;align-items:center;gap:12px 24px;flex-wrap:wrap;margin-bottom:20px;color:var(--muted);font-size:12px}
.finance-context>span {display:inline-flex;align-items:center;gap:8px}
.finance-context>span:first-child {color:var(--ink);font-weight:600}
.finance-context strong {color:var(--ink);font-weight:500}
.live-dot {display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--action);box-shadow:0 0 0 4px var(--accent)}
.area-card {position:relative;isolation:isolate;min-width:0;border:1px solid var(--line);border-radius:18px;padding:26px 28px 21px;margin-bottom:22px;overflow:hidden;background:radial-gradient(ellipse at 100% 0,var(--soft-glow),transparent 50%),linear-gradient(145deg,var(--glass),var(--card));backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:inset 0 1px 0 var(--glass-edge),0 10px 30px #00000004}
.area-card--profit {--chart-color:#4e4945}
[data-theme=dark] .area-card--profit {--chart-color:#e4d8cf}
.chart-header {display:flex;justify-content:space-between;align-items:flex-start;gap:18px}
.chart-header>div:first-child {min-width:0}
.chart-header .eyebrow {font-size:9px;margin-bottom:10px}
.chart-header h2 {font-size:14px;font-weight:500;color:var(--muted)}
.chart-total {font-size:clamp(27px,3.3vw,38px);font-weight:600;line-height:1.2;letter-spacing:-.055em;margin-top:6px;font-variant-numeric:tabular-nums;overflow-wrap:anywhere;color:var(--ink)}
.chart-total.negative {color:var(--danger)}
.chart-value-caption {font-size:11px;color:var(--muted);margin-top:7px;min-height:17px}
.chart-ranges {display:flex;align-items:center;gap:2px;border-radius:12px;border:1px solid var(--line);padding:3px;background:var(--surface);flex:none}
.chart-ranges button {position:relative;min-height:38px;padding:7px 13px;border:1px solid transparent;border-radius:9px;background:transparent;color:var(--muted);font-size:11px;font-weight:500;transition:background .2s,box-shadow .2s,transform .15s}
.chart-ranges button[aria-pressed=true] {background:var(--glass);color:var(--ink);border-color:var(--line);box-shadow:inset 0 1px 0 var(--glass-edge),0 2px 6px #00000008}
.chart-stage {position:relative;width:100%;height:260px;margin-top:12px}
.chart-svg {display:block;width:100%;height:100%;color:var(--chart-color);overflow:visible;touch-action:pan-y;user-select:none}
.chart-axis {fill:var(--muted);font:10px 'DM Sans',system-ui,sans-serif;font-variant-numeric:tabular-nums;stroke:none}
.chart-grid-line {stroke:var(--line);stroke-width:1;stroke-dasharray:3 5;opacity:.65}
.chart-zero {stroke:var(--line);stroke-width:1.2}
.chart-crosshair line {stroke:var(--chart-color);stroke-width:1;stroke-dasharray:3 4;opacity:.6}
.chart-crosshair circle {stroke:var(--chart-color);stroke-width:2.5;fill:var(--card)}
.chart-tooltip {position:absolute;top:0;left:0;width:168px;max-width:100%;padding:9px 12px;z-index:3;border-radius:10px;border:1px solid var(--line);background:var(--glass);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);box-shadow:0 5px 18px #00000010;opacity:0;transform:translateY(4px);transition:opacity .12s,transform .12s;pointer-events:none}
.chart-tooltip.visible {opacity:1;transform:translateY(0)}
.chart-tooltip span {display:block;font-size:10px;color:var(--muted)}
.chart-tooltip strong {display:block;font-size:14px;margin-top:3px;font-variant-numeric:tabular-nums}
.chart-empty {position:absolute;inset:32px 0;display:grid;place-items:center;pointer-events:none;text-align:center;color:var(--muted);font-size:12px;padding:16px 30px}
.chart-empty span {background:var(--glass);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid var(--line);padding:10px 14px;border-radius:10px}
.chart-unavailable .chart-svg {opacity:.45}
.chart-footer {display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;border-top:1px solid var(--line);padding-top:15px;margin-top:6px;color:var(--muted);font-size:10px}
.chart-period {color:var(--ink);font-weight:500}
.chart-note {color:var(--muted);font-size:11px;line-height:1.6;margin-top:14px;max-width:760px}
.finance-loading {padding:50px 20px;text-align:center;color:var(--muted);background:linear-gradient(135deg,var(--glass),var(--accent))}
.expense-panel {border-radius:16px;margin:28px 0;background:linear-gradient(140deg,var(--glass),var(--card));box-shadow:inset 0 1px 0 var(--glass-edge)}
.expense-month-total {font-size:25px;letter-spacing:-.04em;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}
.expense-list {margin:18px 0}
.expense-details {margin:18px 0}
.expense-details summary {cursor:pointer;padding:12px 0;min-height:44px;color:var(--ink);font-size:12px;border-top:1px solid var(--line)}
.expense-details summary span {display:inline-block;color:var(--muted);font-size:10px;margin-left:12px}
.expense-row {display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:12px 20px;align-items:center;padding:16px 0;border-top:1px solid var(--line)}
.expense-description {min-width:0}
.expense-description>strong {font-size:13px;overflow-wrap:anywhere}
.expense-description p {font-size:11px;color:var(--muted);margin-top:4px}
.expense-amount {font-size:13px;font-variant-numeric:tabular-nums;white-space:nowrap}
.expense-row .row-buttons {gap:7px}
.expense-row button {font-size:11px;padding:8px 12px}
.finance-report {border-radius:16px;margin-top:28px}
.finance-report .finance-totals .stat:last-child {background:var(--card);border-color:var(--line)}
.finance-report .finance-totals .stat:first-child {background:var(--accent);border-color:color-mix(in srgb,var(--action) 40%,var(--line))}
@media(max-width:760px) {
  .photo-dropzone {grid-template-columns:80px minmax(0,1fr);gap:12px;padding:12px}
  .photo-preview {width:80px;height:80px}
  .photo-actions button {min-height:44px}
  .area-card {padding:21px 17px 18px;border-radius:15px;margin-bottom:18px}
  .chart-header {flex-direction:column;gap:16px}
  .chart-ranges {align-self:stretch;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));width:100%}
  .chart-ranges button {min-height:44px}
  .chart-stage {height:218px;margin-top:16px}
  .chart-total {font-size:32px}
  .chart-help {font-size:9px}
  .chart-footer {gap:6px 10px}
  .chart-note {font-size:10px}
  .chart-empty {padding:12px}
  .finance-month {grid-template-columns:44px minmax(0,1fr) 44px}
  .finance-month label {grid-column:auto;grid-row:auto}
  .finance-controls .toolbar-group {display:grid;grid-template-columns:1fr 1fr;width:100%}
  .finance-controls .toolbar-group .primary {grid-column:1/-1}
  .finance-context {gap:10px 18px;font-size:11px}
  .expense-panel>.line-heading {flex-wrap:wrap}
  .expense-month-total {font-size:23px}
  .expense-row {grid-template-columns:minmax(0,1fr) auto;gap:12px}
  .expense-row .row-buttons {grid-column:1/-1;width:100%}
  .expense-row .row-buttons button {flex:1}
  .expense-panel>.secondary {width:100%}
  .finance-report .finance-totals .stat strong {font-size:20px}
}
@media(max-width:400px) {
  .photo-dropzone {grid-template-columns:1fr;text-align:center;gap:10px}
  .photo-preview {width:100%;height:100px}
  .photo-actions {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
  .photo-actions:has(.danger-button.hidden) {grid-template-columns:1fr}
  .photo-actions button {white-space:nowrap;font-size:10px;padding:8px 4px}
}
@media(prefers-reduced-motion:reduce) {
  *,*:before,*:after {animation:none!important;transition:none!important;scroll-behavior:auto!important}
  button:not(:disabled):hover,button:not(:disabled):active {transform:none!important}
}
@media(prefers-reduced-transparency:reduce) {
  :root {--glass:var(--card)}
  .area-card,.topbar,.admin-top,.mobile-order-bar,.modal,.order-panel,.secondary,.chart-tooltip,.chart-empty span {backdrop-filter:none;-webkit-backdrop-filter:none}
}
@media print {
  body {background:#fff!important}
  .finance-analysis,.expense-panel {display:none!important}
  .finance-report {margin:0;padding:0;background:#fff!important;border:0;border-radius:0;box-shadow:none;backdrop-filter:none}
  .finance-report .finance-totals .stat {background:#fff!important;border-color:#aaa!important}
}
