/* Shared semantic palette: presentation only, no layout rules. */
:root{color-scheme:dark;
--ui-page:#0d1117;
--ui-panel:#151b23;
--ui-sidebar:#151b23;
--ui-toolbar:#151b23;
--ui-reserve:#151b23;
--ui-grid:#151b23;
--ui-modal:#151b23;
--ui-surface-shadow:none;
--ui-inset:#101722;
--ui-raised:#1a222d;
--ui-notice:#182432;
--ui-text:#edf2f7;
--ui-muted:#9ba7b4;
--ui-subtle:#8794a3;
--ui-border-strong:#354150;
--ui-border:#28323e;
--ui-half-line:#222c37;
--ui-half-style:dashed;
--ui-accent:#196ebd;
--ui-focus:#9bc8ef;
--ui-badge-bg:#202a35;
--ui-text-soft:#dbe8f6;
--ui-absence-a:#293646;
--ui-absence-b:#1d2936;
--ui-warning:#f0c879;
--ui-warning-bg:#4e2e08;
--ui-warning-text:#ffd59b;
--ui-warning-border:#d88c31;
--ui-success-bg:#103e29;
--ui-success-text:#b0f2cd;
--ui-success-border:#4bb885;
--ui-map-bg:#111d2c;
--ui-depot:#805c16;
--ui-handle-border:#ffffff40;
--ui-handle-bg:#ffffff14;
--ui-preview-bg:#18243288;
--ui-shadow:#0009;
--ui-link:#88baff;
--ui-accent-hover:#1a6db7;
--ui-on-accent:#ffffff;
--ui-card-base:#101821;
--ui-card-mix:12%;
--ui-backdrop-standard:rgba(0,0,0,.34);
--ui-backdrop-info:rgba(0,0,0,.28);
}
:root[data-theme="light"]{color-scheme:light;
--ui-page:#dfe4ea;
--ui-panel:#e7ecf1;
--ui-sidebar:#e3e8ee;
--ui-toolbar:#e7ecf1;
--ui-reserve:#e4eaf1;
--ui-grid:#e3e9ef;
--ui-modal:#eaf0f4;
--ui-surface-shadow:0 2px 9px rgba(35,52,70,.055);
--ui-inset:#e4eaf0;
--ui-raised:#eef1f5;
--ui-notice:#e1ebf5;
--ui-text:#202c39;
--ui-muted:#526172;
--ui-subtle:#5c6b7b;
--ui-border-strong:#9caab9;
--ui-border:#bac5d1;
--ui-half-line:#d7dee7;
--ui-half-style:solid;
--ui-accent:#1768ae;
--ui-focus:#1768ae;
--ui-badge-bg:#dde6ef;
--ui-text-soft:#344659;
--ui-absence-a:#dce3eb;
--ui-absence-b:#e7edf3;
--ui-warning:#795308;
--ui-warning-bg:#fff0d4;
--ui-warning-text:#724900;
--ui-warning-border:#a97420;
--ui-success-bg:#ddf1e5;
--ui-success-text:#1a5a38;
--ui-success-border:#408663;
--ui-map-bg:#dde5ec;
--ui-depot:#805c16;
--ui-handle-border:#8392a3;
--ui-handle-bg:#bfcddd;
--ui-preview-bg:#dbe9f2dd;
--ui-shadow:#34465926;
--ui-link:#165fa1;
--ui-accent-hover:#105b9d;
--ui-on-accent:#ffffff;
--ui-card-base:#eef1f5;
--ui-card-mix:10%;
--ui-backdrop-standard:rgba(24,38,54,.22);
--ui-backdrop-info:rgba(24,38,54,.20);
}

/* Login shares the palette through a public asset; all layout rules are scoped. */
.login-page{font-family:system-ui;background:var(--ui-page);color:var(--ui-text);margin:0;display:grid;place-items:center;min-height:100vh;}
.login-page main{box-sizing:border-box;width:min(390px,90vw);padding:26px;background:var(--ui-modal);border:1px solid var(--ui-border);border-radius:16px;box-shadow:0 8px 30px var(--ui-shadow);}
.login-page h1{margin:0 0 12px;font-size:28px;}.login-page small{font-size:12px;color:var(--ui-muted);font-weight:400;}
.login-page label{display:block;font-size:13px;margin:15px 0;color:var(--ui-text);}
.login-page input,.login-page select{box-sizing:border-box;font:inherit;background:var(--ui-raised);color:var(--ui-text);border:1px solid var(--ui-border-strong);border-radius:8px;padding:11px;}
.login-page input{display:block;width:100%;margin-top:6px;}
.login-page button{width:100%;font:inherit;font-weight:650;background:var(--ui-accent);color:var(--ui-on-accent);padding:11px 14px;border:0;border-radius:8px;cursor:pointer;}
.login-page button:hover{background:var(--ui-accent-hover);}.login-page button:disabled{opacity:.55;cursor:wait;}
.login-page p{font-size:13px;line-height:1.5;color:var(--ui-muted);}.login-page #error{color:var(--ui-warning-text);}
.login-page :focus-visible{outline:2px solid var(--ui-focus);outline-offset:3px;}
.login-page .theme-control{display:flex;gap:10px;align-items:center;margin-bottom:0;}.login-page .theme-control select{font-size:13px;padding:7px 10px;}
/* Preserve autocomplete semantics; only its painted surface is themed. */
.login-page input:autofill{box-shadow:0 0 0 1000px var(--ui-raised) inset;color:var(--ui-text);caret-color:var(--ui-text);}
.login-page input:-webkit-autofill{-webkit-box-shadow:0 0 0 1000px var(--ui-raised) inset;-webkit-text-fill-color:var(--ui-text);caret-color:var(--ui-text);}

/* Shared compact controls; SVG paths are static local presentation assets. */
.appearance-controls{display:flex;align-items:center;gap:8px;margin-top:14px}
.presentation-icon{display:inline-flex;align-items:center;justify-content:center;flex:none;box-sizing:border-box;width:42px;height:42px;padding:9px;border:1px solid var(--ui-border-strong);border-radius:9px;background:var(--ui-raised);color:var(--ui-text);cursor:pointer}
.presentation-icon svg{display:block;width:22px;height:22px}
.presentation-icon:hover{background:var(--ui-raised)}
.presentation-icon:focus-visible{outline:2px solid var(--ui-focus);outline-offset:3px}
.login-page .presentation-icon{width:42px;padding:9px;background:var(--ui-raised);color:var(--ui-text);border:1px solid var(--ui-border-strong)}
.password-field{display:block;position:relative;min-width:0}
.password-field input{box-sizing:border-box;width:100%;padding-right:49px}
.password-field .password-toggle{position:absolute;right:3px;top:50%;transform:translateY(-50%);width:40px;height:38px;padding:8px;border:0;background:transparent;color:var(--ui-muted)}
.login-page .password-toggle{width:40px;padding:8px;border:0;background:transparent;color:var(--ui-muted)}
.login-page .password-toggle:hover{background:var(--ui-raised)}
.login-page .login-version{white-space:nowrap}
.sidebar>.appearance-controls{margin-top:auto;padding-top:12px}
.portal-account-menu .appearance-controls{margin:8px 0}
.portal-account-menu .presentation-icon{width:42px;min-height:42px;padding:9px;display:inline-flex}

.planning .presentation-icon{padding:9px;display:inline-flex;justify-content:center;align-items:center}
