:root{
  --bg:#0a0d12; --panel:#10151c; --panel-alt:#141b24;
  --border:#232c38; --border-soft:#1a212b;
  --text:#dce3ea; --text-dim:#7c8a99; --text-faint:#4d5866;
  --amber:#e3a857; --cyan:#4fd8c9; --red:#d9534f; --green:#6fbf73; --yellow:#d4c15a; --critical:#e06c8f;
  --on-amber:#0a0d12;
  --header-grad-a:#0d1218; --header-grad-b:#0a0d12;
  --legend-bg:rgba(10,13,18,0.88);
  --map-filter:saturate(0.9) brightness(0.55) contrast(1.25) invert(0.06);
  --font-display:Arial,Helvetica,sans-serif; --font-mono:Arial,Helvetica,sans-serif;
}
:root[data-theme="light"]{
  --bg:#f4f5f7; --panel:#ffffff; --panel-alt:#eceef2;
  --border:#d5d9e0; --border-soft:#e3e6eb;
  --text:#1b232c; --text-dim:#5a6572; --text-faint:#8a94a1;
  --amber:#a3690f; --cyan:#0e8a7d; --red:#c0392b; --green:#2f8f4e; --yellow:#8f7a13; --critical:#a01844;
  --on-amber:#fffaf2;
  --header-grad-a:#ffffff; --header-grad-b:#f4f5f7;
  --legend-bg:rgba(255,255,255,0.9);
  --map-filter:saturate(0.85) brightness(1.02) contrast(1.03);
}
*{box-sizing:border-box;}
html,body{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:var(--font-mono);height:100%;}
::selection{background:var(--amber);color:var(--on-amber);}
.app{display:flex;flex-direction:column;min-height:100vh;}

/* Keep the operational view within the available desktop viewport. Individual data
   panes scroll when needed, rather than making the whole dashboard page scroll. */
@media (min-width:981px){
  html,body{height:100%;overflow:hidden;}
  .app{height:100dvh;min-height:0;overflow:hidden;}
  main{min-height:0;overflow:hidden;}
}

header{display:flex;align-items:center;justify-content:space-between;padding:14px 22px;border-bottom:1px solid var(--border);background:linear-gradient(180deg,var(--header-grad-a),var(--header-grad-b));flex-wrap:wrap;gap:10px;}
.brand{display:flex;align-items:center;gap:14px;}
.brand .mark{width:34px;height:34px;border:1px solid var(--amber);display:flex;align-items:center;justify-content:center;color:var(--amber);font-family:var(--font-display);font-weight:600;font-size:17px;position:relative;}
.brand .mark::after{content:'';position:absolute;inset:-5px;border:1px solid var(--border-soft);}
.brand h1{font-family:var(--font-display);font-weight:600;font-size:23px;letter-spacing:1px;margin:0;text-transform:uppercase;color:var(--text);}
.brand .sub{font-size:12px;color:var(--text-dim);letter-spacing:1.5px;text-transform:uppercase;margin-top:2px;}
.hdr-right{display:flex;align-items:center;gap:12px;flex-wrap:wrap;}
.loc-select select{background:var(--panel-alt);color:var(--text);border:1px solid var(--border);font-family:var(--font-mono);font-size:14px;padding:7px 10px;letter-spacing:0.5px;}
.clock{text-align:right;}
.clock .time{font-family:var(--font-display);font-size:20.5px;color:var(--cyan);letter-spacing:1px;}
.clock .zone{font-size:11px;color:var(--text-dim);letter-spacing:1.5px;}
.status-pill{display:flex;align-items:center;gap:7px;border:1px solid var(--border);padding:6px 12px;font-size:12px;letter-spacing:1px;text-transform:uppercase;color:var(--amber);}
.dot{width:7px;height:7px;border-radius:50%;background:var(--red);box-shadow:0 0 8px var(--red);animation:pulse 2s infinite;}
@keyframes pulse{0%,100%{opacity:1;}50%{opacity:0.35;}}
.btn{background:var(--panel-alt);color:var(--text);border:1px solid var(--border);font-family:var(--font-mono);font-size:12.5px;letter-spacing:1px;text-transform:uppercase;padding:8px 14px;cursor:pointer;transition:all .15s;display:flex;align-items:center;gap:7px;}
.btn:hover{border-color:var(--amber);color:var(--amber);}
.btn.primary{border-color:var(--amber);color:var(--amber);}
.btn.primary:hover{background:var(--amber);color:var(--on-amber);}
.btn:disabled{opacity:0.4;cursor:not-allowed;}
.btn.spinning .ico{animation:spin 1s linear infinite;}
@keyframes spin{to{transform:rotate(360deg);}}

main{flex:1;display:grid;grid-template-columns:1.05fr 1.45fr;gap:1px;background:var(--border);}
@media (max-width:980px){main{grid-template-columns:1fr;}}
.col{background:var(--bg);display:flex;flex-direction:column;min-height:0;}

