:root{color-scheme:dark;--bg:#09121e;--panel:#101e2b;--panel2:#152637;--line:#294153;--muted:#8fa7b6;--text:#eaf3f7;--accent:#47c4e6;--accentsoft:#123947;--good:#87d8a5;--warn:#ffc46b;--bad:#ff7f85}
[data-faction="zerg"]{--accent:#c69bfd;--accentsoft:#3d2857}[data-faction="protoss"]{--accent:#f3c877;--accentsoft:#514029}
.choice-card:hover{transform:none}.choice-card .card-actions{flex-wrap:wrap}.small-btn{min-height:42px;padding:10px 12px;font-size:12px}.choice-card .card-actions .small-btn.add{flex:1 1 100%;min-height:46px;background:var(--accent);border-color:var(--accent);color:#08202b;font-weight:700;text-align:center}.choice-card .card-actions .small-btn.add:hover{filter:brightness(1.14)}.choice-card .card-actions .small-btn.add.is-locked{background:#203645;border:1px dashed #577184;color:#d6e4eb}.choice-card .card-actions .small-btn.remove,.choice-card .card-actions .small-btn:not(.add){flex:1 1 auto}.choice-card .card-actions.unit-actions{flex-direction:column}.choice-card .card-actions.unit-actions .small-btn.add{width:100%;min-height:55px;line-height:1.45}.choice-card .card-actions.unit-actions .small-btn.add span{display:block;font-size:11px;font-weight:500}.lock-reason{color:var(--warn);font-size:11px;line-height:1.45;margin-top:8px}.unit-actions .lock-reason{margin-top:0}.small-btn[aria-disabled="true"]{cursor:pointer}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:'DM Sans','Noto Sans KR',sans-serif;font-size:14px}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.46}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:2px}h1,h2,h3,p{margin-top:0}.app-shell{min-height:100vh;background:radial-gradient(circle at 15% -15%,rgba(41,112,138,.19),transparent 34%),var(--bg)}.boot{padding:20vh 2rem;text-align:center;color:var(--muted)}.topbar{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:22px 30px;border-bottom:1px solid var(--line);background:rgba(9,18,30,.88)}.brand{display:flex;align-items:center;gap:13px}.brand-mark{width:39px;height:39px;border:1px solid var(--accent);clip-path:polygon(0 0,80% 0,100% 20%,100% 100%,20% 100%,0 80%);display:grid;place-items:center;color:var(--accent);font:700 24px Rajdhani}.eyebrow{font:700 10px Rajdhani,sans-serif;letter-spacing:2.7px;color:var(--accent);text-transform:uppercase}.brand h1{font:700 24px/1 Rajdhani,'Noto Sans KR',sans-serif;letter-spacing:.8px;margin:4px 0 0}.top-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.language{display:flex;gap:2px;background:#091623;border:1px solid var(--line);padding:3px;border-radius:8px}.language button{border:0;background:transparent;color:var(--muted);padding:7px 11px;border-radius:5px;font-size:12px}.language button.active{background:var(--accentsoft);color:#bdefff}.btn{background:transparent;border:1px solid var(--line);border-radius:7px;color:var(--text);padding:9px 12px;min-height:36px}.btn:hover:not(:disabled){border-color:var(--accent);background:#173247}.btn.primary{background:var(--accent);border-color:var(--accent);color:#06202c;font-weight:700}.btn.primary:hover{background:#7bdaef}.btn.danger{color:var(--bad)}.wrap{max-width:1690px;margin:auto;padding:24px 30px 34px}.intro{display:flex;justify-content:space-between;align-items:end;gap:20px;margin-bottom:23px}.intro h2{font:700 33px/1.1 Rajdhani,'Noto Sans KR',sans-serif;letter-spacing:.2px;margin:5px 0 7px}.intro p{color:var(--muted);font-size:12px;margin:0}.intro-meta{display:flex;align-items:center;gap:12px;color:var(--muted);font-size:11px}.live-dot{width:7px;height:7px;background:var(--good);border-radius:50%;box-shadow:0 0 10px var(--good)}.setup-row{display:flex;gap:10px;align-items:end;flex-wrap:wrap;margin-bottom:16px}.field{display:flex;flex-direction:column;gap:5px}.field label,.small-label{font:700 10px Rajdhani,'Noto Sans KR',sans-serif;letter-spacing:1.5px;color:var(--muted);text-transform:uppercase}.field select,.field input,.search,.filter{border:1px solid var(--line);background:#10202f;color:var(--text);border-radius:7px;min-height:41px;padding:8px 12px}.field select{min-width:185px}.field input{width:132px}.setup-note{color:var(--muted);font-size:11px;margin-left:auto;padding-bottom:11px}.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:22px}.metric{background:linear-gradient(135deg,#142637,#101e2b);border:1px solid var(--line);border-radius:9px;padding:14px 17px;min-height:86px;position:relative;overflow:hidden}.metric:before{content:"";position:absolute;inset:0 auto 0 0;width:3px;background:var(--accent)}.metric.bad:before{background:var(--bad)}.metric .label{font:700 11px Rajdhani,'Noto Sans KR',sans-serif;letter-spacing:1.4px;color:var(--muted);text-transform:uppercase}.metric .value{font:700 28px/1.15 Rajdhani,'Noto Sans KR',sans-serif;margin-top:6px}.metric .value b{color:var(--accent)}.metric.bad .value b{color:var(--bad)}.metric .sub{font-size:10px;color:var(--muted)}.layout{display:grid;grid-template-columns:220px minmax(0,1fr) 360px;gap:16px;align-items:start}.rail,.main-panel,.roster-panel{border:1px solid var(--line);background:rgba(16,30,43,.92);border-radius:10px;min-width:0}.rail{padding:15px;position:sticky;top:15px}.rail-heading{color:var(--muted);font:700 10px Rajdhani;letter-spacing:2px;padding:5px 8px 13px}.step{width:100%;border:1px solid transparent;background:transparent;color:var(--muted);display:flex;align-items:center;gap:10px;text-align:left;padding:11px 9px;border-radius:7px;margin-bottom:4px;font-weight:600}.step.active{border-color:#24617a;background:#123444;color:#e8fbff}.step:hover{color:var(--text)}.step-number{font:700 13px Rajdhani;background:#1d3444;color:var(--muted);border-radius:5px;min-width:25px;height:25px;display:grid;place-items:center}.step.active .step-number{background:var(--accent);color:#06202c}.rail-foot{border-top:1px solid var(--line);margin-top:14px;padding:15px 7px 4px;font-size:11px;color:var(--muted);line-height:1.6}.main-panel{min-height:600px;padding:20px}.panel-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding-bottom:17px;border-bottom:1px solid var(--line);margin-bottom:17px}.panel-head h3{font:700 23px Rajdhani,'Noto Sans KR';margin:3px 0 5px}.panel-head p{font-size:12px;color:var(--muted);margin:0;line-height:1.55}.step-kicker{font:700 10px Rajdhani;letter-spacing:2px;color:var(--accent)}.progress{font:700 12px Rajdhani;color:var(--accent);white-space:nowrap}.search-row{display:flex;gap:8px;margin-bottom:16px}.search{flex:1;min-width:0}.filter{max-width:165px}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(245px,1fr));gap:10px}.choice-card{border:1px solid var(--line);border-radius:8px;background:#122332;padding:15px;text-align:left;color:var(--text);min-width:0;transition:border-color .15s,transform .15s}.choice-card:hover{border-color:var(--accent);transform:translateY(-2px)}.choice-card.selected{border-color:var(--good);background:#17322f}.choice-card .topline{display:flex;justify-content:space-between;gap:8px;align-items:start}.choice-card h4{font-size:15px;margin:0 0 5px;line-height:1.4}.choice-card .subtitle{font-size:11px;color:var(--muted);line-height:1.5;margin-bottom:10px}.badges{display:flex;gap:5px;flex-wrap:wrap}.badge{border:1px solid #315268;border-radius:4px;color:#a8c9d7;font:700 10px Rajdhani,'Noto Sans KR';letter-spacing:.4px;padding:3px 5px}.badge.gold{border-color:#745e38;color:var(--warn)}.cost{color:var(--accent);font:700 14px Rajdhani;white-space:nowrap}.choice-card.selected .cost{color:var(--good)}.choice-card .excerpt{font-size:11px;color:var(--muted);line-height:1.5;max-height:3em;overflow:hidden;margin-top:12px}.choice-card .card-actions{display:flex;gap:7px;margin-top:13px}.small-btn{border:1px solid var(--line);background:#0d1c29;color:var(--text);border-radius:5px;padding:6px 9px;font-size:11px}.small-btn:hover{border-color:var(--accent)}.small-btn.add{border-color:#2c7690;color:#9ee9f9}.small-btn.remove{color:var(--bad)}.section-title{font:700 15px Rajdhani,'Noto Sans KR';letter-spacing:.5px;margin:22px 0 10px;display:flex;justify-content:space-between}.section-title:first-child{margin-top:0}.empty{border:1px dashed var(--line);border-radius:8px;padding:30px 18px;text-align:center;color:var(--muted);font-size:12px;line-height:1.7}.roster-panel{padding:19px;position:sticky;top:15px;max-height:calc(100vh - 30px);overflow:auto}.roster-head{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);padding-bottom:13px}.roster-head h3{font:700 21px Rajdhani,'Noto Sans KR';margin:0}.roster-count{background:#183b4b;color:var(--accent);padding:4px 7px;border-radius:5px;font:700 11px Rajdhani}.roster-section{border-bottom:1px solid var(--line);padding:15px 0}.roster-section:last-child{border:0}.roster-section .small-label{margin-bottom:9px;display:block}.roster-row{display:flex;justify-content:space-between;align-items:start;gap:9px;margin:9px 0;font-size:12px}.roster-row strong{line-height:1.45}.roster-row small{display:block;color:var(--muted);font-size:10px;margin-top:2px}.icon-btn{border:0;background:transparent;color:var(--muted);padding:0 3px}.icon-btn:hover{color:var(--bad)}.roster-unit{border:1px solid var(--line);background:#122332;border-radius:7px;padding:10px;margin-top:8px}.roster-unit-top{display:flex;gap:8px;justify-content:space-between}.roster-unit strong{font-size:12px;line-height:1.4}.roster-unit .meta{font:600 10px Rajdhani,'Noto Sans KR';color:var(--muted);margin:5px 0}.upgrade-list{display:flex;flex-wrap:wrap;gap:5px;margin-top:7px}.upgrade{font-size:10px;border:1px solid var(--line);background:#0b1a26;color:var(--muted);padding:5px 6px;border-radius:4px;text-align:left}.upgrade.active{color:var(--good);border-color:#438461;background:#17322f}.slot-list{display:grid;grid-template-columns:repeat(2,1fr);gap:6px}.slot{background:#0b1a27;border-radius:5px;padding:7px 9px;display:flex;justify-content:space-between;font:700 11px Rajdhani,'Noto Sans KR'}.slot b{color:var(--accent)}.slot.bad b{color:var(--bad)}.roster-actions{display:flex;gap:7px;flex-wrap:wrap;margin-top:15px}.roster-actions .btn{flex:1;font-size:11px}.notice{background:#1a2d39;border-left:2px solid var(--warn);padding:10px 12px;color:#e7d2ad;font-size:11px;line-height:1.55;margin:12px 0}.notice.good{border-color:var(--good);color:#bce6c9}.origin{color:#708b9a;font-size:10px;margin-top:20px;line-height:1.6}#toast{position:fixed;bottom:22px;left:50%;transform:translate(-50%,20px);background:#173a4b;color:#eaffff;border:1px solid var(--accent);border-radius:7px;padding:10px 16px;box-shadow:0 12px 35px #0009;opacity:0;pointer-events:none;transition:.2s;z-index:40;max-width:min(500px,90vw);text-align:center}#toast.show{opacity:1;transform:translate(-50%,0)}dialog{background:#122332;color:var(--text);border:1px solid var(--accent);border-radius:10px;max-width:min(680px,92vw);max-height:85vh;overflow:auto;padding:23px}dialog::backdrop{background:#02080ecb}dialog h3{font:700 24px Rajdhani,'Noto Sans KR';margin:0 30px 8px 0}dialog p{white-space:pre-wrap;line-height:1.6;color:#c7d6de}.dialog-close{float:right}.details-list{border-top:1px solid var(--line);margin-top:14px}.details-item{border-bottom:1px solid var(--line);padding:12px 0}.details-item strong{color:var(--accent);display:block;margin-bottom:4px}.details-item p{margin:0;font-size:12px}.footer{padding:25px 30px;color:#617b8a;font-size:10px;text-align:center}
@media(max-width:1220px){.layout{grid-template-columns:190px minmax(0,1fr)}.roster-panel{grid-column:2;position:static;max-height:none}.rail{grid-row:1 / span 2}.metrics{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){.topbar{padding:16px;align-items:flex-start;flex-direction:column}.wrap{padding:18px 15px}.intro{align-items:start;flex-direction:column}.intro h2{font-size:29px}.layout{display:block}.rail{position:static;display:flex;overflow:auto;gap:4px;margin-bottom:12px;padding:8px}.rail-heading,.rail-foot{display:none}.step{white-space:nowrap;width:auto;margin:0;padding:7px 9px}.step-number{min-width:22px;height:22px}.main-panel{min-height:430px;padding:15px}.roster-panel{margin-top:12px}.metrics{gap:7px}.metric{padding:10px 12px;min-height:74px}.metric .value{font-size:24px}.setup-note{width:100%;padding:0}.card-grid{grid-template-columns:1fr}.filter{max-width:130px}.footer{padding:22px}}
@media print{body{background:#fff;color:#111}.topbar,.rail,.main-panel,.top-actions,.setup-row,.roster-actions,.icon-btn,.upgrade,.footer,#toast{display:none!important}.wrap{padding:0}.layout{display:block}.roster-panel{position:static;max-height:none;background:#fff;color:#111;border:0}.roster-unit,.slot{background:#fff;color:#111;border:1px solid #bbb}.metric{background:#fff;color:#111;border:1px solid #bbb}.metric .value b,.slot b{color:#111}.origin{color:#555}}
.room-builder-banner{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;background:#123444;border:1px solid var(--accent);border-radius:8px;padding:14px 17px;margin-bottom:22px}.room-builder-banner strong{color:var(--accent)}.room-builder-banner p{margin:5px 0 0;color:var(--muted);font-size:12px}
.game-source-tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0 0 15px}.game-source-tab{min-height:46px;padding:9px 14px;display:flex;align-items:center;justify-content:space-between;gap:10px;border:1px solid var(--line);border-radius:7px;background:#0b1a27;color:var(--muted);font-weight:700;text-align:left}.game-source-tab:hover{border-color:var(--accent);color:var(--text)}.game-source-tab.active{border-color:var(--accent);background:#123444;color:#e8fbff}.game-source-tab span{border-radius:5px;background:#20394a;padding:3px 7px;color:var(--accent);font:700 12px Rajdhani}.game-source-section+.game-source-section{border-top:1px solid var(--line);margin-top:24px;padding-top:2px}
.mission-facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:18px 0}.mission-facts>div{background:#0b1a27;border:1px solid var(--line);border-radius:6px;padding:10px}.mission-facts .small-label{display:block}.mission-facts strong{display:block;margin-top:5px;color:var(--accent);font-size:13px}.mission-detail-section{border-top:1px solid var(--line);padding:16px 0}.mission-detail-section h4{font:700 16px Rajdhani,'Noto Sans KR';margin:0 0 11px;color:var(--accent)}.mission-language-pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.mission-language-block{background:#0b1a27;border:1px solid var(--line);border-radius:6px;padding:12px;min-width:0}.mission-language-block p{white-space:pre-wrap;overflow-wrap:anywhere;margin:8px 0 0;font-size:12px;line-height:1.7}.mission-original{margin-top:9px;color:var(--muted)}.mission-original summary{cursor:pointer;font-size:12px}.mission-original .mission-language-block{margin-top:9px}@media(max-width:650px){.mission-facts{grid-template-columns:1fr}.mission-language-pair{grid-template-columns:1fr}}
.ability-dialog{width:min(860px,94vw);max-width:94vw}.rule-pills{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0 13px}.rule-pill{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border:1px solid #387586;border-radius:999px;background:#173744;color:#aeefff;font-size:11px;font-weight:700;line-height:1.3}.rule-pill:before{content:'✦';font-size:10px}.rule-pill.timing{border-color:#766e4a;background:#332c1d;color:#f1d994}.rule-pill.timing:before{content:'◷'}.ability-language-pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.ability-language{min-width:0;background:#0b1a27;border:1px solid var(--line);border-radius:7px;padding:12px}.ability-language p{white-space:pre-wrap;overflow-wrap:anywhere;margin:7px 0 0;font-size:12px;line-height:1.7}.ability-original{margin-top:10px;color:var(--muted)}.ability-original summary{cursor:pointer;font-size:12px}.ability-original .ability-language{margin-top:10px}.ability-dialog .details-item{padding:18px 0}.ability-dialog .details-item>strong{font-size:15px;margin-bottom:6px}@media(max-width:650px){.ability-language-pair{grid-template-columns:1fr}}
.saved-rosters{background:linear-gradient(135deg,#123444,#102535);border:1px solid #317b94;border-radius:9px;padding:16px;margin-bottom:22px}.saved-rosters .section-title{margin:0 0 5px;color:#dbf8ff}.saved-rosters .section-title span{color:var(--accent);font-size:12px}.saved-rosters p,.saved-local{display:block;color:var(--muted);font-size:12px;line-height:1.5;margin:0 0 14px}.save-roster-form .small-label{display:block;margin-bottom:6px}.save-roster-form>div{display:flex;gap:8px}.save-roster-form input{flex:1;min-width:0;background:#0b1a27;border:1px solid var(--line);border-radius:7px;color:var(--text);padding:9px 12px}.saved-roster-list{margin-top:14px}.saved-roster-row{display:flex;justify-content:space-between;align-items:center;gap:12px;border-top:1px solid #315367;padding:11px 0}.saved-roster-row strong{display:block;overflow-wrap:anywhere}.saved-roster-row small{display:block;color:var(--muted);font-size:11px;margin-top:3px}.saved-roster-row>div:last-child{display:flex;gap:6px;flex-shrink:0}.saved-roster-row .btn{font-size:11px;min-height:34px;padding:6px 9px}.saved-empty{color:var(--muted);font-size:12px;padding:14px 0}.saved-local{margin:9px 0 0}@media(max-width:600px){.save-roster-form>div,.saved-roster-row{align-items:stretch;flex-direction:column}.saved-roster-row>div:last-child .btn{flex:1}}
.topbar .top-actions>a.btn,.topbar .top-actions>a.btn:hover,.topbar .top-actions>a.btn:focus-visible{text-decoration:none}
.summon-explainer{margin:0 0 14px;padding:11px 13px;border:1px solid #476c79;border-left:3px solid var(--accent);border-radius:6px;background:#17303c;color:#c3dbe3;font-size:12px;line-height:1.6}.summon-explainer a{color:var(--accent);white-space:nowrap}.summoned-reference{margin-top:20px;border:1px solid var(--line);border-radius:8px;background:#102330;padding:13px 15px}.summoned-reference summary{cursor:pointer;color:var(--accent);font-weight:700}.summoned-reference p{margin:12px 0;color:var(--muted);font-size:12px;line-height:1.6}.summoned-reference>div{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:7px}.summoned-reference>div>div{display:flex;align-items:center;justify-content:space-between;gap:8px;border:1px solid var(--line);border-radius:6px;padding:8px 9px;font-size:12px}.summoned-reference .small-btn{min-height:32px;padding:5px 9px;flex:none}
.roster-library-wrap{max-width:900px;margin:auto;padding:34px 24px 100px}.roster-library-wrap h2{font:700 38px Rajdhani,'Noto Sans KR';margin:8px 0}.library-intro{color:var(--muted);line-height:1.6;margin-bottom:22px}.roster-library-wrap .saved-rosters,.seed-import-panel{border:1px solid #315d70;border-radius:10px;background:#102637;padding:22px;margin-bottom:18px}.roster-library-wrap .saved-rosters{background:linear-gradient(135deg,#123444,#102535)}.seed-import-panel h3{font:700 23px Rajdhani,'Noto Sans KR';margin:0 0 7px}.seed-import-panel p{color:var(--muted);line-height:1.6}.seed-import-panel label{display:block;margin:18px 0 7px}.seed-import-panel textarea,#seed-output{display:block;width:100%;min-height:112px;resize:vertical;border:1px solid var(--line);border-radius:7px;background:#091a27;color:var(--text);padding:12px;font:13px/1.5 monospace;overflow-wrap:anywhere}.seed-import-panel .btn{margin-top:12px;min-height:43px}.roster-quick-save{margin-top:18px;padding-top:18px;border-top:1px solid var(--line)}.roster-library-link{display:flex;margin-top:9px;justify-content:center}.saved-roster-row>div:last-child{flex-wrap:wrap;justify-content:flex-end}.saved-roster-row .btn{white-space:normal;text-align:center}#seed-dialog{width:min(620px,94vw)}#seed-output{min-height:165px;margin:14px 0}.seed-dialog-actions{display:flex;gap:8px;flex-wrap:wrap}@media(max-width:600px){.roster-library-wrap{padding:22px 15px 100px}.roster-library-wrap h2{font-size:32px}.roster-library-wrap .saved-rosters,.seed-import-panel{padding:16px}.saved-roster-row>div:last-child{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}.saved-roster-row .btn{min-width:0;font-size:10px;padding:8px 5px}}
