:root{color-scheme:light;--accent: #007aff;--accent-text: #0062cc;--accent-tint: rgba(0, 122, 255, .12);--accent-fill: #0071e3;--red-fill: #d70015;--on-accent: #ffffff;--bg: #f2f2f7;--surface: #ffffff;--surface-2: #f2f2f7;--fill: rgba(118, 118, 128, .12);--text: #000000;--text-2: rgba(60, 60, 67, .75);--text-3: rgba(60, 60, 67, .45);--sep: rgba(60, 60, 67, .29);--green: #34c759;--green-text: #1f7a37;--green-tint: rgba(52, 199, 89, .16);--red: #ff3b30;--red-text: #c4170d;--red-tint: rgba(255, 59, 48, .14);--orange: #ff9500;--orange-text: #a84d00;--orange-tint: rgba(255, 149, 0, .16);--bar-bg: rgba(249, 249, 249, .82);--bar-solid: #f9f9f9;--shadow-float: 0 8px 32px rgba(0, 0, 0, .18);--s1: 4px;--s2: 8px;--s3: 12px;--s4: 16px;--s5: 20px;--s6: 24px;--s8: 32px;--radius: 12px;--radius-sm: 8px;--gutter: 16px;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-left: env(safe-area-inset-left, 0px);--safe-right: env(safe-area-inset-right, 0px);--font: -apple-system, BlinkMacSystemFont, "SF Pro Text", system-ui, sans-serif}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){color-scheme:dark;--accent: #0a84ff;--accent-text: #409cff;--accent-tint: rgba(10, 132, 255, .2);--bg: #000000;--surface: #1c1c1e;--surface-2: #2c2c2e;--fill: rgba(118, 118, 128, .24);--text: #ffffff;--text-2: rgba(235, 235, 245, .7);--text-3: rgba(235, 235, 245, .4);--sep: rgba(84, 84, 88, .65);--green: #30d158;--green-text: #30d158;--green-tint: rgba(48, 209, 88, .2);--red: #ff453a;--red-text: #ff6961;--red-tint: rgba(255, 69, 58, .2);--orange: #ff9f0a;--orange-text: #ffb340;--orange-tint: rgba(255, 159, 10, .2);--bar-bg: rgba(22, 22, 24, .8);--bar-solid: #161618;--shadow-float: 0 8px 32px rgba(0, 0, 0, .6)}}:root[data-theme=dark]{color-scheme:dark;--accent: #0a84ff;--accent-text: #409cff;--accent-tint: rgba(10, 132, 255, .2);--bg: #000000;--surface: #1c1c1e;--surface-2: #2c2c2e;--fill: rgba(118, 118, 128, .24);--text: #ffffff;--text-2: rgba(235, 235, 245, .7);--text-3: rgba(235, 235, 245, .4);--sep: rgba(84, 84, 88, .65);--green: #30d158;--green-text: #30d158;--green-tint: rgba(48, 209, 88, .2);--red: #ff453a;--red-text: #ff6961;--red-tint: rgba(255, 69, 58, .2);--orange: #ff9f0a;--orange-text: #ffb340;--orange-tint: rgba(255, 159, 10, .2);--bar-bg: rgba(22, 22, 24, .8);--bar-solid: #161618;--shadow-float: 0 8px 32px rgba(0, 0, 0, .6)}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;-webkit-tap-highlight-color:transparent}body{margin:0;font-family:var(--font);font-size:1.0625rem;line-height:1.35;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;padding-left:var(--safe-left);padding-right:var(--safe-right)}.wrap{max-width:900px;margin:0 auto;padding:calc(var(--s4) + var(--safe-top)) var(--gutter) calc(var(--s6) + var(--safe-bottom))}h1{font-size:2.125rem;font-weight:700;letter-spacing:.01em;margin:0 0 var(--s1)}h2{font-size:1.25rem;font-weight:600;margin:0 0 var(--s3)}h3{font-size:1.0625rem;font-weight:600;margin:var(--s4) 0 var(--s2)}.muted{color:var(--text-2);font-size:.9375rem}.ok{color:var(--green-text);font-size:.9375rem;margin-top:var(--s3)}.error{color:var(--red-text);font-size:.9375rem;margin-top:var(--s3)}ul{margin:0;padding-left:var(--s5);line-height:1.6}a{color:var(--accent-text)}.card{background:var(--surface);border-radius:var(--radius);padding:var(--s4);margin-bottom:var(--s4)}label{display:block;font-size:.9375rem;color:var(--text-2);margin:var(--s3) 0 var(--s1)}input,select,textarea{width:100%;font:inherit;font-size:max(1rem,16px);padding:var(--s3);min-height:44px;color:var(--text);background:var(--surface-2);border:1px solid transparent;border-radius:10px;outline:none;transition:border-color .15s ease-out}input[type=checkbox],input[type=radio]{width:auto;min-height:0;accent-color:var(--accent)}textarea{resize:vertical}input:focus,select:focus,textarea:focus{border-color:var(--accent)}button{width:100%;min-height:44px;font:inherit;font-size:1.0625rem;font-weight:600;padding:var(--s3) var(--s4);border:0;border-radius:var(--radius);background:var(--accent-fill);color:var(--on-accent);margin-top:var(--s4);cursor:pointer;transition:opacity .15s ease-out,transform .15s ease-out}button:active:not(:disabled){opacity:.7}button:disabled{opacity:.4;cursor:default}button.secondary{background:var(--accent-tint);color:var(--accent-text);margin-top:0;width:auto;min-height:36px;padding:var(--s2) var(--s3);font-size:.9375rem;border-radius:10px}button.danger{background:var(--red-fill);color:#fff}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.week-nav{display:flex;justify-content:space-between;align-items:center;gap:var(--s3)}.lesson{border-top:.5px solid var(--sep);padding:var(--s3) 0;line-height:1.5}.lesson:first-of-type{border-top:0}.item{display:flex;justify-content:space-between;align-items:center;gap:var(--s3);min-height:44px;padding:var(--s2) 0;border-top:.5px solid var(--sep)}.status{display:inline-block;font-size:.8125rem;font-weight:600;border-radius:999px;padding:2px 9px;margin-left:var(--s2);background:var(--fill);color:var(--text-2)}.status-confirmed{background:var(--green-tint);color:var(--green-text)}.status-cancelled{background:var(--red-tint);color:var(--red-text)}.toast{position:fixed;left:50%;bottom:calc(var(--s6) + var(--safe-bottom));transform:translate(-50%);width:calc(100% - 2 * var(--gutter));max-width:520px;padding:var(--s3) var(--s4);border-radius:var(--radius);color:#fff;font-size:.9375rem;box-shadow:var(--shadow-float);z-index:100;cursor:pointer;animation:toast-in .2s ease-out}.toast-ok{background:#1f7a37}.toast-err{background:#c4170d}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:var(--s3);margin-bottom:var(--s4)}.stat{background:var(--surface);border-radius:var(--radius);padding:var(--s3) var(--s4)}.stat-value{font-size:1.75rem;font-weight:700;margin:var(--s1) 0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;padding:var(--s4);z-index:200;animation:fade-in .15s ease-out}.modal{background:var(--surface);color:var(--text);border-radius:14px;padding:var(--s5);width:100%;max-width:420px;box-shadow:var(--shadow-float);line-height:1.45}.modal-actions{display:flex;gap:var(--s3);margin-top:var(--s5)}.modal-actions button{flex:1;margin-top:0;width:auto}.modal-actions button.secondary{min-height:44px;font-size:1.0625rem}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.seg{display:inline-flex;width:100%;background:var(--fill);border-radius:9px;padding:2px}.seg button{flex:1;margin:0;min-height:32px;padding:var(--s1) var(--s2);font-size:.875rem;font-weight:500;background:transparent;color:var(--text);border-radius:7px}.seg button[aria-pressed=true]{background:var(--surface);box-shadow:0 1px 3px #00000026;font-weight:600}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}:root{--cal-bg: var(--surface);--cal-head-bg: var(--surface);--cal-line: rgba(60, 60, 67, .14);--cal-line-half: rgba(60, 60, 67, .06);--cal-axis: var(--text-2);--cal-today: var(--accent);--cal-today-bg: var(--accent-tint);--cal-now: var(--red);--cal-dim: rgba(120, 120, 128, .08);--cal-hatch: rgba(255, 149, 0, .22);--cal-off-text: var(--orange-text);--ev-planned-bg: color-mix(in srgb, var(--accent) 16%, var(--surface));--ev-planned-bar: var(--accent);--ev-planned-fg: var(--accent-text);--ev-pending-bg: color-mix(in srgb, var(--orange) 20%, var(--surface));--ev-pending-bar: var(--orange);--ev-pending-fg: var(--orange-text);--ev-confirmed-bg: color-mix(in srgb, var(--green) 20%, var(--surface));--ev-confirmed-bar: var(--green);--ev-confirmed-fg: var(--green-text);--ev-completed-bg: color-mix(in srgb, var(--text) 8%, var(--surface));--ev-completed-bar: var(--text-3);--ev-completed-fg: #48484a;--ev-settle-bg: var(--surface);--ev-settle-bar: var(--orange);--ev-settle-fg: var(--text);--ev-noshow-bg: color-mix(in srgb, var(--red) 16%, var(--surface));--ev-noshow-bar: var(--red);--ev-noshow-fg: var(--red-text);--ev-exam-bg: var(--accent-fill);--ev-exam-bar: rgba(255, 255, 255, .55);--ev-exam-fg: #ffffff}:root[data-theme=dark]{--ev-completed-fg: rgba(235, 235, 245, .7);--cal-line: rgba(84, 84, 88, .5);--cal-line-half: rgba(84, 84, 88, .22);--cal-dim: rgba(0, 0, 0, .28)}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--ev-completed-fg: rgba(235, 235, 245, .7);--cal-line: rgba(84, 84, 88, .5);--cal-line-half: rgba(84, 84, 88, .22);--cal-dim: rgba(0, 0, 0, .28)}}.cal-card{padding:14px}.cal-toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.cal-nav,.cal-tools{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.cal-title{margin:0 0 0 6px;font-size:18px}.icon-btn{min-width:44px;font-size:18px}.cal-nav .secondary,.cal-tools .secondary{min-height:40px}.cal-filter{width:auto;min-width:190px;padding:9px 12px;font-size:14px}.add-btn{width:auto;margin-top:0;padding:10px 16px;font-size:15px;min-height:40px}.warn-btn{background:var(--orange-tint);color:var(--orange-text)}.segmented{display:inline-flex;background:var(--fill);border-radius:10px;padding:3px}.segmented button{width:auto;margin:0;padding:7px 14px;font-size:14px;background:transparent;color:var(--text);border-radius:8px;min-height:34px}.segmented button.active{background:var(--surface);box-shadow:0 1px 2px #0000001f;font-weight:600}.cal-legend{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}.ev-chip{display:inline-flex;align-items:center;gap:4px;font-size:12px;padding:2px 8px;border-radius:999px;border-left:3px solid}.cal-wrap{position:relative}.cal-scroll{overflow:auto;max-height:calc(100vh - 230px);min-height:420px;border:1px solid var(--cal-line);border-radius:10px;background:var(--cal-bg);overscroll-behavior:contain}.cal-grid{display:grid;position:relative}.cal-corner,.cal-head{position:sticky;top:0;z-index:4;background:var(--cal-head-bg);border-bottom:1px solid var(--cal-line)}.cal-corner{z-index:5}.cal-head{padding:8px 6px;text-align:center;font-size:14px;color:var(--text-2);border-left:1px solid var(--cal-line);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cal-head .cal-dn{font-weight:700;font-size:16px}.cal-head.today{color:var(--cal-today);background:var(--cal-today-bg)}.cal-head.today .cal-dn{background:var(--accent-fill);color:var(--on-accent);border-radius:999px;padding:1px 7px}.cal-inst{font-weight:600}.cal-sub{display:block;font-size:12px;font-weight:400;color:var(--text-3);overflow:hidden;text-overflow:ellipsis}.cal-axis{position:relative}.cal-axis span{position:absolute;right:6px;transform:translateY(-50%);font-size:11px;color:var(--cal-axis)}.cal-axis span:first-child{transform:none}.cal-col{position:relative;border-left:1px solid var(--cal-line);cursor:pointer;background-image:linear-gradient(to bottom,var(--cal-line) 1px,transparent 1px),linear-gradient(to bottom,var(--cal-line-half) 1px,transparent 1px);background-size:100% var(--hour),100% calc(var(--hour) / 2)}.cal-dim{position:absolute;left:0;right:0;background:var(--cal-dim);pointer-events:none}.cal-off{position:absolute;left:0;right:0;z-index:1;pointer-events:none;background:repeating-linear-gradient(45deg,var(--cal-hatch) 0 6px,transparent 6px 12px)}.cal-off span{position:sticky;top:44px;display:inline-block;margin:6px;font-size:12px;font-weight:600;color:var(--cal-off-text);background:var(--surface);border-radius:6px;padding:2px 8px}.cal-now{position:absolute;left:-1px;right:0;height:2px;background:var(--cal-now);z-index:3;pointer-events:none}.cal-now:before{content:"";position:absolute;left:-4px;top:-4px;width:10px;height:10px;border-radius:50%;background:var(--cal-now)}.ev{position:absolute;z-index:2;margin:0;padding:3px 6px;overflow:hidden;display:flex;flex-direction:column;align-items:flex-start;text-align:left;font-size:12px;line-height:1.3;border-radius:6px;border:0;border-left:4px solid;box-shadow:0 1px 2px #00000014;cursor:pointer}.ev:focus-visible{outline:2px solid var(--cal-today);outline-offset:1px}.ev-time{font-weight:600;white-space:nowrap}.ev-who{font-weight:600;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.ev-meta{opacity:.85;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.ev-planned{background:var(--ev-planned-bg);border-color:var(--ev-planned-bar);color:var(--ev-planned-fg)}.ev-pending{background:var(--ev-pending-bg);border-color:var(--ev-pending-bar);color:var(--ev-pending-fg)}.ev-confirmed{background:var(--ev-confirmed-bg);border-color:var(--ev-confirmed-bar);color:var(--ev-confirmed-fg)}.ev-completed{background:var(--ev-completed-bg);border-color:var(--ev-completed-bar);color:var(--ev-completed-fg)}.ev-settle{background:var(--ev-settle-bg);border-color:var(--ev-settle-bar);color:var(--ev-settle-fg);border-style:dashed}.ev-noshow{background:var(--ev-noshow-bg);border-color:var(--ev-noshow-bar);color:var(--ev-noshow-fg)}.ev-skeleton{position:absolute;left:4px;right:4px;border-radius:6px;background:linear-gradient(90deg,var(--fill) 25%,var(--surface-2) 50%,var(--fill) 75%);background-size:200% 100%;animation:cal-shimmer 1.2s infinite linear}@keyframes cal-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media (prefers-reduced-motion: reduce){.ev-skeleton{animation:none}}.cal-empty{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:14px;color:var(--text-2);background:var(--surface);padding:6px 12px;border-radius:8px;pointer-events:none;z-index:6}.cal-error{text-align:center;padding:40px 12px;color:var(--red-text)}.day-pills{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:10px}.day-pills button{margin:0;padding:6px 0;min-height:48px;background:var(--fill);color:var(--text);display:flex;flex-direction:column;align-items:center;font-size:12px;border-radius:10px}.day-pills button strong{font-size:16px}.day-pills button.today{color:var(--cal-today);box-shadow:inset 0 0 0 2px var(--cal-today)}.day-pills button.active{background:var(--accent-fill);color:var(--on-accent)}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;padding:16px;z-index:150}.sheet{background:var(--surface);border-radius:16px;padding:18px 20px 20px;width:100%;max-width:480px;max-height:calc(100vh - 32px);overflow-y:auto;box-shadow:0 12px 40px #0000004d}.sheet-head{display:flex;justify-content:space-between;align-items:center;gap:10px}.sheet-close{width:44px;height:44px;margin:0;padding:0;font-size:26px;line-height:1;background:transparent;color:var(--text-2);border-radius:10px}.sheet-close:hover{background:var(--fill)}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.form-error{margin-top:12px;padding:10px 12px;border-radius:10px;background:var(--red-tint);color:var(--red-text);font-size:14px}.details{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;margin:14px 0 4px}.details dt{color:var(--text-2);font-size:14px}.details dd{margin:0}@media (max-width: 700px){.cal-card{padding:10px}.cal-toolbar{flex-direction:column;align-items:stretch}.cal-nav{justify-content:space-between}.cal-title{order:-1;width:100%;margin:0 0 4px;font-size:16px}.cal-tools>*{flex:1 1 auto}.cal-filter{min-width:0}.icon-btn,.cal-nav .secondary,.cal-tools .secondary,.add-btn{min-height:44px}.cal-scroll{max-height:calc(100vh - 300px);min-height:360px}.sheet-backdrop{align-items:flex-end;padding:0}.sheet{max-width:none;border-radius:16px 16px 0 0;max-height:92vh;padding-bottom:calc(20px + env(safe-area-inset-bottom))}.form-row{grid-template-columns:1fr;gap:0}}.result-choice{display:grid;grid-template-columns:1fr 1fr;gap:8px;border:0;padding:0;margin:0}.result-choice legend{font-size:14px;margin-bottom:6px;padding:0}.result-choice label{margin:0;display:flex;align-items:center;justify-content:center;gap:8px;min-height:44px;border:1px solid var(--sep);border-radius:10px;cursor:pointer;font-size:16px}.result-choice input{width:auto}.result-choice label.on.pass{background:var(--ev-confirmed-bg);border-color:var(--ev-confirmed-bar);color:var(--ev-confirmed-fg);font-weight:600}.result-choice label.on.fail{background:var(--ev-noshow-bg);border-color:var(--ev-noshow-bar);color:var(--ev-noshow-fg);font-weight:600}.ev-exam{background:var(--ev-exam-bg);border-color:var(--ev-exam-bar);color:var(--ev-exam-fg)}.cal-col.readonly{cursor:default}:root{--tabbar-h: 50px;--navbar-h: 44px}.shell-main{max-width:720px;margin:0 auto;padding:0 var(--gutter) calc(var(--tabbar-h) + var(--safe-bottom) + var(--s8))}.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:60;display:flex;justify-content:space-around;padding:0 var(--safe-right) var(--safe-bottom) var(--safe-left);background:var(--bar-solid);border-top:.5px solid var(--sep)}@supports ((-webkit-backdrop-filter: blur(1px)) or (backdrop-filter: blur(1px))){.tabbar,.navbar.collapsed{background:var(--bar-bg);-webkit-backdrop-filter:blur(20px) saturate(180%);backdrop-filter:blur(20px) saturate(180%)}}.tab{flex:1;max-width:120px;min-height:var(--tabbar-h);margin:0;padding:6px 0 4px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;background:transparent;color:var(--text-2);border-radius:0;font-weight:500}.tab[aria-current=page]{color:var(--accent)}.tab:active:not(:disabled){opacity:.6}.tab-icon{position:relative;display:inline-flex}.tab-label{font-size:.625rem;letter-spacing:.01em}.tab-badge{position:absolute;top:-4px;left:16px;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--red-fill);color:#fff;font-size:.75rem;font-weight:600;line-height:18px;text-align:center}@media (min-width: 1024px){.shell{display:grid;grid-template-columns:248px 1fr;min-height:100vh}.tabbar{position:sticky;top:0;height:100vh;flex-direction:column;justify-content:flex-start;gap:2px;padding:calc(var(--s6) + var(--safe-top)) var(--s3);border-top:0;border-right:.5px solid var(--sep)}.tab{flex:none;max-width:none;flex-direction:row;justify-content:flex-start;gap:var(--s3);min-height:40px;padding:var(--s2) var(--s3);border-radius:10px;color:var(--text)}.tab .tab-icon{color:var(--accent)}.tab[aria-current=page]{background:var(--accent-tint);color:var(--accent-text);font-weight:600}.tab-label{font-size:.9375rem}.tab-badge{position:static;margin-left:auto;order:2}.tab-icon .tab-badge{position:absolute;left:auto;right:-10px}.shell-main{width:100%;max-width:760px;padding-bottom:var(--s8)}}.shell .toast{bottom:calc(var(--tabbar-h) + var(--safe-bottom) + var(--s3))}@media (min-width: 1024px){.shell .toast{bottom:var(--s6)}}.navbar{position:sticky;top:0;z-index:50;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;min-height:calc(var(--navbar-h) + var(--safe-top));padding-top:var(--safe-top);margin:0 calc(-1 * var(--gutter));padding-left:var(--s2);padding-right:var(--s2);border-bottom:.5px solid transparent;transition:background-color .2s ease-out,border-color .2s ease-out}.navbar.collapsed{background:var(--bar-solid);border-bottom-color:var(--sep)}.navbar-title{font-size:1.0625rem;font-weight:600;opacity:0;transition:opacity .2s ease-out;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:60vw}.navbar.collapsed .navbar-title{opacity:1}.navbar-side{display:flex;align-items:center;min-width:0}.navbar-right{justify-content:flex-end}.navbar-right button,.nav-back{width:auto;min-height:44px;margin:0;padding:0 var(--s2);background:transparent;color:var(--accent-text);font-weight:400;font-size:1.0625rem;display:inline-flex;align-items:center;gap:2px}.large-title{font-size:2.125rem;font-weight:700;margin:var(--s1) 0 var(--s4);letter-spacing:.01em}.section{margin-bottom:var(--s6)}.section-head{font-size:.8125rem;font-weight:400;color:var(--text-2);text-transform:uppercase;letter-spacing:.02em;margin:0 var(--s4) 6px}.section-foot{font-size:.8125rem;color:var(--text-2);margin:6px var(--s4) 0;line-height:1.4}.group{background:var(--surface);border-radius:var(--radius);overflow:hidden}.group>*{position:relative}.group>*+*:before{content:"";position:absolute;top:0;left:var(--s4);right:0;height:.5px;background:var(--sep)}.row{position:relative;display:flex;align-items:center;gap:var(--s3);min-height:44px;padding:11px var(--s4);color:var(--text)}.row-button{width:100%;margin:0;border-radius:0;background:transparent;text-align:left;font-weight:400;font-size:1.0625rem}.row-button:active:not(:disabled){opacity:1;background:var(--fill)}.row-icon{flex:none;width:30px;height:30px;border-radius:7px;display:inline-flex;align-items:center;justify-content:center}.row-icon svg{width:19px;height:19px}.row-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.row-title{font-size:1.0625rem;line-height:1.3}.row-title.strong{font-weight:600}.row-sub{font-size:.9375rem;color:var(--text-2);line-height:1.3}.row-detail{flex:none;color:var(--text-2);font-size:1.0625rem;text-align:right}.row-chevron{flex:none;color:var(--text-3);display:inline-flex;margin-right:-6px}.row-destructive .row-title{color:var(--red-text)}.row-accent .row-title{color:var(--accent-text)}.row-pad{padding:var(--s3) var(--s4)}.row-pad>:first-child{margin-top:0}.row-icon.tone-accent,.tile-icon.tone-accent{background:var(--accent);color:#fff}.row-icon.tone-green,.tile-icon.tone-green{background:var(--green);color:#fff}.row-icon.tone-orange,.tile-icon.tone-orange{background:var(--orange);color:#fff}.row-icon.tone-red,.tile-icon.tone-red{background:var(--red);color:#fff}.row-icon.tone-neutral,.tile-icon.tone-neutral{background:var(--text-3);color:#fff}.pill{display:inline-flex;align-items:center;gap:4px;font-size:.8125rem;font-weight:600;line-height:1.4;border-radius:999px;padding:2px 9px;white-space:nowrap}.pill.tone-accent{background:var(--accent-tint);color:var(--accent-text)}.pill.tone-green{background:var(--green-tint);color:var(--green-text)}.pill.tone-orange{background:var(--orange-tint);color:var(--orange-text)}.pill.tone-red{background:var(--red-tint);color:var(--red-text)}.pill.tone-neutral{background:var(--fill);color:var(--text-2)}.inline-btn{width:auto;min-height:32px;margin:0;padding:4px 14px;border-radius:999px;font-size:.9375rem;font-weight:600}.actions{display:grid;gap:var(--s3);margin:0 0 var(--s6)}.actions button{margin:0}.btn-plain{background:transparent;color:var(--accent-text);font-weight:400}.btn-destructive-plain{background:var(--surface);color:var(--red-text);font-weight:400}.tiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s3);margin-bottom:var(--s6)}@media (min-width: 700px){.tiles{grid-template-columns:repeat(3,minmax(0,1fr))}}.tile{display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-height:116px;margin:0;padding:var(--s3) var(--s4) var(--s4);border-radius:14px;background:var(--surface);color:var(--text);text-align:left;font-weight:400}.tile:active:not(:disabled){opacity:1;transform:scale(.98)}.tile-wide{grid-column:1 / -1}.tile-icon{width:32px;height:32px;border-radius:9px;display:inline-flex;align-items:center;justify-content:center;margin-bottom:var(--s2)}.tile-icon svg{width:20px;height:20px}.tile-label{font-size:.9375rem;font-weight:600;color:var(--text-2)}.tile-value{font-size:1.375rem;font-weight:700;line-height:1.2}.tile-sub{font-size:.8125rem;color:var(--text-2)}.meter{display:flex;height:8px;border-radius:4px;overflow:hidden;background:var(--fill);margin-top:var(--s2)}.meter>span{display:block;height:100%}.empty{display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;padding:var(--s8) var(--s4);background:var(--surface);border-radius:var(--radius)}.empty-icon{width:52px;height:52px;border-radius:50%;background:var(--fill);color:var(--text-2);display:inline-flex;align-items:center;justify-content:center;margin-bottom:var(--s1)}.skeleton-line{display:block;height:12px;border-radius:6px;background:var(--fill);margin:4px 0;animation:sk-pulse 1.2s ease-in-out infinite}@keyframes sk-pulse{50%{opacity:.5}}.profile-card{display:flex;align-items:center;gap:var(--s4);padding:var(--s4)}.avatar{flex:none;width:60px;height:60px;border-radius:50%;background:var(--accent-fill);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:1.375rem;font-weight:600}@media (max-width: 700px){.modal-backdrop{align-items:flex-end;padding:0 var(--s2) calc(var(--s2) + var(--safe-bottom))}.modal{max-width:none;padding:0;background:transparent;box-shadow:none;animation:sheet-up .25s ease-out}.modal>p{background:var(--surface);border-radius:14px 14px 0 0;padding:var(--s4) var(--s4) var(--s3);text-align:center;color:var(--text-2);font-size:.9375rem}.modal-actions{flex-direction:column-reverse;gap:var(--s2);margin-top:0}.modal-actions button{min-height:56px;border-radius:14px;font-size:1.25rem}.modal-actions button:last-child{border-radius:0 0 14px 14px;border-top:.5px solid var(--sep);background:var(--surface);color:var(--accent-text);font-weight:400}.modal-actions button.danger:last-child{color:var(--red-text)}.modal-actions button.secondary{background:var(--surface);color:var(--accent-text);font-weight:600}}@keyframes sheet-up{0%{transform:translateY(24px);opacity:0}to{transform:none;opacity:1}}.unread-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--accent);margin-right:6px;vertical-align:middle}.note-time{display:block;font-size:.8125rem;color:var(--text-2);margin-top:2px}.row-link{text-decoration:none}.row-link:active{background:var(--fill)}.student-file{margin-top:10px;padding:var(--s3);background:var(--surface-2);border-radius:var(--radius)}.student-file.embedded{margin:0;padding:var(--s4);background:var(--surface)}.inline-btn.danger-tint{background:var(--red-tint);color:var(--red-text)}.attendance{display:grid;grid-template-columns:1fr 1fr;gap:var(--s3)}.attendance button{margin:0}button.tint-danger{background:var(--red-tint);color:var(--red-text)}.week-switch{display:flex;align-items:center;justify-content:space-between;gap:var(--s2);margin:0 0 var(--s4)}.week-switch strong{font-size:1.0625rem;text-align:center}.icon-round{width:44px;height:44px;min-height:44px;margin:0;padding:0;border-radius:50%;background:var(--surface);color:var(--accent-text);display:inline-flex;align-items:center;justify-content:center}.badge-stack{display:flex;flex-direction:column;align-items:flex-end;gap:4px}.switch-row{display:flex;align-items:center;justify-content:space-between;gap:var(--s3);min-height:44px;margin:var(--s3) 0 0;color:var(--text);font-size:1.0625rem}input.switch{-webkit-appearance:none;-moz-appearance:none;appearance:none;flex:none;width:51px;height:31px;min-height:0;padding:0;border:0;border-radius:999px;background:var(--fill);position:relative;cursor:pointer;transition:background-color .2s ease-out}input.switch:after{content:"";position:absolute;top:2px;left:2px;width:27px;height:27px;border-radius:50%;background:#fff;box-shadow:0 2px 4px #0003;transition:transform .2s ease-out}input.switch:checked{background:var(--green)}input.switch:checked:after{transform:translate(20px)}.search{margin:0 0 var(--s4)}.search input{background:var(--fill);min-height:36px;padding:var(--s2) var(--s3)}.seg-wrap{flex-wrap:wrap}.seg-wrap button{flex:1 1 45%}@media (min-width: 560px){.seg-wrap button{flex:1 1 0}}.stat-label{font-size:.9375rem;font-weight:600}.shell-main:has(.calendar-page){max-width:1440px}.row-button:focus-visible,.tile:focus-visible,.tab:focus-visible,.seg button:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.row-detail{max-width:60%;overflow-wrap:anywhere}.row-title,.row-sub,.tile-value,.tile-sub,.large-title{overflow-wrap:anywhere}.tab-label{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@supports (font: -apple-system-body){html{font:-apple-system-body}body{font-size:1rem;font-family:var(--font)}}.attendance button.secondary{min-height:44px;font-size:1.0625rem;width:100%}.inline-btn.btn-tint{background:var(--accent-tint);color:var(--accent-text)}.note-actions{display:flex;flex-wrap:wrap;gap:var(--s2);margin-top:var(--s2)}.cancel-form{background:var(--surface);border-radius:var(--radius);padding:var(--s4)}.unit-input{display:flex;align-items:center;gap:var(--s2)}.unit-input input{flex:0 0 96px;text-align:right}.unit-input span{color:var(--text-2);font-size:.9375rem}.hero{display:flex;flex-direction:column;gap:var(--s1);background:var(--surface);border-radius:16px;padding:var(--s4) var(--s4) var(--s3);margin-bottom:var(--s6);border-top:4px solid var(--accent)}.hero.tone-orange{border-top-color:var(--orange)}.hero.tone-green{border-top-color:var(--green)}.hero.tone-neutral{border-top-color:var(--text-3)}.hero-label{display:inline-flex;align-items:center;gap:6px;font-size:.9375rem;font-weight:600;color:var(--text-2)}.hero.tone-orange .hero-label{color:var(--orange-text)}.hero.tone-green .hero-label{color:var(--green-text)}.hero.tone-accent .hero-label{color:var(--accent-text)}.hero-title{font-size:1.5rem;font-weight:700;line-height:1.2;overflow-wrap:anywhere}.hero-sub{color:var(--text-2);font-size:.9375rem}.hero button{margin-top:var(--s3)}.hero .hero-link{margin-top:var(--s1);background:transparent;color:var(--accent-text);font-weight:400}.hero-btn{display:flex;align-items:center;justify-content:center;min-height:44px;margin-top:var(--s3);border-radius:var(--radius);background:var(--accent-fill);color:#fff;font-weight:600;text-decoration:none}.logout-gap{height:var(--s8)}.legal h3{font-size:1rem;margin:var(--s4) 0 var(--s1)}.legal p{margin:0 0 var(--s2);font-size:.9375rem;line-height:1.5}.legal-links{text-align:center;font-size:.875rem;color:var(--text-2);margin:var(--s4) 0 0}button.link{width:auto;min-height:0;margin:0;padding:4px;background:none;color:var(--accent-text);font-size:inherit;font-weight:400;text-decoration:underline}.check-row{display:flex;align-items:flex-start;gap:var(--s3);color:var(--text);font-size:.9375rem;margin:0}.check-row input{width:22px;height:22px;margin-top:2px;flex:none}.logo-ink{fill:currentColor}.logo-dot{fill:#34c759}.auth{min-height:100vh;min-height:100dvh;display:grid;background:var(--bg)}.auth-brand{display:none}.auth-main{display:grid;place-items:center;padding:calc(var(--s8) + var(--safe-top)) var(--gutter) calc(var(--s6) + var(--safe-bottom))}.auth-col{width:100%;max-width:400px}.auth-logo{display:block;width:168px;height:auto;margin:0 auto var(--s6);color:var(--text)}.auth-card{background:var(--surface);border-radius:16px;padding:var(--s6) var(--s5)}.auth-card h1{font-size:1.625rem;margin-bottom:var(--s2)}.auth-card>.muted:first-of-type{margin-top:0}.auth-card form button[type=submit]{margin-top:var(--s5)}.auth-note{text-align:center;font-size:.875rem;color:var(--text-2);margin:var(--s5) var(--s2) 0;text-wrap:pretty}button.link.auth-logout,button.link.auth-forgot{display:block;margin:var(--s4) auto 0;text-decoration:none}.pass-field{position:relative}.pass-field input{padding-right:76px}button.pass-toggle{position:absolute;top:0;right:0;bottom:0;width:auto;min-height:44px;margin:0;padding:0 var(--s3);background:none;color:var(--accent-text);font-size:.9375rem;font-weight:500;border-radius:0 10px 10px 0}@media (min-width: 900px){.auth{grid-template-columns:minmax(360px,5fr) 7fr}.auth-brand{display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:var(--s8);padding:var(--s8) clamp(var(--s8),6vw,96px);background:#111;color:#fff}.auth-brand-mark{width:clamp(140px,16vw,220px);height:auto;margin-left:calc(clamp(140px,16vw,220px)*-.34)}.auth-brand-text{margin:0;font-size:clamp(1.5rem,2.2vw,2rem);font-weight:700;line-height:1.2;letter-spacing:-.01em}.auth-card{padding:var(--s8)}}@media (prefers-color-scheme: dark){:root:not([data-theme=light]) .auth-brand{border-right:1px solid var(--sep)}}:root[data-theme=dark] .auth-brand{border-right:1px solid var(--sep)}.auth-loading{min-height:100vh;min-height:100dvh;display:grid;place-items:center;background:var(--bg);color:var(--text)}.auth-loading-mark{width:56px;height:56px;animation:logo-pulse 1.4s ease-in-out infinite}@keyframes logo-pulse{50%{opacity:.35}}@media (prefers-reduced-motion: reduce){.auth-loading-mark{animation:none}}.brand{display:none}@media (min-width: 1024px){.shell-wide{grid-template-columns:264px 1fr}.brand-title{font-size:.9375rem;font-weight:600;color:var(--text);margin-top:var(--s3)}.brand-sub{font-size:.8125rem;color:var(--text-2)}.shell-wide .shell-main{max-width:none;padding:0 var(--s8) var(--s8)}.shell-wide .large-title{font-size:1.75rem;margin-top:var(--s2)}.shell-wide .tiles{grid-template-columns:repeat(5,minmax(0,1fr));margin-bottom:var(--s6)}.shell-wide .tile{min-height:128px}.shell-wide .tile-wide{grid-column:span 1}.dash{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,2fr);gap:var(--s6);align-items:start}.split{display:grid;grid-template-columns:minmax(320px,400px) minmax(0,1fr);gap:var(--s6);align-items:start}.split-list{position:sticky;top:var(--s4);max-height:calc(100vh - var(--s8));overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;border-radius:var(--radius)}.split-list .navbar{margin-left:0;margin-right:0}.split-detail{min-width:0}.split-detail .screen{max-width:920px}.split-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--s2);min-height:60vh;color:var(--text-2);background:var(--surface);border-radius:var(--radius);text-align:center;padding:var(--s8)}.row.selected{background:var(--accent-tint)}.row.selected .row-title{color:var(--accent-text);font-weight:600}.settings-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 var(--s6);align-items:start}}.agenda-time{font-variant-numeric:tabular-nums;font-weight:600;margin-right:var(--s1)}.brand-logo{display:block;width:104px;height:auto;color:var(--text)}.tab-bottom{display:contents}.screen-logo{display:block;width:72px;height:auto;color:var(--text);margin:var(--s2) 0 0}@media (min-width: 1024px){.brand{display:flex;flex-direction:column;gap:2px;padding:0 var(--s3) var(--s5);margin-bottom:var(--s3);border-bottom:.5px solid var(--sep)}.brand-title,.brand-sub{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tab-bottom{display:flex;flex-direction:column;gap:2px;margin-top:auto;padding-top:var(--s3);border-top:.5px solid var(--sep)}.screen-logo{display:none}}.rh{--rh-bg: #111111;--rh-fg: #ffffff;--rh-muted: rgba(255, 255, 255, .68);--rh-track: rgba(255, 255, 255, .14);display:grid;gap:var(--s5);background:var(--rh-bg);color:var(--rh-fg);border-radius:16px;padding:var(--s5);margin-bottom:var(--s4)}@media (prefers-color-scheme: dark){:root:not([data-theme=light]) .rh{--rh-bg: var(--surface);border:.5px solid var(--sep)}}:root[data-theme=dark] .rh{--rh-bg: var(--surface);border:.5px solid var(--sep)}.rh-main{display:grid;gap:var(--s1);align-content:start}.rh-eyebrow{margin:0;font-size:.9375rem;font-weight:600;color:var(--rh-muted)}.rh-value{margin:0;font-size:3rem;line-height:1.05;font-weight:800;letter-spacing:-.02em;color:#34c759;font-variant-numeric:tabular-nums}.rh-sub{margin:0;font-size:.9375rem;color:var(--rh-muted);max-width:46ch;text-wrap:pretty}.rh-side{display:grid;gap:var(--s4);align-content:start}.rh-bar{display:flex;gap:3px;height:10px;border-radius:5px;overflow:hidden;background:var(--rh-track)}.rh-bar span{min-width:0}.rh-rec{background:#34c759}.rh-pend{background:#ffffff73}.rh-lost{background:#ff6961}.rh-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s3) var(--s4);margin:0}.rh-stats dt{display:flex;align-items:center;gap:6px;font-size:.8125rem;color:var(--rh-muted)}.rh-stats dd{margin:2px 0 0;font-size:1.25rem;font-weight:700;font-variant-numeric:tabular-nums}.rh-dot{width:8px;height:8px;border-radius:50%;flex:none}button.rh-link{width:auto;justify-self:start;min-height:36px;margin:0;padding:0;display:inline-flex;align-items:center;gap:2px;background:none;color:var(--rh-fg);font-size:.9375rem;font-weight:600}button.rh-link svg{width:16px;height:16px}@media (min-width: 640px){.rh-stats{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (min-width: 1024px){.shell-wide .rh{grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:var(--s8);padding:var(--s6) var(--s8);margin-bottom:var(--s5);align-items:center}.shell-wide .rh-value{font-size:3.75rem}}.rw{margin:var(--s5) 0}.rw-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--s2) var(--s3);margin-bottom:var(--s3)}.rw-title{font-size:1.25rem;font-weight:700;margin:0}.rw-nav{display:flex;align-items:center;gap:var(--s1)}.rw-range{font-size:.9375rem;font-weight:600;min-width:0;text-align:center;padding:0 var(--s1)}.rw-nav button{width:auto;min-height:36px;margin:0;background:var(--fill);color:var(--accent-text);border-radius:10px}.rw-arrow{padding:0 var(--s2);display:inline-flex;align-items:center}.rw-today{padding:0 var(--s3);font-size:.9375rem;font-weight:600}.rw-grid{list-style:none;margin:0;padding:0;display:grid;gap:var(--s2)}.rw-day{display:grid;grid-template-columns:52px 1fr;gap:var(--s3);align-items:center;background:var(--surface);border-radius:var(--radius);padding:var(--s3)}.rw-is-today{box-shadow:inset 0 0 0 2px var(--accent)}.rw-date{display:flex;flex-direction:column;align-items:center;line-height:1.1}.rw-wd{font-size:.8125rem;color:var(--text-2);text-transform:uppercase;letter-spacing:.02em}.rw-dn{font-size:1.375rem;font-weight:700}.rw-is-today .rw-wd,.rw-is-today .rw-dn{color:var(--accent-text)}.rw-empty{color:var(--text-2);font-size:.9375rem}.rw-body{display:grid;gap:6px;min-width:0}.rw-big{display:flex;align-items:baseline;gap:var(--s2);flex-wrap:wrap}.rw-big strong{font-size:1.25rem;color:var(--green-text)}.rw-big span{font-size:.8125rem;color:var(--text-2)}.rw-bar{display:flex;height:8px;border-radius:4px;overflow:hidden;background:var(--fill)}.rw-seg{display:block;height:100%}.rw-rec{background:var(--green)}.rw-lost{background:var(--red)}.rw-pend{background:var(--accent)}.rw-detail{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:2px var(--s3);font-size:.8125rem}.rw-t-lost{color:var(--red-text)}.rw-t-pend{color:var(--accent-text)}.rw-foot{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:var(--s2) var(--s4);margin-top:var(--s3)}.rw-legend{display:flex;gap:var(--s3);font-size:.8125rem;color:var(--text-2)}.rw-legend span{display:inline-flex;align-items:center;gap:6px}.rw-dot{display:inline-block;width:10px;height:10px;border-radius:50%}.rw-sum{margin:0;font-size:.9375rem;color:var(--text-2);text-wrap:pretty}.rw-sum strong{color:var(--text)}@media (min-width: 700px){.rw-grid{grid-template-columns:repeat(7,minmax(0,1fr))}.rw-day{grid-template-columns:1fr;align-items:start;align-content:start;min-height:150px;gap:var(--s2)}.rw-date{flex-direction:row;align-items:baseline;gap:6px}.rw-big{flex-direction:column;gap:0}.rw-detail{flex-direction:column}}.tab-logout{display:none}@media (min-width: 1024px){.tab-logout{display:flex;color:var(--red-text)}.tab.tab-logout .tab-icon{color:var(--red-text)}.tab-logout-wrap{margin-top:var(--s2);padding-top:var(--s2);border-top:.5px solid var(--sep)}}.rs-def{font-size:.875rem;margin:0 0 var(--s4);text-wrap:pretty}button.rh-link.rh-price{margin-top:var(--s2);color:var(--green)}#print-root{display:none}@media print{body>*:not(#print-root){display:none!important}#print-root{display:block;color:#000;background:#fff;font:9pt/1.35 -apple-system,Segoe UI,Roboto,Arial,sans-serif}#print-root h1{font-size:15pt;margin:0 0 2mm}#print-root .pr-meta{margin:0 0 4mm;color:#444}#print-root table{width:100%;border-collapse:collapse}#print-root th,#print-root td{border-bottom:.2mm solid #bbb;padding:1.2mm 1.5mm;text-align:left;vertical-align:top}#print-root th{font-size:7.5pt;text-transform:uppercase;letter-spacing:.03em;color:#444}#print-root thead{display:table-header-group}#print-root tr{break-inside:avoid}#print-root .pr-sum{margin:4mm 0 1mm;font-weight:600}#print-root .pr-foot{margin:0;color:#555;font-size:8pt}@page{size:A4 landscape;margin:12mm}}.tabular{font-variant-numeric:tabular-nums;letter-spacing:.02em}.chips{display:flex;flex-wrap:wrap;gap:var(--s2);margin-bottom:var(--s3)}.chips button{width:auto;min-height:36px;margin:0;padding:var(--s1) var(--s3);border-radius:999px;font-size:.9375rem;font-weight:500;background:var(--fill);color:var(--text)}.chips button[aria-pressed=true]{background:var(--accent-tint);color:var(--accent-text);font-weight:600}.chips button.chips-clear{background:transparent;color:var(--accent-text)}.chips button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.filter-grid{display:grid;grid-template-columns:1fr;gap:0 var(--s3)}@media (min-width: 520px){.filter-grid{grid-template-columns:repeat(3,1fr)}}.people-switch{margin:0 0 var(--s4)}:root{--font: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--ink: #14171a;--accent: #15803d;--accent-text: #166534;--accent-tint: rgba(21, 128, 61, .12);--accent-fill: #14171a;--on-accent: #ffffff;--info: #2b5fb4;--info-text: #1e4a96;--info-tint: rgba(43, 95, 180, .12);--bg: #f5f5f2;--surface: #ffffff;--surface-2: #f1f1ed;--fill: rgba(20, 23, 26, .07);--text: #14171a;--text-2: rgba(20, 23, 26, .68);--text-3: rgba(20, 23, 26, .42);--sep: rgba(20, 23, 26, .12);--bar-bg: #ffffff;--bar-solid: #ffffff;--radius: 10px;--radius-sm: 6px;--cal-line: rgba(20, 23, 26, .12);--cal-line-half: rgba(20, 23, 26, .06);--ev-planned-bg: color-mix(in srgb, var(--info) 16%, var(--surface));--ev-planned-bar: var(--info);--ev-planned-fg: var(--info-text)}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--ink: #f5f5f2;--accent: #4ade80;--accent-text: #6ee7a0;--accent-tint: rgba(74, 222, 128, .16);--accent-fill: #f5f5f2;--on-accent: #111315;--info: #7aa7ee;--info-text: #9dbff3;--info-tint: rgba(122, 167, 238, .16);--bg: #0f1112;--surface: #181b1d;--surface-2: #202427;--fill: rgba(255, 255, 255, .08);--text: #f5f5f2;--text-2: rgba(245, 245, 242, .72);--text-3: rgba(245, 245, 242, .42);--sep: rgba(255, 255, 255, .12);--bar-bg: #181b1d;--bar-solid: #181b1d}}:root[data-theme=dark]{--ink: #f5f5f2;--accent: #4ade80;--accent-text: #6ee7a0;--accent-tint: rgba(74, 222, 128, .16);--accent-fill: #f5f5f2;--on-accent: #111315;--info: #7aa7ee;--info-text: #9dbff3;--info-tint: rgba(122, 167, 238, .16);--bg: #0f1112;--surface: #181b1d;--surface-2: #202427;--fill: rgba(255, 255, 255, .08);--text: #f5f5f2;--text-2: rgba(245, 245, 242, .72);--text-3: rgba(245, 245, 242, .42);--sep: rgba(255, 255, 255, .12);--bar-bg: #181b1d;--bar-solid: #181b1d}h1{font-size:1.75rem;font-weight:800;letter-spacing:-.02em}.large-title{font-size:1.75rem;font-weight:800;letter-spacing:-.02em;margin:var(--s2) 0 var(--s4)}.navbar-title{display:none}.navbar.collapsed{background:var(--bg);border-bottom-color:var(--sep);-webkit-backdrop-filter:none;backdrop-filter:none}.navbar-right button,.nav-back{color:var(--text);font-weight:600}.nav-back span{text-decoration:underline;text-decoration-color:var(--sep);text-underline-offset:3px}.card,.group,.empty,.stat,.cancel-form,.auth-card{border:1px solid var(--sep);border-radius:var(--radius)}.group>*+*:before{left:0;height:1px}.section-head{text-transform:none;letter-spacing:0;font-size:.9375rem;font-weight:700;color:var(--text);margin:0 0 var(--s2)}.section-foot{margin:var(--s2) 0 0}.row-icon{width:32px;height:32px;border-radius:8px}.row-icon.tone-accent,.tile-icon.tone-accent{background:var(--fill);color:var(--text)}.row-icon.tone-green,.tile-icon.tone-green{background:var(--green-tint);color:var(--green-text)}.row-icon.tone-orange,.tile-icon.tone-orange{background:var(--orange-tint);color:var(--orange-text)}.row-icon.tone-red,.tile-icon.tone-red{background:var(--red-tint);color:var(--red-text)}.row-icon.tone-neutral,.tile-icon.tone-neutral{background:var(--fill);color:var(--text-2)}.pill.tone-accent{background:var(--info-tint);color:var(--info-text)}.row-chevron{color:var(--text-3)}button{border-radius:var(--radius)}button.secondary{background:transparent;color:var(--text);border:1px solid var(--sep)}.avatar,.hero-btn{color:var(--on-accent)}.seg{background:var(--fill);border-radius:8px}.seg button{border-radius:6px}.seg button[aria-pressed=true]{background:var(--accent-fill);color:var(--on-accent);box-shadow:none}.chips button[aria-pressed=true]{background:var(--accent-fill);color:var(--on-accent)}.chips button.chips-clear{color:var(--accent-text)}input.switch{width:44px;height:26px}input.switch:after{top:3px;left:3px;width:20px;height:20px;box-shadow:none}input.switch:checked{background:var(--accent)}input.switch:checked:after{transform:translate(18px)}.search input{border-radius:var(--radius)}.hero{border-radius:var(--radius);border-left:1px solid var(--sep);border-right:1px solid var(--sep);border-bottom:1px solid var(--sep)}.hero .hero-link{color:var(--accent-text);font-weight:600}.shell .tabbar{background:var(--surface);-webkit-backdrop-filter:none;backdrop-filter:none;border-top:1px solid var(--sep)}.tab{position:relative;color:var(--text-2)}.tab-label{font-size:.6875rem}.tab[aria-current=page]{color:var(--text);font-weight:700}.tab[aria-current=page]:before{content:"";position:absolute;top:0;left:28%;right:28%;height:3px;border-radius:0 0 3px 3px;background:var(--accent)}.tab[aria-current=page] .tab-icon svg{stroke-width:2.1}.tab-group{display:none}@media (min-width: 1024px){.shell .tabbar{border-top:0;border-right:1px solid var(--sep);overflow-y:auto}.tab .tab-icon{color:var(--text-2)}.tab{border-radius:8px;color:var(--text)}.tab[aria-current=page]{background:var(--fill);color:var(--text)}.tab[aria-current=page] .tab-icon{color:var(--text)}.tab[aria-current=page]:before{top:22%;bottom:22%;left:0;right:auto;width:3px;height:auto;border-radius:0 3px 3px 0}.tab-label{font-size:.9375rem}.tab-icon{position:static}.tab-icon .tab-badge{position:absolute;left:auto;right:var(--s3);top:50%;transform:translateY(-50%)}.tab-group{display:block;margin:var(--s4) var(--s3) var(--s1);font-size:.6875rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-3)}}@media (max-width: 700px){.modal-backdrop{align-items:flex-end;padding:0}.modal{max-width:none;background:var(--surface);border-radius:16px 16px 0 0;padding:var(--s5) var(--s4) calc(var(--s4) + var(--safe-bottom));box-shadow:var(--shadow-float)}.modal>p{background:transparent;border-radius:0;padding:0;text-align:left;color:var(--text);font-size:1rem}.modal-actions{flex-direction:column-reverse;gap:var(--s2);margin-top:var(--s5)}.modal-actions button{min-height:48px;border-radius:var(--radius);font-size:1.0625rem}.modal-actions button:last-child{border-top:0;border-radius:var(--radius);background:var(--accent-fill);color:var(--on-accent);font-weight:600}.modal-actions button.danger:last-child{background:var(--red-fill);color:#fff}.modal-actions button.secondary{background:transparent;color:var(--text);border:1px solid var(--sep);font-weight:600}}.auth-card{box-shadow:none}@media (min-width: 1024px){.dash{grid-template-columns:minmax(0,2fr) minmax(0,3fr)}}.logo-anim .logo-dot,.logo-anim .logo-bang,.logo-anim .logo-letters{transform-box:fill-box}.logo-anim .logo-dot{animation:logo-drop .95s cubic-bezier(.33,0,.67,1) both}.logo-anim .logo-bang{transform-origin:50% 100%;animation:logo-grow .4s .5s cubic-bezier(.2,.9,.3,1.15) both}.logo-anim .logo-letters{animation:logo-slide .6s .8s cubic-bezier(.2,.8,.2,1) both}@keyframes logo-drop{0%{transform:translateY(-420%);opacity:0}8%{opacity:1}52%{transform:translateY(0)}64%{transform:translateY(-70%)}76%{transform:translateY(0)}84%{transform:translateY(-22%)}92%,to{transform:translateY(0)}}@keyframes logo-grow{0%{transform:scaleY(0)}to{transform:scaleY(1)}}@keyframes logo-slide{0%{transform:translate(-16%);opacity:0}to{transform:none;opacity:1}}.auth-tagline{margin:calc(-1 * var(--s3)) 0 var(--s6);text-align:center;font-size:.9375rem;color:var(--text-2);animation:logo-fade .5s 1.35s ease-out both}.auth-brand-text{animation:logo-fade .6s 1.2s ease-out both}@keyframes logo-fade{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@media (min-width: 900px){.auth-tagline{display:none}}@media (prefers-reduced-motion: reduce){.logo-anim .logo-dot,.logo-anim .logo-bang,.logo-anim .logo-letters,.auth-tagline,.auth-brand-text{animation:none!important}}@media (min-width: 900px){.auth-logo{display:none}.auth-brand{gap:var(--s6)}.auth-brand-wordmark{width:min(78%,440px);margin-left:calc(min(78%,440px)*-.034);height:auto;color:#fff}}:root{--ev-planned-bar: #2f6fdb;--ev-planned-fg: #1d4ba3;--ev-pending-bar: #e0a800;--ev-pending-fg: #6b4e00;--ev-confirmed-bar: #1f9d55;--ev-confirmed-fg: #11643a;--ev-completed-bar: #7c4dcc;--ev-completed-fg: #55279c;--ev-noshow-bar: #d92d20;--ev-noshow-fg: #a3150c;--ev-settle-bar: #ea7a0c;--ev-settle-fg: #8f4300;--ev-exam-bar: #d6407f;--ev-exam-fg: #9d1556}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--ev-planned-bar: #6aa0f5;--ev-planned-fg: #a9c8fa;--ev-pending-bar: #f2c230;--ev-pending-fg: #f8dc7a;--ev-confirmed-bar: #4ade80;--ev-confirmed-fg: #86efac;--ev-completed-bar: #a98bf0;--ev-completed-fg: #cdb9f7;--ev-noshow-bar: #f87171;--ev-noshow-fg: #fdb0ab;--ev-settle-bar: #fb923c;--ev-settle-fg: #fdba74;--ev-exam-bar: #f472b6;--ev-exam-fg: #f9a8d4}}:root[data-theme=dark]{--ev-planned-bar: #6aa0f5;--ev-planned-fg: #a9c8fa;--ev-pending-bar: #f2c230;--ev-pending-fg: #f8dc7a;--ev-confirmed-bar: #4ade80;--ev-confirmed-fg: #86efac;--ev-completed-bar: #a98bf0;--ev-completed-fg: #cdb9f7;--ev-noshow-bar: #f87171;--ev-noshow-fg: #fdb0ab;--ev-settle-bar: #fb923c;--ev-settle-fg: #fdba74;--ev-exam-bar: #f472b6;--ev-exam-fg: #f9a8d4}.ev-planned{background:color-mix(in srgb,var(--ev-planned-bar) 18%,var(--surface))}.ev-pending{background:color-mix(in srgb,var(--ev-pending-bar) 22%,var(--surface))}.ev-confirmed{background:color-mix(in srgb,var(--ev-confirmed-bar) 18%,var(--surface))}.ev-completed{background:color-mix(in srgb,var(--ev-completed-bar) 18%,var(--surface))}.ev-noshow{background:color-mix(in srgb,var(--ev-noshow-bar) 18%,var(--surface))}.ev-settle{background:color-mix(in srgb,var(--ev-settle-bar) 18%,var(--surface))}.ev-exam{background:color-mix(in srgb,var(--ev-exam-bar) 18%,var(--surface));border-color:var(--ev-exam-bar);color:var(--ev-exam-fg)}.result-choice label.on.pass{background:color-mix(in srgb,var(--ev-confirmed-bar) 18%,var(--surface))}.result-choice label.on.fail{background:color-mix(in srgb,var(--ev-noshow-bar) 18%,var(--surface))}@media (min-width: 1024px){.split-detail:has(>.split-empty){position:sticky;top:var(--s4);height:calc(100vh - var(--s8));display:flex;align-items:center;justify-content:center}.split-empty{min-height:0;width:min(100%,440px);padding:var(--s8);border:1px solid var(--sep)}}@media (hover: hover) and (pointer: fine){@supports (appearance: base-select){select,::picker(select){-webkit-appearance:base-select;-moz-appearance:base-select;appearance:base-select}select::picker-icon{color:var(--text-2);transition:rotate .15s ease-out}select:open::picker-icon{rotate:180deg}::picker(select){border:1px solid var(--sep);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow-float);padding:var(--s1);margin-block:4px;max-height:min(340px,60vh);color:var(--text)}select option{padding:10px 12px;min-height:40px;border-radius:6px;font:inherit;color:var(--text)}select option:hover,select option:focus-visible{background:var(--fill)}select option:checked{font-weight:700}select option::checkmark{color:var(--accent)}select optgroup{color:var(--text-2);font-weight:700}}}.yard-days{display:flex;gap:var(--s2);overflow-x:auto;padding:var(--s3) var(--s4);scrollbar-width:thin}button.yard-day{flex:none;width:58px;min-height:0;margin:0;padding:var(--s2) 0;display:flex;flex-direction:column;align-items:center;gap:1px;border:1px solid var(--sep);border-radius:var(--radius);background:var(--surface);color:var(--text);font-weight:400}.yard-day-name{font-size:.75rem;color:var(--text-2);text-transform:capitalize}.yard-day-num{font-size:1.125rem;font-weight:700;line-height:1.2}.yard-day-load{font-size:.75rem;font-weight:700;padding:1px 6px;border-radius:999px;background:var(--fill);color:var(--text-2);font-variant-numeric:tabular-nums}.yard-day.lv-ok .yard-day-load{background:var(--green-tint);color:var(--green-text)}.yard-day.lv-full .yard-day-load{background:var(--orange-tint);color:var(--orange-text)}.yard-day.lv-over .yard-day-load{background:var(--red-tint);color:var(--red-text)}button.yard-day[aria-pressed=true]{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}.yard-bar{display:inline-flex;gap:3px;vertical-align:middle;margin-left:var(--s1)}.yard-bar i{width:14px;height:14px;border-radius:3px;background:var(--fill);border:1px solid var(--sep)}.yard-bar.lv-ok i.on{background:var(--green);border-color:var(--green)}.yard-bar.lv-full i.on{background:var(--orange);border-color:var(--orange)}.yard-bar.lv-over i.on{background:var(--red);border-color:var(--red)}.auth-lang{display:flex;justify-content:flex-end;margin:0 0 var(--s4)}.lang-picker.compact{width:auto}.lang-picker.compact button{min-width:52px}
