/* O.N.E Defense - mobile / native-feel layer. Loaded last on every page. */
:root{--sat:env(safe-area-inset-top,0px);--sab:env(safe-area-inset-bottom,0px);--sal:env(safe-area-inset-left,0px);--sar:env(safe-area-inset-right,0px)}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%;-webkit-tap-highlight-color:transparent}
body{overflow-x:hidden}
img,video,canvas,svg{max-width:100%}
button,a,.btn,select,summary{touch-action:manipulation}

@media (max-width:820px){
  /* ---------- public site ---------- */
  input,select,textarea{font-size:16px!important}
  .site-nav .nav-inner{padding-left:max(16px,var(--sal));padding-right:max(16px,var(--sar));padding-top:max(14px,var(--sat))}
  .site-nav .links{max-height:calc(100dvh - 64px);overflow:auto;padding-bottom:calc(20px + var(--sab))}
  .site-nav .links a{min-height:48px;display:flex;align-items:center}
  .burger{width:44px;height:44px}
  .btn,.news-filters button,.faq-q{min-height:44px}
  .wrap,.container{padding-left:max(16px,var(--sal))!important;padding-right:max(16px,var(--sar))!important}
  .grid2,.grid3,.grid4,.split,.two-col,.cols,.config-wrap,.config-display,.pgrid{grid-template-columns:1fr!important}
  .stats,.statsbar{grid-template-columns:repeat(2,1fr)!important}
  .foot-grid{grid-template-columns:1fr 1fr!important}
  h1,.hero h1{font-size:clamp(34px,10vw,56px)!important;line-height:1.02}
  .h2,h2{font-size:clamp(26px,7.5vw,40px)!important;line-height:1.1}
  table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}
  .timeline{padding-left:8px}
  .back-to-top,.cookie-banner{bottom:calc(16px + var(--sab))!important}
  .back-to-top{right:max(16px,var(--sar))!important}
  .cookie-banner{left:12px!important;right:12px!important}
  footer{padding-bottom:calc(24px + var(--sab))}
  .cr-row{padding:14px 0}
}
@media (max-width:480px){
  .foot-grid{grid-template-columns:1fr!important}
  .stats,.statsbar{grid-template-columns:1fr 1fr!important}
  .strip2 figure{height:300px!important}
}

/* ---------- FalconOS: keep the console locked to the viewport so views scroll internally ---------- */
body.portal .dash{position:fixed!important;inset:0!important;height:100vh;height:100dvh;overflow:hidden;min-height:0}
body.portal .cmain,body.portal .view{min-height:0}