.panel-label{font-family:var(--font-display);font-size:13px;letter-spacing:2px;text-transform:uppercase;color:var(--text-dim);padding:12px 18px 10px;border-bottom:1px solid var(--border-soft);display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:6px;}
.panel-label .tag{color:var(--cyan);font-size:11px;border:1px solid var(--cyan);padding:2px 6px;letter-spacing:1px;}
.panel-label .tag.ref{color:var(--amber);border-color:var(--amber);}
.panel-label .tag.live{color:var(--red);border-color:var(--red);}

#map{height:300px;width:100%;filter:var(--map-filter);}
.map-wrap{position:relative;}
.map-legend{position:absolute;bottom:10px;left:10px;background:var(--legend-bg);border:1px solid var(--border);padding:8px 10px;font-size:11.5px;color:var(--text-dim);z-index:500;}
.map-legend div{display:flex;align-items:center;gap:6px;margin:3px 0;}
.map-legend .sw{width:9px;height:9px;border-radius:50%;display:inline-block;}
.leaflet-control-attribution{background:var(--legend-bg) !important;color:var(--text-faint) !important;font-size:9.5px !important;padding:2px 6px !important;}
.leaflet-control-attribution a{color:var(--text-dim) !important;}

.marine{padding:14px 18px;border-bottom:1px solid var(--border-soft);}
.marine-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:10px;}
.stat{border-left:2px solid var(--border);padding-left:10px;}
.stat .val{font-family:var(--font-display);font-size:23px;color:var(--cyan);line-height:1;}
.stat .val .unit{font-size:12px;color:var(--text-dim);margin-left:3px;}
.stat .lbl{font-size:10.5px;color:var(--text-dim);letter-spacing:1px;text-transform:uppercase;margin-top:4px;}
.stat.loading .val{color:var(--text-faint);}

.facts{padding:10px 18px;flex:1;overflow-y:auto;max-height:230px;}
.fact-row{display:flex;justify-content:space-between;gap:10px;padding:8px 0;border-bottom:1px solid var(--border-soft);font-size:13px;}
.fact-row .k{color:var(--text-dim);flex-shrink:0;}
.fact-row .v{color:var(--text);font-weight:500;text-align:right;}

.tabs-row{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--border-soft);flex-wrap:wrap;}
.tabs{display:flex;overflow-x:auto;}
.tab{padding:12px 16px;font-family:var(--font-display);font-size:15px;letter-spacing:1px;color:var(--text-dim);cursor:pointer;white-space:nowrap;border-bottom:2px solid transparent;text-transform:uppercase;transition:color .15s;}
.tab .full{display:block;font-size:10px;letter-spacing:1px;color:var(--text-faint);font-family:var(--font-mono);text-transform:uppercase;margin-top:1px;}
.tab:hover{color:var(--text);}
.tab.active{color:var(--amber);border-bottom-color:var(--amber);}
.refresh-wrap{display:flex;align-items:center;gap:10px;padding:0 14px;}
.last-updated{font-size:10.5px;color:var(--text-faint);letter-spacing:0.5px;white-space:nowrap;}

