:root{--bg:#020807;--bg2:#091411;--surface:rgba(7,21,18,.91);--surface2:rgba(13,28,24,.94);--border:rgba(79,184,132,.22);--green:#54ffa9;--lime:#a2ffd2;--dim:#7da997;--red:#ff687f;--blue:#5baaff;--gold:#f7cb73;--white:#effff8;--ink:#c6dccf;--shadow:0 15px 50px rgba(0,0,0,.5);font-family:Tahoma,Arial,'Segoe UI',sans-serif}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--white);min-height:100vh;line-height:1.65}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{opacity:.4;cursor:not-allowed}a{color:var(--green)}#matrix{position:fixed;inset:0;z-index:-3;width:100%;height:100%;opacity:.65}.grain{position:fixed;z-index:-2;inset:0;pointer-events:none;background:radial-gradient(ellipse at 50% 25%,transparent 12%,rgba(0,0,0,.79) 96%),linear-gradient(100deg,rgba(0,30,20,.35),transparent 70%)}.grain:after{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(100,255,171,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(100,255,171,.025) 1px,transparent 1px);background-size:42px 42px;mask-image:linear-gradient(to bottom,black,transparent)}
#app{min-height:100vh}.loading{min-height:95vh;display:flex;align-items:center;justify-content:center;gap:16px;color:var(--green);letter-spacing:1px}.spinner{height:24px;width:24px;border:2px solid #225744;border-top-color:var(--green);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
.login-layout{min-height:100vh;display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:6vw;padding:6vw;max-width:1530px;margin:auto;direction:rtl}.login-card{max-width:510px;width:100%;margin:auto;padding:43px;border:1px solid rgba(84,255,169,.54);border-radius:16px;background:linear-gradient(145deg,rgba(4,16,14,.97),rgba(0,8,7,.86));box-shadow:0 0 90px rgba(0,255,115,.10),inset 0 0 50px rgba(12,65,41,.12),var(--shadow);position:relative;overflow:hidden}.login-card:before,.login-card:after{content:"";position:absolute;width:75px;height:75px;border-color:var(--green);border-style:solid;opacity:.75}.login-card:before{top:-1px;right:-1px;border-width:3px 3px 0 0}.login-card:after{bottom:-1px;left:-1px;border-width:0 0 3px 3px}.eyebrow{font-size:12px;color:var(--green);font-weight:700;letter-spacing:3px;text-transform:uppercase}.brand-title{font-weight:900;font-size:clamp(30px,4vw,50px);line-height:1.3;margin:13px 0 8px;text-shadow:0 0 29px rgba(75,255,148,.22)}.brand-title em{font-style:normal;color:var(--green)}.subtitle{color:#9fc3b2;margin:10px 0 28px}.login-card label{color:#b0d5c3;display:block;margin:20px 0 8px}.text-field,.select-field,.text-area{width:100%;color:var(--white);background:rgba(0,8,7,.75);border:1px solid #32644e;border-radius:9px;outline:none;padding:12px 14px;transition:border .15s,box-shadow .15s}.text-field:focus,.text-area:focus,.select-field:focus{border-color:var(--green);box-shadow:0 0 0 3px rgba(73,255,162,.1)}.text-area{min-height:110px;resize:vertical}.primary,.secondary,.danger,.ghost{border:1px solid transparent;border-radius:9px;min-height:41px;padding:9px 16px;font-weight:700;transition:transform .12s,background .12s,box-shadow .12s}.primary:hover:not(:disabled),.secondary:hover:not(:disabled),.ghost:hover:not(:disabled){transform:translateY(-1px)}.primary{color:#001f10;background:linear-gradient(115deg,#79ffbb,#21c579);box-shadow:0 0 23px rgba(33,255,136,.22)}.primary:hover{box-shadow:0 0 30px rgba(35,255,145,.38)}.secondary{background:#17382d;color:var(--green);border-color:#2d7753}.danger{background:#3b151c;border-color:#913847;color:#ffd3db}.ghost{background:rgba(7,18,17,.65);color:#b9d7c9;border-color:#315444}.wide{width:100%}.login-card .primary{margin-top:22px;font-size:19px;padding:12px}.small-note{font-size:12px;color:#77988a;margin-top:18px}.login-hero{padding:25px;min-width:0;text-align:center}.cipher-ring{border:1px solid rgba(84,255,169,.22);border-radius:50%;height:min(33vw,410px);width:min(33vw,410px);display:flex;justify-content:center;align-items:center;margin:0 auto 34px;box-shadow:inset 0 0 70px rgba(36,255,153,.1),0 0 60px rgba(36,255,153,.08);position:relative}.cipher-ring:before,.cipher-ring:after{content:"";position:absolute;border:1px dashed rgba(84,255,169,.17);border-radius:50%;inset:22px}.cipher-ring:after{inset:45px;border-style:solid}.sigil{font-size:clamp(70px,12vw,160px);filter:drop-shadow(0 0 27px #30bb70);color:var(--green);line-height:1}.login-hero h2{font-size:clamp(24px,3vw,38px);margin:0 0 10px}.login-hero p{color:#9db9aa}.spaced{letter-spacing:3px}.bad{color:var(--red)}.green{color:var(--green)}.red{color:var(--red)}.blue{color:var(--blue)}.gold{color:var(--gold)}.muted{color:#94aa9f}.mono{font-family:Consolas,'Courier New',monospace;direction:ltr;unicode-bidi:embed}.errorline{color:#ff94a4;min-height:22px;margin-top:10px;font-size:13px}
.shell{max-width:1580px;margin:auto;padding:23px 26px 75px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;background:rgba(3,18,13,.75);border:1px solid var(--border);padding:16px 20px;border-radius:14px;backdrop-filter:blur(12px)}.logo{font-size:23px;font-weight:900}.logo span{color:var(--green)}.tagline{font-size:12px;color:#7daa96}.bar-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.pill{display:inline-flex;align-items:center;gap:8px;background:rgba(24,49,37,.8);color:#d2fce6;border:1px solid rgba(74,161,113,.35);padding:4px 10px;border-radius:999px;font-size:12px;white-space:nowrap}.pill.redpill{color:#ffa6b3;border-color:#993b4a}.pill.bluepill{color:#a4ceff;border-color:#3e628f}.pill.goldpill{color:var(--gold);border-color:#8b703c}.topbar button{min-height:36px}.headline{margin:29px 0 22px}.headline h1{font-size:clamp(27px,3vw,38px);margin:0 0 5px}.headline p{color:#a9c0b5;margin:0}.layout{display:grid;grid-template-columns:minmax(0,1fr) 240px;gap:20px;align-items:start}.content{min-width:0}.sidebar{position:sticky;top:20px;border:1px solid var(--border);background:var(--surface);padding:12px;border-radius:14px;display:flex;flex-direction:column;gap:5px}.sidebtn{border:0;border-radius:9px;background:transparent;text-align:right;color:#a1bcac;padding:12px 14px;width:100%}.sidebtn:hover,.sidebtn.active{color:var(--green);background:#0e3725}.sidebar .meta{margin-top:20px;padding:12px;color:#6f9580;font-size:11px;border-top:1px solid var(--border)}.panel{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:21px;box-shadow:var(--shadow);backdrop-filter:blur(9px);margin-bottom:17px;min-width:0}.panel h2{font-size:19px;margin:0}.panel h3{font-size:16px;margin:0}.panel-title{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:20px;flex-wrap:wrap}.panel-sub{color:#8ca99a;font-size:12px}.grid{display:grid;gap:16px}.stats{grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:18px}.stat{border:1px solid var(--border);padding:18px 19px;background:linear-gradient(120deg,rgba(20,56,37,.77),rgba(2,17,12,.77));border-radius:12px;min-width:0}.stat .num{font-size:25px;font-weight:800;color:var(--green);overflow-wrap:anywhere}.stat .label{font-size:12px;color:#95b6a3}.two-col{grid-template-columns:repeat(2,minmax(0,1fr))}.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.row-between{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.stack{display:flex;flex-direction:column;gap:12px}.field-group label{font-size:12px;color:#9bb9a9;display:block;margin:0 0 5px}.field-group{min-width:0;flex:1}.actions{display:flex;gap:8px;flex-wrap:wrap}.small{font-size:12px}.tiny{font-size:11px}.btn-small{min-height:32px;padding:4px 10px;font-size:12px}.divider{border:0;border-top:1px solid var(--border);margin:18px 0}.station-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.station{min-width:0;min-height:119px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;background:#06130f;border:1px solid #214436;color:#a0b7aa;border-radius:10px;padding:10px 5px}.station b{font-size:17px}.station span{font-size:10px;text-align:center}.station.current{border-color:#4efba3;background:rgba(11,64,37,.55);box-shadow:0 0 17px rgba(22,249,110,.15);color:#9effc2}.station.done{border-color:#286747;background:#103121;color:#94ffc0}.station.locked{opacity:.58}.stage-hero{border:1px solid #397657;border-radius:12px;background:linear-gradient(135deg,rgba(14,68,45,.52),rgba(7,21,18,.72));padding:21px;margin:14px 0}.stage-hero h3{font-size:23px;color:var(--green)}.stage-hero p{white-space:pre-wrap}.rules{font-size:14px;color:#cbd8d0}.rules li{margin:8px 0}.progressbar{height:8px;background:#133628;border-radius:9px;overflow:hidden;margin-top:10px}.progressbar>div{height:100%;background:linear-gradient(90deg,#18a65a,#62ff9d);transition:width .3s}.role-card{padding:15px;border:1px solid #2d6e4b;border-radius:10px;background:#051710}.role-card.traitor{border-color:#7c3848;background:#2c0e19}.intel-card{border:1px dashed #508267;padding:12px;border-radius:9px;background:#081a13;white-space:pre-wrap}.notice{padding:14px 16px;border:1px solid #5d6e46;background:rgba(72,80,27,.18);border-radius:10px;color:#ecf1d7}.notice.success{border-color:#347c53;background:#0d3222;color:#a7ffd1}.notice.warning{border-color:#965462;background:#321b1b;color:#ffbdc4}.tablewrap{overflow:auto;border:1px solid var(--border);border-radius:10px}table{width:100%;border-collapse:collapse;font-size:13px}th,td{padding:12px 10px;text-align:right;border-bottom:1px solid rgba(70,128,95,.18);vertical-align:middle}th{color:#a7e5c2;background:rgba(21,59,38,.42);white-space:nowrap}tr:last-child td{border-bottom:0}td{color:#d9e6dc}td button{margin:2px}.player-row{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 12px;background:#0b2018;border:1px solid #244d37;border-radius:9px}.player-row.red-edge{border-right:3px solid var(--red)}.player-row.blue-edge{border-right:3px solid var(--blue)}.checkbox-line{display:flex;align-items:center;gap:8px;background:#0c231b;border:1px solid #294b3a;border-radius:9px;padding:10px}.checkbox-line input{accent-color:#39ed8a;width:17px;height:17px}.number-box{font-family:Consolas,monospace;direction:ltr}.card-mini{border:1px solid var(--border);padding:14px;border-radius:11px;background:rgba(3,20,14,.8)}.card-mini h3{margin-bottom:10px}.cap{font-size:12px;color:var(--dim)}.toasts{position:fixed;bottom:18px;left:18px;z-index:30;display:flex;flex-direction:column;gap:7px;max-width:min(440px,90vw)}.toast{background:#0d2d20;color:#dcfff0;padding:12px 18px;border:1px solid #30a66b;box-shadow:0 10px 40px #000c;border-radius:9px}.toast.error{background:#38161e;border-color:#d65e78}.loading-inner{padding:55px;text-align:center}.countdown{font:700 22px Consolas,monospace;color:var(--green)}.locked-role{filter:blur(3px)}
@media(max-width:1050px){.layout{grid-template-columns:1fr}.sidebar{position:static;display:flex;flex-direction:row;overflow-x:auto;white-space:nowrap;order:-1}.sidebtn{width:auto;flex:0 0 auto}.sidebar .meta{display:none}.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.login-layout{gap:2vw}}
@media(max-width:700px){.login-layout{display:flex;flex-direction:column;padding:25px 14px;justify-content:center}.login-hero{order:-1;padding:5px}.cipher-ring{width:116px;height:116px;margin:0 auto 6px}.cipher-ring:before{inset:9px}.cipher-ring:after{inset:20px}.sigil{font-size:55px}.login-hero h2{display:none}.login-hero p{display:none}.login-card{padding:30px 23px}.brand-title{font-size:32px}.shell{padding:12px 11px 60px}.topbar{padding:12px;align-items:flex-start}.logo{font-size:18px}.bar-actions{gap:5px}.bar-actions .pill{display:none}.stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.stat{padding:13px}.stat .num{font-size:22px}.two-col,.cols-3{grid-template-columns:1fr}.panel{padding:16px}.station-list{grid-template-columns:repeat(3,minmax(0,1fr))}.station{min-height:95px}.headline{margin:22px 0 17px}.headline h1{font-size:26px}th,td{padding:9px 6px;font-size:12px}.topbar button{font-size:11px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}#matrix{opacity:.15}}

/* Live game controls: no inline styles, compatible with the existing CSP. */
[hidden]{display:none!important}.live-strip{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:14px 4px;font-size:13px}.live-strip .countdown{font-size:16px}.role-card{margin-top:12px}.progress-step-0{width:0}.progress-step-1{width:16.6667%}.progress-step-2{width:33.3333%}.progress-step-3{width:50%}.progress-step-4{width:66.6667%}.progress-step-5{width:83.3333%}.progress-step-6{width:100%}

.start-qr{display:block;width:240px;max-width:100%;height:auto;background:white;margin:16px auto;padding:12px;border-radius:12px}

/* Phase 2 follows the existing dark intelligence-console identity. */
fieldset{border:0;padding:0;margin:0;min-width:0}fieldset:disabled{opacity:.72}label{display:block}label>.text-field,label>.text-area,label>.select-field{margin:5px 0 14px}.config-section{border-top:1px solid var(--border);padding-top:20px;margin:18px 0}.config-section h3{margin-bottom:16px}.config-section .card-mini{margin:12px 0}.evidence-photo{width:100%;max-height:300px;object-fit:contain;background:#020807;border-radius:9px;display:block;margin:12px 0}.witness-card{border:1px solid var(--border);border-radius:12px;padding:16px;display:flex;flex-direction:column;align-items:stretch;white-space:pre-wrap;min-width:0}.witness-card .primary{margin-top:auto}.witness-card p{overflow-wrap:anywhere}.finale-track{list-style:none;padding:0;display:flex;gap:8px;flex-wrap:wrap}.finale-track li{border:1px solid var(--border);border-radius:9px;padding:7px;font-size:12px}.finale-track .current{border-color:var(--green);color:var(--green)}.finale-track .done{background:#103121}.finale-track .locked{opacity:.55}.preserve-lines{white-space:pre-wrap;overflow-wrap:anywhere}.result-banner{margin-bottom:18px}.card-mini code{overflow-wrap:anywhere}.stack>fieldset{display:flex;flex-direction:column;gap:12px}.notice ul{padding-inline-start:20px}.panel .actions{margin-top:14px}.content p{overflow-wrap:anywhere}input[type=file]{max-width:100%}

.spaced-card{margin:12px 0}.plain-link{text-decoration:none}
