:root{--green: #1a4a2e;--green-mid: #2d6e45;--green-light: #3d8f5a;--gold: #c9a227;--gold-light: #e8be45;--white: #f5f5f0;--gray-light: #e8e8e2;--gray-mid: #b0b0a8;--gray-dark: #4a4a44;--black: #1a1a16;--red: #c0392b;--orange: #e07b2a;--water: #3498db;--font-display: "Georgia", serif;--font-body: system-ui, -apple-system, sans-serif;--font-mono: "Courier New", monospace;--bg: var(--black);--bg-elev: #24241f;--bg-elev-2: #2f2f29;--fg: var(--white);--fg-muted: var(--gray-mid);--border: #3a3a33;--accent: var(--gold);--accent-fg: var(--black);--nav-bg: var(--green);--danger: var(--red);--radius: 12px;--radius-lg: 18px;--shadow: 0 10px 26px rgba(0, 0, 0, .35);--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--tabbar-h: 56px;--rail-w: 220px;color-scheme:dark}:root[data-theme=light]{--bg: #f5f5f0;--bg-elev: #ffffff;--bg-elev-2: #eeeee8;--fg: #1a1a16;--fg-muted: #5a5a54;--border: #d8d8d0;--nav-bg: var(--green);color-scheme:light}*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%}body{background:var(--bg);color:var(--fg);font-family:var(--font-body);-webkit-font-smoothing:antialiased;overscroll-behavior-y:none}button,input,select,textarea{font:inherit;color:inherit}input,select,textarea{background:var(--bg-elev-2);border:1px solid var(--border);border-radius:10px;padding:9px 11px;font-size:14px;width:100%}input::placeholder,textarea::placeholder{color:var(--fg-muted)}input:focus,select:focus,textarea:focus{outline:2px solid var(--gold);outline-offset:0}h1,h2,h3{font-family:var(--font-display);font-weight:600}a{color:var(--gold-light)}.app{min-height:100%;display:flex;flex-direction:column}.app-header{background:var(--nav-bg);display:flex;align-items:center;gap:8px;padding:var(--safe-top) 12px 0;height:calc(52px + var(--safe-top));border-bottom:2px solid var(--gold);position:sticky;top:0;z-index:100;box-shadow:0 6px 16px #00000059}.app-header h1{font-size:15px;color:var(--gold);flex:1;letter-spacing:.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.app-main{flex:1;padding-bottom:calc(var(--tabbar-h) + var(--safe-bottom) + 12px)}.tabbar{position:fixed;left:0;right:0;bottom:0;height:calc(var(--tabbar-h) + var(--safe-bottom));padding-bottom:var(--safe-bottom);background:var(--nav-bg);border-top:2px solid var(--gold);display:flex;justify-content:space-around;align-items:center;z-index:100}.tabbar a{color:var(--white);text-decoration:none;font-size:22px;line-height:1;padding:8px 10px;border-radius:10px;display:flex;flex-direction:column;align-items:center;gap:2px}.tabbar a span{font-size:10px;font-family:var(--font-body)}.tabbar a.active{color:var(--gold)}.rail{display:none}@media(min-width:900px){.app{flex-direction:row}.rail{display:flex;flex-direction:column;width:var(--rail-w);background:var(--nav-bg);border-right:2px solid var(--gold);padding:16px 10px;gap:4px;position:sticky;top:0;height:100vh}.rail h1{color:var(--gold);font-size:17px;padding:6px 10px 16px}.rail a{color:var(--white);text-decoration:none;padding:10px 12px;border-radius:10px;display:flex;gap:10px;align-items:center;font-size:14px}.rail a.active{background:#ffffff1f;color:var(--gold)}.rail .rail-foot{margin-top:auto;font-size:12px;color:var(--gray-mid);padding:8px 10px}.app-body{flex:1;min-width:0;display:flex;flex-direction:column}.tabbar{display:none}.app-main{padding-bottom:24px;max-width:1100px;width:100%}}.btn{background:var(--bg-elev-2);border:1px solid var(--border);color:var(--fg);border-radius:20px;padding:8px 14px;font-size:13px;cursor:pointer;white-space:nowrap;display:inline-flex;align-items:center;gap:6px}.btn:active{filter:brightness(1.2)}.btn:disabled{opacity:.5;cursor:default}.btn-primary{background:var(--gold);color:var(--black);border-color:var(--gold);font-weight:700}.btn-green{background:var(--green-mid);color:var(--white);border-color:var(--green-mid)}.btn-danger{background:var(--red);color:#fff;border-color:var(--red);font-weight:700}.btn-ghost{background:#ffffff1f;border-color:transparent;color:var(--white)}.btn-sm{padding:5px 10px;font-size:12px}.btn-block{width:100%;justify-content:center}.card{margin:12px;background:var(--bg-elev);border-radius:var(--radius-lg);padding:14px;box-shadow:var(--shadow)}.card-hero{background:radial-gradient(circle at 25% 20%,var(--green-light),var(--green) 75%);color:var(--white)}.row{display:flex;align-items:center;gap:8px}.row-wrap{flex-wrap:wrap}.grow{flex:1;min-width:0}.muted{color:var(--fg-muted)}.small{font-size:12px}.chip{display:inline-block;background:#ffffff1f;border-radius:12px;padding:2px 8px;font-size:11px;margin:2px 2px 0 0}.chip.on{background:var(--gold);color:var(--black);font-weight:700}.chip-btn{cursor:pointer;border:none}.badge{display:inline-block;border-radius:6px;padding:2px 6px;font-size:11px;font-weight:700;letter-spacing:.3px}.empty{text-align:center;color:var(--fg-muted);padding:30px 16px;font-size:14px}.list-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border-bottom:1px solid var(--border);background:var(--bg-elev)}.list-item:first-child{border-top-left-radius:var(--radius);border-top-right-radius:var(--radius)}.list-item:last-child{border-bottom:none;border-bottom-left-radius:var(--radius);border-bottom-right-radius:var(--radius)}.list{margin:12px;box-shadow:var(--shadow);border-radius:var(--radius);overflow:hidden}.section-title{font-size:12px;text-transform:uppercase;letter-spacing:1px;color:var(--fg-muted);margin:16px 14px 6px}.fab{position:fixed;right:16px;bottom:calc(var(--tabbar-h) + var(--safe-bottom) + 16px);width:54px;height:54px;border-radius:50%;background:var(--gold);color:var(--black);font-size:30px;border:none;box-shadow:var(--shadow);cursor:pointer;z-index:90}@media(min-width:900px){.fab{bottom:24px}}.field{display:flex;flex-direction:column;gap:4px;margin-bottom:10px}.field label{font-size:12px;color:var(--fg-muted)}.segmented{display:inline-flex;background:var(--bg-elev-2);border-radius:20px;padding:3px;gap:2px}.segmented button{border:none;background:transparent;color:var(--fg-muted);border-radius:16px;padding:5px 12px;font-size:12px;cursor:pointer}.segmented button.on{background:var(--gold);color:var(--black);font-weight:700}.modal-bg{position:fixed;inset:0;background:#0009;z-index:200;display:flex;align-items:flex-end;justify-content:center}@media(min-width:700px){.modal-bg{align-items:center}}.modal{background:var(--bg-elev);width:100%;max-width:560px;max-height:92vh;overflow:auto;border-radius:var(--radius-lg) var(--radius-lg) 0 0;padding:16px 16px calc(16px + var(--safe-bottom));box-shadow:var(--shadow)}@media(min-width:700px){.modal{border-radius:var(--radius-lg)}}.modal h2{font-size:18px;color:var(--gold);margin-bottom:12px}.modal-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:14px;flex-wrap:wrap}.toast-host{position:fixed;left:0;right:0;bottom:calc(var(--tabbar-h) + var(--safe-bottom) + 12px);display:flex;flex-direction:column;align-items:center;gap:6px;z-index:300;pointer-events:none}.toast{background:var(--gold);color:var(--black);padding:9px 16px;border-radius:20px;font-size:13px;font-weight:700;box-shadow:var(--shadow);max-width:92vw;text-align:center;animation:toastIn .2s ease-out}.toast.long{border-radius:12px;text-align:left}@keyframes toastIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.sync-badge{font-size:10px;border-radius:10px;padding:2px 7px;letter-spacing:.5px;font-weight:700;white-space:nowrap}.sync-synced{background:#ffffff26;color:var(--white)}.sync-pending{background:var(--gold);color:var(--black)}.sync-offline{background:var(--gray-dark);color:var(--white)}.sync-error,.sync-paused{background:var(--red);color:#fff}.live-badge{font-size:10px;background:var(--red);color:#fff;border-radius:10px;padding:2px 7px;letter-spacing:.5px;font-weight:700}.live-badge.local{background:#8a6d1f}@keyframes pulse{0%,to{opacity:1}50%{opacity:.7}}@keyframes spin{to{transform:rotate(360deg)}}.spinner{width:22px;height:22px;border:3px solid var(--border);border-top-color:var(--gold);border-radius:50%;animation:spin .8s linear infinite;margin:20px auto}@media print{.tabbar,.rail,.app-header,.fab,.no-print{display:none!important}body{background:#fff;color:#000}.card{box-shadow:none;border:1px solid #ccc}}.print-only{display:none}@media(min-width:900px){.print-only{display:inline-flex}}.day-label{font-size:19px;font-family:var(--font-display);color:var(--white);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.posted-badge{font-size:10px;background:var(--gold);color:var(--black);border-radius:10px;padding:2px 7px;vertical-align:middle;margin-left:6px;letter-spacing:.5px;font-family:var(--font-body);font-weight:700;cursor:pointer}.posted-banner{background:#3a3320;border-bottom:1px solid var(--gold);color:var(--gold-light);font-size:13px;padding:10px 12px;line-height:1.35;display:flex;align-items:center;gap:10px}.small-btn{background:#ffffff26;border:none;color:var(--white);border-radius:20px;padding:6px 12px;font-size:12px;cursor:pointer;white-space:nowrap}.small-btn:active{background:#ffffff4d}.small-btn.posted-on{background:var(--gold);color:var(--black);font-weight:700}.mode-btn.mode-run{background:var(--green-mid);color:var(--white)}.mode-btn.mode-edit{background:var(--gray-dark);color:var(--gray-mid)}.card-hero input{background:#ffffff24;border:none;color:var(--white);border-radius:10px;padding:7px 10px;font-size:12px}.card-hero input::placeholder{color:var(--gray-mid)}.start-time{flex:none!important;width:auto!important;background:#ffffff26!important;border:1px solid rgba(201,162,39,.35)!important;color:var(--gold-light)!important;border-radius:20px!important;padding:4px 8px!important;font-size:11px!important;font-family:var(--font-mono)!important;font-weight:700}.start-time:disabled{opacity:.6}.audio-hint{margin-top:8px;font-size:12px;background:#00000040;border-radius:10px;padding:6px 10px;cursor:pointer}.timer-btn{flex:1;border:none;border-radius:8px;padding:8px;font-size:13px;font-weight:700;cursor:pointer}.timer-btn-start{background:var(--gold);color:var(--black)}.timer-btn-stop{background:var(--red);color:#fff}.timer-btn-armed{background:#8a6d1f;color:var(--white);border:2px solid var(--gold);padding:6px;font-size:12px}.timer-btn-follow{background:#555;color:var(--gray-mid);cursor:default}.timer-banner{margin:12px;background:linear-gradient(180deg,#173a26,var(--green));color:var(--white);text-align:center;padding:24px 20px 20px;border-radius:20px;border:1px solid rgba(201,162,39,.4);box-shadow:var(--shadow)}.timer-banner.warning{background:linear-gradient(180deg,#7a231b,var(--red));border-color:var(--red);animation:pulse 1s infinite}.timer-period-name{font-family:var(--font-display);font-size:17px;margin-bottom:6px}.timer-text{font-size:54px;font-family:var(--font-mono);font-weight:700;color:var(--gold-light);line-height:1;letter-spacing:1px;text-shadow:0 0 18px rgba(201,162,39,.5)}.timer-banner.warning .timer-text{color:var(--white);text-shadow:none}.timer-progress-track{height:6px;background:#ffffff26;border-radius:3px;margin-top:16px;overflow:hidden}.timer-progress-fill{height:100%;background:var(--gold);transition:width .6s linear}.timer-banner.warning .timer-progress-fill{background:var(--white)}.period-list{padding:8px 12px 90px}.period-row{display:flex;align-items:flex-start;gap:8px;background:var(--bg-elev);border-radius:12px;padding:10px;margin-bottom:8px;border-left:4px solid transparent}.period-row.water-break{border-left-color:var(--water)}.period-row.active-period{border-left-color:var(--gold);background:#2f2c1e;box-shadow:0 0 0 1px #c9a22780}.period-row.past{opacity:.5}.period-time{font-family:var(--font-mono);font-weight:700;font-size:14px;color:var(--gold-light);min-width:46px;padding:3px 0;border-radius:8px;text-align:center}.period-time.run-selectable{background:#ffffff14;cursor:pointer}.period-time.start-from{background:var(--gold);color:var(--black)}.period-badge{padding-top:3px}.period-content{flex:1;min-width:0}.assignment-row+.assignment-row{margin-top:6px;padding-top:6px;border-top:1px dashed var(--border)}.period-drill{font-size:15px}.period-drill.empty{color:var(--fg-muted);font-style:italic;font-size:13px}.period-groups{margin-top:2px}.period-notes{color:#888;font-style:italic;font-size:12px;margin-top:2px}.period-duration{font-size:12px;color:var(--fg-muted);padding-top:4px;white-space:nowrap}.diagram svg{width:100%;height:auto;background:#fff;border-radius:8px;margin-top:8px}@media(min-width:900px){.period-list{padding-bottom:24px}}