.ascope-grid{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--border-soft);flex:1;overflow-y:auto;}
@media (max-width:640px){.ascope-grid{grid-template-columns:1fr;}}
.a-card{background:var(--bg);padding:14px 16px;cursor:pointer;transition:background .12s;position:relative;}
.a-card:hover{background:var(--panel-alt);}
.a-card:hover .expand-hint{opacity:1;}
.a-card .a-head{display:flex;align-items:baseline;gap:8px;margin-bottom:6px;}
.a-card .a-letter{font-family:var(--font-display);font-size:18.5px;color:var(--amber);border:1px solid var(--border);width:22px;height:22px;display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.a-card .a-name{font-family:var(--font-display);font-size:14.5px;letter-spacing:1px;text-transform:uppercase;color:var(--text-dim);}
.a-card p{font-size:13.5px;line-height:1.55;color:var(--text);margin:0;}
.expand-hint{position:absolute;top:12px;right:14px;font-size:10.5px;color:var(--cyan);opacity:0;transition:opacity .12s;letter-spacing:1px;}
.badge-row{margin-top:8px;display:flex;gap:5px;flex-wrap:wrap;}
.badge{font-size:10px;letter-spacing:0.5px;text-transform:uppercase;border:1px solid var(--border);color:var(--text-dim);padding:2px 6px;}
.badge.has-data{border-color:var(--cyan);color:var(--cyan);}

.ticker-bar{border-top:1px solid var(--border);background:var(--panel);padding:8px 0;overflow:hidden;white-space:nowrap;position:relative;display:flex;align-items:center;}
.ticker-controls{display:flex;align-items:center;flex-shrink:0;z-index:3;background:var(--panel);padding-right:10px;}
.ticker-controls .lbl{background:var(--amber);color:var(--on-amber);font-family:var(--font-display);font-size:11.5px;letter-spacing:1.5px;padding:8px 10px;display:flex;align-items:center;}
.ctry-btn{background:none;border:1px solid var(--border);color:var(--text-dim);font-family:var(--font-mono);font-size:11px;padding:5px 8px;margin-left:6px;cursor:pointer;letter-spacing:0.5px;}
.ctry-btn.active{border-color:var(--cyan);color:var(--cyan);}
.ticker-viewport{overflow:hidden;flex:1;}
.ticker-viewport:hover .ticker-track{animation-play-state:paused;}
.ticker-track{display:inline-block;white-space:nowrap;font-size:13px;color:var(--text-dim);animation:scroll 150s linear infinite;}
.ticker-track a{color:var(--text-dim);text-decoration:none;margin-right:52px;}
.ticker-track a:hover{color:var(--cyan);}
.ticker-track a b{color:var(--text);font-weight:500;}
@keyframes scroll{0%{transform:translateX(0);}100%{transform:translateX(-50%);}}

footer{padding:9px 18px;font-size:11.5px;color:var(--text-faint);border-top:1px solid var(--border);display:flex;justify-content:space-between;flex-wrap:wrap;gap:6px;letter-spacing:0.5px;}
a{color:var(--cyan);}

/* Compact mode for smaller laptop viewports. This gives the main dashboard the
   equivalent density of a modest browser zoom, without changing the user setting. */
@media (min-width:981px) and (max-width:1600px) and (max-height:950px){
  header{padding:9px 16px;gap:7px;}
  .brand{gap:11px;}
  .brand .mark{width:29px;height:29px;font-size:15px;}
  .brand .mark::after{inset:-4px;}
  .brand h1{font-size:20px;}
  .brand .sub{font-size:10.5px;letter-spacing:1.2px;}
  .hdr-right{gap:8px;}
  .loc-select select{font-size:12px;padding:5px 8px;}
  .clock .time{font-size:18px;}
  .clock .zone,.status-pill{font-size:10.5px;}
  .status-pill{padding:5px 8px;gap:5px;}
  .btn{font-size:11px;padding:6px 10px;gap:5px;}
  .panel-label{font-size:11.5px;padding:8px 14px 7px;letter-spacing:1.6px;}
  .panel-label .tag{font-size:9.5px;padding:2px 5px;}
  #map{height:clamp(180px,25vh,240px);}
  .map-legend{bottom:7px;left:7px;padding:6px 8px;font-size:10px;}
  .map-legend div{gap:5px;margin:2px 0;}
  .marine{padding:9px 14px;}
  .marine-grid{gap:9px;margin-top:7px;}
  .stat{padding-left:7px;}
  .stat .val{font-size:19px;}
  .stat .val .unit{font-size:10px;}
  .stat .lbl{font-size:9px;margin-top:3px;}
  .facts{padding:7px 14px;max-height:none;}
  .fact-row{font-size:11.5px;padding:5px 0;}
  .tab{font-size:13px;padding:8px 12px;}
  .tab .full{font-size:8.5px;}
  .refresh-wrap{gap:7px;padding:0 10px;}
  .last-updated{font-size:9px;}
  .a-card{padding:9px 11px;}
  .a-card .a-head{gap:6px;margin-bottom:4px;}
  .a-card .a-letter{font-size:15px;width:19px;height:19px;}
  .a-card .a-name{font-size:12.5px;letter-spacing:.8px;}
  .a-card p{font-size:11.5px;line-height:1.38;}
  .badge-row{margin-top:5px;gap:4px;}
  .badge{font-size:8.5px;padding:1px 4px;}
  .ticker-bar{padding:5px 0;}
  .ticker-controls .lbl{font-size:10px;padding:6px 8px;}
  .ctry-btn{font-size:9.5px;padding:4px 6px;margin-left:4px;}
  .ticker-track{font-size:11px;}
  footer{padding:6px 14px;font-size:9.5px;gap:3px;}
}

@media (min-width:981px) and (max-width:1280px) and (max-height:820px){
  #map{height:clamp(150px,22vh,190px);}
  .brand h1{font-size:18px;}
  .status-pill,.clock{display:none;}
  .a-card p{font-size:10.75px;line-height:1.3;}
  .a-card{padding:7px 9px;}
}

/* MODAL (shared: intel detail + settings) */
.modal-overlay{position:fixed;inset:0;background:rgba(6,8,11,0.82);z-index:1000;display:none;align-items:flex-start;justify-content:center;padding:40px 16px;overflow-y:auto;}
.modal-overlay.open{display:flex;}
.modal{background:var(--panel);border:1px solid var(--border);max-width:720px;width:100%;box-shadow:0 20px 60px rgba(0,0,0,0.5);}
.modal-head{padding:18px 22px;border-bottom:1px solid var(--border-soft);display:flex;justify-content:space-between;align-items:flex-start;background:var(--panel-alt);}
.modal-head .titles{display:flex;align-items:center;gap:12px;}
.modal-head .m-letter{font-family:var(--font-display);font-size:25.5px;color:var(--amber);border:1px solid var(--amber);width:36px;height:36px;display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.modal-head h2{font-family:var(--font-display);font-size:20.5px;letter-spacing:1px;text-transform:uppercase;margin:0;color:var(--text);}
.modal-head .m-sub{font-size:12px;color:var(--text-dim);letter-spacing:1px;text-transform:uppercase;margin-top:3px;}
.modal-close{background:none;border:1px solid var(--border);color:var(--text-dim);width:30px;height:30px;cursor:pointer;font-size:17px;flex-shrink:0;}
.modal-close:hover{border-color:var(--red);color:var(--red);}
.modal-body{padding:20px 22px;max-height:70vh;overflow-y:auto;}
.modal-body p.lead{font-size:15px;line-height:1.65;color:var(--text);margin:0 0 20px;}
.m-section{margin-bottom:20px;}
.m-section h3{font-family:var(--font-display);font-size:13px;letter-spacing:1.5px;text-transform:uppercase;color:var(--cyan);margin:0 0 10px;padding-bottom:6px;border-bottom:1px solid var(--border-soft);}
.entity-table{width:100%;border-collapse:collapse;}
.entity-table tr{border-bottom:1px solid var(--border-soft);}
.entity-table td{padding:7px 4px;font-size:13px;vertical-align:top;}
.entity-table td.name{color:var(--text);font-weight:600;white-space:nowrap;padding-right:12px;}
.entity-table td.role{color:var(--amber);white-space:nowrap;padding-right:12px;font-size:12px;}
.entity-table td.note{color:var(--text-dim);}
.entity-table td.portrait{width:40px;padding-right:10px;}
.avatar{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:50%;background:var(--border-soft);border:1px solid var(--border);color:var(--text-dim);font-family:var(--font-display);font-size:12.5px;letter-spacing:1px;}
img.avatar{display:block;object-fit:cover;}
.sentiment-meter{display:flex;align-items:center;gap:12px;}
.sentiment-bar{flex:1;height:8px;background:var(--border-soft);position:relative;}
.sentiment-bar .fill{height:100%;background:linear-gradient(90deg,var(--red),var(--amber));}
.sentiment-label{font-family:var(--font-display);font-size:14px;letter-spacing:1px;text-transform:uppercase;color:var(--amber);white-space:nowrap;}
.m-section .note-txt{font-size:13px;color:var(--text-dim);margin-top:8px;line-height:1.5;}
.event-list{list-style:none;margin:0;padding:0;}
.event-list li{font-size:13px;color:var(--text);padding:7px 0 7px 16px;border-left:2px solid var(--border);position:relative;margin-left:2px;}
.event-list li::before{content:'';position:absolute;left:-5px;top:12px;width:7px;height:7px;border-radius:50%;background:var(--amber);}
.modal-foot{padding:12px 22px;border-top:1px solid var(--border-soft);font-size:11px;color:var(--text-faint);letter-spacing:0.5px;}

.progress-modal{max-width:440px;}
.ico.spinning{display:inline-block;animation:spin 1s linear infinite;}
.progress-steps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;}
.progress-steps li{display:flex;align-items:center;gap:12px;padding:11px 2px;border-bottom:1px solid var(--border-soft);font-size:13px;}
.progress-steps li:last-child{border-bottom:none;}
.progress-steps .step-num{width:22px;height:22px;flex-shrink:0;display:flex;align-items:center;justify-content:center;border:1px solid var(--border);color:var(--text-faint);font-family:var(--font-mono);font-size:12.5px;}
.progress-steps .step-name{flex:1;color:var(--text-faint);letter-spacing:1px;text-transform:uppercase;}
.progress-steps .step-state{font-size:11px;color:var(--text-faint);letter-spacing:0.5px;text-transform:uppercase;display:flex;align-items:center;gap:6px;}
.progress-steps li.active .step-num{border-color:var(--amber);color:var(--amber);}
.progress-steps li.active .step-name{color:var(--text);}
.progress-steps li.active .step-state{color:var(--amber);}
.progress-steps li.done .step-num{border-color:var(--green);color:var(--green);}
.progress-steps li.done .step-name{color:var(--text-dim);}
.progress-steps li.done .step-state{color:var(--green);}
.progress-steps li.cancelled .step-num{border-color:var(--red);color:var(--red);}
.progress-steps li.cancelled .step-state{color:var(--red);}
.progress-foot{display:flex;justify-content:flex-end;}
.btn.danger{border-color:var(--red);color:var(--red);}
.btn.danger:hover{background:var(--red);color:#fff;}

/* SETTINGS MODAL specifics */
.field{margin-bottom:16px;}
.field label{display:block;font-size:12px;letter-spacing:1px;text-transform:uppercase;color:var(--text-dim);margin-bottom:6px;}
.field input, .field select, .field textarea{width:100%;background:var(--panel-alt);border:1px solid var(--border);color:var(--text);font-family:var(--font-mono);font-size:14.5px;padding:9px 10px;}
.field .hint{font-size:11.5px;color:var(--text-faint);margin-top:5px;line-height:1.4;}
.settings-actions{display:flex;gap:10px;margin-top:8px;flex-wrap:wrap;}
.status-msg{font-size:12.5px;padding:8px 10px;border:1px solid var(--border);margin-top:10px;display:none;}
.status-msg.show{display:block;}
.status-msg.ok{border-color:var(--green);color:var(--green);}
.status-msg.err{border-color:var(--red);color:var(--red);}
.dataset-row{display:flex;justify-content:space-between;align-items:center;padding:8px 0;border-bottom:1px solid var(--border-soft);font-size:13px;}
.dataset-row .rm{background:none;border:none;color:var(--text-faint);cursor:pointer;font-size:16px;}
.dataset-row .rm:hover{color:var(--red);}

/* PROVENANCE / SOURCES (AI-refresh citation trail) */
.badge.grounded{border-color:var(--green);color:var(--green);}
.badge.ai-gen{border-color:var(--amber);color:var(--amber);}
.prov-note{font-size:12px;letter-spacing:0.4px;line-height:1.5;margin:0 0 16px;padding:8px 12px;border:1px solid var(--border-soft);border-left:3px solid;}
.prov-note.grounded{border-left-color:var(--green);color:var(--green);}
.prov-note.ai-gen{border-left-color:var(--amber);color:var(--amber);}
.source-list{list-style:none;margin:0;padding:0;}
.source-list li{padding:8px 0;border-bottom:1px solid var(--border-soft);font-size:13px;line-height:1.5;}
.source-list li:last-child{border-bottom:none;}
.source-list a{color:var(--cyan);text-decoration:none;}
.source-list a:hover{text-decoration:underline;}
.source-list .src-date{display:block;color:var(--text-faint);font-size:11.5px;margin-top:2px;}

/* NOTAM modal */
.notam-msg{font-size:14px;color:var(--text-dim);padding:12px 0;display:flex;align-items:center;gap:8px;}
.notam-msg.err{color:var(--red);}
.notam-msg .ico.spinning{display:inline-block;animation:spin 1s linear infinite;}
.notam-meta{font-size:11.5px;color:var(--text-faint);letter-spacing:0.5px;text-transform:uppercase;margin-bottom:14px;}
.notam-group h3 .notam-count{font-size:10.5px;border:1px solid var(--border);color:var(--text-dim);padding:1px 6px;margin-left:6px;vertical-align:middle;}
.notam-item{border:1px solid var(--border-soft);background:var(--bg);padding:10px 12px;margin-bottom:8px;}
.notam-item .n-head{display:flex;justify-content:space-between;gap:10px;align-items:baseline;}
.notam-item .n-num{font-size:14px;color:var(--amber);font-weight:600;letter-spacing:0.5px;}
.notam-item .n-status{font-size:10px;letter-spacing:1px;color:var(--green);border:1px solid var(--green);padding:1px 6px;}
.notam-item .n-dates{font-size:11px;color:var(--text-faint);letter-spacing:0.5px;margin:4px 0 7px;}
.notam-item .n-text{font-size:13px;line-height:1.55;color:var(--text);white-space:pre-wrap;word-break:break-word;}
.notam-item details{margin-top:7px;}
.notam-item details summary{cursor:pointer;font-size:11px;color:var(--text-dim);letter-spacing:0.5px;text-transform:uppercase;}
.notam-item details pre{white-space:pre-wrap;word-break:break-word;font-family:var(--font-mono);font-size:11.5px;line-height:1.5;color:var(--text-dim);background:var(--panel-alt);border:1px solid var(--border-soft);padding:8px 10px;margin:6px 0 0;}

/* ISO 31000 Risk Register modal */
.risk-modal{max-width:920px;}
.rr-context{font-size:13px;line-height:1.6;color:var(--text-dim);border:1px solid var(--border-soft);border-left:3px solid var(--cyan);padding:10px 12px;margin:0 0 16px;}
.rr-matrices{display:flex;gap:18px;flex-wrap:wrap;margin-bottom:8px;}
.rr-matrix{flex:1;min-width:250px;}
.rr-matrix-title{font-size:11.5px;letter-spacing:1px;text-transform:uppercase;color:var(--text-dim);margin-bottom:6px;}
.rr-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:2px;}
.rr-corner,.rr-axis{font-size:10.5px;color:var(--text-faint);display:flex;align-items:center;justify-content:center;padding:3px 0;}
.rr-cell{min-height:30px;font-size:10.5px;font-weight:600;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:2px;padding:2px;text-align:center;color:var(--text);border:1px solid var(--border-soft);}
.rr-cell.low{background:rgba(111,191,115,0.16);}
.rr-cell.moderate{background:rgba(212,193,90,0.18);}
.rr-cell.high{background:rgba(227,168,87,0.24);}
.rr-cell.extreme{background:rgba(217,83,79,0.30);}
.rr-axes-note{font-size:10.5px;color:var(--text-faint);letter-spacing:0.3px;line-height:1.5;margin-bottom:16px;}
.rr-item{border:1px solid var(--border-soft);background:var(--bg);padding:10px 12px;margin-bottom:8px;}
.rr-head{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap;}
.rr-id{font-size:12.5px;color:var(--amber);font-weight:600;letter-spacing:0.5px;}
.rr-title{font-size:14px;color:var(--text);font-weight:600;flex:1;min-width:140px;}
.rr-band{font-size:10px;letter-spacing:0.8px;padding:1px 6px;border:1px solid;white-space:nowrap;}
.rr-band.low{color:var(--green);border-color:var(--green);}
.rr-band.moderate{color:var(--yellow);border-color:var(--yellow);}
.rr-band.high{color:var(--amber);border-color:var(--amber);}
.rr-band.extreme{color:var(--red);border-color:var(--red);}
.rr-treat{font-size:10px;letter-spacing:0.8px;padding:1px 6px;border:1px solid var(--red);color:var(--red);white-space:nowrap;}
.rr-treat.tolerate{border-color:var(--green);color:var(--green);}
.rr-desc{font-size:13px;line-height:1.55;color:var(--text);margin:6px 0 0;}
.rr-flow{font-size:11px;color:var(--text-faint);letter-spacing:0.5px;margin:8px 0 0;display:flex;gap:6px;align-items:center;flex-wrap:wrap;}
.rr-flow .rr-arrow{color:var(--text-dim);}
.rr-mit-lbl{font-size:10.5px;letter-spacing:1px;text-transform:uppercase;color:var(--text-dim);margin:9px 0 3px;}
.rr-mit{margin:0;padding-left:18px;font-size:12.5px;line-height:1.6;color:var(--text);}
.rr-srctypes{margin-top:8px;display:flex;gap:5px;flex-wrap:wrap;}
.rr-sources{margin-top:7px;}
.rr-sources summary{cursor:pointer;font-size:11px;color:var(--text-dim);letter-spacing:0.5px;text-transform:uppercase;}

/* TESSOC threat assessment modal (reuses rr-* matrix/item styles) */
.ts-overview{display:grid;grid-template-columns:repeat(auto-fit,minmax(118px,1fr));gap:8px;margin-bottom:18px;}
.ts-ov-tile{border:1px solid var(--border-soft);background:var(--bg);padding:9px 10px;display:flex;flex-direction:column;gap:7px;align-items:flex-start;}
.ts-ov-name{font-size:11px;letter-spacing:1px;text-transform:uppercase;color:var(--text-dim);}
.ts-lvl{font-size:10px;letter-spacing:0.8px;padding:1px 6px;border:1px solid;white-space:nowrap;}
.ts-lvl.low{color:var(--green);border-color:var(--green);}
.ts-lvl.moderate{color:var(--yellow);border-color:var(--yellow);}
.ts-lvl.substantial{color:var(--amber);border-color:var(--amber);}
.ts-lvl.severe{color:var(--red);border-color:var(--red);}
.ts-lvl.critical{color:var(--critical);border-color:var(--critical);}
.ts-vector h3 .ts-lvl{vertical-align:middle;margin-left:6px;}
.ts-para{font-size:13px;line-height:1.65;color:var(--text);margin:0 0 10px;}
.ts-outlook{font-size:12px;line-height:1.6;color:var(--text-dim);border:1px solid var(--border-soft);border-left:3px solid var(--amber);padding:8px 12px;margin:10px 0 14px;}
.ts-outlook b{color:var(--amber);letter-spacing:0.5px;font-size:10.5px;}
.ts-desig{font-size:10.5px;letter-spacing:0.8px;color:var(--critical);margin:6px 0 0;text-transform:uppercase;}
.ts-note{font-size:12px;line-height:1.55;color:var(--text-dim);margin:6px 0 0;}
.ts-note b{color:var(--text);}

/* I&W watchboard modal (reuses the rr- and ts- structural styles) */
.iw-status{font-size:10px;letter-spacing:0.8px;padding:1px 6px;border:1px solid;white-space:nowrap;}
.iw-status.green{color:var(--green);border-color:var(--green);}
.iw-status.amber{color:var(--amber);border-color:var(--amber);}
.iw-status.red{color:var(--red);border-color:var(--red);}
.iw-chg{font-size:10px;letter-spacing:0.8px;padding:1px 6px;white-space:nowrap;font-weight:600;}
.iw-chg.up{color:var(--red);}
.iw-chg.down{color:var(--green);}
.iw-chg.new{color:var(--amber);border:1px dashed var(--amber);}
.iw-ind{display:flex;gap:10px;border:1px solid var(--border-soft);background:var(--bg);padding:10px 12px;margin-bottom:8px;}
.iw-lamp{width:9px;height:9px;border-radius:2px;flex-shrink:0;margin-top:3px;}
.iw-lamp.green{background:var(--green);box-shadow:0 0 6px var(--green);}
.iw-lamp.amber{background:var(--amber);box-shadow:0 0 6px var(--amber);}
.iw-lamp.red{background:var(--red);box-shadow:0 0 6px var(--red);}
.iw-ind-main{flex:1;min-width:0;}
.iw-ind-head{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap;}
.iw-ind-text{font-size:13.5px;color:var(--text);font-weight:600;flex:1;min-width:140px;line-height:1.45;}
.iw-trip{font-size:11.5px;line-height:1.55;color:var(--text-dim);margin:6px 0 0;}
.iw-trip b{color:var(--amber);letter-spacing:0.5px;font-size:10.5px;}
.rr-context .iw-status{margin-left:6px;vertical-align:middle;}

/* COA / decision-support panel (reuses rr-* item/list styles) */
.coa-item.recommended{border-left:3px solid var(--green);}
.coa-reco{font-size:9.5px;letter-spacing:0.8px;padding:1px 6px;border:1px solid var(--green);color:var(--green);white-space:nowrap;text-transform:uppercase;}
.coa-proscons{display:flex;gap:20px;flex-wrap:wrap;margin-top:9px;}
.coa-proscons>div{flex:1;min-width:180px;}

/* Time & Cycles panel (PMESII-PT "Time") — 12-month cycle wheel */
.tempo-wheel{display:grid;grid-template-columns:repeat(6,1fr);gap:6px;margin:10px 0 12px;}
@media (max-width:640px){.tempo-wheel{grid-template-columns:repeat(4,1fr);}}
.tempo-month{border:1px solid var(--border-soft);background:var(--bg);padding:8px 6px;min-height:52px;display:flex;flex-direction:column;align-items:center;gap:6px;}
.tempo-month-name{font-size:10.5px;letter-spacing:1px;text-transform:uppercase;color:var(--text-dim);}
.tempo-dots{display:flex;flex-wrap:wrap;gap:3px;justify-content:center;}
.tempo-dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex-shrink:0;}
.tempo-legend{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:16px;}
.tempo-leg-item{display:flex;align-items:center;gap:5px;font-size:11px;color:var(--text-dim);letter-spacing:0.3px;}
.tempo-leg-item .tempo-dot{margin:0;}
.badge.tempo-cat{border-width:1px;}
.cat-rel{background:var(--amber);}
.cat-agr{background:var(--green);}
.cat-mil{background:var(--red);}
.cat-pol{background:var(--critical);}
.cat-eco{background:var(--yellow);}
.cat-env{background:var(--cyan);}
.badge.cat-rel{border-color:var(--amber);color:var(--amber);background:none;}
.badge.cat-agr{border-color:var(--green);color:var(--green);background:none;}
.badge.cat-mil{border-color:var(--red);color:var(--red);background:none;}
.badge.cat-pol{border-color:var(--critical);color:var(--critical);background:none;}
.badge.cat-eco{border-color:var(--yellow);color:var(--yellow);background:none;}
.badge.cat-env{border-color:var(--cyan);color:var(--cyan);background:none;}

