/* ============================================================
   Boletim — três estilos alternáveis
     caderno  · papel pautado, tinta e caneta de correção
     ficha    · ficha de arquivo, datilografia, nota carimbada
     skyline  · as disciplinas viram colunas de um gráfico
   Cada um funciona em tema claro e escuro.
   ============================================================ */

/* ---------- SISTEMA — tipo e espaço, iguais nos três estilos ---------- */
:root{
  /* Tipografia: sete degraus, razão constante. O degrau md é o corpo
     (15px) e não se mexe; os outros saem dele multiplicando pela razão.
     A razão abre com a tela — 1,2 em 360px, 1,25 a partir de 1240px —
     então o celular fica mais uniforme e o desktop ganha números de
     vitrine. Mudar uma das três linhas abaixo reescala o app inteiro. */
  --type-base:.9375;                          /* 15px, em rem */
  --type-ratio-sm:1.2;                        /* em 360px */
  --type-ratio-lg:1.25;                       /* em 1240px */
  --type-fluid:calc((100vw - 360px) / 55);    /* 0 em 360px → 16px em 1240px */

  --t-sm-m2:calc(var(--type-base) / var(--type-ratio-sm) / var(--type-ratio-sm));
  --t-sm-m1:calc(var(--type-base) / var(--type-ratio-sm));
  --t-sm-p1:calc(var(--type-base) * var(--type-ratio-sm));
  --t-sm-p2:calc(var(--t-sm-p1) * var(--type-ratio-sm));
  --t-sm-p3:calc(var(--t-sm-p2) * var(--type-ratio-sm));
  --t-sm-p4:calc(var(--t-sm-p3) * var(--type-ratio-sm));
  --t-lg-m2:calc(var(--type-base) / var(--type-ratio-lg) / var(--type-ratio-lg));
  --t-lg-m1:calc(var(--type-base) / var(--type-ratio-lg));
  --t-lg-p1:calc(var(--type-base) * var(--type-ratio-lg));
  --t-lg-p2:calc(var(--t-lg-p1) * var(--type-ratio-lg));
  --t-lg-p3:calc(var(--t-lg-p2) * var(--type-ratio-lg));
  --t-lg-p4:calc(var(--t-lg-p3) * var(--type-ratio-lg));

  --fs-xs:clamp(calc(var(--t-lg-m2) * 1rem), calc(var(--t-sm-m2) * 1rem + (var(--t-lg-m2) - var(--t-sm-m2)) * var(--type-fluid)), calc(var(--t-sm-m2) * 1rem));
  --fs-sm:clamp(calc(var(--t-lg-m1) * 1rem), calc(var(--t-sm-m1) * 1rem + (var(--t-lg-m1) - var(--t-sm-m1)) * var(--type-fluid)), calc(var(--t-sm-m1) * 1rem));
  --fs-md:calc(var(--type-base) * 1rem);
  --fs-lg:clamp(calc(var(--t-sm-p1) * 1rem), calc(var(--t-sm-p1) * 1rem + (var(--t-lg-p1) - var(--t-sm-p1)) * var(--type-fluid)), calc(var(--t-lg-p1) * 1rem));
  --fs-xl:clamp(calc(var(--t-sm-p2) * 1rem), calc(var(--t-sm-p2) * 1rem + (var(--t-lg-p2) - var(--t-sm-p2)) * var(--type-fluid)), calc(var(--t-lg-p2) * 1rem));
  --fs-2xl:clamp(calc(var(--t-sm-p3) * 1rem), calc(var(--t-sm-p3) * 1rem + (var(--t-lg-p3) - var(--t-sm-p3)) * var(--type-fluid)), calc(var(--t-lg-p3) * 1rem));
  --fs-3xl:clamp(calc(var(--t-sm-p4) * 1rem), calc(var(--t-sm-p4) * 1rem + (var(--t-lg-p4) - var(--t-sm-p4)) * var(--type-fluid)), calc(var(--t-lg-p4) * 1rem));

  --tracking-caps:.1em;       /* rótulos em versalete */

  /* Espaço: múltiplos de 4px. */
  --space-3xs:2px;
  --space-2xs:4px;
  --space-xs:8px;
  --space-sm:12px;
  --space-md:16px;
  --space-lg:20px;
  --space-xl:24px;
  --space-2xl:32px;
  --space-3xl:40px;
  --space-4xl:48px;
  --space-5xl:64px;

  --gutter:var(--space-md);   /* margem lateral da página; cresce nos breakpoints */
}

/* ---------- CADERNO (padrão) — claro ---------- */
:root{
  --font-display:'Newsreader',Georgia,serif;
  --font-ui:'Archivo',system-ui,-apple-system,sans-serif;

  --paper:#faf7f0;
  --paper-2:#f2eee3;
  --paper-3:#ece5d5;
  --track:#e6dfd0;

  --text:#26221c;
  --text-muted:#7a7264;
  --text-faint:#9c9382;

  --border:#e6ded0;
  --border-strong:#cdc4ad;

  --ink:#2f2a22;
  --red:#a33a2e;

  --accent:var(--ink);
  --accent-text:var(--red);
  --accent-soft:rgba(47,42,34,.07);
  --accent-soft-2:rgba(47,42,34,.18);

  --good:#5c7248;
  --warn:#96762c;
  --bad:var(--red);
  --lost:#c8836f;
  --hatch:#c3b9a2;
  --hatch-bg:#ece5d5;

  --card-bg:transparent;
  --card-border:none;
  --card-shadow:none;
  --card-pad:var(--space-sm) 0 var(--space-md);
  --card-gap:0px;

  --sidebar-w:236px;
  --drawer-w:436px;
}

/* ---------- CADERNO — escuro ---------- */
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --paper:#181511;--paper-2:#131110;--paper-3:#241f19;--track:#2b251d;
    --text:#ece5d8;--text-muted:#a2977f;--text-faint:#7a7060;
    --border:#302a21;--border-strong:#4a4133;
    --ink:#e6ddcb;--red:#e0917c;
    --accent-soft:rgba(230,221,203,.09);--accent-soft-2:rgba(230,221,203,.22);
    --good:#94ac79;--warn:#cba55f;--lost:#8a5344;
    --hatch:#4d4335;--hatch-bg:#221d17;
  }
}
:root[data-theme="dark"]{
  --paper:#181511;--paper-2:#131110;--paper-3:#241f19;--track:#2b251d;
  --text:#ece5d8;--text-muted:#a2977f;--text-faint:#7a7060;
  --border:#302a21;--border-strong:#4a4133;
  --ink:#e6ddcb;--red:#e0917c;
  --accent-soft:rgba(230,221,203,.09);--accent-soft-2:rgba(230,221,203,.22);
  --good:#94ac79;--warn:#cba55f;--lost:#8a5344;
  --hatch:#4d4335;--hatch-bg:#221d17;
}

