/* Semantic theme contract. Components consume these tokens in both themes. */
:root{
 color-scheme:light;
 --page-bg:#f6f9f8;--surface:#ffffff;--surface-muted:#eff5f2;--surface-elevated:#ffffff;--sidebar-bg:#ffffff;--surface-inverse:#163d33;
 --text-primary:#193a34;--text-secondary:#48645a;--text-muted:#536e64;--text-inverse:#ffffff;
 --border-subtle:#d3e0da;--control-border:#718c80;--accent:#006f58;--accent-soft:#e1f3e9;--hover:#e7f1eb;--focus:#00775e;
 --button-bg:#00745e;--button-hover:#005d4c;--button-text:#ffffff;--input-bg:#ffffff;--disabled-bg:#e8efeb;--disabled-text:#617369;
 --success-text:#176b45;--success-bg:#e2f3e8;--success-border:#5f9578;--warning-text:#805500;--warning-bg:#fff2cc;--warning-border:#a58540;
 --danger-text:#a42c35;--danger-bg:#fde9e9;--danger-border:#bb7178;--info-text:#245b88;--info-bg:#e6f1fc;--info-border:#7399bd;
 --purple-text:#6b408a;--purple-bg:#f1e9f8;--purple-border:#9a80b0;--info-solid:#245b88;--warning-solid:#805500;--danger-solid:#a42c35;--purple-solid:#6b408a;
 --overlay:rgb(5 24 19 / .62);--focus-ring:var(--focus);--shadow:0 4px 20px #16332f0b;
 --bg:var(--page-bg);--card:var(--surface);--border:var(--border-subtle);--text:var(--text-primary);--secondary:var(--text-secondary);--primary:var(--accent);--primary-light:var(--accent);--primary-dark:var(--accent);--deep:var(--text-primary);--success:var(--success-text);--warning:var(--warning-text);--danger:var(--danger-text);--accent-bg:var(--accent-soft);--gradient:linear-gradient(115deg,var(--button-bg),var(--button-hover));
}
html[data-theme=dark]{
 color-scheme:dark;
 --page-bg:#081f1b;--surface:#10332b;--surface-muted:#163d33;--surface-elevated:#1c463b;--sidebar-bg:#0d2923;--surface-inverse:#071c17;
 --text-primary:#f3faf7;--text-secondary:#c5dbd2;--text-muted:#b5cec3;--text-inverse:#ffffff;
 --border-subtle:#416a5d;--control-border:#789f8e;--accent:#68e2b7;--accent-soft:#1b493a;--hover:#245442;--focus:#80f2c9;
 --button-bg:#00745e;--button-hover:#00634f;--button-text:#ffffff;--input-bg:#0b261f;--disabled-bg:#213d33;--disabled-text:#a2baae;
 --success-text:#92e8b7;--success-bg:#163f2d;--success-border:#659b7b;--warning-text:#ffe09a;--warning-bg:#473818;--warning-border:#ac9255;
 --danger-text:#ffc1c3;--danger-bg:#4e282c;--danger-border:#ba7d83;--info-text:#b4daff;--info-bg:#1d3b53;--info-border:#719abd;
 --purple-text:#e0c7ff;--purple-bg:#3b2d50;--purple-border:#9d84bd;--info-solid:#245b88;--warning-solid:#805500;--danger-solid:#a42c35;--purple-solid:#6b408a;
 --overlay:rgb(0 10 7 / .76);--shadow:0 8px 24px #0004;
 --bg:var(--page-bg);--border:var(--border-subtle);--text:var(--text-primary);--secondary:var(--text-secondary);--primary:var(--accent);--primary-dark:var(--accent);--deep:var(--text-primary);--accent-bg:var(--accent-soft);
}
/* Shared controls: decoration borders are subtle; interactive boundaries are stronger. */
body{background:var(--page-bg);color:var(--text-primary)}
.sidebar{background:var(--sidebar-bg)}
input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]),textarea,select{background:var(--input-bg);color:var(--text-primary);border-color:var(--control-border)}
input::placeholder,textarea::placeholder{color:var(--text-muted);opacity:1}
option,optgroup{background:var(--input-bg);color:var(--text-primary)}
input[type=checkbox],input[type=radio],input[type=range]{accent-color:var(--button-bg)}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:3px solid var(--focus-ring);outline-offset:3px}
.btn.primary,.pay-button,.btn-gradient{background:var(--button-bg);color:var(--button-text);border-color:var(--button-bg)}
.btn.primary:hover,.pay-button:hover,.btn-gradient:hover{background:var(--button-hover);color:var(--button-text)}
.btn:disabled,button:disabled{opacity:1;background:var(--disabled-bg);color:var(--disabled-text);cursor:not-allowed}
.icon-btn{color:var(--text-secondary)}
.sidebar-svg{opacity:1}
html[data-theme=dark] img.sidebar-svg,html[data-theme=dark] .barcode-stat>img{filter:brightness(0) saturate(100%) invert(89%) sepia(12%) saturate(352%) hue-rotate(96deg)}
dialog{background:var(--surface-elevated);color:var(--text-primary);border-color:var(--border-subtle)}
dialog::backdrop{background:var(--overlay)}
html{scrollbar-color:var(--control-border) var(--page-bg)}
/* Scannable/printed documents are deliberately ink on paper, independent of UI theme. */
[data-code-preview] img,.barcode-label,.srv-receipt,.payslip-print{color:#193a34;background:#fff;color-scheme:light}
@media print{html[data-theme]{color-scheme:light;--page-bg:#fff;--surface:#fff;--surface-muted:#f3f6f4;--surface-elevated:#fff;--text-primary:#193a34;--text-secondary:#48645a;--text-muted:#536e64;--accent:#006f58;--success-text:#176b45;--success-bg:#e2f3e8;--warning-text:#805500;--warning-bg:#fff2cc;--danger-text:#a42c35;--danger-bg:#fde9e9;--info-text:#245b88;--info-bg:#e6f1fc}}
.shell select,.shell textarea,dialog select,dialog textarea,.modal select,.modal textarea{background:var(--input-bg);color:var(--text-primary);border-color:var(--control-border)}
.btn{border-color:var(--control-border)}
html[data-theme=dark] .btn.primary{border-color:var(--control-border)}
html[data-theme=dark] input[type=checkbox],html[data-theme=dark] input[type=radio]{accent-color:var(--accent)}
.srv-receipt,.barcode-label,.payslip-print{--text-primary:#193a34;--text-secondary:#48645a;--text-muted:#536e64;--surface:#fff;--surface-muted:#eff5f2;--accent:#006f58;--border-subtle:#d3e0da;--text:var(--text-primary);--secondary:var(--text-secondary);--primary:var(--accent);--border:var(--border-subtle)}