/* OCOKA terrain / CARVER asset panels (reuse rr-*/ts-* structural styles) */
.ts-ov-tile .rr-band{margin-top:2px;}

/* CARVER factor score rows */
.cv-factors{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;margin-top:9px;}
.cv-factor{border:1px solid var(--border-soft);padding:6px 8px;}
.cv-factor-lbl{font-size:10px;letter-spacing:0.8px;text-transform:uppercase;color:var(--text-dim);}
.cv-factor-score{font-family:var(--font-display);font-size:17px;color:var(--amber);line-height:1.3;}
.cv-factor-note{font-size:11px;line-height:1.4;color:var(--text-dim);margin-top:2px;}

/* Analysis panels dropdown menu (header) */
.analysis-menu{position:relative;}
.analysis-menu .caret{font-size:9px;margin-left:2px;}
.analysis-dropdown{display:none;position:absolute;top:calc(100% + 6px);right:0;background:var(--panel);border:1px solid var(--border);box-shadow:0 14px 34px rgba(0,0,0,0.45);z-index:950;min-width:250px;max-height:80vh;overflow-y:auto;padding:6px;flex-direction:column;gap:2px;}
.analysis-dropdown.open{display:flex;}
.analysis-dropdown .menu-group-label{font-size:10px;letter-spacing:1.5px;text-transform:uppercase;color:var(--text-faint);padding:8px 10px 4px;}
.analysis-dropdown .menu-item{justify-content:flex-start;width:100%;border:1px solid transparent;background:none;text-align:left;padding:8px 10px;font-size:12px;}
.analysis-dropdown .menu-item:hover{background:var(--panel-alt);border-color:var(--border);color:var(--amber);}

