:root,[data-theme=light]{--color-background: #f7f6f2;--color-sidebar: #f1efe8;--color-card: #ffffff;--color-text: #1f2328;--color-text-muted: #4b5159;--color-border: #d9d7d0;--color-input-border: #bdbab0;--color-accent: #0f766e;--color-accent-text: #ffffff;--color-on: #0f766e;--color-off: #8a3b12;--color-error: #b42318;--color-focus: #0b5a54;--radius: 12px;--radius-small: 8px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-6: 24px;--space-8: 32px;--font: system-ui, -apple-system, "Segoe UI", sans-serif;--font-size: 14px;--font-size-small: 12px;--control-height: 44px;--sidebar-width: 252px;--sidebar-mini-width: 72px;--rail-width: 88px;--nav-width: var(--sidebar-width);--tabbar-height: 0px;--topbar-height: 56px;--content-max: 1200px;--color-backdrop: rgb(0 0 0 / 45%);--shadow: 0 8px 28px rgb(0 0 0 / 18%);color-scheme:light}[data-theme=dark]{--color-background: #16181b;--color-sidebar: #1b1e22;--color-card: #23272d;--color-text: #e7e5de;--color-text-muted: #b4b2aa;--color-border: #3a3f46;--color-input-border: #545a62;--color-accent: #4fd1c5;--color-accent-text: #0b1f1d;--color-on: #4fd1c5;--color-off: #f4a261;--color-error: #ffb4ab;--color-focus: #8ae6dc;color-scheme:dark}@media(prefers-color-scheme:dark){[data-theme=system]{--color-background: #16181b;--color-sidebar: #1b1e22;--color-card: #23272d;--color-text: #e7e5de;--color-text-muted: #b4b2aa;--color-border: #3a3f46;--color-input-border: #545a62;--color-accent: #4fd1c5;--color-accent-text: #0b1f1d;--color-on: #4fd1c5;--color-off: #f4a261;--color-error: #ffb4ab;--color-focus: #8ae6dc;color-scheme:dark}}[data-theme=high-contrast]{--color-background: #000000;--color-sidebar: #000000;--color-card: #000000;--color-text: #ffffff;--color-text-muted: #ffffff;--color-border: #ffffff;--color-input-border: #ffffff;--color-accent: #ffff00;--color-accent-text: #000000;--color-on: #ffff00;--color-off: #ffffff;--color-error: #ff8080;--color-focus: #00ffff;color-scheme:dark}[data-theme=warm]{--color-background: #fbf3e6;--color-sidebar: #f4e6cf;--color-card: #fffaf2;--color-text: #2b2118;--color-text-muted: #5c4a3a;--color-border: #e2cfb2;--color-input-border: #c9b08c;--color-accent: #9a3412;--color-accent-text: #ffffff;--color-on: #2f6b3a;--color-off: #9a3412;--color-error: #a11a1a;--color-focus: #7c2d12}[data-theme=color-blind]{--color-background: #f7f7f9;--color-sidebar: #eceef3;--color-card: #ffffff;--color-text: #1b1f27;--color-text-muted: #474e5c;--color-border: #d3d7df;--color-input-border: #aab1bd;--color-accent: #0b5cad;--color-accent-text: #ffffff;--color-on: #0b5cad;--color-off: #a34d00;--color-error: #a34d00;--color-focus: #083f78}@media(prefers-reduced-motion:reduce){:root:not([data-reduced-motion=false]) *{transition:none!important;animation:none!important}}[data-reduced-motion=true] *{transition:none!important;animation:none!important}[data-density=compact]{--space-2: 6px;--space-3: 8px;--space-4: 12px;--space-6: 16px;--control-height: 36px}.avatar{flex:none;border-radius:50%;vertical-align:middle}.person{display:inline-flex;align-items:center;gap:var(--space-2)}.icon-grid{display:flex;flex-wrap:wrap;gap:var(--space-2)}.icon-grid button{min-height:44px;min-width:44px;padding:4px;font-size:22px}.icon-grid button[aria-pressed=true],.swatch[aria-pressed=true]{outline:3px solid var(--color-focus)}.swatch{width:44px;min-height:44px;border:none}.banner{max-width:var(--content-max);margin-block-end:var(--space-4);padding:var(--space-3) var(--space-4);border:1px solid var(--color-accent);border-radius:var(--radius);background:var(--color-card)}.steps{display:flex;flex-wrap:wrap;gap:var(--space-2);margin:0 0 var(--space-4);padding:0;list-style:none}.steps li[aria-current=step]{font-weight:700;text-decoration:underline}code.secret{display:block;padding:var(--space-2);overflow-wrap:anywhere;background:var(--color-background)}body{margin:0;background:var(--color-background);color:var(--color-text);font-family:var(--font);font-size:var(--font-size);line-height:1.4}a{color:var(--color-accent)}:focus-visible{outline:3px solid var(--color-focus);outline-offset:2px}h1{margin-block:0 var(--space-4);font-size:24px}h2{margin-block:0 var(--space-3);font-size:17px}.loading{min-height:100vh}.login-page{display:grid;place-items:center;min-height:100vh;padding:var(--space-4);box-sizing:border-box}.muted{color:var(--color-text-muted)}.small{font-size:var(--font-size-small)}.card{box-sizing:border-box;max-width:380px;margin-block-end:var(--space-4);padding:var(--space-4) var(--space-6);background:var(--color-card);border:1px solid var(--color-border);border-radius:var(--radius)}.card.wide{max-width:var(--content-max)}.login{width:100%;display:grid;gap:var(--space-3)}.login form{display:grid;gap:var(--space-3)}.field{display:grid;gap:var(--space-1)}.field.inline{display:inline-flex;align-items:center;gap:var(--space-2)}.row{display:flex;flex-wrap:wrap;gap:var(--space-3);margin-block:var(--space-2)}input,select{box-sizing:border-box;min-height:var(--control-height);padding:0 var(--space-2);border:1px solid var(--color-input-border);border-radius:var(--radius-small);background:var(--color-card);color:var(--color-text);font:inherit}.small select{min-height:36px}button,.button{display:inline-block;min-height:var(--control-height);box-sizing:border-box;padding:10px var(--space-4);border:1px solid var(--color-input-border);border-radius:var(--radius-small);background:var(--color-card);color:var(--color-text);font:inherit;text-align:center;text-decoration:none;cursor:pointer}button.primary,.button.primary{border-color:var(--color-accent);background:var(--color-accent);color:var(--color-accent-text);font-weight:600}button:disabled{cursor:not-allowed;opacity:.6}button:not(:disabled):hover,.button:hover{border-color:var(--color-accent)}.button.primary{display:block}.divider{text-align:center}.error{color:var(--color-error);font-weight:600}.status.on{color:var(--color-on);font-weight:600}.status.off{color:var(--color-off);font-weight:600}.table{border-collapse:collapse;background:var(--color-card);border:1px solid var(--color-border);border-radius:var(--radius)}.table th,.table td{padding:var(--space-2) var(--space-4);text-align:start;border-block-end:1px solid var(--color-border)}.table.full{width:100%;margin-block-end:var(--space-4)}.table td{vertical-align:top}.level.error{color:var(--color-error)}.level.warning{color:var(--color-off)}.plain{margin:0;padding:0;list-style:none}.features li{padding-block:var(--space-2);border-block-start:1px solid var(--color-border)}details summary{cursor:pointer}.preview{padding:var(--space-2) var(--space-3);border-radius:var(--radius-small);background:var(--color-background)}.plain-fieldset{margin:var(--space-3) 0;padding:0;border:none}.plain-fieldset legend{margin-block-end:var(--space-2);font-weight:600}.profile-head{gap:var(--space-4);margin-block-end:var(--space-4)}.profile-head h1{margin:0}.hint{position:relative;display:inline-block;vertical-align:middle}.hint-button{display:inline-grid;place-items:center;width:24px;min-height:24px;height:24px;padding:0;border-radius:50%;font-size:13px;font-weight:700;line-height:1}.hint-button:before{content:"i";font-style:italic;font-family:Georgia,serif}.hint-button.new:after{content:"";position:absolute;top:-2px;inset-inline-end:-2px;width:9px;height:9px;border-radius:50%;background:var(--color-off)}.hint-panel{position:absolute;z-index:20;top:30px;inset-inline-start:0;display:flex;flex-direction:column;gap:var(--space-2);width:min(340px,80vw);padding:var(--space-3) var(--space-4);background:var(--color-card);color:var(--color-text);border:1px solid var(--color-border);border-radius:var(--radius-small);box-shadow:0 6px 24px #0000002e;font-size:var(--font-size);font-weight:400;text-align:start}.hint-panel .row button{min-height:32px;padding:4px 10px}.badge{align-self:flex-start;padding:1px 8px;border-radius:999px;background:var(--color-off);color:var(--color-card);font-size:var(--font-size-small)}.field-help{display:block}.help-entry{padding-block:var(--space-2);border-block-end:1px solid var(--color-border)}.help-entry p{margin-block:var(--space-2)}.help-children{padding-inline-start:var(--space-6)}.tutor-panel{position:fixed;z-index:30;inset-inline-end:var(--space-4);bottom:calc(var(--space-4) + var(--tabbar-height));display:flex;flex-direction:column;gap:var(--space-2);width:min(380px,calc(100vw - 32px));padding:var(--space-4);background:var(--color-card);border:2px solid var(--color-accent);border-radius:var(--radius);box-shadow:0 8px 32px #00000038}.tutor-panel p{margin:0}.tutor-target{outline:3px solid var(--color-focus)!important;outline-offset:4px;box-shadow:0 0 0 8px #00000014}.feedback{position:fixed;z-index:25;bottom:calc(var(--space-4) + var(--tabbar-height));inset-inline-start:calc(var(--nav-width) + var(--space-4))}.feedback-panel{position:absolute;bottom:52px;inset-inline-start:0;display:flex;flex-direction:column;gap:var(--space-2);width:min(340px,80vw);padding:var(--space-4);background:var(--color-card);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:0 6px 24px #0000002e}textarea{box-sizing:border-box;padding:var(--space-2);border:1px solid var(--color-input-border);border-radius:var(--radius-small);background:var(--color-card);color:var(--color-text);font:inherit}.secret{display:block;padding:var(--space-2);word-break:break-all;-webkit-user-select:all;user-select:all}.scroll-x{overflow-x:auto}.table.compact td,.table.compact th{padding:var(--space-1);white-space:nowrap}.deviates{outline:2px dashed var(--color-warning, currentColor);outline-offset:-2px}html{-webkit-text-size-adjust:100%}img,video,input,select,textarea{max-width:100%}.visually-hidden{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.skip-link{position:absolute;z-index:100;inset-inline-start:var(--space-2);top:-100px;padding:var(--space-2) var(--space-4);background:var(--color-card);border:2px solid var(--color-focus);border-radius:var(--radius-small)}.skip-link:focus{top:var(--space-2)}.layout{display:flex;min-height:100vh;min-height:100dvh}.content{flex:1;min-width:0;box-sizing:border-box;padding:var(--space-6) var(--space-8) calc(var(--space-8) + 56px)}.content:focus{outline:none}.brand{font-size:18px}.icon{flex:none;display:block}.icon-button{display:inline-grid;place-items:center;position:relative;min-width:var(--control-height);min-height:var(--control-height);padding:0;border-color:transparent;background:transparent;color:var(--color-text)}.icon-button:hover{background:var(--color-card)}.nav-icon{position:relative;display:inline-grid;place-items:center}.nav-dot{position:absolute;top:6px;inset-inline-end:6px;width:9px;height:9px;border:2px solid var(--color-sidebar);border-radius:50%;background:var(--color-off)}.nav-icon .nav-dot{top:-3px;inset-inline-end:-4px}.nav-badge{margin-inline-start:auto;min-width:20px;padding:0 6px;border-radius:999px;background:var(--color-off);color:var(--color-card);font-size:var(--font-size-small);font-weight:700;line-height:20px;text-align:center}.sidebar{position:sticky;top:0;flex:none;box-sizing:border-box;width:var(--sidebar-width);height:100vh;height:100dvh;display:flex;flex-direction:column;background:var(--color-sidebar);border-inline-end:1px solid var(--color-border)}.sidebar-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);padding:var(--space-3) var(--space-2) var(--space-2) var(--space-4)}.sidebar-scroll{flex:1;min-height:0;overflow-y:auto;padding:0 var(--space-2);scrollbar-width:thin}.nav-group+.nav-group{margin-block-start:var(--space-1)}.nav-group-head,.nav-group-title{display:flex;align-items:center;justify-content:space-between;width:100%;min-height:32px;margin:0;padding:var(--space-1) var(--space-3);border:none;background:transparent;color:var(--color-text-muted);font-size:var(--font-size-small);font-weight:700;letter-spacing:.04em;text-transform:uppercase}.nav-group-head .icon{transition:transform .15s}.nav-group-head[aria-expanded=true] .icon{transform:rotate(90deg)}.nav-group-head.has-active span:after{content:" •";color:var(--color-accent)}.nav-item{position:relative;display:flex;align-items:center;gap:var(--space-3);min-height:38px;box-sizing:border-box;padding:var(--space-1) var(--space-3);border-radius:var(--radius-small);color:var(--color-text);text-decoration:none}.nav-item:hover{background:var(--color-card)}.nav-item[aria-current=page],.rail-item[aria-current=page],.tab-item[aria-current=page]{color:var(--color-accent);font-weight:700}.nav-item[aria-current=page]{background:var(--color-card);box-shadow:inset 3px 0 0 var(--color-accent)}.nav-sep{margin:var(--space-2) var(--space-3);border:none;border-block-start:1px solid var(--color-border)}.sidebar-foot{padding:var(--space-3);border-block-start:1px solid var(--color-border)}.sidebar.mini{width:var(--sidebar-mini-width)}.sidebar.mini .sidebar-head{flex-direction:column;padding-inline:var(--space-2)}.sidebar.mini .nav-item{justify-content:center;padding:var(--space-2)}.sidebar.mini .nav-text,.sidebar.mini .nav-badge{display:none}.sidebar.mini .sidebar-foot{padding:var(--space-2)}.account{display:flex;flex-direction:column;gap:var(--space-2)}.account .person{min-height:44px;color:var(--color-text);text-decoration:none}.account-settings{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-2)}.account-settings select{width:100%}.logout{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2)}.rail,.topbar,.tabbar{display:none}.rail-item,.tab-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:56px;min-width:44px;box-sizing:border-box;padding:var(--space-1);border:none;border-radius:var(--radius-small);background:transparent;color:var(--color-text);font-size:11px;line-height:1.2;text-align:center;text-decoration:none}.rail-item .nav-icon,.tab-item .nav-icon{padding:2px 16px;border-radius:999px}.rail-item[aria-current=page] .nav-icon,.tab-item[aria-current=page] .nav-icon{background:color-mix(in srgb,var(--color-accent) 16%,transparent)}.rail-item .nav-badge,.tab-item .nav-badge{display:none}.sheet-layer{position:fixed;inset:0;z-index:60}.sheet-backdrop{position:absolute;inset:0;background:var(--color-backdrop)}.sheet{position:absolute;top:0;bottom:0;inset-inline-start:0;display:flex;flex-direction:column;width:min(360px,88vw);background:var(--color-sidebar);box-shadow:var(--shadow);animation:sheet-in-side .18s ease-out}.sheet.end{inset-inline-start:auto;inset-inline-end:0}.sheet-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);padding:var(--space-2) var(--space-2) var(--space-2) var(--space-4);border-block-end:1px solid var(--color-border)}.sheet-head h2{flex:1;margin:0}.nav-item{min-width:0}.nav-text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sheet-body{overflow-x:hidden}.sheet-grip{display:none}.sheet-body{flex:1;overflow-y:auto;padding:var(--space-3);overscroll-behavior:contain}.sheet-nav .nav-item{min-height:44px}.sheet-account{margin-block-start:var(--space-4);padding-block-start:var(--space-4);border-block-start:1px solid var(--color-border)}@keyframes sheet-in-side{0%{transform:translate(-24px);opacity:0}}@keyframes sheet-in-bottom{0%{transform:translateY(32px);opacity:0}}@media(max-width:1023px){:root{--nav-width: var(--rail-width)}.sidebar{display:none}.rail{position:sticky;top:0;flex:none;box-sizing:border-box;width:var(--rail-width);height:100vh;height:100dvh;display:flex;flex-direction:column;justify-content:space-between;gap:var(--space-2);padding:var(--space-3) var(--space-2);overflow-y:auto;background:var(--color-sidebar);border-inline-end:1px solid var(--color-border)}.rail ul{display:flex;flex-direction:column;gap:var(--space-1)}.content{padding:var(--space-4) var(--space-6) calc(var(--space-8) + 56px)}}@media(min-width:1024px){:root[data-nav=mini]{--nav-width: var(--sidebar-mini-width)}}@media(max-width:639px){:root{--nav-width: 0px;--tabbar-height: 64px}.layout{flex-direction:column}.rail{display:none}.topbar{position:sticky;top:0;z-index:40;display:flex;align-items:center;gap:var(--space-3);min-height:var(--topbar-height);padding:0 var(--space-2) 0 var(--space-4);background:var(--color-sidebar);border-block-end:1px solid var(--color-border)}.topbar-household{flex:1;min-width:0;overflow:hidden;color:var(--color-text-muted);font-size:var(--font-size-small);text-overflow:ellipsis;white-space:nowrap}.tabbar{position:fixed;z-index:40;inset-inline:0;bottom:0;display:grid;grid-auto-columns:1fr;grid-auto-flow:column;gap:var(--space-1);padding:var(--space-1) var(--space-1) calc(var(--space-1) + env(safe-area-inset-bottom));background:var(--color-sidebar);border-block-start:1px solid var(--color-border)}.content{padding:var(--space-4) var(--space-4) calc(var(--tabbar-height) + var(--space-8) + 56px)}.sheet,.sheet.end{top:auto;inset-inline:0;width:auto;max-height:88vh;max-height:88dvh;border-radius:var(--radius) var(--radius) 0 0;padding-bottom:env(safe-area-inset-bottom);animation-name:sheet-in-bottom}.sheet-head{flex-wrap:wrap}.sheet-grip{display:block;flex-basis:100%;max-width:40px;height:4px;margin:0 auto var(--space-1);border-radius:2px;background:var(--color-border)}.sheet-nav .nav-group ul{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-1)}.account-settings{grid-template-columns:1fr}h1{font-size:21px}}@media(pointer:coarse){:root,[data-density=compact]{--control-height: 44px}.nav-item{min-height:44px}}.card-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-2) var(--space-3);margin-block-end:var(--space-3)}.card-head h2{margin:0}.card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(var(--grid-min, 200px),100%),1fr));gap:var(--space-3);max-width:var(--content-max);margin-block-end:var(--space-4)}.grid>.card{max-width:none;margin:0}.stat{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);min-height:88px;box-sizing:border-box;padding:var(--space-3) var(--space-4);background:var(--color-card);border:1px solid var(--color-border);border-radius:var(--radius);color:var(--color-text);text-decoration:none}.stat.link:hover{border-color:var(--color-accent)}.stat-text{display:flex;flex-direction:column;gap:2px;min-width:0}.stat-label{display:inline-flex;align-items:center;gap:var(--space-1);color:var(--color-text-muted);font-size:var(--font-size-small)}.stat-value{font-size:26px;font-weight:700;line-height:1.1}.stat-hint{color:var(--color-text-muted);font-size:var(--font-size-small)}.toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-2) var(--space-4);max-width:var(--content-max);margin-block-end:var(--space-4)}.toolbar-start,.toolbar-middle,.toolbar-end{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}.pager{display:flex;align-items:center;gap:var(--space-1)}.pager .icon-button{border-color:var(--color-input-border);background:var(--color-card)}.pager-label{min-width:10ch;padding-inline:var(--space-2);text-align:center}.tabs{max-width:var(--content-max);margin-block-end:var(--space-4)}.tablist{display:flex;gap:var(--space-1);overflow-x:auto;scrollbar-width:thin}.tabs:not(.segmented)>.tablist{border-block-end:1px solid var(--color-border);margin-block-end:var(--space-4)}.tablist [role=tab]{flex:none;display:inline-flex;align-items:center;gap:var(--space-2);border:none;border-radius:var(--radius-small) var(--radius-small) 0 0;background:transparent;color:var(--color-text-muted);white-space:nowrap}.tablist [role=tab][aria-selected=true]{color:var(--color-text);font-weight:700;box-shadow:inset 0 -3px 0 var(--color-accent)}.tabs.segmented{margin:0}.tabs.segmented .tablist{padding:2px;border:1px solid var(--color-input-border);border-radius:var(--radius-small);background:var(--color-card)}.tabs.segmented [role=tab]{min-height:calc(var(--control-height) - 6px);padding-block:4px;border-radius:calc(var(--radius-small) - 2px)}.tabs.segmented [role=tab][aria-selected=true]{background:var(--color-accent);color:var(--color-accent-text);box-shadow:none}.count{min-width:18px;padding:0 6px;border-radius:999px;background:var(--color-sidebar);color:var(--color-text);font-size:var(--font-size-small);line-height:18px}.empty{display:flex;flex-direction:column;align-items:center;gap:var(--space-2);padding:var(--space-6) var(--space-4);border:1px dashed var(--color-border);border-radius:var(--radius);color:var(--color-text-muted);text-align:center}.empty strong{color:var(--color-text)}.empty p{max-width:48ch;margin:0}.skeleton{display:grid;gap:var(--space-2);padding-block:var(--space-2)}.skeleton-line{display:block;height:14px;border-radius:7px;background:linear-gradient(90deg,var(--color-sidebar),var(--color-border),var(--color-sidebar));background-size:200% 100%;animation:shimmer 1.4s linear infinite}@keyframes shimmer{to{background-position:-200% 0}}.notice{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2) var(--space-3);max-width:var(--content-max);box-sizing:border-box;margin-block-end:var(--space-4);padding:var(--space-2) var(--space-4);border:1px solid var(--color-on);border-inline-start-width:4px;border-radius:var(--radius-small);background:var(--color-card)}.notice .icon{color:var(--color-on)}.table-wrap{max-width:100%;overflow-x:auto;margin-block-end:var(--space-3)}.data-table{width:100%;border-collapse:collapse}.data-table th,.data-table td{padding:var(--space-2) var(--space-3);border-block-end:1px solid var(--color-border);text-align:start;vertical-align:top}.data-table th{color:var(--color-text-muted);font-size:var(--font-size-small);font-weight:700;white-space:nowrap}.data-table .end{text-align:end;font-variant-numeric:tabular-nums}.data-table tbody tr:hover{background:color-mix(in srgb,var(--color-accent) 6%,transparent)}.data-table .sort{display:inline-flex;align-items:center;gap:var(--space-1);min-height:32px;padding:0;border:none;background:transparent;color:inherit;font-weight:inherit}@media(max-width:639px){.data-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.data-table,.data-table tbody,.data-table tr,.data-table td{display:block}.data-table tr{margin-block-end:var(--space-2);padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-card)}.data-table td,.data-table .end{display:flex;justify-content:space-between;gap:var(--space-3);padding:var(--space-1) 0;border:none;text-align:end}.data-table td:before{content:attr(data-label);color:var(--color-text-muted);font-size:var(--font-size-small);text-align:start}.data-table td.primary{font-size:15px;font-weight:700}.data-table td.primary:before{content:none}}.cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-block-start:1px solid var(--color-border);border-inline-start:1px solid var(--color-border)}.cal-weekday{padding:var(--space-1) var(--space-2);border-inline-end:1px solid var(--color-border);border-block-end:1px solid var(--color-border);background:var(--color-sidebar);color:var(--color-text-muted);font-size:var(--font-size-small);font-weight:700}.cal-day{min-width:0;min-height:96px;padding:var(--space-1);border-inline-end:1px solid var(--color-border);border-block-end:1px solid var(--color-border);background:var(--color-card)}.cal.week .cal-day{min-height:200px}.cal.week .cal-weekday{display:none}.cal-day.outside{background:var(--color-background)}.cal-day.outside .cal-date{color:var(--color-text-muted)}.cal-date{display:inline-block;min-width:26px;padding:2px 6px;border-radius:999px;font-size:var(--font-size-small);font-weight:700;text-align:center}.cal-day.today .cal-date{background:var(--color-accent);color:var(--color-accent-text)}.cal-day-button{min-height:0;padding:0;border:none;background:transparent;color:inherit}.cal-day ul{display:grid;gap:2px;margin-block-start:var(--space-1)}.cal-event{display:flex;flex-wrap:wrap;align-items:baseline;gap:0 var(--space-1);min-width:0;padding:2px var(--space-1);border-inline-start:3px solid var(--color-accent);border-radius:4px;background:color-mix(in srgb,var(--color-accent) 9%,var(--color-card));font-size:var(--font-size-small);line-height:1.3}.cal-event.on{border-color:var(--color-on);background:color-mix(in srgb,var(--color-on) 9%,var(--color-card))}.cal-event.off{border-color:var(--color-off);background:color-mix(in srgb,var(--color-off) 9%,var(--color-card))}.cal-event.muted{border-color:var(--color-border);background:var(--color-background)}.cal.month .cal-event{flex-wrap:nowrap;overflow:hidden;white-space:nowrap}.cal.month .cal-label{overflow:hidden;text-overflow:ellipsis}.cal-time{color:var(--color-text-muted);font-variant-numeric:tabular-nums}.cal-label{min-width:0;overflow-wrap:anywhere}.cal-more{display:block;padding:2px var(--space-1);color:var(--color-text-muted);font-size:var(--font-size-small)}.cal-list{display:grid;gap:var(--space-3);margin:0;padding:0;list-style:none}.cal-list>li{padding-block-end:var(--space-3);border-block-end:1px solid var(--color-border)}.cal-list h3{margin:0 0 var(--space-2);font-size:15px}.cal-list>li.today h3{color:var(--color-accent)}.cal-list .cal-event{padding:var(--space-2);font-size:var(--font-size)}.cal-list ul{display:grid;gap:var(--space-1)}.bar-chart{display:grid;grid-template-columns:minmax(80px,max-content) minmax(80px,1fr) max-content;align-items:center;gap:var(--space-2) var(--space-3);margin:0 0 var(--space-3);padding:0;list-style:none}.bar-chart li{display:contents}.bar-track{width:100%;height:14px}.bar-bg{fill:var(--color-border)}.bar-fill{fill:var(--color-accent)}.bar-target{fill:var(--color-text)}.bar-value{font-variant-numeric:tabular-nums;white-space:nowrap}@media(max-width:639px){.bar-chart{grid-template-columns:1fr max-content}.bar-track{grid-column:1 / -1;grid-row:span 1}}.sparkline{width:100%}.sparkline polyline{fill:none;stroke:var(--color-accent);stroke-width:2}.ring{flex:none}.ring circle{fill:none;stroke-width:7}.ring-bg{stroke:var(--color-border)}.ring-fill{stroke:var(--color-accent);stroke-linecap:round}.ring-text{fill:var(--color-text);font-size:15px;font-weight:700}.day-columns{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(170px,100%),1fr));gap:var(--space-3)}.day-column{padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-background)}.day-column.today{border-color:var(--color-accent);box-shadow:inset 0 3px 0 var(--color-accent)}.day-column h3{margin:0 0 var(--space-1);font-size:15px}.lesson{display:grid;gap:2px;margin-block-start:var(--space-2);padding:var(--space-2);border-inline-start:3px solid var(--color-accent);border-radius:4px;background:var(--color-card)}.lesson.cancelled{border-color:var(--color-off)}.lesson.cancelled .lesson-subject{text-decoration:line-through}.lesson.substitution,.lesson.extra{border-color:var(--color-on);border-inline-start-style:dashed}.lesson button{justify-self:start;min-height:32px;padding:2px 10px;font-size:var(--font-size-small)}.content .card{max-width:min(100%,var(--content-max))}.content .card:not(.wide){max-width:min(100%,380px)}@media(max-width:1023px){.content table:not(.data-table){display:block;max-width:100%;overflow-x:auto}}@media(max-width:639px){.card{padding:var(--space-3) var(--space-4)}.row>.field.inline:not(:has(>input[type=checkbox],>input[type=radio])){display:grid;flex:1 1 100%}.row>.field.inline input:not([type=checkbox],[type=radio]),.row>.field.inline select{width:100%}.toolbar-start,.toolbar-end{flex:1 1 100%;justify-content:space-between}}@media(max-width:639px){.grid{grid-template-columns:repeat(auto-fit,minmax(min(150px,100%),1fr))}.stat .ring{width:48px;height:48px}.stat-value{font-size:22px}.feedback{inset-inline-start:auto;inset-inline-end:var(--space-4)}.feedback-panel{inset-inline-start:auto;inset-inline-end:0}}.sticky-first th[scope=row]{position:sticky;inset-inline-start:0;z-index:1;background:var(--color-card)}:root{--shadow-card: 0 1px 2px rgb(0 0 0 / 5%), 0 2px 8px rgb(0 0 0 / 4%);--radius: 14px;--transition: .15s ease}[data-theme=high-contrast]{--shadow-card: none}h1{font-size:26px;font-weight:750;letter-spacing:-.01em}h2{font-weight:700}.card,.stat,.banner{box-shadow:var(--shadow-card)}.card{padding:var(--space-4) var(--space-6) var(--space-6)}button,.button,.nav-item,.stat,.tablist [role=tab],.rail-item,.tab-item{transition:background-color var(--transition),border-color var(--transition),color var(--transition),box-shadow var(--transition)}button.primary:not(:disabled):hover,.button.primary:hover{filter:brightness(1.08)}.stat.link:hover{box-shadow:var(--shadow)}.stat-label .icon{box-sizing:content-box;padding:5px;border-radius:50%;background:color-mix(in srgb,var(--color-accent) 12%,transparent);color:var(--color-accent)}.tablist{scrollbar-width:none}.tablist [role=tab]:hover{color:var(--color-text)}.banner{border-inline-start-width:4px}.status-bar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-1) var(--space-4);max-width:var(--content-max);margin-block-start:var(--space-8);padding-block-start:var(--space-3);border-block-start:1px solid var(--color-border);color:var(--color-text-muted);font-size:var(--font-size-small)}.status-dot{width:10px;height:10px;margin-inline-end:calc(var(--space-4) * -1 + var(--space-2));border-radius:50%;background:var(--color-text-muted)}.status-dot.ok{background:var(--color-on)}.status-dot.bad{background:var(--color-error)}@media(max-width:639px){h1{font-size:22px}.card{padding:var(--space-3) var(--space-4) var(--space-4)}}