/* ---------- FICHA — claro ---------- */
:root[data-skin="ficha"]{
  --font-display:'Courier Prime',ui-monospace,monospace;
  --font-ui:'Courier Prime',ui-monospace,monospace;

  --paper:#e8e4d9;
  --paper-2:#ded9cb;
  --paper-3:#d3ccba;
  --track:#e0d9c7;

  --text:#2a2622;
  --text-muted:#5b5346;
  --text-faint:#8b8271;

  --border:#d3ccba;
  --border-strong:#bdb39c;

  --ink:#2a2622;
  --red:#b23a2c;

  --accent-soft:rgba(42,38,34,.06);
  --accent-soft-2:rgba(42,38,34,.16);

  --good:#4f6b3c;
  --warn:#8d6f22;
  --lost:#c08a76;
  --hatch:#bdb39c;
  --hatch-bg:#ded9cb;

  --card-bg:#fdfbf4;
  --card-border:1px solid #cfc7b4;
  --card-shadow:2px 2px 0 rgba(42,38,34,.10);
  --card-pad:0 0 var(--space-sm);
  --card-gap:var(--space-sm);
}
@media (prefers-color-scheme: dark){
  :root[data-skin="ficha"]:not([data-theme="light"]){
    --paper:#17140f;--paper-2:#221d16;--paper-3:#2c261d;--track:#332c22;
    --text:#eae3d4;--text-muted:#a89d86;--text-faint:#7c7362;
    --border:#3a3227;--border-strong:#514637;
    --ink:#eae3d4;--red:#df8a76;
    --accent-soft:rgba(234,227,212,.07);--accent-soft-2:rgba(234,227,212,.2);
    --good:#93ab77;--warn:#cba35c;--lost:#8a5747;
    --hatch:#4e4434;--hatch-bg:#262019;
    --card-bg:#241f18;
    --card-border:1px solid #3d3529;
    --card-shadow:2px 2px 0 rgba(0,0,0,.34);
  }
}
:root[data-skin="ficha"][data-theme="dark"]{
  --paper:#17140f;--paper-2:#221d16;--paper-3:#2c261d;--track:#332c22;
  --text:#eae3d4;--text-muted:#a89d86;--text-faint:#7c7362;
  --border:#3a3227;--border-strong:#514637;
  --ink:#eae3d4;--red:#df8a76;
  --accent-soft:rgba(234,227,212,.07);--accent-soft-2:rgba(234,227,212,.2);
  --good:#93ab77;--warn:#cba35c;--lost:#8a5747;
  --hatch:#4e4434;--hatch-bg:#262019;
  --card-bg:#241f18;
  --card-border:1px solid #3d3529;
  --card-shadow:2px 2px 0 rgba(0,0,0,.34);
}

/* ---------- SKYLINE — claro ---------- */
:root[data-skin="skyline"]{
  --font-display:'Archivo',system-ui,sans-serif;
  --font-ui:'Archivo',system-ui,sans-serif;

  --paper:#fbfaf8;
  --paper-2:#f3f2ef;
  --paper-3:#eae8e4;
  --track:#e9e7e3;

  --text:#141414;
  --text-muted:#6c6c69;
  --text-faint:#94938f;

  --border:#e4e2de;
  --border-strong:#c9c7c2;

  --ink:#141414;
  --red:#c0392b;

  --accent-soft:rgba(20,20,20,.05);
  --accent-soft-2:rgba(20,20,20,.16);

  --good:#3f6b45;
  --warn:#94701f;
  --lost:#cfa79f;
  --hatch:#c9c9c5;
  --hatch-bg:#f0efec;

  --card-bg:transparent;
  --card-border:none;
  --card-shadow:none;
  --card-pad:var(--space-sm) 0 var(--space-md);
  --card-gap:0px;
}
@media (prefers-color-scheme: dark){
  :root[data-skin="skyline"]:not([data-theme="light"]){
    --paper:#101112;--paper-2:#17191a;--paper-3:#1e2022;--track:#26282a;
    --text:#f0efec;--text-muted:#96958f;--text-faint:#6a6964;
    --border:#26282a;--border-strong:#3b3d40;
    --ink:#f0efec;--red:#e0705f;
    --accent-soft:rgba(240,239,236,.06);--accent-soft-2:rgba(240,239,236,.2);
    --good:#7fae7f;--warn:#c8a558;--lost:#7d5049;
    --hatch:#3a3c3e;--hatch-bg:#1a1c1d;
  }
}
:root[data-skin="skyline"][data-theme="dark"]{
  --paper:#101112;--paper-2:#17191a;--paper-3:#1e2022;--track:#26282a;
  --text:#f0efec;--text-muted:#96958f;--text-faint:#6a6964;
  --border:#26282a;--border-strong:#3b3d40;
  --ink:#f0efec;--red:#e0705f;
  --accent-soft:rgba(240,239,236,.06);--accent-soft-2:rgba(240,239,236,.2);
  --good:#7fae7f;--warn:#c8a558;--lost:#7d5049;
  --hatch:#3a3c3e;--hatch-bg:#1a1c1d;
}

/* ============================================================
   BASE
   ============================================================ */
*{box-sizing:border-box;}
[hidden]{display:none!important;}
html{-webkit-text-size-adjust:100%;}
body{
  margin:0;background:var(--paper);color:var(--text);
  font-family:var(--font-ui);font-size:var(--fs-md);line-height:1.55;
  -webkit-font-smoothing:antialiased;overscroll-behavior-y:none;
}
h1,h2,h3,h4{margin:0;text-wrap:balance;}
p{margin:0;}
button{font:inherit;color:inherit;}
.num{font-variant-numeric:tabular-nums;}
::selection{background:var(--accent-soft-2);}
:focus-visible{outline:2px solid var(--ink);outline-offset:2px;}

.shell{min-height:100dvh;}
.app-main{
  min-height:100dvh;padding-bottom:calc(76px + env(safe-area-inset-bottom));
  transition:padding-right .28s cubic-bezier(.4,0,.2,1);
}
.content{max-width:1020px;margin:0 auto;padding:var(--space-md) var(--gutter) var(--space-4xl);display:flex;flex-direction:column;gap:var(--space-2xl);}
.view{display:flex;flex-direction:column;gap:var(--space-2xl);}