/* ---------- FalconOS: sign-in gate ---------- */
@media (max-width:700px){
  .gate{align-items:flex-start;min-height:100dvh;padding:calc(56px + var(--sat)) 14px calc(56px + var(--sab));overflow:auto}
  .gate-box{width:100%!important;max-width:440px;padding:28px 20px!important;margin:0 auto}
  .gate-top,.gate-foot{padding:14px 16px}
  .gate-foot{position:fixed;padding-bottom:calc(14px + var(--sab));background:#07090cdd}
  .gate-box input{font-size:16px!important;min-height:46px}
  .gate-submit{min-height:48px}
}

/* ---------- FalconOS: operator console ---------- */
@media (max-width:820px){
  body.portal{overscroll-behavior:none;-webkit-user-select:none;user-select:none}
  body.portal input,body.portal textarea,body.portal select{-webkit-user-select:text;user-select:text;font-size:16px!important}
  .dash{height:100dvh;grid-template-columns:1fr!important;grid-template-rows:calc(50px + var(--sat)) 1fr calc(58px + var(--sab))!important;font-size:13px}
  .dash.active{display:grid}
  /* top bar */
  .cbar{grid-column:1/2!important;padding:var(--sat) 10px 0 max(10px,var(--sal))!important;gap:8px}
  .cb-left{gap:8px;min-width:0}
  .cb-title span,.cb-sep,.cb-site,.cb-mid,.cb-op,.cb-btn#paletteBtn kbd,#unitBtn,#fsBtn,#nightBtn{display:none!important}
  .cb-right{gap:6px}
  .cb-ico,.cb-btn{min-width:40px;min-height:40px}
  #paletteBtn{font-size:0!important;width:40px;padding:0;position:relative}
  #paletteBtn::before{content:"";position:absolute;inset:0;margin:auto;width:16px;height:16px;border:2px solid currentColor;border-radius:50%;transform:translate(-1px,-1px) scale(.8)}
  #paletteBtn::after{content:"";position:absolute;width:7px;height:2px;background:currentColor;left:24px;top:26px;transform:rotate(45deg)}
  /* bottom tab bar (the rail) */
  .rail{grid-column:1/2!important;grid-row:3!important;flex-direction:row!important;align-items:stretch!important;justify-content:flex-start;overflow-x:auto!important;overflow-y:hidden!important;padding:0 max(4px,var(--sal)) var(--sab) max(4px,var(--sar))!important;gap:0!important;border-right:0!important;border-top:1px solid var(--c-l)!important;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;scrollbar-width:none}
  .rail::-webkit-scrollbar{display:none}
  .rail button{flex:0 0 auto;width:68px!important;min-height:56px;border-left:0!important;border-top:2px solid transparent;padding:7px 0 4px!important;font-size:10px!important;scroll-snap-align:start}
  .rail button.on{border-top-color:var(--c-a)}
  .rail button svg{width:22px;height:22px}
  .rail button em{right:14px}
  /* content */
  .cmain{grid-column:1/2!important;grid-row:2!important}
  .view{padding:10px max(10px,var(--sal)) 14px max(10px,var(--sar))!important;-webkit-overflow-scrolling:touch}
  .statusbar,#fosTicker,#fosBan,#fosBan2{display:none!important}
  /* collapse multi-column layouts */
  .g-ov,.kb,.fo,.fo-main,.fl,.on-wrap,.rd-wrap,.mapwrap,.kv,.sc{grid-template-columns:1fr!important}
  .g-ov>*{grid-column:1/-1!important}
  .kpis,.kp4,.ws-grid,.gl,.fo-g3{grid-template-columns:repeat(2,1fr)!important}
  .fl-gal{grid-template-columns:1fr!important}
  .tl-row{grid-template-columns:90px 1fr!important}
  .tl-row>*:nth-child(2),.tl-row>*:nth-child(3){display:none}
  .fl-row{grid-template-columns:minmax(0,1fr) 90px!important}
  .view [style*="repeat(12,1fr)"],.view [style*="minmax(380px"],.view [style*="300px 1fr"],.view [style*="260px 1fr"],.view [style*="2fr 1fr"],.view [style*="1.8fr 1fr"],.view [style*="1.7fr 1fr"],.view [style*="1.5fr 1fr"],.view [style*="1fr 1fr 1fr"]{grid-template-columns:1fr!important}
  .view [style*="grid-column"]{grid-column:1/-1!important}
  .mapwrap{position:absolute;grid-template-rows:1fr}
  .mapside{display:none!important}
  .pn,.card{min-width:0}
  .view table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}
  .view pre,.view code{white-space:pre-wrap;word-break:break-word}
  /* overlays become sheets */
  .drawer{top:calc(50px + var(--sat))!important;bottom:calc(58px + var(--sab))!important;width:100%!important;right:-100%!important;max-width:100vw}
  .drawer.on{right:0!important}
  .palette,.modal{padding:calc(var(--sat) + 10vh) 10px 10px!important}
  .pal-box,.modal-box{width:100%!important;max-width:100%!important}
  #toasts{left:10px;right:10px;bottom:calc(70px + var(--sab))!important;align-items:stretch}
  .leaflet-control-zoom{display:none}
}
@media (max-width:420px){
  .kpis,.kp4,.ws-grid,.gl,.fo-g3{grid-template-columns:1fr 1fr!important}
  .rail button{width:62px!important}
}
@media (max-width:820px) and (orientation:landscape){
  .dash{grid-template-rows:calc(44px + var(--sat)) 1fr calc(50px + var(--sab))!important}
  .rail button{min-height:48px}
  .rail button span{display:none}
}
