:root{--navy:#0b2447;--navy2:#123058;--gold:#c9a227;--cream:#fdf9ee;--ink:#1c2733;--muted:#66788c;--line:#e3e8ef;--ok:#1e7d46;--bad:#b3261e}
*{box-sizing:border-box}
body{margin:0;font-family:'Segoe UI',system-ui,Arial,sans-serif;color:var(--ink);background:#f4f6f9}
a{color:var(--navy);text-decoration:none}a:hover{text-decoration:underline}
.topbar{background:var(--navy);color:#fff;display:flex;justify-content:space-between;align-items:center;padding:10px 22px;position:sticky;top:0;z-index:50}
.brand{color:#fff;font-size:22px;font-weight:700;display:flex;align-items:center;gap:10px}
.brand:hover{text-decoration:none}.brand .gold{color:var(--gold)}
.brand-logo{height:38px;background:#fff;border-radius:6px;padding:2px}
.topnav{display:flex;gap:16px;align-items:center}
.topnav a{color:#e9eef5}.who{color:var(--gold);font-size:14px}
.btn{display:inline-block;background:var(--gold);color:var(--navy)!important;font-weight:700;padding:10px 18px;border:none;border-radius:8px;cursor:pointer;font-size:15px}
.btn:hover{background:#dcB93a;text-decoration:none}
.btn-small{padding:6px 12px;font-size:13px}
.btn-navy{background:var(--navy);color:#fff!important}.btn-navy:hover{background:var(--navy2)}
.btn-danger{background:var(--bad);color:#fff!important}
.btn-ghost{background:#fff;border:1px solid var(--line);color:var(--navy)!important}
.flash{margin:14px 22px 0;padding:12px 16px;border-radius:8px}
.flash-success{background:#e6f4ec;color:var(--ok);border:1px solid #bfe3cf}
.flash-error{background:#fdecea;color:var(--bad);border:1px solid #f5c6c2}
.shell{display:flex;min-height:calc(100vh - 130px)}
.sidebar{width:230px;background:#fff;border-right:1px solid var(--line);padding:18px 12px;display:flex;flex-direction:column;gap:4px;flex-shrink:0}
.sidebar a{padding:10px 12px;border-radius:8px;color:var(--ink);font-size:15px}
.sidebar a:hover{background:var(--cream);text-decoration:none}
.content{flex:1;padding:24px;max-width:1150px}
.content-full{max-width:1150px;margin:0 auto;padding:24px}
h1{color:var(--navy);font-size:28px;margin:4px 0 14px}h2{color:var(--navy);font-size:21px;margin:22px 0 10px}h3{color:var(--navy)}
.card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:18px;margin-bottom:16px}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}
.stat-row{display:flex;gap:14px;flex-wrap:wrap}
.stat{background:var(--navy);color:#fff;border-radius:12px;padding:16px 20px;min-width:150px}
.stat b{font-size:26px;color:var(--gold);display:block}
table.tbl{width:100%;border-collapse:collapse;background:#fff}
table.tbl th,table.tbl td{border-bottom:1px solid var(--line);padding:9px 10px;text-align:left;font-size:14px;vertical-align:top}
table.tbl th{background:var(--cream);color:var(--navy)}
form .row{margin-bottom:12px}
label{display:block;font-weight:600;margin-bottom:5px;font-size:14px;color:var(--navy)}
input[type=text],input[type=email],input[type=password],input[type=datetime-local],input[type=date],input[type=number],select,textarea{width:100%;padding:10px;border:1px solid #c9d3df;border-radius:8px;font-size:15px;font-family:inherit}
textarea{min-height:90px}
.badge{display:inline-block;padding:2px 9px;border-radius:20px;font-size:12px;font-weight:700}
.badge-green{background:#e6f4ec;color:var(--ok)}.badge-amber{background:#fdf3d7;color:#8a6d00}.badge-red{background:#fdecea;color:var(--bad)}.badge-grey{background:#edf1f5;color:var(--muted)}
.cover{width:100%;height:150px;object-fit:cover;border-radius:8px;background:var(--cream)}
.avatar{width:54px;height:54px;border-radius:50%;object-fit:cover;background:var(--cream)}
.avatar-lg{width:96px;height:96px;border-radius:50%;object-fit:cover}
.hero{background:linear-gradient(135deg,var(--navy),var(--navy2));color:#fff;border-radius:16px;padding:44px 34px;margin-bottom:24px}
.hero h1{color:#fff;font-size:36px}.hero .tag{color:var(--gold);font-size:18px}
.progress{height:12px;background:#e8edf3;border-radius:8px;overflow:hidden}
.progress>div{height:100%;background:var(--gold)}
.footer{background:var(--navy);color:#cfdaea;text-align:center;padding:18px;font-size:14px;margin-top:30px}
.footer div:first-child{color:#fff;font-weight:600}
.live-wrap{display:grid;grid-template-columns:1fr 340px;gap:16px;align-items:start}
.jitsi-box{background:#000;border-radius:12px;overflow:hidden;min-height:480px}
.jitsi-box iframe{width:100%;height:560px;border:0}
.panel{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px;margin-bottom:14px}
.panel h3{margin:2px 0 10px;font-size:16px}
.chat-box{height:240px;overflow-y:auto;border:1px solid var(--line);border-radius:8px;padding:8px;background:#fbfcfe;font-size:14px}
.chat-msg{margin-bottom:8px}.chat-msg b{color:var(--navy)}
.chat-msg .t{color:var(--muted);font-size:11px}
.chat-form{display:flex;gap:6px;margin-top:8px}
.chat-form input{flex:1}
.dot{display:inline-block;width:9px;height:9px;border-radius:50%}
.dot-on{background:#2ecc71}.dot-off{background:#c3ccd6}
.hand-item{display:flex;justify-content:space-between;align-items:center;padding:6px 0;border-bottom:1px dashed var(--line);font-size:14px}
.auth-wrap{max-width:460px;margin:36px auto}
/* ---- v1.1 classroom tools ---- */
.wb-toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:10px}
.wb-colors{display:inline-flex;gap:6px}
.swatch{width:26px;height:26px;border-radius:50%;border:2px solid #c9d3df;cursor:pointer;padding:0}
.swatch.active{border-color:var(--gold);box-shadow:0 0 0 2px var(--gold)}
.wb-wrap{background:#fff;border:1px solid var(--line);border-radius:8px;overflow:hidden}
#wbCanvas{display:block;width:100%;height:auto;touch-action:none;cursor:crosshair;background:#fff}
.timer-block{border-top:1px dashed var(--line);padding:8px 0}
.timer-block:first-of-type{border-top:none}
.timer-label{font-size:12px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.4px}
.timer-display{font-size:30px;font-weight:700;color:var(--navy);font-variant-numeric:tabular-nums;margin:2px 0 6px}
.notes-tabs{display:flex;gap:6px;margin-bottom:8px}
.notes-tab{background:#fff;border:1px solid var(--line);border-radius:16px;padding:4px 12px;font-size:13px;cursor:pointer;color:var(--navy)}
.notes-tab.active{background:var(--navy);color:#fff}
#calcDisplay{font-size:20px;text-align:right;font-variant-numeric:tabular-nums;margin-bottom:8px;background:#fbfcfe}
.calc-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}
.calc-grid button{padding:8px 0;font-size:14px;border:1px solid var(--line);background:#fff;border-radius:6px;cursor:pointer;color:var(--navy)}
.calc-grid button:hover{background:var(--cream)}
.calc-grid button.calc-eq{background:var(--gold);font-weight:700;border-color:var(--gold)}
.note{background:var(--cream);border:1px solid #eee3bb;border-radius:8px;padding:12px 14px;font-size:14px}
@media(max-width:900px){.shell{flex-direction:column}.sidebar{width:100%;flex-direction:row;flex-wrap:wrap}.live-wrap{grid-template-columns:1fr}.jitsi-box iframe{height:420px}.hero h1{font-size:27px}}
.picker-search{margin-bottom:6px}
select.cascade-subj option{padding:3px 6px}
/* v1.3: mission ticker (landing page) */
.mission-ticker{overflow:hidden;height:132px;position:relative;mask-image:linear-gradient(180deg,transparent,#000 18%,#000 82%,transparent)}
.mission-track{animation:missionScroll 20s linear infinite}
.mission-ticker:hover .mission-track{animation-play-state:paused}
.mission-line{height:44px;display:flex;align-items:center;font-size:16.5px;font-weight:600;color:var(--navy)}
@keyframes missionScroll{0%{transform:translateY(0)}100%{transform:translateY(-50%)}}
