/* OKAS system palette: keep this shared block identical in the three existing
   server-whitelisted stylesheets. No new asset route or theme-switch JS. */
:root {
  color-scheme: light dark;
  --canvas: #e9e9e9;
  --surface: #fafafa;
  --surface-soft: #e3e3e3;
  --surface-tint: #dcdcdc;
  --text: #242424;
  --muted: #555555;
  --border: #cacaca;
  --control-border: #777777;
  --accent: #1d4ed8;
  --accent-hover: #1e40af;
  --on-accent: #fafafa;
  --focus: #5e5e5e;
  --danger: #b42020;
  --danger-bg: #ededed;
  --success: #3c5c65;
  --success-bg: #ededed;
  --disabled-bg: #dedede;
  --disabled-text: #555555;
  --telegram: #24648c;
  --telegram-bg: #ededed;
  --shadow: 0 12px 40px #0000000a;
  --inverse: #171717;
  --inverse-text: #ededed;
  --inverse-muted: #bfbfbf;
  --inverse-surface: #232323;
  --inverse-border: #666666;
  --inverse-accent: #60a5fa;
  --bg: var(--canvas);
  --paper: var(--surface);
  --ink: var(--text);
  --brand: var(--accent);
  --brand-inverse: var(--inverse-accent);
  --line: var(--border);
}
@media (prefers-color-scheme: dark) {
  :root {
    --canvas: #161616;
    --surface: #1d1d1d;
    --surface-soft: #202020;
    --surface-tint: #232323;
    --text: #ededed;
    --muted: #b8b8b8;
    --border: #444444;
    --control-border: #858585;
    --accent: #60a5fa;
    --accent-hover: #93c5fd;
    --on-accent: #101010;
    --focus: #c6c6c6;
    --danger: #ff453a;
    --danger-bg: #202020;
    --success: #a9c9cf;
    --success-bg: #202020;
    --disabled-bg: #252525;
    --disabled-text: #b8b8b8;
    --telegram: #a7d5f1;
    --telegram-bg: #202020;
    --shadow: 0 12px 40px #00000026;
    --inverse: #171717;
    --inverse-text: #ededed;
    --inverse-muted: #bfbfbf;
    --inverse-surface: #232323;
    --inverse-border: #666666;
    --inverse-accent: #60a5fa;
  }
}
html { background: var(--canvas); -webkit-text-size-adjust: 100%; }
body { background: var(--canvas); color: var(--text); }
[hidden] { display: none !important; }
::selection { background: var(--accent); color: var(--on-accent); }
input, textarea, select { color-scheme: inherit; accent-color: var(--accent); }
input::placeholder, textarea::placeholder { color: var(--muted); opacity: 1; }
input:-webkit-autofill { -webkit-text-fill-color: var(--text); -webkit-box-shadow: 0 0 0 1000px var(--surface) inset; caret-color: var(--text); }
:where(button, input, select, textarea, a, summary):focus-visible { outline: 3px solid var(--focus); outline-offset: 3px; }
:where(button, input, select, textarea):disabled { opacity: 1; cursor: not-allowed; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation: none !important; transition: none !important; }
}
@media (forced-colors: active) { button, input, textarea, select { border: 1px solid ButtonText; } }

