:root{color-scheme:dark;--mint:#77efc6;--muted:#afbdcc}*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 80% 0,#17413d,transparent 45%),#09121d;color:#f3f7fb;font:14px system-ui}header{padding:22px 5vw;border-bottom:1px solid #314351;display:flex;justify-content:space-between}header b{font-size:26px}small{font-size:11px;color:var(--mint);letter-spacing:2px}main{max-width:1450px;margin:auto;padding:35px 4vw}h1{font-size:clamp(36px,5vw,62px);letter-spacing:-2px;margin:12px 0}h2{font-size:18px}p{line-height:1.65;color:var(--muted)}input,select,button{padding:10px;border:1px solid #3b5269;background:#172a3c;color:white;border-radius:8px;font:inherit}button{cursor:pointer}button:hover{border-color:var(--mint)}input[type=number]{width:78px}input[type=file]{width:165px}.controls{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:24px 0}#generate{background:var(--mint);color:#12352e;font-weight:bold}.panel{background:#11202e;border:1px solid #2b4054;border-radius:14px;padding:22px;margin-bottom:20px}.layout{display:grid;grid-template-columns:1fr 330px;gap:20px}#metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:18px 0}.metric{padding:17px;background:#152839;border-left:3px solid var(--mint);border-radius:8px}.metric b{display:block;font-size:22px}.metric span{font-size:12px;color:var(--muted)}#phases{display:flex;gap:8px;margin:15px 0;flex-wrap:wrap}.active{outline:2px solid var(--mint)}#map{height:480px;position:relative;border:1px solid #466075;border-radius:12px;background:linear-gradient(#ffffff05 1px,transparent 1px),linear-gradient(90deg,#ffffff05 1px,transparent 1px),linear-gradient(120deg,#173b43,#182b3c,#39283b);background-size:25px 25px,25px 25px,100% 100%}#map:before{content:'';position:absolute;left:50%;height:100%;border-left:1px dashed #6b7d8e}.node{position:absolute;transform:translate(-50%,-50%);width:110px;padding:8px 3px;border:1px solid #72879b;border-radius:10px;font-size:11px;text-align:center;background:#1a2e41}.node strong,.node em{display:block}.node em{font-size:10px;color:var(--mint);font-style:normal;margin-top:4px}.symbol{font-size:23px}.locked{opacity:.45}.ours{border:2px solid var(--mint)}.enemy{border:2px solid #ff8292}.player{display:grid;grid-template-columns:1fr 66px 28px;gap:5px;background:#1b2e40;padding:8px;border-radius:8px;margin-bottom:9px}.player input{min-width:0;padding:7px}.player small{grid-column:1/4;letter-spacing:0}.selected{outline:2px solid var(--mint)}#orders{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.order{background:#192d3f;padding:16px;border-radius:10px}.order h3{color:var(--mint);margin-top:0}.task{display:flex;gap:7px;font-size:12px;line-height:1.5;margin:10px 0}.rule{display:inline-flex;gap:8px;align-items:center;margin:10px}#detail{border-top:1px solid #3b5269;padding-top:12px}#clock{font-size:24px;color:var(--mint);margin:15px}#minute{width:min(350px,100%)}#notice{color:var(--mint)}a{color:var(--mint)}@media(max-width:1000px){.layout{grid-template-columns:1fr}#orders{grid-template-columns:1fr 1fr}}@media(max-width:600px){main{padding:22px 12px}header small{display:none}.panel{padding:13px}.node{width:83px;font-size:10px}#orders{grid-template-columns:1fr}.metric{padding:10px}.metric b{font-size:17px}#map{height:500px}}
textarea{width:100%;background:#0c1b28;border:1px solid #40556a;color:#fff;border-radius:8px;padding:12px;font:inherit;margin-bottom:12px}.teamgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}.teamcard{padding:15px;background:#1a2c3f;border-radius:10px;border-top:3px solid var(--mint)}.teamcard select{width:100%;margin-top:6px}.teamcard p{font-size:12px}.player select{grid-column:1/4;padding:6px}.node em{white-space:normal}#alliance{width:180px}#planWarnings{color:#ffcd85}#pasteImport,#share,#print{margin-right:8px}@media print{body{background:white;color:black}header,button,.controls,#roster,#liveTitle,#minute,#start,#reset,#upload{display:none}.panel,.teamcard,.order{background:white;color:black;border:1px solid #777;break-inside:avoid}.layout{display:block}.node{background:white;color:black}p,small{color:#333}.map{background:white}#map{background:white}.locked{opacity:1}}
#map{isolation:isolate;touch-action:none}.routes{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:2}.routes path{pointer-events:stroke;cursor:pointer}.war-token{position:absolute;transform:translate(-50%,-50%);z-index:5;max-width:135px;border-radius:18px;padding:6px 10px;background:#072e31;border:2px solid var(--mint);box-shadow:0 3px 10px #0007;font-size:11px;cursor:grab;touch-action:none;user-select:none}.war-token.person{background:#253249;border-color:#9dbdff;border-radius:7px;max-width:110px}.war-token.dragging{cursor:grabbing;opacity:.85}.route-mode{cursor:crosshair}.team-name{width:100%;margin-bottom:8px}#warHelp{font-size:12px}#warTools{margin:12px 0}#warTools button{padding:8px}#warTools select{max-width:180px}.node{z-index:1}@media print{#warTools,#warHelp{display:none}.war-token{background:white;color:black}.routes path{stroke:#145961}}
/* A readable tactical canvas inside a touch-scrolling viewport. */
#setupPanel>summary{padding:15px 2px;font-weight:600;cursor:pointer}#mapViewport{position:relative;overflow:auto;background:#091822;border:1px solid #40576d;border-radius:12px;max-height:650px;height:540px;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;touch-action:pan-x pan-y pinch-zoom}#mapSpace{position:relative}#map{width:760px;height:620px!important;transform-origin:top left;margin:0}#map.pan-mode{touch-action:pan-x pan-y pinch-zoom;cursor:grab}#map.pan-mode .war-token{pointer-events:none}#mapControls{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:10px 0}#mapControls button{min-height:44px;min-width:44px}#mapControls span{font-variant-numeric:tabular-nums;color:var(--muted)}#mobileNav{display:none}#mapHelp,#warHelp{font-size:12px}.map-expanded{position:fixed!important;inset:0;z-index:1000;border-radius:0!important;margin:0!important;display:flex;flex-direction:column;padding:max(10px,env(safe-area-inset-top)) max(12px,env(safe-area-inset-right)) max(10px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left))!important;background:#0b1927!important}.map-expanded #mapViewport{flex:1;min-height:0;height:auto;max-height:none}.map-expanded #detail,.map-expanded #schematic,.map-expanded #mapHelp,.map-expanded #warHelp{display:none}.map-expanded h2{margin:0;font-size:16px}.map-expanded #phases,.map-expanded #warTools{margin:7px 0}.map-expanded #mapControls{margin:4px 0 8px}.map-expanded #warTools{max-height:100px;overflow:auto}#mapViewport:focus-visible{outline:2px solid var(--mint)}
@media(max-width:700px){body{padding-bottom:72px}header{padding:13px 15px}header b{font-size:22px}main{padding-top:16px}main>small{display:none}h1{font-size:30px;letter-spacing:-1px;margin:8px 0}#subtitle{font-size:12px;margin:7px 0 12px}#setupPanel{background:#11202e;border:1px solid #2b4054;border-radius:12px;padding:0 12px;margin-bottom:12px}#setupPanel .panel{border:0;padding:0}#setupPanel .controls{display:grid;grid-template-columns:1fr 1fr;margin:12px 0;gap:8px}#setupPanel #alliance{width:100%;grid-column:1/3}#setupPanel input,#setupPanel select,#setupPanel button{width:100%;min-height:44px;font-size:16px}#setupPanel #download{width:100%}#setupPanel input[type=file]{font-size:12px}#metrics{gap:5px;margin:10px 0}.metric{padding:9px 7px}.metric b{font-size:14px}.metric span{font-size:10px}#mapPanel{padding:10px;margin-bottom:12px}#mapPanel h2{margin:0 0 5px}#schematic{font-size:10px;margin:4px 0}#mapViewport{height:57svh;min-height:350px;max-height:580px}#phases{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;margin:9px 0}#phases button{padding:9px 3px;font-size:11px;min-height:44px}#warTools{display:flex;flex-wrap:nowrap;overflow-x:auto;padding:3px 2px 7px;margin:8px 0;scrollbar-width:thin}#warTools button,#warTools select{flex:none;white-space:nowrap;min-height:44px;font-size:12px}#mapControls{gap:5px}#mapControls button{padding:8px 10px;font-size:12px}#mobileNav{position:fixed;bottom:0;left:0;right:0;display:grid;grid-template-columns:repeat(4,1fr);gap:5px;padding:8px 8px max(8px,env(safe-area-inset-bottom));background:#0d1d2cf5;backdrop-filter:blur(12px);border-top:1px solid #3a5268;z-index:100}#mobileNav button{font-size:12px;padding:9px 4px;min-height:44px}.player input{font-size:16px;min-height:44px}.player input[type=checkbox]{width:25px;height:25px;margin:auto}.player select{font-size:15px;min-height:44px}.teamcard select,.team-name{min-height:44px;font-size:16px}#teamsPanel,#rosterPanel,#ordersPanel{scroll-margin-top:14px}#mapPanel{scroll-margin-top:10px}#detail{margin-top:12px}#detail select{font-size:16px}.node{width:110px;font-size:11px;min-height:65px}.war-token{min-height:44px;font-size:12px;min-width:75px}.map-expanded #mapViewport{min-height:0}.map-expanded #warTools{max-height:60px}.map-expanded #phases{margin:7px 0}}
@media print{#setupPanel,#mapControls,#mobileNav{display:none}#mapViewport{height:620px;max-height:none;overflow:visible;border:0}#mapSpace{width:760px!important;height:620px!important}#map{transform:none!important}}
#map.pan-mode .routes path{pointer-events:none}
#experienceBar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:12px 16px}#experienceBar .grow{flex:1}#wizard h2{margin:0}#wizard .steps{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}#wizard .steps button{flex:1;min-height:44px}.wizard-body{max-width:740px}.wizard-actions{display:flex;justify-content:space-between;margin-top:14px;gap:8px}.quick-plans,.roster-library{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}#wizard textarea{min-height:100px}.role-select{border-color:#59778d!important}.teamcard{border-color:var(--team)!important}.teamcard b{color:var(--team)}.war-token.team{border-color:var(--team,var(--mint));background:color-mix(in srgb,var(--team,var(--mint)) 20%,#142536)}.war-token.person{border-color:var(--team,#9dbdff)}.player{border-left:3px solid var(--team,#3c5266)}.priority-tag{font-size:9px;border-radius:4px;padding:2px 4px;display:block;background:#0004;margin:3px 0;color:#ffdf9e}.team-legend{display:flex;flex-wrap:wrap;gap:10px;margin:8px 0;font-size:11px}.team-legend i{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:4px}.phase-guide{background:#182b3d;border-radius:9px;padding:10px;margin:10px 0}.phase-guide h3{margin:0 0 5px;color:var(--mint)}.phase-guide p{font-size:12px;margin:5px 0}.phase-guide .phase-actions{display:flex;gap:8px;margin-top:8px}.phase-guide button{min-height:44px}#fallbackPanel{margin-top:16px;border-top:1px solid #3a5268;padding-top:14px}.briefing-order{border-left:4px solid var(--mint);background:#1a2f40;padding:15px;margin:12px 0;border-radius:8px}.briefing-order h3{margin:0 0 10px}.briefing-order strong{font-size:22px}.briefing-order p{margin:8px 0}.player-mode #wizard,.player-mode #setupPanel,.player-mode #metrics,.player-mode #rosterPanel,.player-mode #teamsPanel,.player-mode #ordersPanel,.player-mode #warTools,.player-mode #mapControls button:not(#panTool):not(#zoomIn):not(#zoomOut):not(#fitMap):not(#centerMap):not(#expandMap),.player-mode #mapHelp,.player-mode details.panel,.player-mode #liveTitle,.player-mode #start,.player-mode #reset,.player-mode #minute{display:none!important}.player-mode .layout{grid-template-columns:1fr}.player-mode #detail select{pointer-events:none}.player-mode #detail{display:none}.player-mode .war-token{pointer-events:none}.player-mode #mobileNav{display:none}.player-mode #mapControls{display:flex!important}dialog{max-width:750px;width:calc(100% - 28px);max-height:85vh;border:1px solid #547188;border-radius:14px;background:#132536;color:#fff;padding:22px}dialog::backdrop{background:#000a}.preview-list{max-height:45vh;overflow:auto}.preview-row{padding:10px 0;border-bottom:1px solid #3b5268;font-size:12px}#briefingPanel select{min-height:44px;width:min(100%,350px);font-size:16px}.roster-library input{max-width:230px}#experienceBar button{min-height:44px}.player-mode #mapViewport{touch-action:pan-x pan-y pinch-zoom}.player-mode #map{touch-action:pan-x pan-y pinch-zoom}#briefingPanel[hidden],#wizard[hidden]{display:none!important}@media(max-width:700px){#experienceBar{padding:10px;gap:6px}#experienceBar .grow{width:100%;flex:auto}#experienceBar button{font-size:12px;padding:9px}#wizard{padding:13px}#wizard .steps button{font-size:12px;padding:9px 4px}.wizard-body input,.wizard-body select{font-size:16px;min-height:44px}.quick-plans button{flex:1;min-height:44px}.phase-guide p{font-size:11px}.phase-guide{padding:9px}.map-expanded #phaseGuide{display:none}.player-mode{padding-bottom:0}.roster-library{display:grid;grid-template-columns:1fr 1fr}.roster-library input{max-width:none;width:100%}.roster-library select{min-width:0;width:100%}#experienceBar .grow b{font-size:15px}}
@media print{#experienceBar,#wizard,#fallbackPanel{display:none}.player-mode #briefingPanel{display:block}#phaseGuide{display:block}.priority-tag{color:black}}
#notice:not(:empty){position:fixed;bottom:78px;left:50%;transform:translateX(-50%);width:max-content;max-width:94vw;padding:12px 16px;background:#173b36;color:#beffdf;border:1px solid #5cad92;border-radius:10px;z-index:1200;box-shadow:0 3px 20px #0008;font-size:13px}
#exportPanel{scroll-margin-top:20px}#exportPanel button{min-height:44px;margin:5px 5px 5px 0}#exportPanel li{margin:8px 0;line-height:1.5;color:#c3d1df}#packGallery{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:15px;margin-top:20px}.pack-card{background:#0c1b2a;padding:10px;border-radius:10px}.pack-card img{width:100%;height:300px;object-fit:contain;display:block;background:#07121d;border-radius:7px}.pack-card button{width:100%;font-size:12px}.player-mode #exportPanel{display:none}@media print{#exportPanel{display:none}}

.battle-guide{grid-column:1/-1;scroll-margin-top:20px;border-color:#60cbb0}.guide-header,.guide-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.guide-header h2{margin:0}.guide-timeline{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:18px 0}.guide-changes{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:8px;max-height:330px;overflow:auto;margin:16px 0}.guide-changes>div{display:grid;gap:5px;background:#132c3e;border-left:4px solid;padding:12px;border-radius:8px}.guide-changes span{color:#b8ccdc}.guide-changes strong{color:#eff8ff;font-size:14px}.guide-checks{display:flex;gap:14px;flex-wrap:wrap;margin:18px 0}.guide-checks label{display:flex;align-items:center;gap:8px;color:#e8f3fb}.guide-checks input{width:20px;height:20px;accent-color:#77efc6}.guide-actions{justify-content:flex-start;margin-bottom:14px}.battle-guide small{color:#b8ccdc}@media(max-width:600px){.guide-timeline{grid-template-columns:repeat(2,1fr)}.guide-actions button{flex:1 1 140px;min-height:46px}.guide-checks{display:grid}.guide-changes{grid-template-columns:1fr;max-height:260px}}

.auto-toolbar,.auto-decision{display:flex;gap:10px;flex-wrap:wrap;margin:16px 0}.auto-decision label{display:grid;gap:8px}.auto-details{margin:15px 0;padding:14px;background:#12283b;border-radius:10px}.auto-details summary{cursor:pointer;font-weight:700}.auto-locks{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;margin-top:14px}.auto-locks label,.attendance-row{display:flex;align-items:center;gap:10px;padding:8px}.auto-locks input,.attendance-row input{width:20px;height:20px;accent-color:#77efc6}.captain-orders{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;margin-top:16px}.captain-orders>div{padding:14px;background:#1b3549;border-radius:8px;color:#eff8ff}.auto-issues{color:#ffd49b}.auto-details p{color:#e2edf8}@media(max-width:600px){.auto-toolbar button{width:100%;min-height:46px}.auto-decision>*{width:100%}.captain-orders{grid-template-columns:1fr}#planningAssistant{scroll-margin-top:20px}}
#plagueDoctor{position:fixed;right:18px;bottom:24px;z-index:120;pointer-events:none}#doctorLauncher{pointer-events:auto;width:78px;height:86px;padding:2px;border:0;background:transparent;position:relative;filter:drop-shadow(0 5px 10px #0008);animation:doctor-bob 4s ease-in-out infinite}#doctorLauncher:hover{background:transparent;transform:scale(1.07)}.doctor-count{position:absolute;top:0;right:0;border-radius:50%;background:#ffc679;color:#092030;min-width:22px;padding:2px;font-size:13px}.doctor-bubble{pointer-events:auto;position:absolute;bottom:100px;right:0;width:min(370px,calc(100vw - 32px));max-height:70dvh;overflow:auto;border:2px solid #77efc6;border-radius:20px;background:#122a3c;box-shadow:0 12px 45px #0009;color:#edf6ff;padding:15px}.doctor-bubble[hidden]{display:none}.doctor-heading{display:flex;align-items:center;gap:8px}.doctor-heading b{flex:1}.doctor-heading button{font-size:24px;padding:2px 12px}.doctor-tabs{display:flex;gap:7px;margin:10px 0}.doctor-tabs button{flex:1}.doctor-content p{color:#dceaf5;line-height:1.6;font-size:15px}.doctor-content h3{font-size:18px;margin:12px 0}.doctor-actions,.doctor-footer{display:flex;gap:7px;flex-wrap:wrap;margin-top:12px}.doctor-actions button{flex:1;min-height:42px}.doctor-footer{border-top:1px solid #355466;padding-top:12px}.doctor-footer button{font-size:12px;flex:1}.doctor-role{border-left:4px solid;padding:6px 12px;margin:10px 0;background:#1c3549;border-radius:7px}.doctor-role p{margin:6px 0}.doctor-question{border-radius:50%;margin-left:10px;width:30px;height:30px;padding:0;font-size:16px;vertical-align:middle}.doctor-highlight{outline:3px solid #77efc6;outline-offset:5px}.map-expanded #plagueDoctor{z-index:210}.doctor-bubble select{max-width:100%;width:100%}@keyframes doctor-bob{0%,100%{translate:0 0}50%{translate:0 -4px}}@media(max-width:600px){#plagueDoctor{right:12px;bottom:calc(78px + env(safe-area-inset-bottom))}.doctor-bubble{bottom:88px;max-height:55dvh;padding:12px}#doctorLauncher{width:65px;height:76px}#doctorLauncher img{width:58px;height:66px}.doctor-tabs button{min-height:42px}.doctor-bubble button{white-space:normal}}@media(prefers-reduced-motion:reduce){#doctorLauncher{animation:none}}@media print{#plagueDoctor,.doctor-question{display:none}}