/* ============ BARRA SUPERIOR ============ */
.topbar{
  position:sticky;top:0;z-index:30;
  background:color-mix(in srgb, var(--paper) 92%, transparent);
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  border-bottom:1px solid var(--border);
  display:flex;align-items:flex-end;justify-content:space-between;gap:var(--space-md);
  padding:calc(var(--space-md) + env(safe-area-inset-top)) var(--gutter) var(--space-sm);
}
.topbar-title h1{font-family:var(--font-display);font-size:var(--fs-2xl);font-weight:500;letter-spacing:-.01em;line-height:1.1;}
.topbar-title p{font-size:var(--fs-xs);color:var(--text-faint);margin-top:var(--space-2xs);text-transform:uppercase;letter-spacing:var(--tracking-caps);}
.topbar-actions{display:flex;align-items:flex-end;gap:var(--space-xs);flex:none;}
.topbar-aprov{display:flex;flex-direction:column;align-items:flex-end;line-height:1;}
.topbar-aprov .v{font-family:var(--font-display);font-size:var(--fs-xl);font-weight:400;color:var(--red);}
.topbar-aprov .l{font-family:var(--font-display);font-style:italic;font-size:var(--fs-sm);color:var(--text-faint);margin-top:var(--space-3xs);}

.icon-btn{
  appearance:none;border:1px solid var(--border-strong);background:transparent;
  width:34px;height:34px;border-radius:0;flex:none;cursor:pointer;
  color:var(--text-muted);display:flex;align-items:center;justify-content:center;
  transition:color .15s,border-color .15s,background .15s;
}
.icon-btn:hover{color:var(--ink);border-color:var(--ink);}
.icon-btn.is-active{background:var(--ink);border-color:var(--ink);color:var(--paper);}

/* ============ PAINEL DE APARÊNCIA ============ */
.pop-wrap{position:relative;}
.pop{
  position:absolute;top:calc(100% + var(--space-xs));right:0;z-index:70;
  background:var(--paper);border:1px solid var(--border-strong);
  box-shadow:0 8px 30px rgba(20,16,10,.2);
  padding:var(--space-md);width:222px;
  display:flex;flex-direction:column;gap:var(--space-md);
}
.pop-group{display:flex;flex-direction:column;gap:var(--space-xs);}
.pop-label{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:var(--tracking-caps);color:var(--text-faint);font-weight:700;}
.pop-opts{display:flex;flex-direction:column;gap:var(--space-3xs);}
.pop-opt{
  appearance:none;cursor:pointer;text-align:left;
  border:1px solid transparent;background:transparent;
  padding:var(--space-xs);font-size:var(--fs-sm);color:var(--text-muted);
  display:flex;align-items:center;justify-content:space-between;gap:var(--space-xs);
  transition:background .14s,color .14s;
}
.pop-opt:hover{background:var(--accent-soft);color:var(--text);}
.pop-opt.active{border-color:var(--ink);color:var(--text);font-weight:600;}
.pop-opt small{font-size:var(--fs-xs);color:var(--text-faint);font-weight:400;}

/* ============ NAV LATERAL ============ */
.sidebar{display:none;}
.sidebar-brand{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-xl) var(--space-lg);}
.sidebar-brand .mark{
  width:36px;height:36px;flex:none;background:var(--ink);color:var(--paper);
  display:flex;align-items:center;justify-content:center;
}
.sidebar-brand-text{display:flex;flex-direction:column;line-height:1.15;min-width:0;}
.sidebar-brand-text b{font-family:var(--font-display);font-size:var(--fs-lg);font-weight:500;}
.sidebar-brand-text small{font-size:var(--fs-xs);color:var(--text-faint);text-transform:uppercase;letter-spacing:var(--tracking-caps);margin-top:var(--space-2xs);}

.sidebar-nav{display:flex;flex-direction:column;border-top:1px solid var(--border);}
.nav-item{
  appearance:none;border:none;background:transparent;cursor:pointer;
  display:flex;align-items:center;gap:var(--space-sm);
  padding:var(--space-sm) var(--space-lg);border-bottom:1px solid var(--border);
  font-size:var(--fs-md);font-weight:500;color:var(--text-muted);
  text-align:left;width:100%;position:relative;transition:color .14s,background .14s;
}
.nav-item svg{flex:none;opacity:.7;}
.nav-item:hover{color:var(--text);background:var(--accent-soft);}
.nav-item.active{color:var(--text);font-weight:700;}
.nav-item.active svg{opacity:1;}
.nav-item.active::before{content:'';position:absolute;left:0;top:-1px;bottom:-1px;width:3px;background:var(--ink);}

.sidebar-foot{
  margin-top:auto;padding:var(--space-md) var(--space-lg) calc(var(--space-lg) + env(safe-area-inset-bottom));
  display:flex;flex-direction:column;gap:var(--space-md);border-top:1px solid var(--border);
}
.sidebar-stat{display:flex;flex-direction:column;}
.sidebar-stat .v{font-family:var(--font-display);font-size:var(--fs-2xl);font-weight:400;color:var(--red);line-height:1;}
.sidebar-stat .l{font-family:var(--font-display);font-style:italic;font-size:var(--fs-sm);color:var(--text-faint);margin-top:var(--space-3xs);}

.ghost-btn{
  appearance:none;cursor:pointer;border:1px solid var(--border-strong);background:transparent;
  border-radius:0;padding:var(--space-xs) var(--space-sm);font-size:var(--fs-sm);font-weight:500;color:var(--text-muted);
  display:inline-flex;align-items:center;gap:var(--space-xs);transition:border-color .15s,color .15s;
}
.ghost-btn:hover{border-color:var(--ink);color:var(--text);}
.ghost-btn-icon{display:flex;}
.ghost-btn-danger:hover{border-color:var(--bad);color:var(--bad);}

/* ============ ABAS (celular) ============ */
.tabbar{
  position:fixed;left:0;right:0;bottom:0;z-index:40;
  display:flex;justify-content:space-around;align-items:stretch;
  background:color-mix(in srgb, var(--paper) 95%, transparent);
  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  border-top:1px solid var(--border-strong);padding-bottom:env(safe-area-inset-bottom);
}
.tab-item{
  appearance:none;border:none;background:transparent;cursor:pointer;
  flex:1;min-width:0;position:relative;
  display:flex;flex-direction:column;align-items:center;gap:var(--space-2xs);padding:var(--space-xs) 0;
  font-size:var(--fs-xs);font-weight:500;color:var(--text-faint);
  /* sem entreletra: em 375px "Diagnóstico" precisa de cada pixel da aba */
  text-transform:uppercase;letter-spacing:0;transition:color .14s;
}
.tab-item svg{opacity:.75;}
.tab-item span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;}
.tab-item.active{color:var(--text);font-weight:700;}
.tab-item.active svg{opacity:1;}
.tab-item.active::before{content:'';position:absolute;top:0;left:18%;right:18%;height:2px;background:var(--ink);}

/* ============ SEÇÕES ============ */
.panel{background:transparent;border:none;border-radius:0;box-shadow:none;border-top:2px solid var(--ink);padding:var(--space-sm) 0 0;}
.panel-accent{border-top-color:var(--red);}
.panel-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-sm);flex-wrap:wrap;}
.panel-head h2{font-family:var(--font-display);font-size:var(--fs-lg);font-weight:500;letter-spacing:-.01em;}
.panel-meta{font-family:var(--font-display);font-style:italic;font-size:var(--fs-md);color:var(--text-faint);}
.panel-note{font-size:var(--fs-sm);color:var(--text-muted);margin-top:var(--space-xs);max-width:64ch;}

