:root{--black:#101010;--gold:#f4c542;--gold2:#ffd95e;--bg:#f6f4ef;--card:#fff;--ink:#161616;--muted:#6b7280;--line:#e5e7eb;--red:#b91c1c;--green:#15803d;--blue:#1d4ed8;--purple:#7e22ce}*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;background:linear-gradient(180deg,#fff9df,#f7f7f7 280px);color:var(--ink)}.topbar{background:var(--black);color:#fff;display:flex;align-items:center;gap:18px;padding:14px 22px;box-shadow:0 6px 18px #0003;position:sticky;top:0;z-index:5}.brand{display:flex;align-items:center;gap:12px;min-width:270px}.brand span{display:block;color:#d1d5db;font-size:12px}.mark{width:44px;height:44px;border-radius:14px;background:var(--gold);color:#111;display:grid;place-items:center;font-weight:900}nav{display:flex;gap:8px;flex-wrap:wrap;flex:1}nav a{color:#fff;text-decoration:none;padding:9px 12px;border-radius:12px;background:#ffffff12}nav a:hover{background:#ffffff22}.userpill{background:var(--gold);color:#111;border-radius:999px;padding:8px 12px;font-weight:700}.wrap{max-width:1220px;margin:0 auto;padding:28px}.hero{background:linear-gradient(135deg,#111,#2a2308);color:#fff;border-radius:28px;padding:28px;box-shadow:0 18px 45px #0002;border:1px solid #ffffff18}.hero h1{margin:0 0 8px;font-size:34px}.hero p{margin:0;color:#eee;max-width:850px}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:18px;margin-top:22px}.card{background:var(--card);border:1px solid var(--line);border-radius:22px;padding:20px;box-shadow:0 10px 24px #0000000d}.card h2,.card h3{margin:0 0 10px}.stat{font-size:32px;font-weight:900}.muted{color:var(--muted)}.badge{display:inline-flex;align-items:center;padding:5px 9px;border-radius:999px;font-size:12px;font-weight:800;text-transform:uppercase;white-space:nowrap}.live{background:#dcfce7;color:#166534}.testing{background:#fef3c7;color:#92400e}.hidden,.disabled{background:#fee2e2;color:#991b1b}.btn{display:inline-block;border:0;background:#111;color:#fff;text-decoration:none;border-radius:14px;padding:11px 15px;font-weight:800;cursor:pointer}.btn.gold{background:var(--gold);color:#111}.btn.ghost{background:#f3f4f6;color:#111}.btn.red{background:#fee2e2;color:#7f1d1d}.actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}table{width:100%;border-collapse:collapse;background:#fff;border-radius:18px;overflow:hidden}th,td{text-align:left;padding:12px;border-bottom:1px solid var(--line);vertical-align:top}th{background:#111;color:#fff}input,select,textarea{width:100%;padding:11px;border:1px solid #d1d5db;border-radius:12px;background:#fff}.formrow{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px}.formrow.three{grid-template-columns:1fr 1fr 1fr}.loginbox{max-width:460px;margin:50px auto}.alert{padding:12px 14px;border-radius:14px;margin:12px 0}.alert.red{background:#fee2e2;color:#7f1d1d}.alert.green{background:#dcfce7;color:#14532d}.alert.gold{background:#fef3c7;color:#78350f}.logline{font-family:ui-monospace,Consolas,monospace;background:#0b1020;color:#e5e7eb;border-radius:12px;padding:10px;margin:8px 0;overflow:auto}.footer{text-align:center;color:#666;padding:30px}.mini{font-size:12px}.swatch{display:inline-block;width:16px;height:16px;border-radius:5px;border:1px solid #0002;margin-right:6px;vertical-align:-3px}.colorchip{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:6px 10px;background:#f3f4f6;font-weight:800}.toolstrip{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:14px 0}.right{text-align:right}.archived{opacity:.55}.tablewrap{overflow:auto;border-radius:18px;border:1px solid var(--line)}@media(max-width:760px){.topbar{align-items:flex-start;flex-direction:column}.brand{min-width:0}.wrap{padding:16px}.formrow,.formrow.three{grid-template-columns:1fr}.hero h1{font-size:26px}th,td{min-width:150px}.right{text-align:left}}
/* Phase 3 Calendar / Dispatch Board */
.dispatch-list{display:grid;gap:12px}.eventcard{display:grid;grid-template-columns:10px 130px 1.6fr 1.2fr 130px;gap:14px;align-items:center;border:1px solid var(--line);border-radius:18px;background:#fff;overflow:hidden;padding:12px}.eventstripe{width:10px;align-self:stretch;border-radius:999px}.scheduled{background:#dbeafe;color:#1e40af}.out{background:#ede9fe;color:#5b21b6}.complete{background:#dcfce7;color:#166534}.canceled{background:#fee2e2;color:#991b1b}.tvbody{background:#070707;color:#fff}.tvwrap{max-width:1600px;margin:0 auto;padding:28px}.tvhero{display:flex;justify-content:space-between;align-items:center;gap:20px;background:linear-gradient(135deg,#151515,#3a2e05);border:1px solid #ffffff22;border-radius:30px;padding:28px;box-shadow:0 18px 60px #0008}.tvhero h1{margin:0;font-size:48px}.tvhero p{margin:4px 0 0;color:#e5e7eb;font-size:20px}.tvclock{font-size:54px;font-weight:900;text-align:right;color:var(--gold)}.tvclock span{display:block;font-size:20px;color:#fff}.tvgrid{display:grid;grid-template-columns:2fr 1fr;gap:20px;margin-top:20px}.tvpanel{background:#141414;border:1px solid #ffffff20;border-radius:28px;padding:24px;box-shadow:0 12px 40px #0007}.tvpanel.span2{grid-row:span 2}.tvpanel h2{margin:0 0 18px;font-size:30px}.tv-events{display:grid;gap:14px}.tv-event{display:grid;grid-template-columns:10px 150px 1.7fr 1.2fr 130px;gap:16px;align-items:center;background:#fff;color:#111;border-radius:22px;padding:16px;overflow:hidden}.tv-time{font-size:32px;font-weight:900}.tv-time span,.tv-main span,.tv-assign span{display:block;color:#6b7280;font-size:16px;font-weight:600}.tv-main strong{font-size:28px}.tv-assign strong{font-size:22px}.bigmode{font-size:42px;font-weight:900;color:var(--gold);margin:12px 0}.emptytv{font-size:36px;color:#d1d5db;padding:50px;text-align:center;border:2px dashed #ffffff24;border-radius:24px}@media(max-width:900px){.eventcard,.tv-event{grid-template-columns:8px 1fr}.tvgrid{grid-template-columns:1fr}.tvhero{flex-direction:column;text-align:center}.tvclock{text-align:center}.tvhero h1{font-size:34px}}

.syncbox{background:#f8fafc;border:1px dashed #cbd5e1;border-radius:18px;padding:14px;margin-top:12px}.mono{font-family:ui-monospace,Consolas,monospace;word-break:break-all}.copyline{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.badge.pending,.badge.unsynced{background:#fef3c7;color:#92400e}.badge.synced{background:#dcfce7;color:#166534}.badge.error{background:#fee2e2;color:#991b1b}
/* Phase 5 Routes & Stops */
.badge.active{background:#dcfce7;color:#166534}.badge.inactive{background:#fee2e2;color:#991b1b}.badge.testing{background:#fef3c7;color:#92400e}.route-board{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px}.route-card{border:1px solid var(--line);border-radius:20px;overflow:hidden;background:#fff}.route-head{padding:14px 16px;color:#111;font-weight:900;display:flex;align-items:center;justify-content:space-between}.stop-list{padding:12px 16px;display:grid;gap:8px}.stop-row{display:grid;grid-template-columns:42px 1fr 86px;gap:10px;align-items:center;padding:8px;border-radius:12px;background:#f8fafc}.stop-order{font-weight:900;color:#111}.stop-time{text-align:right;font-weight:900}.stop-sub{display:block;color:#6b7280;font-size:12px}.route-mini{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
/* Phase 6 Weather / Emergency Modes */
.mode-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px;margin-top:14px}.mode-card{display:block;border:2px solid var(--line);border-radius:18px;padding:14px;background:#fff;cursor:pointer;min-height:120px}.mode-card input{width:auto;margin-right:8px}.mode-card strong{display:block;font-size:18px;margin-bottom:6px}.mode-card span{display:block;color:#6b7280}.mode-card.selected{border-color:var(--gold);box-shadow:0 10px 24px #f4c54233;background:#fffaf0}.bigmode-mini{font-size:26px;font-weight:900;color:#111}.alert.gold strong{color:#111}

.checkgrid label,.formrow label:has(input[type=checkbox]){display:flex;align-items:center;gap:8px;font-weight:700}.formrow input[type=checkbox]{width:auto;transform:scale(1.15)}

/* Phase 11 Parent Portal */
.parent-portal-body{background:linear-gradient(180deg,#111,#2b2206 260px,#f6f4ef 261px);min-height:100vh}.parent-shell{max-width:1100px;margin:0 auto;padding:26px}.parent-top{display:flex;justify-content:space-between;align-items:center;color:#fff;margin-bottom:22px}.parent-top a{color:#111;background:var(--gold);padding:10px 14px;border-radius:14px;text-decoration:none;font-weight:900}.parent-card{background:#fff;border-radius:24px;padding:22px;border:1px solid var(--line);box-shadow:0 15px 35px #0002;margin-bottom:18px}.student-status{display:grid;grid-template-columns:16px 1.4fr 1fr 1fr;gap:14px;align-items:center;border:1px solid var(--line);border-radius:18px;padding:14px;margin:12px 0}.student-status .stripe{width:16px;border-radius:999px;align-self:stretch}.parent-safe-note{background:#f8fafc;border:1px dashed #cbd5e1;border-radius:16px;padding:12px;color:#475569}.notice-list{display:grid;gap:10px}.notice-item{border-left:8px solid var(--gold);background:#fffaf0;border-radius:14px;padding:12px}.badge.public{background:#dbeafe;color:#1e40af}.badge.private{background:#f3f4f6;color:#111827}@media(max-width:800px){.student-status{grid-template-columns:12px 1fr}.parent-top{flex-direction:column;align-items:flex-start;gap:10px}}

/* Phase 15 Suggestions */
.suggestions-link{background:var(--gold)!important;color:#111!important;font-weight:900}
.suggestion-meta{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:8px 0 12px}
.suggestion-box{border-left:8px solid var(--gold);background:#fffaf0;border-radius:18px;padding:14px;margin:12px 0}
.suggestion-box.bug{border-left-color:var(--red);background:#fff7f7}
.suggestion-box.fix{border-left-color:var(--blue);background:#f8fbff}
.suggestion-box.feature{border-left-color:var(--green);background:#f7fff9}
.suggestion-box.question{border-left-color:var(--purple);background:#fbf7ff}
.badge.new{background:#dbeafe;color:#1e40af}.badge.reviewing{background:#fef3c7;color:#92400e}.badge.done{background:#dcfce7;color:#166534}.badge.closed{background:#f3f4f6;color:#374151}
