/* The campaign is a field journal: real terrain previews, a readable route, short voices. */
.home-actions{flex-wrap:wrap}.home-actions #campaign{flex-basis:100%;width:max-content;max-width:310px}.home-actions #play,.home-actions #practice{font-size:12px;padding:11px 14px;min-height:46px}#campaign-home-status{color:#f1d499;margin-bottom:4px}#continue-setup{margin-top:4px}
.campaign-board{width:min(940px,calc(100vw - 32px));max-height:90svh}.campaign-tagline,.mission-summary{font-size:16px;line-height:1.6;color:#d3e3d4;max-width:64ch}.campaign-options{display:flex;align-items:center;gap:24px;flex-wrap:wrap;margin:20px 0 7px}.campaign-options label{font-size:11px;letter-spacing:.05em;color:#e4e8d1}.campaign-options select{margin-top:6px;min-width:190px}.campaign-options .field-notes-toggle{display:flex;align-items:center;gap:9px;min-height:44px;font-size:13px;letter-spacing:0}.field-notes-toggle input{width:22px;height:22px;accent-color:#e0c37c}.campaign-difficulty-note,.mission-difficulty{font-size:12px;line-height:1.5;color:#b6cebe}.campaign-missions{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:22px}.campaign-mission{position:relative;display:flex;align-items:center;gap:14px;min-height:140px;text-align:left;overflow:hidden;background:#143b42;padding:20px 18px;border:1px solid #9cb09255}.campaign-mission>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.13;pointer-events:none}.campaign-mission:disabled{opacity:.55;cursor:default;filter:saturate(.4)}.campaign-mission:not(:disabled):hover{background:#214b4c;border-color:#e5ce95}.campaign-mission>span{position:relative}.campaign-mission .mission-number{font:italic 32px/1 Georgia,serif;color:#f2d69a;min-width:39px}.campaign-mission strong{display:block;font:500 22px/1.1 Georgia,serif;color:#f2e9ca}.campaign-mission span>span{display:block;font-size:12px;line-height:1.4;margin:7px 0;color:#d3e2ce}.campaign-mission small{display:block;font-size:10px;line-height:1.4;color:#c1cdb4}.campaign-future{margin-top:28px;padding-top:18px;border-top:1px solid #90a99255;font-size:12px;color:#b2c9b8}.campaign-future summary{cursor:pointer;min-height:36px;color:#d2ddc2}.campaign-future p b{display:block;font:500 19px Georgia,serif;color:#dacb9e;margin-bottom:6px}.campaign-future p span{display:block;line-height:1.5}
.mission-brief{width:min(700px,calc(100vw - 32px))}.mission-preview{position:relative;height:175px;overflow:hidden;border-radius:9px;border:1px solid #829d8066}.mission-preview>img{width:100%;height:100%;object-fit:cover;opacity:.6}.mission-crew{font-size:10px;letter-spacing:.08em;color:#b5cbae;margin:10px 0 18px}.mission-objective{padding:16px 20px;background:#e2d29b;color:#234247;border-radius:7px}.mission-objective>span{font-size:9px;font-weight:800;letter-spacing:.15em}.mission-objective h3{font:500 26px Georgia,serif;margin:5px 0 8px}.mission-objective p{font-size:13px;line-height:1.5;margin:0}.mission-dialogue,.result-story{font-size:14px;line-height:1.65;margin:20px 0;color:#d2dfca}.mission-dialogue b,.result-story b{color:#efd597}.mission-carry{font-size:13px;line-height:1.5;border-left:2px solid #e8c67e;padding:8px 15px;color:#eed6a0}#mission-hint-wrap{font-size:12px;color:#c3d2ba}#mission-hint-wrap summary{min-height:38px;cursor:pointer}#mission-hint-wrap p{line-height:1.5;margin-top:0}.mission-brief>.gold-button{width:100%;margin-top:12px;min-height:50px}.result-story:empty{display:none}.result-actions{flex-wrap:wrap}.field-brief p{font-size:14px;line-height:1.6}.field-brief #field-brief-hint{border-left:2px solid #ddc17e;padding-left:14px;color:#ddce9b}
.campaign-objective{position:absolute;left:18px;top:106px;z-index:2;max-width:350px;padding:8px 12px;background:#163b42ed;border:1px solid #e2cb8c99;border-radius:7px;box-shadow:0 3px 12px #16353c30;pointer-events:auto}.campaign-objective>div{display:flex;gap:16px;align-items:center}.campaign-objective b{font-size:12px;font-weight:650;color:#f3dc9e}.campaign-objective span{font-size:11px;color:#d2e3c3;white-space:nowrap}.campaign-objective progress{display:block;height:6px;width:100%;accent-color:#ebcb7f;margin:7px 0 0}.campaign-objective button{border:0;background:transparent;padding:4px 0 0;min-height:26px;font-size:10px;color:#bdd2bd}.campaign-objective.hidden{display:none}
@media(max-width:700px){.campaign-board,.mission-brief{width:calc(100vw - 20px);padding:20px 16px;max-height:94svh}.campaign-tagline,.mission-summary{font-size:14px}.campaign-missions{grid-template-columns:1fr;gap:10px}.campaign-mission{min-height:117px;padding:15px}.campaign-mission strong{font-size:24px}.campaign-mission small{font-size:11px}.campaign-options{gap:12px;margin-top:10px}.campaign-options select{min-width:150px}.mission-preview{height:125px}.mission-objective{padding:13px 15px}.mission-objective h3{font-size:23px}.mission-dialogue{font-size:13px;margin:15px 0}.campaign-objective{top:114px;left:9px;max-width:calc(100% - 18px);padding:6px 9px}.campaign-objective b{font-size:11px}.campaign-objective button{font-size:10px}.campaign-objective progress{margin-top:4px}.campaign-objective>div{gap:9px}.home-actions #campaign{max-width:100%}}
@media(max-height:560px) and (min-width:600px) and (orientation:landscape){.campaign-objective{top:127px;left:9px;right:9px;padding:5px 8px}.campaign-objective b{font-size:10px}.campaign-objective button{font-size:9px;min-height:22px}.campaign-objective progress{margin-top:3px}.campaign-board,.mission-brief{max-height:94svh}.campaign-missions{grid-template-columns:1fr 1fr}.mission-preview{height:120px}}
.mission-objective p{color:#29474a}
/* Keep mission text off the rigs. It replaces the ordinary field caption. */
body[data-campaign="true"] .field-caption{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
.campaign-objective{top:auto;bottom:0;left:0;right:0;max-width:none;height:44px;padding:7px 76px 5px 12px;border-radius:0;border-width:1px 0 0;background:#173b43f5}
.campaign-objective>div{justify-content:space-between;gap:8px}.campaign-objective b{font-size:11px;line-height:16px}.campaign-objective span{font-size:10px}.campaign-objective progress{margin:3px 0 0;height:4px}
.campaign-objective button{position:absolute;right:8px;top:0;width:60px;min-height:44px;padding:0;font-size:10px}
body[data-campaign="true"] .camera-controls{bottom:51px}

.campaign-recovered{margin-top:18px;padding:14px;border:1px solid #d9c38b77;border-radius:8px;font-size:12px}.campaign-recovered summary{min-height:36px;cursor:pointer;color:#f1d49a}.campaign-recovered p{font-size:12px}.campaign-recovered button{display:block;width:100%;text-align:left;margin:8px 0;min-height:44px}
.move-controls button{touch-action:pan-y}
.campaign-chapters{display:grid;grid-template-columns:repeat(var(--chapter-count,3),minmax(0,1fr));gap:8px;margin:22px 0 20px}.campaign-chapters button{min-height:68px;text-align:left;padding:12px;border:1px solid #79928c;background:#193b42;color:#d3e2ce}.campaign-chapters button[aria-pressed="true"]{background:#e5cf96;border-color:#e5cf96;color:#193b42}.campaign-chapters strong{display:block;font:500 18px/1.2 Georgia,serif}.campaign-chapters span{display:block;font-size:11px;margin-top:6px}.chapter-title{font:500 28px/1.2 Georgia,serif;color:#f3dfb3;margin:12px 0 7px}.chapter-synopsis{font-size:13px;line-height:1.6;color:#d3e2ce;max-width:72ch;margin:0}.campaign-missions{margin-top:15px}
.campaign-objective b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.campaign-objective.has-detail{height:78px}.campaign-objective #objective-detail{margin:4px 0 0;font-size:10px;line-height:14px;color:#d6e6ce}.campaign-objective.has-detail button{height:78px}body[data-campaign-detail="true"] .camera-controls{bottom:85px}
@media(max-width:420px){.campaign-chapters{gap:6px}.campaign-chapters button{padding:10px 8px;min-height:82px}.campaign-chapters strong{font-size:16px}.campaign-chapters span{font-size:10px}.chapter-title{font-size:25px}}
/* Give short portrait screens a real field; power/fire stay pinned below it. */
@media(max-width:600px) and (max-height:650px) and (orientation:portrait){
  body[data-campaign="true"] .game-shell{grid-template-rows:minmax(0,1fr) 240px}
  body[data-campaign="true"] .command-deck{max-height:none}
  body[data-campaign="true"] .aim-coach{font-size:10px;max-height:44px;overflow-y:auto;padding:4px 6px}
  body[data-campaign="true"] .camera-controls #focus{display:none}
}

/* The locked plan sits with the controls; it never covers the battlefield. */
.campaign-tactics { position:relative; margin:0 0 8px; padding:4px 10px; border:1px solid #d5ad7666; border-radius:6px; background:#12343a; }
.campaign-tactics[data-phase="executing"] { position:sticky; top:0; z-index:3; }
.campaign-tactics summary { min-height:36px; display:list-item; align-content:center; cursor:pointer; font-size:12px; color:#f1d49a; }
.campaign-tactics .campaign-draft-cue { display:block; margin:4px 0 3px; font-size:11px; line-height:1.4; color:#d6e7d3; }
.campaign-tactics p { margin:6px 0; font-size:12px; line-height:1.45; color:#e0e9d6; }
.campaign-tactics small { display:block; margin:5px 0; font-size:11px; color:#bbd2c6; }
.campaign-tactics[hidden], body:not([data-campaign="true"]) .campaign-tactics { display:none; }
.campaign-relief { display:block; margin:16px 0; font-size:13px; }
.campaign-relief select { display:block; width:100%; margin:7px 0; min-height:44px; }
.campaign-relief small { font-size:12px; line-height:1.5; color:#c7dccb; }
.campaign-relief[hidden], .campaign-requirement[hidden] { display:none; }
.campaign-requirement { font-weight:700; }
.campaign-reward { padding:12px; border:1px solid #d5b97a; color:#f4d99c; font-size:13px; }
.calibration-dialog { width:min(920px,calc(100vw - 24px)); max-height:calc(100svh - 16px); padding:20px; overflow-y:auto; }
.calibration-dialog[open] {display:flex;flex-direction:column;height:min(780px,calc(100svh - 16px));}
.calibration-dialog .dialog-heading,.calibration-footer {flex-shrink:0;}
.calibration-body {min-height:0;overflow-y:auto;flex:1;}
.calibration-dialog h2 { margin:0; font-size:30px; }
.calibration-intro { font-size:14px; line-height:1.45; margin:10px 0; color:#d7e6d0; }
.calibration-stage { font-size:13px; font-weight:700; color:#f0d794; margin:12px 0 6px; }
.calibration-dialog canvas { display:block; width:100%; height:clamp(190px,32svh,300px); border:1px solid #91afa3; border-radius:8px; }
.calibration-constants { font-size:12px; color:#c6dccc; margin:7px 0; }
.calibration-feedback { font-size:15px; line-height:1.5; min-height:45px; margin:12px 0; color:#f4e2b5; }
.calibration-controls { display:grid; grid-template-columns:90px 44px 1fr 44px; gap:9px; align-items:center; }
.calibration-controls label { font-size:13px; }.calibration-controls output {display:block;font-size:18px;font-weight:700;}
.calibration-controls button,.calibration-choices button,.calibration-actions button,.calibration-footer button,.calibration-entry { min-height:44px; }
.calibration-controls input {width:100%;min-width:0;}
.calibration-choices,.calibration-actions,.calibration-footer { display:flex; flex-wrap:wrap; gap:8px; margin:12px 0 0; }
.calibration-footer { border-top:1px solid #7f9c8c; padding-top:12px; }
.calibration-footer #calibration-done,.calibration-actions #calibration-fire {background:#e6c879;color:#173b42;font-weight:750;}
.calibration-warning { font-size:13px; line-height:1.4; color:#ffd3ac; }
.calibration-entry { margin:8px 0 12px; font-size:13px; border:1px solid #d7c48d; }
.calibration-dialog [hidden],.calibration-entry[hidden] {display:none;}
@media(max-width:500px){.calibration-dialog{padding:14px;width:calc(100vw - 12px);}.calibration-dialog h2{font-size:25px;}.calibration-dialog canvas{height:205px;}.calibration-controls{grid-template-columns:64px 44px 1fr 44px;gap:6px;}.calibration-dialog .dialog-heading{gap:8px;}.calibration-feedback{font-size:14px;}.calibration-choices button{flex:1 1 100%;}.calibration-footer button{flex:1 1 auto;font-size:12px;}}