.two-col{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-2xl);}
.two-col > *,.stat-grid > *,.disc-grid > *,.form-grid > *{min-width:0;}

/* ============ NÚMEROS DO TOPO ============ */
.stat-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border-top:2px solid var(--ink);}
.stat-tile{
  background:transparent;border:none;border-radius:0;box-shadow:none;
  padding:var(--space-sm) var(--space-md) var(--space-md) 0;border-bottom:1px solid var(--border);
  display:flex;flex-direction:column;gap:var(--space-3xs);
}
.stat-grid .stat-tile:nth-child(odd){border-right:1px solid var(--border);padding-right:var(--space-md);}
.stat-grid .stat-tile:nth-child(even){padding-left:var(--space-md);}
.stat-tile .value{font-family:var(--font-display);font-weight:400;font-size:var(--fs-2xl);line-height:1;letter-spacing:-.01em;}
.stat-tile .label{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:var(--tracking-caps);color:var(--text-faint);margin-top:var(--space-2xs);}
.stat-tile .sub{font-size:var(--fs-sm);color:var(--text-muted);}

/* ============ BARRA DAS ETAPAS ============ */
.segbar{position:relative;display:flex;height:8px;border-radius:0;overflow:hidden;background:var(--track);margin-top:var(--space-sm);}
.segbar-lg{height:12px;}
.segbar .seg{height:100%;}
.seg-ok{background:var(--ink);}
.seg-lost{background:var(--lost);}
.seg-pending{background-color:var(--hatch-bg);background-image:repeating-linear-gradient(135deg,var(--hatch) 0 1px,transparent 1px 5px);}
.segbar .tick{position:absolute;top:0;bottom:0;width:1px;background:var(--paper);opacity:.85;}

.legend{display:flex;gap:var(--space-md);flex-wrap:wrap;margin-top:var(--space-sm);}
.legend-item{display:flex;align-items:center;gap:var(--space-xs);font-size:var(--fs-sm);color:var(--text-muted);}
.sw{width:12px;height:8px;flex:none;}
.sw-ok{background:var(--ink);}
.sw-lost{background:var(--lost);}
.sw-pending{background-color:var(--hatch-bg);background-image:repeating-linear-gradient(135deg,var(--hatch) 0 1px,transparent 1px 4px);}

.etapa-key{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin-top:var(--space-md);border-top:1px solid var(--border);padding-top:var(--space-sm);gap:var(--space-sm);}
.etapa-key div{display:flex;flex-direction:column;gap:var(--space-3xs);}
.etapa-key .k{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:var(--tracking-caps);color:var(--text-faint);}
.etapa-key .v{font-family:var(--font-display);font-size:var(--fs-lg);}
.etapa-key .v small{font-family:var(--font-ui);font-size:var(--fs-sm);color:var(--text-muted);display:block;margin-top:var(--space-3xs);}

/* ============ LISTAS ============ */
.rank-list{display:flex;flex-direction:column;margin-top:var(--space-xs);}
.rank-row{
  display:flex;align-items:baseline;gap:var(--space-sm);padding:var(--space-sm) 0;
  border:none;border-bottom:1px solid var(--border);cursor:pointer;background:none;width:100%;text-align:left;
}
.rank-row:last-child{border-bottom:none;}
.rank-row:hover .rank-name{color:var(--red);}
.rank-name{flex:1;font-size:var(--fs-md);font-weight:500;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:color .14s;}
.rank-bar{width:64px;height:4px;background:var(--track);flex:none;overflow:hidden;align-self:center;}
.rank-bar i{display:block;height:100%;background:var(--ink);}
.rank-val{font-family:var(--font-display);font-size:var(--fs-md);color:var(--red);flex:none;text-align:right;min-width:62px;}
.rank-val.up{color:var(--good);}
.rank-val.down{color:var(--red);}

/* ============ DISCIPLINAS ============ */
.toolbar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);flex-wrap:wrap;}
.select-wrap{display:flex;align-items:center;gap:var(--space-xs);font-size:var(--fs-sm);color:var(--text-faint);text-transform:uppercase;letter-spacing:.07em;}
select,input[type=text],input[type=number],input[type=url]{
  font:inherit;font-size:var(--fs-md);background:transparent;color:var(--text);
  border:1px solid var(--border-strong);border-radius:0;padding:var(--space-xs);
}
select{cursor:pointer;}
input[type=text]:focus,input[type=number]:focus,input[type=url]:focus,select:focus{border-color:var(--ink);outline:none;}

.disc-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--card-gap);border-top:1px solid var(--border);}

.disc-card{
  appearance:none;text-align:left;cursor:pointer;
  background:var(--card-bg);border:var(--card-border);box-shadow:var(--card-shadow);
  border-bottom:1px solid var(--border);
  border-radius:0;padding:var(--card-pad);
  display:grid;grid-template-columns:1fr auto;
  grid-template-areas:"name pct" "bar bar" "foot foot";
  column-gap:var(--space-sm);align-items:baseline;
  transition:background .14s;
}
.disc-card:hover{background:var(--accent-soft);}
.disc-card.is-open{background:var(--accent-soft);}
.disc-card.is-open .dc-name{color:var(--red);}
.dc-tab{display:none;grid-area:tab;}
.dc-name{grid-area:name;font-size:var(--fs-md);font-weight:600;line-height:1.25;}
.dc-pct{grid-area:pct;font-family:var(--font-display);font-size:var(--fs-xl);font-weight:400;color:var(--red);line-height:1;}
.dc-bar{grid-area:bar;}
.dc-foot{grid-area:foot;display:flex;justify-content:space-between;gap:var(--space-xs);font-size:var(--fs-sm);color:var(--text-faint);margin-top:var(--space-xs);}
.dc-kv{display:flex;gap:var(--space-2xs);align-items:baseline;}
.dc-kv b{color:var(--text-muted);font-weight:500;}

/* ============ SKYLINE ============ */
.skyline-wrap{margin-top:var(--space-md);overflow-x:auto;padding-bottom:var(--space-2xs);}
.skyline{
  position:relative;display:flex;align-items:flex-end;gap:var(--space-2xs);
  height:230px;border-bottom:1.5px solid var(--ink);min-width:520px;
}
.sky-col{
  appearance:none;background:none;border:none;cursor:pointer;padding:0;
  flex:1;min-width:26px;height:100%;
  display:flex;flex-direction:column;justify-content:flex-end;position:relative;
}
.sky-stack{display:flex;flex-direction:column;justify-content:flex-end;height:100%;width:100%;}
.sky-stack i{display:block;width:100%;}
.sky-fill{background:var(--ink);}
.sky-rest{background-color:transparent;border-top:1px solid var(--border-strong);
  background-image:repeating-linear-gradient(135deg,var(--hatch) 0 1px,transparent 1px 7px);opacity:.5;}
