:root{--font:"Pretendard Variable",Pretendard,system-ui,-apple-system,"Apple SD Gothic Neo","Malgun Gothic",sans-serif;--font-display:"Jua", var(--font);--ink:#2d3a4b;--ink2:#5b6b7c;--muted:#95a2b3;--paper:#efe7d6;--stage:#f2f5f8;--card:#ffffff;--contentbg:#fcfbf8;--line:#e9ecf1;--line2:#f3f5f8;--brand:#ff7a59;--brand2:#ff9773;--brand-ink:#e85d3d;--brand-soft:#fff1eb;--navy:#2d3a4b;--ok:#26b083;--ok-soft:#dbf4ea;--ai:#f4a63c;--ai-soft:#fdf0d7;--rec:#ff6b8a;--rec-soft:#ffe6ec;--c1:#ff7a59;--c2:#4a97d2;--c3:#8b7ff0;--c4:#2fb488;--c5:#ff6f91;--c6:#f4a63c;--c7:#28b6c0;--r:16px;--r-lg:22px;--shadow:0 2px 8px rgba(45,58,75,.06), 0 16px 38px rgba(45,58,75,.1);--shadow-sm:0 1px 3px rgba(45,58,75,.06), 0 6px 16px rgba(45,58,75,.08);--ring:0 0 0 4px rgba(255,122,89,.22)}@media(prefers-color-scheme:dark){:root{--ink:#eaf0f7;--ink2:#b6c2d1;--muted:#8593a5;--paper:#171d27;--stage:#1c2431;--card:#212a38;--contentbg:#1c2431;--line:#313c4c;--line2:#28323f;--brand:#ff8f70;--brand2:#ffa588;--brand-ink:#ffb59c;--brand-soft:#3a2a24;--navy:#0f1620;--ok:#3fcc9c;--ok-soft:#153029;--ai:#ffbb55;--ai-soft:#352915;--rec:#ff87a3;--rec-soft:#3a2029;--shadow:0 2px 8px rgba(0,0,0,.4), 0 18px 44px rgba(0,0,0,.55);--shadow-sm:0 1px 3px rgba(0,0,0,.4), 0 6px 16px rgba(0,0,0,.45);--ring:0 0 0 4px rgba(255,143,112,.3)}}:root[data-theme=light]{--ink:#2d3a4b;--ink2:#5b6b7c;--muted:#95a2b3;--paper:#efe7d6;--stage:#f2f5f8;--card:#fff;--contentbg:#fcfbf8;--line:#e9ecf1;--line2:#f3f5f8;--brand:#ff7a59;--brand2:#ff9773;--brand-ink:#e85d3d;--brand-soft:#fff1eb;--navy:#2d3a4b;--ok:#26b083;--ok-soft:#dbf4ea;--ai:#f4a63c;--ai-soft:#fdf0d7;--rec:#ff6b8a;--rec-soft:#ffe6ec}:root[data-theme=dark]{--ink:#eaf0f7;--ink2:#b6c2d1;--muted:#8593a5;--paper:#171d27;--stage:#1c2431;--card:#212a38;--contentbg:#1c2431;--line:#313c4c;--line2:#28323f;--brand:#ff8f70;--brand2:#ffa588;--brand-ink:#ffb59c;--brand-soft:#3a2a24;--navy:#0f1620;--ok:#3fcc9c;--ok-soft:#153029;--ai:#ffbb55;--ai-soft:#352915;--rec:#ff87a3;--rec-soft:#3a2029}*{box-sizing:border-box}body{margin:0;background:radial-gradient(1100px 460px at 12% -8%,rgba(255,122,89,.1),transparent 58%),radial-gradient(1000px 460px at 100% -5%,rgba(74,151,210,.1),transparent 55%),var(--paper);color:var(--ink);font-family:var(--font);-webkit-font-smoothing:antialiased;line-height:1.5}h1,h2,h3,.ktitle,.mission h3,.login h2,.thead h2{font-family:var(--font-display);letter-spacing:.2px}button{font-family:inherit}button:focus-visible,input:focus-visible,textarea:focus-visible,[contenteditable]:focus-visible{outline:none;box-shadow:var(--ring)}.app-wrap{width:100%;height:100vh;height:100dvh;display:flex;flex-direction:column;overflow:hidden}.devbar{flex:0 0 auto;display:flex;justify-content:space-between;align-items:center;gap:12px;padding:8px 16px;background:var(--paper);border-bottom:1px solid var(--line)}.devbar .brand{font-weight:900;font-size:19px;letter-spacing:.2px;display:flex;align-items:center;gap:8px;font-family:var(--font-display)}.devbar .brand:before{content:"🎬";font-size:22px}.devbar .brand small{color:var(--muted);font-weight:600;margin-left:2px;font-size:12px;font-family:var(--font)}.roles{display:flex;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:5px;gap:5px;box-shadow:var(--shadow-sm)}.roles button{border:0;background:transparent;color:var(--ink2);font-weight:800;font-size:13.5px;padding:9px 16px;border-radius:10px;cursor:pointer;transition:.15s}.roles button.on{background:linear-gradient(135deg,var(--brand),var(--brand2));color:#fff;box-shadow:0 4px 12px #ff7a5959}.appframe{flex:1 1 auto;min-height:0;background:var(--card);overflow:hidden;display:flex;flex-direction:column;position:relative}.app-wrap[data-role=teacher] .statusbar{height:46px;font-size:12.5px}.app-wrap[data-role=teacher] .thead{padding:22px 28px 12px}.app-wrap[data-role=teacher] .thead h2{font-size:25px}.app-wrap[data-role=teacher] .subgrid{grid-template-columns:repeat(auto-fill,minmax(210px,1fr))}.app-wrap[data-role=teacher] .stat{min-width:122px}.statusbar{height:36px;display:flex;align-items:center;justify-content:space-between;padding:0 18px;font-size:11.5px;font-weight:800;color:var(--muted);background:var(--card);border-bottom:1px solid var(--line2)}.statusbar .net{display:inline-flex;align-items:center;gap:6px}.dotnet{width:8px;height:8px;border-radius:50%;background:var(--ok);box-shadow:0 0 0 3px var(--ok-soft)}.login{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:26px;background:radial-gradient(560px 300px at 50% 0%,var(--brand-soft),transparent 70%)}.login .badge{font-size:46px;filter:drop-shadow(0 8px 12px rgba(255,122,89,.28))}.login h2{margin:14px 0 4px;font-size:26px;font-weight:900}.login p{margin:0 0 18px;font-size:14px;color:var(--muted)}.codeboxes{display:flex;gap:10px;margin-bottom:6px}.codeboxes span{width:52px;height:64px;border-radius:16px;background:var(--card);border:2px solid var(--line);display:grid;place-items:center;font-size:29px;font-weight:900;box-shadow:var(--shadow-sm);color:var(--brand-ink)}.codeboxes span:not(.empty){border-color:var(--brand);box-shadow:var(--ring)}.codeboxes span.empty{color:var(--muted);border-style:dashed}.keypad{display:grid;grid-template-columns:repeat(3,64px);gap:9px;margin:16px 0 6px}.keypad button{height:54px;border-radius:15px;border:1px solid var(--line);background:var(--card);font-size:20px;font-weight:800;color:var(--ink);cursor:pointer;box-shadow:var(--shadow-sm);transition:.1s}.keypad button:hover{background:var(--brand-soft)}.keypad button:active{transform:scale(.95)}.keypad button.enter{background:linear-gradient(135deg,var(--brand),var(--brand2));color:#fff;border-color:transparent;font-size:16px;box-shadow:0 5px 14px #ff7a5966}.keypad button.enter:hover{filter:brightness(1.04)}.keypad button:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}.roster{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;max-width:450px;width:100%}.roster button{border:1px solid var(--line);background:var(--card);border-radius:16px;padding:14px 8px;font-weight:800;font-size:14.5px;color:var(--ink);cursor:pointer;box-shadow:var(--shadow-sm);transition:.14s}.roster button:hover{transform:translateY(-3px);border-color:var(--brand);color:var(--brand);box-shadow:var(--shadow)}.roster button .no{display:block;font-size:11px;color:var(--muted);font-weight:800;margin-bottom:3px}.err{color:var(--rec);font-size:13px;font-weight:800;min-height:18px;margin-top:6px}.stumain{flex:1;display:flex;min-height:0}.rail{width:186px;flex:0 0 auto;background:var(--card);border-right:1px solid var(--line2);padding:16px 12px;display:flex;flex-direction:column;gap:3px;overflow:auto}.rail .rh{font-size:10.5px;font-weight:900;letter-spacing:.1em;color:var(--muted);padding:2px 10px 12px;text-transform:uppercase}.rstep{display:flex;align-items:center;gap:12px;padding:9px 11px;border-radius:14px;cursor:pointer;transition:.14s;position:relative}.rstep:hover{background:var(--line2)}.rstep.on{background:color-mix(in srgb,var(--sc) 12%,transparent)}.rstep .ric{width:38px;height:38px;flex:0 0 auto;border-radius:12px;display:grid;place-items:center;font-size:18px;background:color-mix(in srgb,var(--sc) 16%,white);color:var(--sc);transition:.14s}:root[data-theme=dark] .rstep .ric{background:color-mix(in srgb,var(--sc) 24%,var(--card))}.rstep.on .ric{background:var(--sc);color:#fff;box-shadow:0 5px 12px color-mix(in srgb,var(--sc) 45%,transparent);transform:scale(1.04)}.rstep.done .ric{background:var(--sc);color:#fff}.rstep .rt{font-size:13.5px;font-weight:800;color:var(--ink2)}.rstep.on .rt{color:var(--ink)}.rstep .rnum{position:absolute;top:7px;left:33px;font-size:9px;font-weight:900;color:var(--muted)}.railfoot{margin-top:auto;padding-top:14px;border-top:1px solid var(--line2);display:flex;align-items:center;justify-content:space-between;gap:6px}.railfoot .who{font-size:12.5px;font-weight:900;color:var(--ink2)}.railfoot button{border:1px solid var(--line);background:var(--card);border-radius:10px;padding:6px 11px;font-weight:800;font-size:11.5px;cursor:pointer;color:var(--rec)}.content{flex:1;min-width:0;min-height:0;display:flex;flex-direction:column;background:var(--contentbg)}.cbody{flex:1;overflow:auto;padding:26px 28px}.cfoot{position:relative;background:var(--navy);padding:18px 22px;display:flex;align-items:center;justify-content:space-between;gap:12px}.cfoot:before,.cfoot:after{content:"";position:absolute;left:14px;right:14px;height:7px;background:repeating-linear-gradient(90deg,#fbfaf7 0 9px,transparent 9px 20px);opacity:.9;border-radius:2px}.cfoot:before{top:5px}.cfoot:after{bottom:5px}.navbtn{border:0;border-radius:999px;font-weight:900;font-size:13.5px;cursor:pointer;padding:11px 20px;display:inline-flex;align-items:center;gap:7px;transition:.14s}.navbtn.prev{background:#ffffff24;color:#fff}.navbtn.prev:hover{background:#ffffff3d}.navbtn.next{background:linear-gradient(135deg,var(--brand),var(--brand2));color:#fff;box-shadow:0 6px 16px #ff7a5966}.navbtn:disabled{opacity:.35;cursor:not-allowed;box-shadow:none}.filmdot{color:#fff;font-weight:800;font-size:12.5px;text-align:center;opacity:.92;font-variant-numeric:tabular-nums}.filmdot b{color:var(--brand2)}.kh{font-size:12px;font-weight:900;color:var(--brand);letter-spacing:.05em;text-transform:uppercase}.ktitle{font-size:25px;font-weight:900;margin:7px 0 3px;color:var(--ink)}.ksub{font-size:14px;color:var(--muted);margin:0 0 18px;line-height:1.6}.btn{border:0;font-weight:800;font-size:14.5px;padding:13px 22px;border-radius:14px;cursor:pointer;transition:.14s}.btn.primary{background:linear-gradient(135deg,var(--brand),var(--brand2));color:#fff;box-shadow:0 6px 16px #ff7a5959}.btn.primary:hover{filter:brightness(1.04);transform:translateY(-1px)}.btn.ghost{background:var(--card);color:var(--ink2);border:1px solid var(--line)}.btn.ghost:hover{background:var(--stage)}.btn.ok{background:linear-gradient(135deg,var(--ok),#3fd0a0);color:#fff;box-shadow:0 6px 16px #26b08359}.btn.sm{padding:8px 14px;font-size:12.5px;border-radius:11px}.btn:disabled{opacity:.45;cursor:not-allowed;transform:none;filter:none;box-shadow:none}.mission{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);padding:22px;box-shadow:var(--shadow-sm)}.mission .ml{display:inline-block;font-size:11px;font-weight:900;letter-spacing:.04em;color:var(--brand);background:var(--brand-soft);padding:5px 12px;border-radius:999px;text-transform:uppercase}.mission h3{margin:12px 0 0;font-size:27px;font-weight:900;line-height:1.28;color:var(--ink)}.mission .mbrief{margin:8px 0 0;font-size:14.5px;color:var(--ink2);line-height:1.6}.mission .tags{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}.mission .tags span{background:var(--stage);color:var(--ink2);padding:7px 13px;border-radius:999px;font-size:12.5px;font-weight:800}.mthumbs{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:16px}.mthumbs .mt{aspect-ratio:4/3;border-radius:13px;display:grid;place-items:center;font-size:34px;box-shadow:var(--shadow-sm)}.editor{border:2px solid var(--line);border-radius:var(--r);background:var(--card);padding:16px;min-height:220px;font-size:16px;color:var(--ink);line-height:1.85;outline:none;transition:.14s}.editor:focus{border-color:var(--brand)}.editmeta{display:flex;justify-content:space-between;font-size:12.5px;color:var(--muted);margin-top:9px;font-weight:700}.aiwrap{display:flex;flex-direction:column;gap:13px}.aicard{border:1px solid var(--line);border-radius:var(--r);overflow:hidden;background:var(--card);box-shadow:var(--shadow-sm)}.aicard .row{display:grid;grid-template-columns:1fr 1fr}.aicard .cell{padding:14px 16px}.aicard .cell.mine{border-right:1px dashed var(--line)}.aicard .lab{font-size:11px;font-weight:900;letter-spacing:.04em;text-transform:uppercase;margin-bottom:6px}.aicard .lab.m{color:var(--muted)}.aicard .lab.a{color:var(--ai)}.aicard .tx{font-size:14.5px;color:var(--ink);line-height:1.6}.aicard .act{border-top:1px solid var(--line2);display:flex;gap:8px;padding:10px 14px;background:var(--stage)}.chip{border:1px solid var(--line);background:var(--card);color:var(--ink2);font-weight:800;font-size:13px;padding:8px 14px;border-radius:11px;cursor:pointer;transition:.12s}.chip:hover{border-color:var(--brand)}.chip.pick{background:var(--ai);border-color:var(--ai);color:#fff}.chip.keep{background:var(--brand-soft);border-color:transparent;color:var(--brand-ink)}.aihint{font-size:13px;color:var(--ai);font-weight:800;background:var(--ai-soft);padding:12px 15px;border-radius:13px}.tabs{display:flex;gap:7px;margin-bottom:14px;flex-wrap:wrap}.tabs button{border:1px solid var(--line);background:var(--card);color:var(--ink2);font-weight:800;font-size:13px;padding:9px 15px;border-radius:12px;cursor:pointer}.tabs button.on{background:linear-gradient(135deg,var(--brand),var(--brand2));border-color:transparent;color:#fff}.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.tile{aspect-ratio:1;border-radius:15px;border:3px solid transparent;cursor:pointer;position:relative;overflow:hidden;display:grid;place-items:center;font-size:30px;box-shadow:var(--shadow-sm);transition:.12s;background:var(--stage)}.tile:hover{transform:translateY(-3px);box-shadow:var(--shadow)}.tile.sel{border-color:var(--brand)}.tile.sel:after{content:"✓";position:absolute;top:6px;right:8px;width:22px;height:22px;background:var(--brand);color:#fff;border-radius:50%;display:grid;place-items:center;font-size:13px;font-weight:900;box-shadow:0 2px 6px #0000004d}.tile.up{background:var(--brand-soft);border:2px dashed var(--brand);color:var(--brand);font-size:13px;font-weight:800;flex-direction:column;gap:5px}.tile img{width:100%;height:100%;object-fit:cover}.vrow{display:flex;align-items:center;gap:13px;padding:13px 15px;border:1px solid var(--line);border-radius:15px;background:var(--card);margin-bottom:10px;box-shadow:var(--shadow-sm);transition:.14s}.vrow.active{border-color:var(--rec);box-shadow:0 0 0 4px var(--rec-soft)}.vrow .si{width:32px;height:32px;flex:0 0 auto;border-radius:10px;background:var(--brand-soft);color:var(--brand-ink);display:grid;place-items:center;font-weight:900;font-size:13.5px}.vrow .vt{flex:1;min-width:0}.vrow .vt .cap{font-size:14.5px;font-weight:700;line-height:1.4}.vrow .vt .meta{font-size:12px;color:var(--muted);font-weight:800;margin-top:3px}.vrow .vt .meta.ok{color:var(--ok)}.vrow .vbtns{display:flex;gap:7px;flex:0 0 auto}.recbtn{width:44px;height:44px;border-radius:50%;border:0;background:var(--rec);color:#fff;font-size:16px;cursor:pointer;display:grid;place-items:center;box-shadow:0 4px 12px #ff6b8a66}.recbtn.stop{animation:pulse 1s infinite}.recbtn.done{background:var(--ok);box-shadow:0 4px 12px #26b08366}.iconbtn{width:40px;height:40px;border-radius:12px;border:1px solid var(--line);background:var(--card);color:var(--ink2);cursor:pointer;font-size:15px}.iconbtn:hover{background:var(--stage)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.tts-toggle{display:flex;gap:8px;align-items:center;background:var(--ai-soft);color:var(--ai);border-radius:13px;padding:11px 15px;font-size:13px;font-weight:800;margin-bottom:14px;line-height:1.5}.voicegroups{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:12px}.vgroup{background:var(--stage);border:1px solid var(--line);border-radius:16px;padding:12px 10px}.vglabel{font-size:13px;font-weight:900;color:var(--ink);text-align:center;margin-bottom:10px}.vgrow{display:grid;grid-template-columns:1fr 1fr;gap:8px}.vcard{border:2px solid var(--line);background:var(--card);border-radius:14px;padding:14px 4px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:6px;transition:.12s}.vcard:hover{border-color:var(--ai)}.vcard .em{font-size:36px;line-height:1}.vcard .g{font-size:13px;font-weight:800;color:var(--ink2)}.vcard.on{border-color:var(--ai);background:var(--ai-soft);box-shadow:0 4px 12px #ff9f1c40}.vcard.on .g{color:var(--ai)}@media(max-width:640px){.voicegroups{grid-template-columns:1fr}}.submit-card{border:1px solid var(--line);border-radius:var(--r-lg);padding:22px;background:var(--card);box-shadow:var(--shadow-sm)}.kv{display:flex;justify-content:space-between;padding:10px 0;border-bottom:1px solid var(--line2);font-size:14.5px}.kv:last-child{border:0}.kv .k{color:var(--muted);font-weight:700}.kv .v{font-weight:800}.lock{margin-top:16px;background:var(--brand-soft);color:var(--brand-ink);border-radius:13px;padding:14px 16px;font-size:13.5px;font-weight:800;display:flex;gap:10px;align-items:flex-start;line-height:1.5}.banner-ok{background:linear-gradient(135deg,var(--ok-soft),var(--brand-soft));color:var(--ok);border-radius:var(--r-lg);padding:24px;text-align:center;font-weight:900;font-size:18px}.tapp{flex:1;display:flex;flex-direction:column;min-height:0;background:var(--contentbg)}.thead{padding:18px 22px 10px;display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap}.thead h2{margin:0;font-size:23px;font-weight:900}.teyebrow{font-size:12px;font-weight:900;color:var(--brand);margin-bottom:4px}.thead .sub{font-size:12.5px;color:var(--muted);margin-top:4px}.thead-right{display:flex;flex-direction:column;align-items:flex-end;gap:8px}.whoami{font-size:12px;font-weight:800;color:var(--ink2)}.logout{cursor:pointer;color:var(--brand);font-weight:800}.logout:hover{text-decoration:underline}.tscroll{flex:1;min-height:0;overflow-y:auto;padding-bottom:22px}.tbody-h{font-size:13px;font-weight:900;color:var(--ink2);margin:0 0 10px}.setup-saving{font-size:12px;font-weight:800;color:var(--ai);background:var(--ai-soft);padding:4px 11px;border-radius:999px}.setup-hint{margin-left:auto;font-size:11.5px;color:var(--muted);font-weight:700}.netbadge{background:var(--ok-soft);color:var(--ok);border-radius:999px;padding:7px 14px;font-size:12px;font-weight:900;display:inline-flex;gap:7px;align-items:center;white-space:nowrap}.setup{margin:8px 22px 10px;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:16px 18px;box-shadow:var(--shadow-sm)}.setup-head{display:flex;align-items:center;gap:10px;margin-bottom:12px}.setup-cap{font-size:13.5px;font-weight:900;color:var(--ink)}.setup-warn{font-size:12px;font-weight:800;color:var(--rec);background:var(--rec-soft);padding:4px 11px;border-radius:999px}.setup-ok{font-size:12px;font-weight:800;color:var(--ok);background:var(--ok-soft);padding:4px 11px;border-radius:999px}.setup-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px 14px;align-items:end}.setup-grid .fld.col2{grid-column:span 2}.in{padding:10px 13px;border-radius:11px;border:1px solid var(--line);background:var(--card);color:var(--ink);font-size:14px;font-family:inherit;width:100%}.in:focus{outline:none;border-color:var(--brand);box-shadow:var(--ring)}.in:disabled{background:var(--stage);color:var(--muted);cursor:not-allowed}.setup.locked{opacity:.92}.setup-lockbadge{font-size:12px;font-weight:800;color:var(--ink2);background:var(--stage);padding:5px 12px;border-radius:999px;margin-left:auto}.setup-save{grid-column:span 2;display:flex;align-items:center;justify-content:flex-end;gap:12px}.setup-link{grid-column:span 2;font-size:12.5px;font-weight:700;color:var(--ink2);background:var(--brand-soft);border-radius:11px;padding:10px 13px;line-height:1.5}.setup-link b{color:var(--brand-ink)}.setup.summary{display:flex;align-items:center;gap:14px;padding:13px 18px}.setup-sum{flex:1;min-width:0;display:flex;align-items:center;gap:12px;flex-wrap:wrap}.setup-sum .setup-t{font-size:15.5px;font-weight:900;color:var(--ink)}.setup-sum .setup-lim{font-size:12.5px;font-weight:800;color:var(--muted)}@media(max-width:640px){.setup-grid{grid-template-columns:1fr}.setup-grid .fld.col2,.setup-save{grid-column:span 1}}.sessbar{margin:0 22px 6px;background:var(--navy);color:#fff;border-radius:15px;padding:14px 18px;display:flex;align-items:center;gap:15px;flex-wrap:wrap;box-shadow:var(--shadow-sm);position:relative;overflow:hidden}.sessbar:before{content:"";position:absolute;left:0;top:0;bottom:0;width:6px;background:linear-gradient(var(--brand),var(--brand2))}.sessbar .lbl{font-size:10.5px;font-weight:900;opacity:.75;text-transform:uppercase;letter-spacing:.07em}.sessbar .code{font-size:24px;font-weight:900;letter-spacing:.22em;line-height:1;font-variant-numeric:tabular-nums;margin-top:3px;font-family:var(--font-display)}.sessbar .cnt{font-size:13px;font-weight:800;opacity:.95}.sessbar .sp{margin-left:auto;display:flex;gap:8px}.sessbar button{border:0;border-radius:11px;padding:9px 16px;font-weight:900;font-size:13px;cursor:pointer}.sessbar .b1{background:#fff3;color:#fff}.sessbar .b2{background:linear-gradient(135deg,var(--brand),var(--brand2));color:#fff}.sessbar button:disabled{opacity:.5;cursor:not-allowed}.sessbar.off{background:var(--card);color:var(--muted);border:1px solid var(--line)}.sessbar.off:before{opacity:.5}.sessbar.off .lbl{opacity:1}.stylegrid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:16px}.stylecard{position:relative;border:2px solid var(--line);background:var(--card);border-radius:14px;padding:0;overflow:hidden;cursor:pointer;transition:.12s;display:flex;flex-direction:column}.stylecard img{width:100%;aspect-ratio:16/10;object-fit:cover;display:block}.stylecard-ph{width:100%;aspect-ratio:16/10;display:grid;place-items:center;background:var(--stage);color:var(--muted);font-weight:900;font-size:15px}.stylecard .sl{font-size:12.5px;font-weight:800;color:var(--ink2);padding:7px 4px}.stylecard:hover{border-color:var(--brand);transform:translateY(-2px)}.stylecard.on{border-color:var(--brand);box-shadow:0 6px 16px #ff7a594d}.stylecard.on .sl{color:var(--brand)}.stylecard.soon{opacity:.6;cursor:not-allowed}.stylecard.soon:hover{transform:none;border-color:var(--line)}.soonbadge{position:absolute;top:6px;right:6px;background:var(--navy);color:#fff;font-size:10px;font-weight:900;padding:3px 7px;border-radius:999px}@media(max-width:640px){.stylegrid{grid-template-columns:repeat(3,1fr)}}.picker-warn{background:var(--rec-soft);color:var(--rec);border-radius:12px;padding:12px 14px;font-size:13px;font-weight:700;line-height:1.65;text-align:left;margin-bottom:14px}.picker-warn b{font-weight:900}.reviewbar{margin:8px 22px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:13px 16px;display:flex;align-items:center;gap:14px;box-shadow:var(--shadow-sm);flex-wrap:wrap}.rv-info{flex:1;min-width:200px;font-size:13px;color:var(--ink2)}.rv-info b{color:var(--ink)}.rv-toggle{border:0;border-radius:11px;padding:9px 15px;font-weight:900;font-size:13px;cursor:pointer;background:var(--stage);color:var(--ink2)}.rv-toggle.on{background:var(--ok-soft);color:var(--ok)}.joinpanel{margin:0 22px 8px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:12px 15px;box-shadow:var(--shadow-sm)}.joinpanel-h{font-size:12px;font-weight:900;color:var(--ink2);margin-bottom:10px;display:flex;align-items:center;gap:8px}.joinpanel-h .jn{font-weight:800;color:var(--ok);background:var(--ok-soft);padding:2px 9px;border-radius:999px}.joinlist{display:flex;flex-wrap:wrap;gap:7px}.jchip{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:800;padding:6px 11px;border-radius:999px;background:var(--stage);color:var(--muted)}.jchip.on{background:var(--ok-soft);color:var(--ok)}.jchip .jdot{width:7px;height:7px;border-radius:50%;background:var(--muted);opacity:.5}.jchip.on .jdot{background:var(--ok);opacity:1}.stats{display:flex;gap:11px;padding:12px 22px 4px;flex-wrap:wrap}.stat{background:var(--card);border:1px solid var(--line);border-radius:15px;padding:13px 18px;min-width:98px;box-shadow:var(--shadow-sm)}.stat .n{font-size:25px;font-weight:900;line-height:1;font-variant-numeric:tabular-nums;font-family:var(--font-display)}.stat .l{font-size:11.5px;color:var(--muted);font-weight:800;margin-top:5px}.tbody{padding:16px 22px 6px}.subgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:13px}.subcard{border:1px solid var(--line);border-radius:16px;padding:14px;background:var(--card);box-shadow:var(--shadow-sm);cursor:pointer;transition:.14s}.subcard:hover{transform:translateY(-3px);border-color:var(--brand);box-shadow:var(--shadow)}.subcard.locked{opacity:.55;cursor:default}.subcard.locked:hover{transform:none;border-color:var(--line);box-shadow:var(--shadow-sm)}.subcard .nm{font-weight:900;font-size:14.5px}.subcard .th2{margin-top:10px;aspect-ratio:16/9;border-radius:11px;background:linear-gradient(135deg,var(--navy),#3d4f63);display:grid;place-items:center;color:#ffffffe6;font-size:11.5px;font-weight:800}.pill{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:900;padding:5px 11px;border-radius:999px;margin-top:11px}.pill.writing{background:var(--stage);color:var(--muted)}.pill.submitted{background:var(--ai-soft);color:var(--ai)}.pill.confirmed{background:var(--brand-soft);color:var(--brand-ink)}.pill.published{background:var(--ok-soft);color:var(--ok)}.specrail .rstep .rt{font-size:12.5px}.spec-block{border-radius:14px;padding:14px 16px;margin-top:14px;border:1px solid var(--line)}.spec-block-h{font-size:13px;font-weight:900;margin-bottom:8px}.spec-block ul{margin:0;padding-left:18px;display:grid;gap:6px}.spec-block li{font-size:14px;line-height:1.6;color:var(--ink2)}.spec-block.intent{background:var(--brand-soft)}.spec-block.intent .spec-block-h{color:var(--brand-ink)}.spec-block.security{background:var(--rec-soft)}.spec-block.security .spec-block-h{color:var(--rec)}.spec-block.design{background:var(--ok-soft)}.spec-block.design .spec-block-h{color:var(--ok)}.fld{display:grid;gap:6px}.fld>span{font-size:12.5px;font-weight:800;color:var(--ink2)}.legend{margin-top:18px;display:flex;gap:16px;flex-wrap:wrap;font-size:12.5px;color:var(--muted);justify-content:center;font-weight:700}.legend span{display:inline-flex;gap:6px;align-items:center}.legend i{width:11px;height:11px;border-radius:4px;display:inline-block}@media(max-width:780px){.rail{width:160px}.grid,.roster,.subgrid{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){.devbar{flex-wrap:wrap;gap:8px;padding:8px 12px}.devbar .brand{font-size:16px}.roles{width:100%;justify-content:center}.roles button{flex:1;padding:8px;font-size:12.5px}.thead{padding:14px 16px 8px}.thead-right{flex-direction:row;align-items:center;flex-wrap:wrap}.sessbar,.setup,.reviewbar,.joinpanel{margin-left:14px;margin-right:14px}.stats{padding:12px 14px 4px}.tbody{padding:12px 14px 6px}.cbody{padding:18px 16px}}@media(max-width:560px){.stumain{flex-direction:column}.rail{width:auto;flex-direction:row;overflow-x:auto;border-right:0;border-bottom:1px solid var(--line2);gap:6px;padding:10px 12px}.rail .rh,.railfoot,.rstep .rt{display:none}.rstep{padding:7px}.aicard .row{grid-template-columns:1fr}.aicard .cell.mine{border-right:0;border-bottom:1px dashed var(--line)}}
