:root{color-scheme:dark;--bg:#08120f;--panel:#0c1914;--panel2:#101f19;--line:#243b30;--text:#cde3d8;--muted:#8aa799;--green:#92ef87;--accent:#aed98b;--amber:#efc778;--danger:#ffb38e;--mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;--sans:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--bg);color:var(--text);font-family:var(--sans)}body{font-size:14px}button,input,select,a.button{font:inherit}button,.button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:43px;padding:9px 13px;border:1px solid #385243;border-radius:5px;background:#15251c;color:var(--text);cursor:pointer;text-decoration:none;white-space:nowrap;font-weight:650;font-size:12px;letter-spacing:.035em}button:hover,.button:hover{background:#233a2c;border-color:#81a98b}button:active{transform:translateY(1px)}button:disabled{cursor:wait;opacity:.5}button:focus-visible,input:focus-visible,select:focus-visible,a:focus-visible{outline:2px solid var(--amber);outline-offset:2px}input,select{border:1px solid #385243;background:#07130e;color:var(--text);border-radius:4px;padding:9px;min-height:42px;max-width:100%}input[type=number]{width:100%;font-family:var(--mono);font-size:15px}input[type=checkbox]{accent-color:var(--green);min-height:20px;height:20px;width:20px;margin:0}select{font-family:var(--mono);font-size:13px}label{display:block;font-size:12px;color:var(--muted);margin:0 0 6px}label span{float:right}h1,h2,p{margin-top:0}h1{font-weight:600;font-size:28px;margin-bottom:7px}h2{font-size:11px;letter-spacing:.17em;color:#99b9a6;margin:0 0 13px;font-weight:700}p{line-height:1.55}small{font-size:11px}b,strong{font-weight:650}em{font-style:normal;font-size:12px}a{color:var(--green)}[hidden]{display:none!important}.wide{width:100%}.primary{background:var(--accent);color:#152312;border-color:var(--accent)}.primary:hover{background:#c9eba8;color:#152312}.danger-outline{border-color:#755247;color:#edc2b4}.topbar{height:72px;display:flex;align-items:center;justify-content:space-between;gap:15px;padding:12px 23px;border-bottom:1px solid var(--line);background:#0b1812}.brand{display:flex;align-items:center;gap:11px}.brand-mark{color:var(--green);font-size:35px;line-height:1}.brand strong{font-size:22px;letter-spacing:.07em;display:block;color:#e3eee5}.brand strong span{color:var(--green);font-weight:400}.brand small{font-size:9px;letter-spacing:.12em;color:var(--muted);display:block;margin-top:2px}.header-info{display:flex;align-items:center;gap:10px}.badge{font-size:10px;letter-spacing:.08em;line-height:1;white-space:nowrap;padding:7px 9px;border-radius:3px;border:1px solid #35543c;background:#14291c;color:#ade99f;font-weight:700}.badge.wait{color:var(--amber);background:#2a2416;border-color:#5c4c2b}.badge.lost{background:#38241b;color:var(--danger);border-color:#77513d}.clock{font-family:var(--mono);font-size:19px;font-variant-numeric:tabular-nums;letter-spacing:.04em;color:#e3eee5}.training-tag{text-align:right;font-size:10px;font-weight:650;letter-spacing:.12em;color:var(--amber)}.training-tag small{font-size:8px;color:var(--muted)}.footer{height:29px;display:flex;align-items:center;justify-content:space-between;gap:10px;border-top:1px solid var(--line);padding:0 20px;font-size:9px;letter-spacing:.06em;color:var(--muted);background:#0a1510}.student{height:100vh;height:100dvh;overflow:hidden;display:flex;flex-direction:column}.radar-layout{display:grid;grid-template-columns:minmax(0,1fr) 266px;min-height:0;flex:1}.scope-area{min-width:0;min-height:0;display:flex;flex-direction:column;padding:16px 18px 10px}.scope-top,.scope-bottom{display:flex;align-items:center;justify-content:space-between;gap:10px;font-family:var(--mono);font-size:13px;color:var(--green)}.scope-top{padding:0 4px 6px}.scope-top small{font-size:9px;color:var(--muted)}.scope-top b{font-size:22px;font-weight:500}.scope-top>span:nth-child(2){letter-spacing:.08em;font-size:12px;color:var(--text)}.scope-bottom{font-size:9px;color:var(--muted);padding-top:7px}.scope-bottom b{font-weight:400;color:var(--text)}.canvas-wrap{flex:1;position:relative;min-height:0;overflow:hidden;display:flex;align-items:center;justify-content:center}#ppi{width:100%;height:100%;display:block;touch-action:none;user-select:none;-webkit-user-select:none}.offline{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);padding:22px 30px;background:#311d16f0;border:1px solid #a57548;text-align:center;color:#ffcf9e;font-family:var(--mono);font-size:18px;white-space:nowrap}.offline small{display:block;margin-top:9px;font-size:11px}.radar-controls{border-left:1px solid var(--line);background:var(--panel);overflow-y:auto;overscroll-behavior:contain}.control-block{padding:17px 17px 15px;border-bottom:1px solid var(--line)}.control-block.compact{border:0;padding-top:13px}.two-values{display:grid;grid-template-columns:1.4fr 1fr;gap:8px}.two-values small{display:block;font-size:8px;color:var(--muted);letter-spacing:.09em;margin-bottom:6px}.two-values strong{font-family:var(--mono);font-size:24px;font-weight:500;color:var(--green);white-space:nowrap}.range-row{display:flex;gap:7px}.range-row select{min-width:0;flex:1;font-size:15px}.range-row button{font-size:24px;font-weight:400;min-width:39px;padding:3px 10px}.segmented{display:flex;margin-top:12px;margin-bottom:14px}.segmented button{flex:1;min-width:0;padding:7px 4px;font-size:10px;border-radius:0}.segmented button:first-child{border-radius:4px 0 0 4px}.segmented button:last-child{border-radius:0 4px 4px 0}.segmented .selected{background:#315137;color:#dff4d9;border-color:#719677}.form-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.form-row label{margin-bottom:0}.check{display:flex;align-items:center;gap:9px;margin:11px 0 0;min-height:25px;font-size:12px;color:var(--text);cursor:pointer}.two-checks{display:flex;gap:22px}.hint{font-size:11px;color:var(--muted);line-height:1.55;margin:0 0 13px}.compact .hint{margin:12px 0 0;font-size:10px}.measure-read{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin:12px 0 8px;font-family:var(--mono);color:var(--amber)}.measure-read>span{font-size:10px;color:var(--muted)}.measure-read>strong{font-size:19px;font-weight:500}.measure-read>small{margin-left:auto;font-size:10px;color:var(--muted)}.control-block input[type=number]{min-height:38px;height:38px}.instructor{--bg:#0d171e;--panel:#13212b;--panel2:#182b35;--line:#2d3e46;--text:#d8e3e9;--muted:#a0b3be;--green:#8cd6c6;--accent:#95d8c5;min-height:100vh}.instructor .topbar,.instructor .footer{background:#101d25}.instructor button,.instructor .button{border-color:#3e5662;background:#1a303d}.instructor .primary{background:var(--accent);color:#152b27}.instructor .primary:hover{background:#bceadb}.instructor input,.instructor select{background:#0c1922;border-color:#405462}.instructor .topbar{position:sticky;top:0;z-index:5}.instructor-main{max-width:1450px;padding:27px 30px 38px;margin:auto;min-height:calc(100vh - 101px)}.login-card{max-width:430px;margin:8vh auto;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:31px}.login-card h1{font-size:26px}.login-card p{font-size:13px;color:var(--muted)}.login-card input{width:100%;margin-bottom:13px;font-family:var(--mono);letter-spacing:.25em;font-size:22px}.login-card small{line-height:1.7;display:block;color:var(--muted)}.eyebrow{font-size:9px;font-weight:650;letter-spacing:.19em;color:var(--green);margin-bottom:9px}.page-title{display:flex;justify-content:space-between;gap:20px;align-items:center;margin:2px 0 23px}.page-title p{font-size:13px;color:var(--muted);margin:0}.title-actions{display:flex;gap:10px}.panel{border:1px solid var(--line);background:var(--panel);padding:20px;border-radius:7px}.exercise-bar{display:flex;align-items:center;flex-wrap:wrap;gap:20px 27px;margin-bottom:16px}.transport{display:flex;gap:8px;align-items:center}.scenario-picker{flex:1;min-width:265px}.inline{display:flex;gap:8px}.inline select{flex:1;min-width:0}.own-panel{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px;margin-bottom:26px}.own-panel>div:first-child{max-width:330px}.own-panel h2{margin-bottom:7px}.own-panel .hint{margin:0}.own-form{display:flex;align-items:end;gap:12px}.own-form label{margin:0;max-width:120px}.own-form input{display:block;margin-top:6px}.live-summary{font-family:var(--mono);font-size:12px;color:var(--green)}.section-title{display:flex;align-items:center;justify-content:space-between;margin:0 0 13px}.section-title h2{margin:0}.section-title span{font-size:12px;color:var(--muted)}.target-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:17px}.target-card{background:var(--panel);border:1px solid var(--line);border-radius:7px;overflow:hidden}.target-card.disabled-card{opacity:.65}.target-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:16px 18px 12px;border-bottom:1px solid var(--line)}.target-head strong{font-family:var(--mono);color:var(--green);font-size:15px}.target-head span{font-size:10px;color:var(--muted);margin-left:8px}.target-head .check{margin:0;font-size:11px;gap:7px}.target-body{padding:16px 18px}.target-live{display:grid;grid-template-columns:1fr 1fr;gap:11px 16px;margin-bottom:16px}.target-live span{font-size:9px;color:var(--muted);display:block;letter-spacing:.04em;margin-bottom:4px}.target-live strong{font-family:var(--mono);font-size:17px;font-weight:450}.target-live small{font-size:9px;color:var(--muted)}.target-form{display:grid;grid-template-columns:1fr 1fr;gap:10px}.target-form label{margin:0;font-size:10px}.target-form input{margin-top:5px;min-width:0;font-size:14px}.target-form button{grid-column:1 / -1}.move-box{border-top:1px solid var(--line);margin-top:15px;padding-top:13px}.move-box summary{font-size:11px;color:var(--muted);cursor:pointer;min-height:27px}.move-box .target-form{padding-top:6px}.notes{margin-top:25px}.notes p{font-size:12px;color:var(--muted);margin:0 0 11px}.notes p:last-child{margin-bottom:0}.notice{padding:12px 17px;border:1px solid #43655c;background:#19302a;color:#bfe4d9;border-radius:5px;margin-bottom:16px;font-size:13px}.error{color:#ffd1b6}.notice.error{border-color:#856145;background:#39271e}.login-card .error{margin-top:14px;font-size:12px}
@media (max-height:760px) and (min-width:751px){.topbar{height:62px;padding-top:7px;padding-bottom:7px}.control-block{padding:12px 14px}.control-block h2{margin-bottom:9px}.measure-read{margin:8px 0 6px}.hint{font-size:10px;margin-bottom:8px}.control-block.compact{padding-top:10px}.scope-area{padding-top:12px}.two-values strong{font-size:21px}.brand strong{font-size:20px}.footer{height:25px}}
@media (max-width:1100px){.target-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.instructor-main{padding:24px}.own-panel{align-items:start}.own-panel>div:first-child{max-width:100%}.live-summary{width:100%}.exercise-bar{gap:18px}.scenario-picker{flex-basis:100%}}
@media (max-width:750px){.student{height:auto;min-height:100vh;overflow:auto}.topbar{height:65px;padding:10px 13px;gap:8px}.brand strong{font-size:18px}.brand small{font-size:7px}.brand-mark{font-size:26px}.header-info{gap:6px}.header-info .clock{font-size:14px}.badge{font-size:8px;padding:6px}.training-tag{display:none}.radar-layout{display:flex;flex-direction:column}.scope-area{padding:12px 9px;min-height:420px;height:calc(100vw + 40px);max-height:90vh;flex:none}.scope-top{font-size:11px}.scope-top b{font-size:18px}.scope-top>span:nth-child(2){font-size:10px}.scope-bottom{font-size:8px}.radar-controls{display:grid;grid-template-columns:1fr 1fr;border-left:0;border-top:1px solid var(--line);overflow:visible}.control-block{padding:16px;border-right:1px solid var(--line)}.control-block.ownship{grid-column:1/-1}.ownship .two-values{max-width:340px}.control-block.compact{grid-column:1/-1}.footer{font-size:8px;padding:8px 12px;height:auto;min-height:28px}.footer span:first-child{max-width:45%}.offline{font-size:14px;padding:15px}.offline small{font-size:9px}.page-title{display:block}.title-actions{margin-top:17px}.instructor-main{padding:19px 14px}.target-grid{grid-template-columns:1fr}.own-form{flex-wrap:wrap;gap:10px}.own-form label{max-width:110px}.own-form button{flex:1}.transport{flex-wrap:wrap}.exercise-bar{padding:15px}.scenario-picker{min-width:0;width:100%}.instructor h1{font-size:24px}.login-card{margin-top:4vh;padding:24px}}

/* target-tools-r1: local display-only controls; prevent iPad long-touch callouts. */
#ppi{-webkit-touch-callout:none}
.capture-tools{margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}
.capture-row{display:flex;align-items:center;justify-content:space-between;gap:8px}
.capture-row>span{font:10px var(--mono);color:var(--amber);line-height:1.5}
.capture-row button{font-size:9px;min-height:32px;padding:7px 8px;white-space:nowrap}
.capture-row button:disabled{opacity:.4;cursor:default}
.capture-tools .capture-hint{margin:9px 0 0;font-size:10px;line-height:1.5}

/* target-tools-r1: always-visible instructor position controls. */
.position-box{margin:0 0 16px;padding:14px;border:1px solid #48675e;border-radius:5px;background:#11272b}
.position-box h3{font-size:10px;color:var(--green);letter-spacing:.1em;margin:0 0 11px}
.position-actions{grid-column:1/-1;display:flex;gap:8px}
.position-actions>button{flex:1;min-width:0;font-size:10px;padding:9px 6px}
.position-actions>.live-position-button{flex:0 0 auto}
.position-status{font:9px var(--mono);letter-spacing:.04em;color:var(--muted);margin:10px 0 7px;min-height:12px}
.position-status.draft{color:var(--amber)}
.position-note{font-size:10px;margin:0;line-height:1.5}
.position-intro{font-size:12px;margin-bottom:18px;max-width:1000px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* Jervis Bay geographic controls */
.land-status{font:11px var(--mono);color:var(--green);line-height:1.5;margin-bottom:8px}.land-warning{color:var(--amber);border:1px solid var(--amber);padding:7px}
.geography-panel{margin-bottom:24px}.geo-title{display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap}.geo-layout{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:24px;margin-top:18px}#coastMap{display:block;width:100%;height:440px;border:1px solid var(--line);border-radius:5px;cursor:crosshair}.geo-controls h3{font-size:11px;letter-spacing:.09em;color:var(--green);margin:0 0 12px}.geo-reading{font:13px var(--mono);line-height:1.8}.geo-controls label{display:block;margin-top:12px}.geo-controls input{display:block;width:100%;margin-top:6px}.geo-controls .position-actions{flex-wrap:wrap}.attribution{margin-top:16px;font-size:10px}.geo-controls .position-actions button{min-width:110px}@media(max-width:980px){.geo-layout{grid-template-columns:1fr}.geo-controls{max-width:650px}}

/* v0.3 classroom weather and inverse-CPA planner */
.filter-controls label{margin:12px 0 3px;display:flex;justify-content:space-between;align-items:center}
.filter-controls output{font:12px var(--mono);color:var(--green)}
.filter-controls input[type=range]{padding:0;min-height:30px;width:100%;accent-color:#9dda87;cursor:pointer}
.filter-controls button{margin:6px 0 10px;font-size:10px;min-height:33px}
.filter-controls .hint{font-size:10px;margin:5px 0 0}.filter-caution.high{color:var(--amber)}
.weather-panel{margin-bottom:22px}.weather-form{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:18px 0}
.weather-form label{display:block;min-width:0}.weather-form input{display:block;width:100%;margin-top:5px}
.weather-actions{grid-column:1/-1;display:flex;gap:10px;flex-wrap:wrap}
.strength-control{grid-column:1/-1}.strength-control select{display:block;width:100%;margin-top:5px}
.planner-box{margin-top:20px;border-top:2px solid #567580;padding-top:17px}
.planner-box h3{font-size:11px;letter-spacing:.08em;color:var(--green);margin:0 0 9px}
.planner-box .hint{font-size:10px}.planner-box .position-actions{flex-wrap:wrap}.planner-box .position-actions button{min-width:110px}
.planner-status{margin:10px 0!important;line-height:1.7;white-space:normal}
.solution{border:1px solid #486d64;border-radius:5px;padding:12px;margin-top:10px;background:#11272b}
.solution strong{font:11px var(--mono);color:#b5e8da;line-height:1.7;display:block}
.solution p{font-size:10px;line-height:1.6;margin:7px 0 11px;color:var(--muted)}
.solution .solution-warning{color:var(--amber)}.solution.blocked{border-color:#7e5e43;background:#29251f}
.solution button{font-size:10px;min-height:35px}.solution button:disabled{opacity:.4;cursor:not-allowed}
.goal-note{font:10px var(--mono);line-height:1.8;padding:10px;border-left:2px solid var(--green);color:var(--green);background:#11272b}.goal-note.invalid{border-color:var(--amber);color:var(--amber)}
@media(max-width:900px){.weather-form{grid-template-columns:repeat(2,minmax(0,1fr))}.brand small{font-size:7px}}
@media(max-width:500px){.weather-form{grid-template-columns:1fr}.filter-controls{grid-column:1/-1}.student .topbar .brand small{max-width:180px;line-height:1.4}.topbar .brand small{max-width:200px}}


/* BEGIN RadarSim guard-zone-r1 */
.guard-alert {
  position: absolute;
  left: 50%;
  top: 18px;
  transform: translateX(-50%);
  z-index: 20;
  max-width: calc(100% - 36px);
  padding: 10px 16px;
  border: 2px solid #ffd166;
  border-radius: 6px;
  background: rgba(155, 24, 24, 0.94);
  color: #fff5d6;
  font-weight: 800;
  letter-spacing: .06em;
  text-align: center;
  box-shadow: 0 0 18px rgba(255, 82, 60, .7);
  pointer-events: none;
}
.guard-alert[hidden] {
  display: none;
}
.guard-breach {
  color: #ff8b78 !important;
  font-weight: 800;
}
.guard-controls input[type="number"] {
  width: 100%;
}
/* END RadarSim guard-zone-r1 */