.sky-col:hover .sky-fill{background:var(--red);}
.sky-col.is-open .sky-fill{background:var(--red);}
.sky-val{
  position:absolute;left:0;right:0;text-align:center;
  font-size:var(--fs-xs);font-weight:700;color:var(--text-muted);
  transform:translateY(-100%);padding-bottom:var(--space-2xs);
}
.sky-meta{position:absolute;left:0;right:0;z-index:3;border-top:1.5px dashed var(--red);pointer-events:none;}
.sky-meta span{
  position:absolute;left:0;top:0;transform:translateY(-100%);
  font-size:var(--fs-xs);font-weight:700;letter-spacing:.08em;color:var(--red);
  background:var(--paper);padding:0 var(--space-2xs) var(--space-3xs) 0;
}
.sky-labels{display:flex;gap:var(--space-2xs);margin-top:var(--space-xs);min-width:520px;}
.sky-labels span{
  flex:1;min-width:26px;text-align:center;
  font-size:var(--fs-xs);font-weight:600;letter-spacing:.02em;color:var(--text-faint);
}
.sky-labels span.baixa{color:var(--red);}
.sky-legend{display:flex;justify-content:space-between;gap:var(--space-xs);margin-top:var(--space-sm);font-size:var(--fs-sm);color:var(--text-muted);flex-wrap:wrap;}

/* ============ EVOLUÇÃO ============ */
.slope-scale{display:flex;justify-content:space-between;font-size:var(--fs-xs);color:var(--text-faint);margin-top:var(--space-md);padding-left:38%;letter-spacing:.06em;}
.slope-list{display:flex;flex-direction:column;margin-top:var(--space-2xs);border-top:1px solid var(--border);}
.slope-row{
  display:flex;align-items:center;gap:var(--space-xs);padding:var(--space-sm) 0;
  border:none;border-bottom:1px solid var(--border);cursor:pointer;width:100%;background:none;text-align:left;
}
.slope-row:hover{background:var(--accent-soft);}
.slope-name{width:38%;flex:none;font-size:var(--fs-md);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-right:var(--space-xs);}
.slope-track{flex:1;position:relative;height:16px;min-width:60px;}
.slope-track .axis{position:absolute;left:0;right:0;top:50%;height:1px;background:var(--border-strong);}
.slope-track .link{position:absolute;top:50%;height:3px;transform:translateY(-50%);}
.slope-track .dot{position:absolute;top:50%;width:9px;height:9px;border-radius:50%;transform:translate(-50%,-50%);}
.slope-track .dot-1{background:var(--paper);border:1.5px solid var(--text-faint);}
.slope-track .dot-2{background:var(--ink);}
.slope-delta{font-family:var(--font-display);font-size:var(--fs-md);flex:none;min-width:70px;text-align:right;}
.slope-delta.up{color:var(--good);}
.slope-delta.down{color:var(--red);}
.slope-delta.flat{color:var(--text-faint);}

/* ============ DIAGNÓSTICO ============ */
.tipo-list{display:flex;flex-direction:column;margin-top:var(--space-xs);border-top:1px solid var(--border);}
.tipo-item{border-bottom:1px solid var(--border);}
.tipo-row{width:100%;appearance:none;background:none;border:none;cursor:pointer;text-align:left;padding:var(--space-sm) 0;display:block;}
.tipo-row:hover{background:var(--accent-soft);}
.tipo-row-top{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-xs);}
.tipo-name{font-weight:600;font-size:var(--fs-md);display:flex;align-items:center;gap:var(--space-xs);}
.tipo-name .chev{transition:transform .2s;color:var(--text-faint);display:flex;}
.tipo-item.open .chev{transform:rotate(90deg);}
.tipo-pct{font-family:var(--font-display);font-size:var(--fs-lg);color:var(--red);}
.tipo-track{height:5px;background:var(--track);overflow:hidden;margin-top:var(--space-xs);}
.tipo-track i{display:block;height:100%;background:var(--ink);}
.tipo-foot{display:flex;justify-content:space-between;gap:var(--space-xs);margin-top:var(--space-xs);font-size:var(--fs-sm);color:var(--text-faint);}
.tipo-drill{padding:var(--space-3xs) 0 var(--space-md);display:flex;flex-direction:column;gap:var(--space-xs);}
.drill-row{display:flex;align-items:center;gap:var(--space-xs);font-size:var(--fs-sm);}
.drill-name{flex:1;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.drill-bar{width:58px;height:3px;background:var(--track);flex:none;overflow:hidden;}
.drill-bar i{display:block;height:100%;background:var(--ink);}
.drill-val{font-family:var(--font-display);font-size:var(--fs-md);color:var(--text-muted);min-width:54px;text-align:right;}

/* ============ SIMULADOR ============ */
.sim-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-md);margin-top:var(--space-2xs);}
.sim-label{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:var(--tracking-caps);color:var(--text-faint);}
.sim-note{margin-top:var(--space-2xs);}
.sim-value{font-family:var(--font-display);font-size:var(--fs-3xl);font-weight:400;color:var(--red);line-height:.9;flex:none;}
.sim-value sup{font-family:var(--font-display);font-style:italic;font-size:var(--fs-sm);font-weight:400;color:var(--text-faint);margin-left:var(--space-2xs);top:-1.1em;}

input[type=range]{
  -webkit-appearance:none;appearance:none;width:100%;height:2px;margin:var(--space-lg) 0 0;
  background:linear-gradient(to right,var(--ink) 0,var(--ink) var(--fill,60%),var(--border-strong) var(--fill,60%),var(--border-strong) 100%);
  cursor:pointer;
}
input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:18px;height:18px;border-radius:0;background:var(--ink);border:2px solid var(--paper);cursor:grab;}
input[type=range]::-moz-range-thumb{width:18px;height:18px;border-radius:0;border:2px solid var(--paper);background:var(--ink);cursor:grab;}
.sim-scale{display:flex;justify-content:space-between;margin-top:var(--space-xs);font-size:var(--fs-xs);color:var(--text-faint);letter-spacing:.06em;}
.sim-summary{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-sm);margin-top:var(--space-md);padding-top:var(--space-md);border-top:1px solid var(--border);}
.sim-sum-item{display:flex;flex-direction:column;gap:var(--space-3xs);}
.sim-sum-item .v{font-family:var(--font-display);font-size:var(--fs-xl);font-weight:400;}
.sim-sum-item .l{font-size:var(--fs-sm);color:var(--text-muted);}

