/* ============================================================
   LAYOUT — shell da aplicação (ADR-0002 · Fase 3 responsiva)
   Mobile-first: base = telefone (bottom nav fixa, corpo rola);
   @media (min-width:48em) = escritório (sidebar fixa, #views
   rola). Uma arquitetura de informação, duas renderizações.
   Nenhum componente de conteúdo vive aqui (ver components.css).
   ============================================================ */

/* SHELL — base mobile: coluna única, corpo rola, nav no polegar */
html,body{height:auto;overflow:auto}
#app{display:flex;flex-direction:column;min-height:100vh;min-height:100svh}
#side{display:none}
#main{flex:1;display:flex;flex-direction:column;min-width:0;background:var(--base)}
#top{padding:12px 16px 0;flex-shrink:0}
.topbar{max-width:var(--maxw);margin-inline:auto;width:100%;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
/* Logo compacto do cabeçalho mobile — toque volta ao Início (decisão de grill 18/07) */
#logo-mob{display:inline-flex;flex:none;align-items:center;padding:0;min-height:44px}
#logo-mob .mk{width:30px;height:30px}
.bc{display:none;font-size:12.5px;color:var(--mut);align-items:center;gap:7px}
.bc .bc-root{font-weight:500}
.bc .bc-sep{color:var(--mut2)}
.bc .bc-cur{color:var(--ink2);font-weight:600}
.gs{margin-left:auto;display:flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--hair2);border-radius:var(--r);padding:7px 12px;flex:1;min-width:0}
.gs svg{width:15px;height:15px;stroke:var(--mut);stroke-width:2;fill:none;flex:none}
.gs input{border:none;background:none;outline:none;font-size:13px;width:100%;color:var(--ink)}
#top h2{max-width:var(--maxw);margin:14px auto 0;width:100%;font-size:clamp(18px,4.6vw,21px);font-weight:700;letter-spacing:-.01em;border-left:3px solid var(--accent);padding-left:12px;line-height:1.2}
#top .subtitle{max-width:var(--maxw);margin:5px auto 0;width:100%;padding-left:15px;font-size:13px;color:var(--mut)}
.tabs{max-width:var(--maxw);margin:14px auto 0;width:100%;display:flex;gap:2px;border-bottom:1px solid var(--hair);flex-wrap:wrap;align-items:center}
.tab{padding:11px 14px;font-size:13px;font-weight:500;color:var(--mut);border-bottom:2px solid transparent;white-space:nowrap;min-height:44px}
.tab:hover{color:var(--ink2)}
.tab.active{color:var(--ink);font-weight:600;border-bottom-color:var(--accent)}
/* Modos extras de abas atrás de seletor no mobile (nature temporal — grill/spec) */
.tab.tab-extra{display:none}
.tabs-mais{display:inline-block;margin-left:auto;margin-bottom:6px;padding:7px 10px;border:1px solid var(--hair2);border-radius:var(--r);font-size:13px;background:var(--surface);color:var(--ink2);max-width:46vw}
.tabs-mais.ativo{border-color:var(--accent);color:var(--ink);font-weight:600}
#views{flex:1;padding-bottom:calc(84px + env(safe-area-inset-bottom))}
.view{padding:16px 16px 0}
.mod{max-width:calc(var(--maxw) + 52px);margin-inline:auto;width:100%}
.loading{padding:60px 0;text-align:center;color:var(--mut);font-size:13px}

/* GRIDS DE COMPOSIÇÃO — mobile empilha; largura decide via container query
   (Baseline 08/2025) com fallback @supports para media query */
.grid2,.grid-3{display:grid;grid-template-columns:1fr;gap:16px}
.stack{display:flex;flex-direction:column;gap:16px}
.mt{margin-top:16px}
@supports (container-type:inline-size){
  .mod{container-type:inline-size}
  @container (min-width:64rem){
    .grid2{grid-template-columns:1.4fr 1fr}
    .grid2.g-16{grid-template-columns:1.6fr 1fr}
    .grid-3{grid-template-columns:repeat(3,1fr)}
  }
}
@supports not (container-type:inline-size){
  @media (min-width:69em){
    .grid2{grid-template-columns:1.4fr 1fr}
    .grid2.g-16{grid-template-columns:1.6fr 1fr}
    .grid-3{grid-template-columns:repeat(3,1fr)}
  }
}
/* Pares de campo no drawer mantêm-se lado a lado em qualquer largura */
#drawer .grid2{grid-template-columns:1.4fr 1fr}

/* DESKTOP (min-width:48em) — sidebar fixa, densidade de escritório */
@media (min-width:48em){
  html,body{height:100vh;height:100svh;overflow:hidden}
  #app{flex-direction:row;height:100vh;height:100svh;min-height:0}
  #logo-mob{display:none}
  #side{width:240px;background:var(--side);color:var(--side-ink);display:flex;flex-direction:column;flex-shrink:0;border-right:1px solid var(--side2)}
  #side .logo{padding:18px 16px 16px;border-bottom:1px solid var(--side2)}
  #side .logo .wm .tx{color:#fff;font-size:19px}
  #side .logo .wm .sub{color:var(--side-mut)}
  #nav{flex:1;padding:10px 12px;overflow-y:auto}
  .navsep{font-size:10px;text-transform:uppercase;letter-spacing:.1em;color:var(--side-mut);font-weight:600;padding:14px 10px 6px}
  .navitem{width:100%;display:flex;align-items:center;gap:11px;padding:9px 10px;border-radius:var(--rsm);color:var(--side-ink);font-size:13.5px;font-weight:500;text-align:left;transition:background .12s;position:relative;margin-bottom:1px}
  .navitem:hover{background:var(--side-active)}
  .navitem.active{background:var(--side2);color:#fff;box-shadow:inset 3px 0 0 var(--accent)}
  .navitem .ic{width:17px;height:17px;flex:none;stroke:currentColor;stroke-width:1.9;fill:none;opacity:.85}
  .navitem.active .ic{opacity:1}
  .navitem .lbl{flex:1;min-width:0}
  .navitem .tag{font-size:9px;font-weight:700;letter-spacing:.04em;padding:2px 6px;border-radius:5px;background:rgba(217,83,79,.18);color:#F0B6B3;text-transform:uppercase}
  #side .foot{padding:12px 14px;border-top:1px solid var(--side2)}
  #side .foot .u{font-size:13px;font-weight:600;color:#fff}
  #side .foot .rolebadge{display:inline-block;font-size:10px;font-weight:600;padding:2px 8px;border-radius:6px;background:var(--accent);color:#fff;margin-top:5px}
  #side .foot .e{font-size:11px;color:var(--side-mut);margin-top:6px}
  #side .foot button{margin-top:10px;width:100%;font-size:12.5px;padding:7px;border:1px solid var(--side2);border-radius:var(--rsm);color:var(--side-ink)}
  #side .foot button:hover{background:var(--side-active)}

  #top{padding:16px 26px 0}
  .topbar{gap:16px;flex-wrap:nowrap}
  .bc{display:flex}
  .gs{flex:none;margin-left:auto;width:300px;max-width:42vw}
  #top h2{font-size:21px;margin-top:16px}
  .tabs{align-items:stretch}
  .tab{padding:9px 16px;min-height:0}
  .tab.tab-extra{display:inline-block}
  .tabs-mais{display:none}
  #views{overflow-y:auto;padding-bottom:40px}
  .view{padding:22px 26px 0}
}