/* Signposts — leading-trajectory marker (reuses ts-vector/coa-reco elsewhere) */
.sp-leading{border-left:3px solid var(--amber);}

/* ACH — evidence × hypothesis matrix */
.ach-matrix-wrap{overflow-x:auto;margin:10px 0 6px;}
.ach-matrix{border-collapse:collapse;width:100%;font-size:12px;}
.ach-matrix th,.ach-matrix td{border:1px solid var(--border-soft);padding:6px 8px;text-align:center;white-space:nowrap;}
.ach-matrix th{background:var(--panel-alt);color:var(--text-dim);font-size:11px;letter-spacing:0.5px;text-transform:uppercase;}
.ach-ev-col{text-align:left !important;max-width:340px;white-space:normal !important;color:var(--text);font-size:12px;}
.ach-cell{font-family:var(--font-display);font-weight:600;font-size:13px;}
.ach-cell.ach-c{background:rgba(111,191,115,0.18);color:var(--green);}
.ach-cell.ach-i{background:rgba(217,83,79,0.22);color:var(--red);}
.ach-cell.ach-n{color:var(--text-faint);}
.badge.ach-diag-high{border-color:var(--red);color:var(--red);}
.badge.ach-diag-medium{border-color:var(--amber);color:var(--amber);}
.badge.ach-diag-low{border-color:var(--text-faint);color:var(--text-faint);}