.sim-list{display:flex;flex-direction:column;margin-top:var(--space-xs);border-top:1px solid var(--border);}
.sim-row{padding:var(--space-sm) 0;border-bottom:1px solid var(--border);}
.sim-row:last-child{border-bottom:none;}
.sim-row-top{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-xs);}
.sim-row-name{font-size:var(--fs-md);font-weight:500;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.sim-row-right{display:flex;align-items:baseline;gap:var(--space-xs);flex:none;}
.sim-falta{font-family:var(--font-display);font-size:var(--fs-md);color:var(--text-muted);}
.sim-track{height:4px;background:var(--track);overflow:hidden;margin-top:var(--space-xs);}
.sim-track i{display:block;height:100%;}
.sim-foot{display:flex;justify-content:space-between;gap:var(--space-xs);margin-top:var(--space-xs);font-size:var(--fs-sm);color:var(--text-faint);}

.badge{
  font-size:var(--fs-xs);font-weight:700;padding:var(--space-3xs) 0;border-radius:0;
  text-transform:uppercase;letter-spacing:var(--tracking-caps);white-space:nowrap;
  border-bottom:2px solid currentColor;background:transparent;
}
.badge-neutral{color:var(--text-muted);}
.badge-good{color:var(--good);}
.badge-warn{color:var(--warn);}
.badge-bad{color:var(--red);}

/* ============ FORMULÁRIO ============ */
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-sm);margin-top:var(--space-md);}
.field{display:flex;flex-direction:column;gap:var(--space-2xs);min-width:0;}
.field span{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:var(--tracking-caps);color:var(--text-faint);}
.field-wide{grid-column:1 / -1;}
.form-actions{grid-column:1 / -1;display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);flex-wrap:wrap;}
.form-msg{font-size:var(--fs-sm);color:var(--bad);min-height:1em;}
.form-msg.ok{color:var(--good);}
.primary-btn{
  appearance:none;border:1px solid var(--ink);cursor:pointer;background:var(--ink);color:var(--paper);
  border-radius:0;padding:var(--space-xs) var(--space-xl);font-size:var(--fs-sm);font-weight:600;
  text-transform:uppercase;letter-spacing:.08em;transition:opacity .15s;
}
.primary-btn:hover{opacity:.85;}

.ed-list{display:flex;flex-direction:column;margin-top:var(--space-sm);}
.ed-row{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) 0;border-bottom:1px solid var(--border);}
.ed-row:last-child{border-bottom:none;}
.ed-tag{font-size:var(--fs-xs);padding:var(--space-3xs) 0;flex:none;text-transform:uppercase;letter-spacing:var(--tracking-caps);font-weight:700;border-bottom:2px solid currentColor;}
.ed-tag-new{color:var(--good);}
.ed-tag-edit{color:var(--warn);}
.ed-tag-del{color:var(--red);}
.ed-info{flex:1;min-width:0;}
.ed-info b{font-size:var(--fs-md);font-weight:600;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.ed-info small{font-size:var(--fs-sm);color:var(--text-faint);}
.ed-val{font-family:var(--font-display);font-size:var(--fs-md);color:var(--text-muted);flex:none;}
.ed-undo{appearance:none;background:none;border:none;cursor:pointer;flex:none;color:var(--text-faint);font-size:var(--fs-sm);text-decoration:underline;padding:var(--space-3xs) var(--space-2xs);}
.ed-undo:hover{color:var(--red);}
.ed-actions{display:flex;gap:var(--space-xs);flex-wrap:wrap;margin-top:var(--space-md);padding-top:var(--space-md);border-top:1px solid var(--border);}
.empty{font-family:var(--font-display);font-style:italic;font-size:var(--fs-md);color:var(--text-faint);padding:var(--space-md) 0 var(--space-2xs);}

/* ============ GAVETA ============ */
.scrim{position:fixed;inset:0;z-index:50;background:rgba(28,24,18,.4);opacity:0;transition:opacity .24s;}
.scrim.show{opacity:1;}
.drawer{
  position:fixed;z-index:60;background:var(--paper);display:flex;flex-direction:column;
  box-shadow:0 -8px 40px rgba(28,24,18,.18);
  left:0;right:0;bottom:0;max-height:90dvh;border-radius:0;border-top:2px solid var(--ink);
  transform:translateY(102%);transition:transform .3s cubic-bezier(.32,.72,0,1);
}
.drawer.show{transform:translateY(0);}
.drawer-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-md);padding:var(--space-md) var(--gutter) var(--space-sm);border-bottom:1px solid var(--border);flex:none;}
.drawer-title{font-family:var(--font-display);font-size:var(--fs-xl);font-weight:500;letter-spacing:-.01em;line-height:1.15;}
.drawer-sub{font-size:var(--fs-sm);color:var(--text-muted);margin-top:var(--space-2xs);}
.drawer-body{overflow-y:auto;padding:var(--space-md) var(--gutter) calc(var(--space-xl) + env(safe-area-inset-bottom));-webkit-overflow-scrolling:touch;}

.d-stats{display:flex;gap:var(--space-lg);flex-wrap:wrap;}
.d-stats div{display:flex;flex-direction:column;}
.d-stats .v{font-family:var(--font-display);font-size:var(--fs-xl);font-weight:400;line-height:1.1;}
.d-stats .l{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:var(--tracking-caps);color:var(--text-faint);}

.d-section{margin-top:var(--space-xl);}
.d-section h4{
  font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:var(--tracking-caps);color:var(--text-faint);font-weight:700;
  margin-bottom:var(--space-xs);padding-bottom:var(--space-2xs);border-bottom:1px solid var(--border-strong);
  display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-xs);
}
.d-section h4 span{font-family:var(--font-display);font-style:italic;text-transform:none;letter-spacing:0;font-weight:400;font-size:var(--fs-md);color:var(--text-muted);}