/* Page components */
*{box-sizing:border-box}
body{font:16px/1.65 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:var(--canvas);color:var(--text);margin:0;padding:28px 32px 64px}
main,header,nav,#status{max-width:1040px;margin:0 auto}
header{display:flex;align-items:center;gap:24px;flex-wrap:wrap;padding:0 0 22px;border-bottom:1px solid var(--border)}
header>a{font-size:23px;font-weight:750;letter-spacing:-1px;text-decoration:none}
header button{margin-left:auto;background:var(--surface);color:var(--accent);border:1px solid var(--control-border)}
h1{font-size:clamp(22px,3vw,30px);font-weight:600;letter-spacing:-.035em;margin:0;line-height:1.25}
h2{font-size:23px;letter-spacing:-.025em;font-weight:600;line-height:1.3;margin:0 0 16px}
h3{font-size:18px;font-weight:600}
a{color:var(--accent);text-underline-offset:4px;text-decoration-thickness:1px}
a:hover{color:var(--accent-hover)}
nav{padding:18px 0 20px;color:var(--muted);line-height:2}
nav a{display:inline-flex;align-items:center;min-height:44px;padding:4px 8px;font-size:14px;text-decoration:none;border-radius:8px}
nav a:hover{background:var(--surface-soft)}
section,article{background:var(--surface);padding:30px 32px;border:1px solid var(--border);border-radius:12px;margin:24px 0;box-shadow:none;min-width:0;scroll-margin-top:24px}
article{background:var(--surface-soft);box-shadow:none;padding:20px 24px;border-radius:8px}
section>p{color:var(--muted)}
label{display:block;margin:16px 0 8px;font-size:14px;font-weight:550}
input,textarea,select{display:block;width:100%;max-width:100%;font:inherit;font-size:16px;padding:12px 14px;border:1px solid var(--control-border);border-radius:9px;background:var(--surface);color:var(--text);min-height:48px;margin-top:7px}
textarea{min-height:132px;resize:vertical;line-height:1.55}
input[type=checkbox]{display:inline-block;width:18px;height:18px;min-height:18px;margin:0 6px 0 0;vertical-align:middle}
label:has(input[type=checkbox]){min-height:44px;align-content:center}
input:focus,textarea:focus,select:focus{outline:2px solid var(--focus);outline-offset:2px}
input:disabled,textarea:disabled,select:disabled{background:var(--disabled-bg);color:var(--disabled-text)}
button{font:inherit;font-size:14px;font-weight:600;min-height:46px;padding:11px 18px;background:var(--accent);color:var(--on-accent);border:1px solid transparent;border-radius:8px;cursor:pointer;margin:8px 8px 8px 0;max-width:100%;line-height:1.45;transition:background .15s}
button:hover{background:var(--accent-hover)}
header button:hover{background:var(--surface-soft)}
button:disabled{background:var(--disabled-bg);color:var(--disabled-text);border-color:var(--border);opacity:1;cursor:not-allowed}
#revoke-sessions{background:var(--danger-bg);color:var(--danger);border-color:var(--danger)}
p{white-space:pre-wrap;overflow-wrap:anywhere}
fieldset{border:0;padding:0;min-width:0}
small{color:var(--muted)}
form{max-width:760px;padding-top:2px}
form+form{margin-top:24px;padding-top:18px;border-top:1px solid var(--border)}
#status:not(:empty){padding:14px 18px;border:1px solid var(--control-border);background:var(--surface-soft);border-radius:10px;margin-bottom:20px}
#telegram-status{color:var(--muted)}
dialog{max-width:650px;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:16px;padding:28px;width:calc(100% - 32px)}
dialog::backdrop{background:#171717b3}
pre{white-space:pre-wrap;overflow-wrap:anywhere}
@media(max-width:600px){body{padding:18px 16px 40px}header{gap:12px}header h1{order:3;flex-basis:100%}section,article{padding:22px 18px;border-radius:10px}h2{font-size:21px}nav{padding:12px 0}nav a{padding:4px 6px}button{font-size:14px}input,textarea,select{padding:11px 12px}}

/* Structured resources stay lists, not imitation tables or clipped previews. */
nav { border-bottom: 1px solid var(--border); }
nav a { color: var(--muted); font-weight: 500; }
nav a:hover, nav a:focus-visible { color: var(--accent); background: var(--surface-soft); text-decoration: underline; }
section > h2 { margin-bottom: 12px; }
article h3 { margin: 0 0 10px; line-height: 1.4; overflow-wrap: anywhere; }
article p { margin: 0 0 16px; max-width: 75ch; }
article small { display: block; margin: 12px 0; font-size: 13px; }
#day-list, #project-list, #tool-list, #publication-list, #admin-list { margin-top: 24px; }
#day-list article { border-radius: 0; border-width: 1px 0 0; background: transparent; padding: 20px 0; margin: 0; }
#day-list h3 { font-variant-numeric: tabular-nums; }
/* Destructive actions are outlined/double-bordered, never filled like Save. */
#revoke-sessions, #project-list article > button:last-of-type {
  background: var(--danger-bg); color: var(--danger); border: 3px double var(--danger);
  text-decoration: underline; text-underline-offset: 3px;
}
#revoke-sessions:hover, #project-list article > button:last-of-type:hover { text-decoration-thickness: 2px; }
#project-list article > button:last-of-type:disabled, #revoke-sessions:disabled {
  background: var(--disabled-bg); color: var(--disabled-text); border-color: var(--disabled-text);
}
