:root{--bg: #f6f7f9;--card: #fff;--ink: #1c2330;--muted: #6b7280;--line: #e5e7eb;--accent: #2563eb;--ok: #16a34a;--warn: #d97706;--bad: #dc2626;--soft: #eef2ff;--radius: 10px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-size:15px;line-height:1.45}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}h1{font-size:1.5rem;margin:0 0 .25rem}h2{font-size:1.15rem;margin:1.25rem 0 .5rem}h3{font-size:1rem;margin:1rem 0 .4rem}.muted{color:var(--muted)}.small{font-size:.85rem}.center{display:grid;place-items:center;min-height:60vh}.shell{min-height:100vh;display:flex;flex-direction:column}.top{display:flex;align-items:center;gap:1.5rem;padding:.6rem 1.25rem;background:#111827;color:#fff;position:sticky;top:0;z-index:5}.top .brand{color:#fff;font-weight:700;font-size:1.05rem}.top nav{display:flex;gap:.25rem;flex:1}.top nav a{color:#cbd5e1;padding:.35rem .7rem;border-radius:6px}.top nav a.active,.top nav a:hover{background:#1f2937;color:#fff;text-decoration:none}.top .who{display:flex;gap:.75rem;align-items:center;font-size:.9rem;color:#cbd5e1}main{flex:1;padding:1.25rem;max-width:1240px;width:100%;margin:0 auto}.foot{padding:.75rem 1.25rem;font-size:.8rem;color:var(--muted);border-top:1px solid var(--line);text-align:center}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:1rem 1.1rem}.grid{display:grid;gap:1rem}.grid.two{grid-template-columns:1fr 1fr}.grid.three{grid-template-columns:repeat(3,1fr)}@media(max-width:900px){.grid.two,.grid.three{grid-template-columns:1fr}.top{flex-wrap:wrap;gap:.5rem}}button,.btn{font:inherit;border:1px solid var(--line);background:#fff;color:var(--ink);padding:.45rem .8rem;border-radius:8px;cursor:pointer}button:hover,.btn:hover{background:#f3f4f6;text-decoration:none}button:disabled{opacity:.5;cursor:default}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.primary:hover{background:#1d4ed8}button.good{background:var(--ok);border-color:var(--ok);color:#fff}button.danger{color:var(--bad);border-color:#fecaca}button.link{background:none;border:none;color:#93c5fd;padding:0}button.link:hover{text-decoration:underline;background:none}.row{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}.spread{justify-content:space-between}.pill{display:inline-block;padding:.1rem .55rem;border-radius:999px;font-size:.75rem;font-weight:600;background:#e5e7eb;color:#374151;white-space:nowrap}.pill.planned{background:#f3f4f6}.pill.generating{background:#dbeafe;color:#1e40af}.pill.draft,.pill.stale{background:#fef3c7;color:#92400e}.pill.approved{background:#dcfce7;color:#166534}.pill.taught{background:#e0e7ff;color:#3730a3}.pill.cancelled{background:#fee2e2;color:#991b1b}.pill.on-track{background:#dcfce7;color:#166534}.pill.tight{background:#fef3c7;color:#92400e}.pill.at-risk{background:#fee2e2;color:#991b1b}.pill.no-deadline{background:#f3f4f6}.stream{width:8px;align-self:stretch;border-radius:4px}.periods{display:grid;gap:.4rem}.period{display:grid;grid-template-columns:3.2rem 4.6rem 1fr auto;gap:.75rem;align-items:center;padding:.5rem .75rem;background:#fff;border:1px solid var(--line);border-radius:8px}.period.free{background:transparent;border-style:dashed;color:var(--muted)}.period.lunch{background:#fafafa;color:var(--muted)}.period .t{font-variant-numeric:tabular-nums;font-size:.85rem;color:var(--muted)}.weekgrid{display:grid;grid-template-columns:3rem repeat(5,1fr);gap:.35rem}.weekgrid .hd{font-weight:600;text-align:center;padding:.3rem}.weekgrid .cell{min-height:3.6rem;border:1px solid var(--line);border-radius:6px;padding:.3rem .4rem;font-size:.8rem;background:#fff}.weekgrid .cell.empty{background:transparent;border-style:dashed}.weekgrid .cell.lunch{background:#fafafa;color:var(--muted)}.weekgrid .cell a{color:inherit;display:block}.weekgrid .cell .c{font-weight:600;display:flex;gap:.3rem;align-items:center}.dot{width:.6rem;height:.6rem;border-radius:50%;display:inline-block}table{border-collapse:collapse;width:100%}th,td{text-align:left;padding:.4rem .5rem;border-bottom:1px solid var(--line);vertical-align:top}th{font-size:.8rem;color:var(--muted);text-transform:uppercase;letter-spacing:.03em}.tabs{display:flex;gap:.25rem;border-bottom:1px solid var(--line);margin:1rem 0;flex-wrap:wrap}.tabs button{border:none;border-bottom:2px solid transparent;border-radius:0;background:none;padding:.5rem .8rem}.tabs button.active{border-bottom-color:var(--accent);color:var(--accent);font-weight:600}.timeline{display:grid;gap:.5rem}.timeline .step{display:grid;grid-template-columns:4rem 1fr 1fr;gap:1rem;padding:.6rem .8rem;border:1px solid var(--line);border-radius:8px;background:#fff}.timeline .step .m{font-weight:700;font-size:1.1rem}.timeline .step .m small{display:block;font-weight:400;color:var(--muted);font-size:.75rem}.prose p{margin:.3rem 0;white-space:pre-wrap}.script{background:#fffbeb;border:1px solid #fde68a;border-radius:8px;padding:.8rem 1rem;margin:.5rem 0;white-space:pre-wrap}.task{border:1px solid var(--line);border-radius:8px;padding:.8rem 1rem;margin:.6rem 0;background:#fff}.task ol{margin:.4rem 0 .4rem 1.2rem}.variant{display:grid;grid-template-columns:1fr 1fr;gap:.75rem;margin-top:.5rem}.variant>div{background:#f9fafb;border-radius:6px;padding:.5rem .7rem;font-size:.9rem;white-space:pre-wrap}.answers{background:#f0fdf4;border:1px solid #bbf7d0;border-radius:8px;padding:.8rem 1rem;margin:.5rem 0}.slide{border:1px solid var(--line);border-radius:8px;padding:1rem 1.2rem;margin:.5rem 0;background:#fff}.slide h4{margin:0 0 .4rem}.present{position:fixed;inset:0;background:#0f172a;color:#fff;display:grid;grid-template-rows:1fr auto;z-index:50}.present .body{padding:6vh 8vw;display:flex;flex-direction:column;justify-content:center}.present h1{font-size:clamp(2rem,5vw,3.5rem);margin-bottom:1.5rem}.present li{font-size:clamp(1.3rem,3vw,2.2rem);margin:.6rem 0}.present .bar{display:flex;justify-content:space-between;padding:1rem 2rem;background:#111827;font-size:1rem}.present .bar button{background:#1f2937;color:#fff;border-color:#374151}form.feedback{display:grid;gap:.8rem}.choice{display:flex;gap:.4rem;flex-wrap:wrap}.choice button.sel{background:var(--accent);color:#fff;border-color:var(--accent)}label{font-size:.85rem;color:var(--muted);display:block;margin-bottom:.2rem}input[type=text],input[type=password],input[type=email],input[type=number],textarea,select{font:inherit;width:100%;padding:.5rem .6rem;border:1px solid var(--line);border-radius:8px;background:#fff}textarea{min-height:4.5rem;resize:vertical}.alert{padding:.7rem .9rem;border-radius:8px;margin:.5rem 0}.alert.bad{background:#fef2f2;color:#991b1b;border:1px solid #fecaca}.alert.ok{background:#f0fdf4;color:#166534;border:1px solid #bbf7d0}.alert.info{background:#eff6ff;color:#1e40af;border:1px solid #bfdbfe}.bar-progress{height:8px;background:#e5e7eb;border-radius:4px;overflow:hidden}.bar-progress>div{height:100%;background:var(--accent)}.seq{display:grid;gap:.2rem;max-height:28rem;overflow:auto}.seq .it{display:grid;grid-template-columns:1.3rem 1fr auto auto;gap:.5rem;align-items:center;padding:.25rem .4rem;border-radius:6px;font-size:.88rem}.seq .it.cur{background:var(--soft);font-weight:600}.seq .it.done{color:var(--muted)}.kv{display:grid;grid-template-columns:auto 1fr;gap:.25rem .8rem;font-size:.9rem}.kv dt{color:var(--muted)}.kv dd{margin:0}.login{max-width:420px;margin:8vh auto}ul.clean{list-style:none;padding:0;margin:0}ul.clean li{padding:.3rem 0;border-bottom:1px solid var(--line)}.print-only{display:none}@media print{.top,.foot,.tabs,.actions,.noprint{display:none!important}main{padding:0}.card{border:none}.print-only{display:block}}.compact .period{grid-template-columns:3.4rem 1fr auto}.compact .period>:nth-child(2){display:none}