.item-row{display:flex;align-items:center;gap:var(--space-xs);padding:var(--space-xs) 0;border-bottom:1px solid var(--border);}
.item-row:last-child{border-bottom:none;}
.item-tipo{font-size:var(--fs-xs);padding:var(--space-3xs) var(--space-xs);border:1px solid var(--border-strong);color:var(--text-faint);white-space:nowrap;flex:none;text-transform:uppercase;letter-spacing:.06em;}
.item-name{flex:1;font-size:var(--fs-md);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.item-bar{width:30px;height:3px;background:var(--track);flex:none;overflow:hidden;}
.item-bar i{display:block;height:100%;background:var(--ink);}
.item-score{font-family:var(--font-display);font-size:var(--fs-md);color:var(--text-faint);flex:none;min-width:74px;text-align:right;}
.item-score b{color:var(--text);font-weight:500;}
.item-edit{appearance:none;background:none;border:none;cursor:pointer;flex:none;color:var(--text-faint);padding:var(--space-2xs);display:flex;}
.item-edit:hover{color:var(--red);}
.item-row.is-extra .item-name::after{content:' · novo';color:var(--good);font-size:var(--fs-sm);}
.item-row.is-edited .item-score b{color:var(--warn);}

.item-editor{display:flex;align-items:center;gap:var(--space-xs);padding:var(--space-xs) 0;border-bottom:1px solid var(--border);flex-wrap:wrap;}
.item-editor .item-name{flex:1 1 100%;font-weight:600;}
.item-editor input{width:74px;}
.item-editor .sep{color:var(--text-faint);font-size:var(--fs-sm);}
.mini-btn{
  appearance:none;cursor:pointer;border:1px solid var(--border-strong);background:transparent;
  border-radius:0;padding:var(--space-xs) var(--space-sm);font-size:var(--fs-sm);font-weight:600;color:var(--text-muted);
  text-transform:uppercase;letter-spacing:.06em;
}
.mini-btn:hover{border-color:var(--ink);color:var(--text);}
.mini-btn.is-primary{background:var(--ink);border-color:var(--ink);color:var(--paper);}
.mini-btn.is-danger{color:var(--red);}
.mini-btn.is-danger:hover{border-color:var(--red);}
.d-note{font-family:var(--font-display);font-style:italic;font-size:var(--fs-md);color:var(--text-faint);padding:var(--space-xs) 0 var(--space-3xs);}

.toast{
  position:fixed;z-index:80;left:50%;transform:translateX(-50%) translateY(12px);
  bottom:calc(88px + env(safe-area-inset-bottom));
  background:var(--ink);color:var(--paper);padding:var(--space-xs) var(--space-md);border-radius:0;
  font-size:var(--fs-sm);font-weight:500;box-shadow:0 6px 24px rgba(28,24,18,.28);
  opacity:0;transition:opacity .2s,transform .2s;pointer-events:none;
  max-width:calc(100vw - 32px);text-align:center;
}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0);}

/* ============================================================
   PELE: FICHA — cartões com aba e nota carimbada
   ============================================================ */
:root[data-skin="ficha"] body{
  background-image:repeating-linear-gradient(0deg,transparent 0 27px,var(--paper-2) 27px 28px);
}
:root[data-skin="ficha"] .panel{border-top-width:1px;border-top-style:double;border-top-width:3px;}
:root[data-skin="ficha"] .topbar-title h1,
:root[data-skin="ficha"] .panel-head h2,
:root[data-skin="ficha"] .drawer-title{font-weight:700;letter-spacing:-.02em;}
:root[data-skin="ficha"] .panel-meta,
:root[data-skin="ficha"] .empty,
:root[data-skin="ficha"] .d-note,
:root[data-skin="ficha"] .sidebar-stat .l,
:root[data-skin="ficha"] .topbar-aprov .l{font-style:italic;}

:root[data-skin="ficha"] .disc-grid{border-top:none;gap:var(--space-sm);}
:root[data-skin="ficha"] .disc-card{
  border:var(--card-border);border-bottom:var(--card-border);
  box-shadow:var(--card-shadow);background:var(--card-bg);
  padding:0 0 var(--space-sm);
  grid-template-columns:1fr auto;
  grid-template-areas:"tab tab" "name name" "foot pct" "bar bar";
  align-items:start;column-gap:var(--space-md);
}
:root[data-skin="ficha"] .disc-card:hover{background:var(--card-bg);border-color:var(--ink);}
:root[data-skin="ficha"] .disc-card.is-open{border-color:var(--red);}
:root[data-skin="ficha"] .dc-tab{
  display:flex;justify-content:flex-end;
  background:var(--paper-2);border-bottom:1px solid var(--border);
  font-size:var(--fs-xs);letter-spacing:.12em;text-transform:uppercase;
  color:var(--text-faint);padding:var(--space-2xs) var(--space-sm);margin-bottom:var(--space-sm);
}
:root[data-skin="ficha"] .dc-name{padding:0 var(--space-md);font-weight:700;letter-spacing:-.01em;}
/* o carimbo tem coluna própria: nunca cobre os números */
:root[data-skin="ficha"] .dc-pct{
  align-self:center;justify-self:end;margin-right:var(--space-md);
  font-size:var(--fs-xl);font-weight:700;color:var(--red);
  border:2px solid var(--red);padding:var(--space-3xs) var(--space-xs);
  transform:rotate(-3.5deg);line-height:1.1;
}
:root[data-skin="ficha"] .dc-foot{
  flex-direction:column;gap:0;margin-top:var(--space-xs);padding:0 0 0 var(--space-md);
  font-size:var(--fs-sm);color:var(--text-muted);border-top:1px solid var(--border);
}
:root[data-skin="ficha"] .dc-kv{
  justify-content:space-between;padding:var(--space-2xs) var(--space-xs) var(--space-2xs) 0;
  border-bottom:1px solid var(--border);
}
:root[data-skin="ficha"] .dc-kv:last-child{border-bottom:none;}
:root[data-skin="ficha"] .dc-kv b{color:var(--text);font-weight:700;}
:root[data-skin="ficha"] .dc-bar{margin:var(--space-xs) var(--space-md) 0;}

:root[data-skin="ficha"] .primary-btn,
:root[data-skin="ficha"] .mini-btn.is-primary{letter-spacing:.1em;}
:root[data-skin="ficha"] .sidebar,
:root[data-skin="ficha"] .drawer{background:var(--card-bg);}
:root[data-skin="ficha"] .pop{background:var(--card-bg);}

/* ============================================================
   PELE: SKYLINE — grade limpa, disciplinas viram colunas
   ============================================================ */
:root[data-skin="skyline"] .topbar-title h1,
:root[data-skin="skyline"] .panel-head h2,
:root[data-skin="skyline"] .drawer-title{font-weight:800;letter-spacing:-.03em;}
:root[data-skin="skyline"] .stat-tile .value,
:root[data-skin="skyline"] .sidebar-stat .v,
:root[data-skin="skyline"] .topbar-aprov .v,
:root[data-skin="skyline"] .sim-value,
:root[data-skin="skyline"] .dc-pct,
:root[data-skin="skyline"] .rank-val,
:root[data-skin="skyline"] .tipo-pct{font-weight:700;letter-spacing:-.03em;}
:root[data-skin="skyline"] .panel-meta,
:root[data-skin="skyline"] .empty,
:root[data-skin="skyline"] .d-note,
:root[data-skin="skyline"] .sidebar-stat .l,
:root[data-skin="skyline"] .topbar-aprov .l,
:root[data-skin="skyline"] .d-section h4 span{font-style:normal;}
:root[data-skin="skyline"] .sim-value sup{font-style:normal;}
:root[data-skin="skyline"] .dc-pct{color:var(--text);}
:root[data-skin="skyline"] #view-disciplinas .toolbar .legend{display:none;}
:root[data-skin="skyline"] .rank-val,
:root[data-skin="skyline"] .tipo-pct{color:var(--text);}