/* Ends-Ways-Means triangle (actor strategy) */
.ewm-triangle{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:10px 0;}
@media (max-width:640px){.ewm-triangle{grid-template-columns:1fr;}}
.ewm-col{border:1px solid var(--border-soft);padding:8px 10px;}

/* ISO 31030 lifecycle stepper */
.trm-lifecycle{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin:10px 0;}
@media (max-width:800px){.trm-lifecycle{grid-template-columns:1fr 1fr;}}
@media (max-width:480px){.trm-lifecycle{grid-template-columns:1fr;}}
.trm-stage{border:1px solid var(--border-soft);background:var(--bg);padding:10px;}
.trm-stage-num{font-family:var(--font-display);font-size:16px;color:var(--amber);border:1px solid var(--amber);width:22px;height:22px;display:flex;align-items:center;justify-content:center;margin-bottom:6px;}
.trm-stage-name{font-size:12px;letter-spacing:1px;text-transform:uppercase;color:var(--text-dim);margin-bottom:6px;}
.trm-stage ul{margin:0;padding-left:16px;font-size:12px;line-height:1.5;color:var(--text);}

/* Bow-Tie / FMEA diagram */
.bowtie-diagram{display:grid;grid-template-columns:1fr auto 1fr auto 1.2fr auto 1fr auto 1fr;gap:6px;align-items:stretch;margin:12px 0;}
@media (max-width:900px){.bowtie-diagram{grid-template-columns:1fr;}
  .bowtie-diagram .bowtie-arrow{display:none;}}
.bowtie-col{border:1px solid var(--border-soft);background:var(--bg);padding:8px 9px;min-width:0;}
.bowtie-col-lbl{font-size:10px;letter-spacing:0.8px;text-transform:uppercase;color:var(--text-dim);margin-bottom:5px;}
.bowtie-col ul{margin:0;padding-left:14px;font-size:11.5px;line-height:1.5;color:var(--text);}
.bowtie-col .bowtie-empty{list-style:none;margin-left:-14px;color:var(--text-faint);}
.bowtie-threats,.bowtie-consequences{border-left:2px solid var(--red);}
.bowtie-preventive,.bowtie-mitigative{border-left:2px solid var(--green);}
.bowtie-top-event{background:var(--panel-alt);border:1px solid var(--amber);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:10px;}
.bowtie-top-lbl{font-size:9.5px;letter-spacing:1px;color:var(--amber);margin-bottom:4px;}
.bowtie-top-text{font-size:12.5px;font-weight:600;color:var(--text);}
.bowtie-arrow{display:flex;align-items:center;justify-content:center;color:var(--text-faint);font-size:16px;}

@media print{
  header,.tabs-row,.ticker-bar,footer,.btn,.map-legend,.modal-overlay{display:none !important;}
}