/* ============================================================
   ≥640px
   ============================================================ */
@media (min-width:640px){
  :root{--gutter:var(--space-xl);}
  .stat-grid{grid-template-columns:repeat(4,minmax(0,1fr));}
  .stat-grid .stat-tile{border-right:1px solid var(--border);padding:var(--space-md);}
  .stat-grid .stat-tile:first-child{padding-left:0;}
  .stat-grid .stat-tile:last-child{border-right:none;padding-right:0;}
  .stat-grid-3{grid-template-columns:repeat(3,minmax(0,1fr));}
  .etapa-key{grid-template-columns:30fr 35fr 35fr;}
  .content{padding-top:var(--space-xl);}
  .sim-summary{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:var(--space-lg);}
  .form-grid{grid-template-columns:repeat(4,minmax(0,1fr));}
  .field-wide{grid-column:span 2;}
  .skyline{min-width:0;}
  .sky-labels{min-width:0;}
}

/* ============================================================
   ≥900px
   ============================================================ */
@media (min-width:900px){
  :root{--gutter:var(--space-2xl);}
  .tabbar{display:none;}
  .sidebar{
    display:flex;flex-direction:column;
    position:fixed;left:0;top:0;bottom:0;width:var(--sidebar-w);z-index:35;
    background:var(--paper);border-right:1px solid var(--border-strong);
  }
  .app-main{margin-left:var(--sidebar-w);padding-bottom:0;}
  .topbar-aprov{display:none;}
  .content{padding-bottom:var(--space-5xl);}
  .topbar{padding-top:var(--space-md);padding-bottom:var(--space-md);}
  .disc-grid{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:var(--space-3xl);}
  :root[data-skin="ficha"] .disc-grid{column-gap:var(--space-md);}
  .two-col{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-3xl);}
  .skyline{height:270px;}
  .drawer{
    left:auto;right:0;top:0;bottom:0;width:var(--drawer-w);max-height:none;
    border-top:none;border-left:2px solid var(--ink);
    box-shadow:-8px 0 40px rgba(28,24,18,.14);transform:translateX(102%);
  }
  .drawer.show{transform:translateX(0);}
  .drawer-head{padding:var(--space-xl) var(--space-xl) var(--space-md);}
  .drawer-body{padding:var(--space-md) var(--space-xl) var(--space-2xl);}
  .toast{bottom:var(--space-2xl);left:auto;right:var(--space-2xl);transform:translateY(12px);}
  .toast.show{transform:translateY(0);}
}

/* ============================================================
   ≥1240px
   ============================================================ */
@media (min-width:1240px){
  body.drawer-open .app-main{padding-right:var(--drawer-w);}
  body.drawer-open .scrim{display:none;}
  body.drawer-open .disc-grid{grid-template-columns:minmax(0,1fr);}
  body.drawer-open :root[data-skin="ficha"] .disc-grid{grid-template-columns:minmax(0,1fr);}
}
@media (min-width:1500px){
  .content{max-width:1120px;}
}

@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important;}
}
@media print{
  .sidebar,.tabbar,.topbar-actions,.drawer,.scrim,.toast{display:none!important;}
  .app-main{margin-left:0;padding:0;}
  .panel{break-inside:avoid;}
}

/* ============ FONTE DOS DADOS ============ */
.fonte-linha{display:flex;flex-wrap:wrap;gap:var(--space-xs);margin-top:var(--space-md);}
.fonte-linha input[type=url]{flex:1 1 240px;min-width:0;}
.fonte-estado{margin:var(--space-sm) 0 0;font-size:var(--fs-sm);line-height:1.5;color:var(--text-muted);}
.fonte-estado.ok{color:var(--good);}
.fonte-estado.aviso{color:var(--warn);}
.fonte-estado.erro{color:var(--bad);}
.fonte-avisos{
  margin-top:var(--space-sm);padding:var(--space-xs) 0 var(--space-xs) var(--space-sm);
  font-size:var(--fs-sm);line-height:1.55;color:var(--text-muted);
  border-left:2px solid var(--warn);
}
.fonte-avisos b{color:var(--text);font-weight:600;}
.fonte-avisos ul{margin:var(--space-2xs) 0 0;padding-left:var(--space-md);}
.fonte-avisos li{margin-top:var(--space-3xs);}

/* ============ BARRA DE SINCRONIZAÇÃO (visão geral) ============ */
.sync-bar{
  display:flex;align-items:center;gap:var(--space-xs);
  padding:var(--space-xs) 0;margin-bottom:calc(-1 * var(--space-md));
  border-bottom:1px solid var(--border);
}
.sync-dot{width:7px;height:7px;border-radius:50%;flex:none;background:var(--text-faint);}
.sync-bar.is-ok .sync-dot{background:var(--good);}
.sync-bar.is-aviso .sync-dot{background:var(--warn);}
.sync-bar.is-erro .sync-dot{background:var(--bad);}
.sync-bar.is-buscando .sync-dot{background:var(--ink);animation:sync-pulsar 1s ease-in-out infinite;}
.sync-estado{flex:1;min-width:0;margin:0;font-size:var(--fs-sm);line-height:1.4;color:var(--text-muted);}
.sync-bar.is-aviso .sync-estado{color:var(--warn);}
.sync-bar.is-erro .sync-estado{color:var(--bad);}
.sync-btn{flex:none;white-space:nowrap;}
.sync-btn:disabled{opacity:.6;cursor:progress;}
.sync-ico{flex:none;}
.sync-bar.is-buscando .sync-ico{animation:sync-girar .9s linear infinite;}
@keyframes sync-girar{to{transform:rotate(360deg);}}
@keyframes sync-pulsar{50%{opacity:.3;}}

/* ============ TARJA DE FONTE ============ */
.tarja{
  margin:0;padding:var(--space-xs) var(--gutter);
  font-size:var(--fs-sm);line-height:1.45;letter-spacing:.01em;
  color:var(--text);background:var(--paper-3);
  border-bottom:1px solid var(--border);
}
.tarja-aviso{border-bottom-color:var(--warn);color:var(--text-muted);}
.tarja-erro{border-bottom-color:var(--bad);color:var(--bad);}

.ed-conflitos{
  margin-top:var(--space-sm);padding:var(--space-xs) 0 var(--space-xs) var(--space-sm);
  font-size:var(--fs-sm);line-height:1.55;color:var(--text-muted);
  border-left:2px solid var(--warn);
}
.ed-conflitos b{color:var(--text);font-weight:600;}
.ed-conflitos ul{margin:var(--space-2xs) 0 0;padding-left:var(--space-md);}
.ed-conflitos li{margin-top:var(--space-2xs);}

.ed-tag-abs{color:var(--text-muted);}
