/* =========================================================
   Protocolo — design system
   Azul elétrico, turquesa e violeta; contraste nos dois temas.
   Tipografia e componentes pensados para utilização no celular.
   ========================================================= */

:root{
  color-scheme: light;

  --paper:#F3F6FF;
  --surface:#FFFFFF;
  --surface-2:#EAF0FC;
  --ink:#152442;
  --ink-soft:#435571;
  --ink-faint:#60718F;
  --line:#DCE5F5;
  --line-strong:#B9C9E5;

  --accent:#2458E6;
  --accent-strong:#1843BE;
  --accent-soft:#E3ECFF;
  --accent-soft-line:#B7CDFB;
  --on-accent:#FFFFFF;

  --cat-lang:#6B3ACB;
  --cat-lang-soft:#EEE7FF;
  --cat-fit:#007B73;
  --cat-fit-soft:#DAF6F0;

  --good:#087B57;
  --good-soft:#DDF6EB;
  --warn:#916000;
  --warn-soft:#FFF0C7;
  --bad:#C62D5C;
  --bad-soft:#FFE5EC;

  --bar-track:#DCE5F5;
  --shadow-1: 0 1px 2px rgba(37,33,26,.05), 0 1px 1px rgba(37,33,26,.04);
  --shadow-2: 0 4px 16px -6px rgba(37,33,26,.18);
  --shadow-3: 0 14px 38px -14px rgba(37,33,26,.28);

  --radius-s: 8px;
  --radius-m: 14px;
  --radius-l: 20px;

  --font-display:"Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
  --font-body:"Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
  --font-mono:"IBM Plex Mono", ui-monospace, "SFMono-Regular", monospace;

  --safe-b: env(safe-area-inset-bottom, 0px);
  --safe-t: env(safe-area-inset-top, 0px);
  --tabbar-h: 72px;
  --brand:#2458E6;
  --brand-end:#633AE2;
  --fit-solid:#007A72;
  --lang-solid:#6432C9;
  --danger-solid:#C62D5C;
  --warn-solid:#866000;
}

@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    color-scheme: dark;
    --paper:#0C1427;
    --surface:#14213A;
    --surface-2:#1C2C48;
    --ink:#F1F5FF;
    --ink-soft:#C0CEE7;
    --ink-faint:#A4B3CD;
    --line:#283A59;
    --line-strong:#3C5379;

    --accent:#83A7FF;
    --accent-strong:#ADC5FF;
    --accent-soft:#1C315B;
    --accent-soft-line:#375894;
    --on-accent:#FFFFFF;

    --cat-lang:#C1A5FF;
    --cat-lang-soft:#322450;
    --cat-fit:#43DDC8;
    --cat-fit-soft:#163E42;

    --good:#59E3B0;
    --good-soft:#163D35;
    --warn:#F8D474;
    --warn-soft:#3A321C;
    --bad:#FF97B4;
    --bad-soft:#482538;

    --bar-track:#283A59;
    --shadow-1: 0 1px 2px rgba(0,0,0,.35);
    --shadow-2: 0 6px 20px -8px rgba(0,0,0,.5);
    --shadow-3: 0 18px 42px -16px rgba(0,0,0,.6);
  }
}
:root[data-theme="dark"]{
  color-scheme: dark;
  --paper:#0C1427;
  --surface:#14213A;
  --surface-2:#1C2C48;
  --ink:#F1F5FF;
  --ink-soft:#C0CEE7;
  --ink-faint:#A4B3CD;
  --line:#283A59;
  --line-strong:#3C5379;

  --accent:#83A7FF;
  --accent-strong:#ADC5FF;
  --accent-soft:#1C315B;
  --accent-soft-line:#375894;
  --on-accent:#FFFFFF;

  --cat-lang:#C1A5FF;
  --cat-lang-soft:#322450;
  --cat-fit:#43DDC8;
  --cat-fit-soft:#163E42;

  --good:#59E3B0;
  --good-soft:#163D35;
  --warn:#F8D474;
  --warn-soft:#3A321C;
  --bad:#FF97B4;
  --bad-soft:#482538;

  --bar-track:#283A59;
  --shadow-1: 0 1px 2px rgba(0,0,0,.35);
  --shadow-2: 0 6px 20px -8px rgba(0,0,0,.5);
  --shadow-3: 0 18px 42px -16px rgba(0,0,0,.6);
}

*{ box-sizing:border-box; }
[hidden]{ display:none !important; }
html{ -webkit-text-size-adjust:100%; touch-action:manipulation; }
body{
  margin:0; background:var(--paper); color:var(--ink);
  font-family:var(--font-body); line-height:1.5; font-size:15px;
  -webkit-font-smoothing:antialiased;
  -webkit-tap-highlight-color:transparent;
  min-height:100vh; min-height:100dvh;
  padding-bottom: calc(var(--tabbar-h) + var(--safe-b) + 14px);
}
/* mobile: qualquer campo com letra abaixo de 16px faz o Safari (iOS) dar
   zoom automático ao tocar — força 16px em todos os campos, mesmo os que
   têm o tamanho definido inline nas várias telas de edição. */
input, select, textarea{ font-size:16px !important; }
button{ -webkit-tap-highlight-color:transparent; }
@media (prefers-reduced-motion: reduce){
  *{ animation-duration:.001ms !important; transition-duration:.001ms !important; scroll-behavior:auto !important; }
}
h1,h2,h3,h4{ margin:0; font-family:var(--font-display); color:var(--ink); letter-spacing:-0.01em; text-wrap:balance; }
p{ margin:0; }
.mono{ font-family:var(--font-mono); font-feature-settings:"tnum" 1; }
button{ font-family:inherit; }
a{ color:var(--accent-strong); }
:focus-visible{ outline:2px solid var(--accent); outline-offset:2px; border-radius:4px; }

.wrap{ max-width:640px; margin:0 auto; padding:0 18px; }

/* ---------------- top bar ---------------- */
.topbar{
  position:sticky; top:0; z-index:30;
  padding-top: var(--safe-t);
  background:color-mix(in srgb, var(--paper) 88%, transparent);
  backdrop-filter:blur(10px);
  border-bottom:1px solid var(--line);
}
.topbar-inner{
  max-width:640px; margin:0 auto; padding:12px 18px;
  display:flex; align-items:center; justify-content:space-between; gap:12px;
}
.topbar .brand{ display:flex; align-items:center; gap:9px; }
.topbar .brand .mark{
  width:26px; height:26px; flex-shrink:0;
  display:flex; align-items:center; justify-content:center;
}
.topbar .brand .mark svg{ width:100%; height:100%; }
.topbar .brand .name{ font-family:var(--font-display); font-weight:600; font-size:17px; }
.topbar .page-title{ font-family:var(--font-mono); font-size:11.5px; letter-spacing:.06em; text-transform:uppercase; color:var(--ink-faint); }
.iconbtn{
  width:36px; height:36px; border-radius:999px; border:1px solid var(--line); background:var(--surface);
  display:flex; align-items:center; justify-content:center; cursor:pointer; color:var(--ink-soft);
  transition:.15s; flex-shrink:0;
}
.iconbtn:hover{ color:var(--ink); border-color:var(--line-strong); }
.iconbtn svg{ width:17px; height:17px; }

/* ---------------- views ---------------- */
.view{ display:none; animation:fadein .22s ease; }
.view.active{ display:block; }
.subview{ display:none; }
.subview.active{ display:block; animation:fadein .2s ease; }
@keyframes fadein{ from{ opacity:0; transform:translateY(6px);} to{ opacity:1; transform:translateY(0);} }
section.blk{ padding:26px 0 6px; }
.blk-head{ margin-bottom:16px; display:flex; align-items:baseline; justify-content:space-between; gap:10px; flex-wrap:wrap; }
.blk-head .kicker{
  font-family:var(--font-mono); font-size:11.5px; letter-spacing:.07em; text-transform:uppercase;
  color:var(--ink-faint); font-weight:600; display:block; margin-bottom:5px;
}
.blk-head h2{ font-size:21px; font-weight:600; }
.blk-head .note{ font-size:12.5px; color:var(--ink-faint); }
p.lead{ color:var(--ink-soft); font-size:14px; margin:0 0 16px; }

/* ---------------- cards & surfaces ---------------- */
.card{
  background:var(--surface); border:1px solid var(--line); border-radius:var(--radius-m);
  box-shadow:var(--shadow-1);
}
.pad{ padding:18px; }

/* ---------------- hero (dashboard) ---------------- */
.hero{
  padding:22px 0 4px;
}
.hero .greet{ font-size:13px; color:var(--ink-faint); font-family:var(--font-mono); margin-bottom:4px; }
.hero h1{ font-size:26px; font-weight:600; }
.streak-row{ display:flex; gap:8px; margin-top:14px; flex-wrap:wrap; }
.streak-chip{
  display:flex; align-items:center; gap:7px; padding:8px 13px; border-radius:999px;
  background:var(--surface); border:1px solid var(--line); font-size:13px; font-weight:600; box-shadow:var(--shadow-1);
}
.streak-chip .dot{ width:8px; height:8px; border-radius:50%; }
.streak-chip .n{ font-family:var(--font-mono); }

/* progress rings */
.ring-grid{ display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-top:18px; }
.ring-card{
  background:var(--surface); border:1px solid var(--line); border-radius:var(--radius-m); padding:16px;
  box-shadow:var(--shadow-1); cursor:pointer; transition:.15s; text-align:left; display:flex; flex-direction:column; gap:10px;
}
.ring-card:hover{ border-color:var(--line-strong); transform:translateY(-1px); box-shadow:var(--shadow-2); }
.ring-card .rc-top{ display:flex; align-items:center; justify-content:space-between; }
.ring-card .rc-label{ font-weight:600; font-size:14px; }
.ring-card.lang .rc-label{ color:var(--cat-lang); }
.ring-card.fit .rc-label{ color:var(--cat-fit); }
.ring-card svg{ width:52px; height:52px; }
.ring-card .rc-sub{ font-size:12px; color:var(--ink-faint); }

/* today checklist */
.today-list{ display:flex; flex-direction:column; gap:10px; margin-top:14px; }
.today-item{
  display:flex; align-items:center; gap:12px; padding:13px 14px; border-radius:var(--radius-m);
  background:var(--surface); border:1px solid var(--line); box-shadow:var(--shadow-1);
}
.today-item.done{ background:var(--good-soft); border-color:transparent; }
.today-check{
  width:26px; height:26px; border-radius:999px; border:2px solid var(--line-strong); flex-shrink:0;
  display:flex; align-items:center; justify-content:center; cursor:pointer; background:var(--surface); transition:.15s;
}
.today-check.on{ background:var(--good); border-color:var(--good); }
.today-check svg{ width:14px; height:14px; color:#fff; opacity:0; transition:.15s; }
.today-check.on svg{ opacity:1; }
.today-txt .tt{ font-weight:600; font-size:14px; }
.today-txt .ts{ font-size:12.5px; color:var(--ink-faint); }
.today-item.done .tt{ text-decoration:line-through; color:var(--ink-faint); }

.quote-card{
  margin-top:18px; padding:18px 20px; border-radius:var(--radius-m);
  background:linear-gradient(155deg, var(--accent-soft), var(--surface));
  border:1px solid var(--accent-soft-line);
}
.quote-card .qk{ font-family:var(--font-mono); font-size:11px; text-transform:uppercase; letter-spacing:.06em; color:var(--accent-strong); font-weight:700; margin-bottom:7px; display:block; }
.quote-card p{ font-size:13.5px; color:var(--ink-soft); line-height:1.55; }

/* ---------------- protocolo card (manifesto + metas) ----------------
   Cores fixas (não seguem o tema): é um cartão de identidade, sempre "escuro". */
.protocolo-card{
  margin-top:4px; padding:20px 22px; border-radius:var(--radius-l);
  background:linear-gradient(155deg, #23211c 0%, #0c0a07 140%);
  color:#f5f1e8; position:relative; overflow:hidden;
}
.protocolo-card .pc-top{ display:flex; align-items:flex-start; justify-content:space-between; gap:12px; }
.protocolo-card .pc-eyebrow{ font-family:var(--font-mono); font-size:11px; text-transform:uppercase; letter-spacing:.08em; color:var(--accent-strong); font-weight:700; }
.protocolo-card .pc-manifesto{
  font-family:var(--font-display); font-size:16.5px; line-height:1.45; margin-top:10px;
  color:rgba(245,241,232,.94);
}
.protocolo-card textarea.pc-edit{
  width:100%; margin-top:10px; font-family:var(--font-display); font-size:15px; line-height:1.5;
  background:rgba(255,255,255,.08); border:1px solid rgba(255,255,255,.22); border-radius:var(--radius-s);
  color:#f5f1e8; padding:10px 12px; resize:vertical; min-height:76px;
}
.pc-metas{ display:flex; flex-wrap:wrap; gap:8px; margin-top:16px; }
.meta-chip{
  display:flex; align-items:baseline; gap:6px; padding:7px 12px; border-radius:999px;
  background:rgba(255,255,255,.1); border:1px solid rgba(255,255,255,.16); font-size:12.5px;
}
.meta-chip .ml{ color:rgba(245,241,232,.65); font-weight:500; }
.meta-chip .mv{ font-family:var(--font-mono); font-weight:700; color:#f5f1e8; }
.meta-chip .mx{ cursor:pointer; color:rgba(245,241,232,.55); margin-left:2px; display:inline-flex; align-items:center; padding:7px; margin-top:-7px; margin-bottom:-7px; margin-right:-7px; }
.meta-edit-row{ display:flex; gap:6px; margin-top:8px; flex-wrap:wrap; }
.meta-edit-row input{
  background:rgba(255,255,255,.08); border:1px solid rgba(255,255,255,.22); border-radius:var(--radius-s);
  color:#f5f1e8; padding:7px 10px; font-size:12.5px; font-family:var(--font-mono);
}
.meta-edit-row input.ml-in{ width:90px; font-family:var(--font-body); }
.meta-edit-row input.mv-in{ width:76px; }
.pc-add-meta{ font-size:12px; background:none; border:1px dashed rgba(255,255,255,.3); color:#f5f1e8; padding:6px 12px; border-radius:999px; cursor:pointer; }

/* ---------------- área tags ---------------- */
.area-dot{ width:8px; height:8px; border-radius:50%; flex-shrink:0; display:inline-block; }
.area-tag{
  display:inline-flex; align-items:center; gap:5px; font-size:11px; font-weight:600;
  padding:2px 8px 2px 6px; border-radius:999px; background:var(--surface-2); color:var(--ink-soft); white-space:nowrap;
}

/* ---------------- hoje: header com editar ---------------- */
.hoje-head{ display:flex; align-items:center; justify-content:space-between; gap:10px; }
.daytype-badge{
  font-family:var(--font-mono); font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.04em;
  padding:4px 10px; border-radius:999px;
}
.daytype-badge.foco{ background:var(--accent-soft); color:var(--accent-strong); }
.daytype-badge.restauracao{ background:var(--cat-lang-soft); color:var(--cat-lang); }
.today-item .ts{ display:flex; align-items:center; gap:6px; flex-wrap:wrap; margin-top:3px; }

/* ---------------- editor de atividades (sheet) ---------------- */
.day-picker{ display:flex; gap:6px; overflow-x:auto; margin-bottom:14px; scrollbar-width:none; }
.day-picker::-webkit-scrollbar{ display:none; }
.day-picker button{
  flex-shrink:0; border:1px solid var(--line); background:var(--surface-2); color:var(--ink-soft);
  padding:7px 13px; border-radius:999px; font-size:12.5px; font-weight:600; cursor:pointer;
}
.day-picker button.active{ background:var(--ink); color:var(--paper); border-color:var(--ink); }
.day-picker button .dtdot{ width:6px; height:6px; border-radius:50%; display:inline-block; margin-right:5px; }

.activity-row{
  display:flex; align-items:flex-start; gap:10px; padding:12px 4px; border-top:1px solid var(--line);
}
.activity-row:first-child{ border-top:none; }
.activity-row .ar-body{ flex:1; min-width:0; }
.activity-row .ar-title{ font-size:14px; font-weight:600; }
.activity-row .ar-detail{ font-size:12.5px; color:var(--ink-faint); margin-top:2px; }
.activity-row .ar-actions{ display:flex; gap:4px; flex-shrink:0; }
.ar-icon-btn{
  width:34px; height:34px; border-radius:9px; border:1px solid var(--line); background:var(--surface);
  display:flex; align-items:center; justify-content:center; cursor:pointer; color:var(--ink-faint);
}
.ar-icon-btn svg{ width:15px; height:15px; }
.ar-icon-btn:hover{ color:var(--ink); }
.ar-icon-btn.danger:hover{ color:var(--bad); border-color:var(--bad); }

.activity-edit-form{ display:flex; flex-direction:column; gap:8px; padding:12px 4px; border-top:1px solid var(--line); }
.activity-edit-form:first-child{ border-top:none; }
.activity-edit-form input, .activity-edit-form select, .activity-edit-form textarea{
  border:1px solid var(--line); background:var(--surface-2); border-radius:var(--radius-s);
  padding:9px 11px; font-size:13.5px; color:var(--ink); font-family:var(--font-body); width:100%;
}
.activity-edit-form textarea{ resize:vertical; min-height:44px; }
.activity-edit-form .row2{ display:grid; grid-template-columns:1fr 90px; gap:8px; }
.activity-edit-form .row2even{ display:grid; grid-template-columns:1fr 1fr; gap:8px; }
.activity-edit-form .form-actions{ display:flex; justify-content:flex-end; gap:8px; margin-top:2px; }

.btn-add-activity{
  width:100%; margin-top:12px; padding:11px; border-radius:var(--radius-m); border:1.5px dashed var(--line-strong);
  background:none; color:var(--ink-soft); font-size:13px; font-weight:600; cursor:pointer;
}
.btn-add-activity:hover{ border-color:var(--accent); color:var(--accent-strong); }

/* ---------------- mini-form (finanças / compras / agenda / pendentes) ---------------- */
.mini-form{ display:flex; flex-wrap:wrap; gap:8px; margin-top:16px; }
.mini-form input, .mini-form select{
  flex:1; min-width:100px; border:1px solid var(--line); background:var(--surface-2); border-radius:var(--radius-s);
  padding:9px 11px; font-size:13.5px; color:var(--ink); font-family:var(--font-body);
}
.mini-form button{ flex-shrink:0; }

/* generic row (finanças / agenda) */
.list-row{
  display:flex; align-items:center; justify-content:space-between; gap:10px;
  padding:11px 4px; border-top:1px solid var(--line); font-size:13.5px;
}
.list-row:first-child{ border-top:none; }
.list-row .lr-main{ min-width:0; }
.list-row .lr-title{ font-weight:600; color:var(--ink); }
.list-row .lr-sub{ font-size:12px; color:var(--ink-faint); margin-top:2px; }
.list-row .lr-right{ display:flex; align-items:center; gap:10px; flex-shrink:0; }
.list-row .lr-amount{ font-family:var(--font-mono); font-weight:700; white-space:nowrap; }
.list-row .lr-amount.in{ color:var(--good); }
.list-row .lr-amount.out{ color:var(--bad); }
.list-row.past{ opacity:.5; }
.list-row .del{ cursor:pointer; color:var(--ink-faint); flex-shrink:0; display:inline-flex; align-items:center; padding:9px; margin:-9px; }
.list-row .del:hover{ color:var(--bad); }
.list-row .del svg{ width:14px; height:14px; display:block; }
.scroll-list{ max-height:320px; overflow-y:auto; }

.today-item .del{ margin-left:auto; cursor:pointer; color:var(--ink-faint); flex-shrink:0; display:inline-flex; align-items:center; padding:9px; margin-top:-9px; margin-bottom:-9px; margin-right:-9px; }
.today-item .del:hover{ color:var(--bad); }
.today-item .del svg{ width:14px; height:14px; display:block; }

/* planos futuros: lista de planos (estrutura reutilizável) */
.plano-list-card{
  display:flex; align-items:center; gap:10px; width:100%; text-align:left;
  background:var(--surface); border:1px solid var(--line); border-radius:var(--radius-m);
  padding:14px 16px; margin-top:10px; box-shadow:var(--shadow-1); cursor:pointer;
}
.plano-list-body{ display:flex; flex-direction:column; gap:2px; min-width:0; flex:1; }
.plano-list-title{ font-size:14.5px; font-weight:600; font-family:var(--font-display); color:var(--ink); }
.plano-list-desc{ font-size:12.5px; color:var(--ink-faint); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }

/* contas (finanças) */
.account-row{
  display:flex; align-items:center; justify-content:space-between; gap:10px;
  padding:12px 14px; border-radius:var(--radius-m); background:var(--surface); border:1px solid var(--line);
  margin-top:10px; box-shadow:var(--shadow-1);
}
.account-row .ar-name{ font-weight:600; font-size:14px; }
.account-row .ar-detail{ font-size:12px; color:var(--ink-faint); margin-top:2px; }
.account-row .ar-balance{ font-family:var(--font-mono); font-weight:700; font-size:15px; white-space:nowrap; }
.account-edit{
  display:flex; flex-direction:column; gap:8px; padding:14px; border-radius:var(--radius-m);
  background:var(--surface); border:1px solid var(--line); margin-top:10px;
}
.account-edit input{
  border:1px solid var(--line); background:var(--surface-2); border-radius:var(--radius-s);
  padding:9px 11px; font-size:13.5px; color:var(--ink); font-family:var(--font-body);
}

/* ---------------- Vida: hub + ecrãs de detalhe ---------------- */
.hub-cards{ display:flex; flex-direction:column; gap:12px; }
.hcard{
  display:flex; align-items:center; gap:14px; padding:16px; border-radius:var(--radius-l);
  background:var(--surface); border:1px solid var(--line); box-shadow:var(--shadow-1); width:100%; text-align:left; cursor:pointer;
}
.hcard:hover{ border-color:var(--line-strong); box-shadow:var(--shadow-2); }
.hcard .hicn{ width:44px; height:44px; border-radius:12px; display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.hcard .hicn svg{ width:21px; height:21px; }
.hcard .hicn.compras{ background:var(--warn-soft); color:var(--warn); }
.hcard .hicn.agenda{ background:var(--cat-lang-soft); color:var(--cat-lang); }
.hcard .hicn.pendentes{ background:var(--accent-soft); color:var(--accent-strong); }
.hcard .hicn.planos{ background:var(--cat-fit-soft); color:var(--cat-fit); }
.hcard .hicn.estudos{ background:var(--bad-soft); color:var(--bad); }
.hcard .hbody{ flex:1; min-width:0; }
.hcard .hname{ font-family:var(--font-display); font-weight:600; font-size:16px; }
.hcard .hsum{ font-size:12.5px; color:var(--ink-faint); margin-top:2px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.hcard .hval{ font-family:var(--font-mono); font-weight:700; font-size:14px; white-space:nowrap; flex-shrink:0; }
.hcard .hchev{ color:var(--ink-faint); flex-shrink:0; }
.hcard .hchev svg{ width:16px; height:16px; display:block; }
.hcard .hcount{
  background:var(--accent); color:#fff; font-family:var(--font-mono); font-size:11px; font-weight:700;
  min-width:20px; height:20px; padding:0 6px; border-radius:999px; display:flex; align-items:center; justify-content:center; flex-shrink:0;
}

.detail-head{
  position:sticky; top:calc(var(--safe-t) + 53px); z-index:4; display:flex; align-items:center; gap:10px;
  padding:14px 18px; background:color-mix(in srgb, var(--paper) 88%, transparent); backdrop-filter:blur(10px);
  border-bottom:1px solid var(--line); margin:0 -18px;
}
.detail-head h2{ font-size:17px; }
.backbtn{
  width:32px; height:32px; border-radius:999px; border:1px solid var(--line); background:var(--surface);
  display:flex; align-items:center; justify-content:center; color:var(--ink-soft); flex-shrink:0; cursor:pointer;
}
.backbtn svg{ width:16px; height:16px; }

/* estados de edição em cima do visual original */
.proto.editing, .rule.editing, .res-card.editing, .sched-card.editing{
  border-color:var(--accent); box-shadow:0 0 0 3px var(--accent-soft);
}
.cardedit{
  width:22px; height:22px; border-radius:7px; border:none; cursor:pointer;
  background:rgba(255,255,255,.22); color:#fff; display:flex; align-items:center; justify-content:center;
}
.cardedit svg{ width:11px; height:11px; }
.itemrow2{ display:flex; gap:6px; align-items:center; margin-bottom:6px; }
.itemrow2 input{ border:1px solid var(--line); background:var(--surface-2); border-radius:6px; padding:6px 8px; font-size:12.5px; font-family:var(--font-body); color:var(--ink); }
.itemrow2 input:first-child{ width:70px; flex-shrink:0; }
.itemrow2 input:nth-child(2){ flex:1; }
.itemrow2 .mx{ cursor:pointer; color:var(--ink-faint); flex-shrink:0; display:inline-flex; align-items:center; padding:8px; margin:-8px; }

.cat-edit-row{ display:flex; gap:6px; align-items:center; margin-bottom:6px; }
.cat-edit-row input{ flex:1; border:1px solid var(--line); background:var(--surface-2); border-radius:6px; padding:7px 9px; font-size:13px; font-family:var(--font-body); color:var(--ink); }
.cat-edit-row .mx{ cursor:pointer; color:var(--ink-faint); flex-shrink:0; display:flex; align-items:center; padding:8px; margin:-8px; }
.cat-edit-row .mx:hover{ color:var(--bad); }
.chip-add-btn{ font-size:12px; background:none; border:1px dashed var(--line-strong); color:var(--ink-soft); padding:6px 12px; border-radius:999px; cursor:pointer; margin-top:2px; }
.chip-add-btn:hover{ border-color:var(--accent); color:var(--accent-strong); }

.materia-edit-row{ margin-bottom:14px; }
.color-swatch-row{ display:flex; gap:8px; margin-top:6px; padding-left:2px; flex-wrap:wrap; }
.color-swatch{ width:22px; height:22px; border-radius:50%; border:2px solid var(--surface); box-shadow:0 0 0 1px var(--line); cursor:pointer; padding:0; }
.color-swatch.selected{ box-shadow:0 0 0 2px var(--ink); }

/* ---------------- sub tabs (dentro de Línguas/Forma) ---------------- */
.subtabs-wrap{ position:relative; }
.subtabs-wrap::after{
  content:""; position:absolute; top:0; right:0; bottom:2px; width:28px; pointer-events:none;
  background:linear-gradient(90deg, transparent, var(--paper));
}
.subtabs{ display:flex; gap:6px; overflow-x:auto; padding-bottom:2px; scrollbar-width:none; }
.subtabs::-webkit-scrollbar{ display:none; }
.subtabs button{
  border:1px solid var(--line); background:var(--surface); color:var(--ink-soft);
  padding:7px 14px; border-radius:999px; font-size:12.5px; font-weight:600; cursor:pointer; white-space:nowrap; transition:.15s;
}
.subtabs button.active{ background:var(--ink); color:var(--paper); border-color:var(--ink); }

/* progress chip */
.progress-chip{
  font-family:var(--font-mono); font-size:12px; font-weight:600; color:var(--ink-soft);
  background:var(--surface-2); border:1px solid var(--line); padding:5px 11px; border-radius:999px;
}

/* stat tiles */
.stats{
  display:grid; grid-template-columns:repeat(4,1fr); gap:1px; background:var(--line);
  border:1px solid var(--line); border-radius:var(--radius-m); overflow:hidden; margin-top:16px;
}
.stat{ background:var(--surface); padding:13px 10px; }
.stat .k{ font-family:var(--font-mono); font-size:10px; letter-spacing:.05em; text-transform:uppercase; color:var(--ink-faint); margin-bottom:5px; }
.stat .v{ font-family:var(--font-mono); font-size:15.5px; font-weight:600; }
.stat .v small{ display:block; font-size:10.5px; font-weight:500; color:var(--ink-faint); margin-top:2px; }
.stat.hl .v{ color:var(--accent); }
@media (max-width:420px){ .stats{ grid-template-columns:repeat(2,1fr);} }

/* schedule cards (rotina línguas) */
.sched-grid{ display:grid; grid-template-columns:1fr 1fr; gap:14px; margin-top:16px; }
@media (max-width:560px){ .sched-grid{ grid-template-columns:1fr; } }
.sched-card{ border-radius:var(--radius-m); overflow:hidden; border:1px solid var(--line); box-shadow:var(--shadow-1); }
.sched-head{ padding:14px 16px; color:#fff; }
.sched-card.a .sched-head{ background:var(--cat-lang); }
.sched-card.b .sched-head{ background:var(--accent-strong); }
.sched-head .days{ font-weight:700; font-size:14px; }
.sched-head .time{ font-family:var(--font-mono); font-size:11.5px; opacity:.9; margin-top:2px; }
.sched-body{ background:var(--surface); }
.sched-item{ display:flex; gap:10px; padding:10px 16px; border-top:1px solid var(--line); font-size:13px; }
.sched-item:first-child{ border-top:none; }
.sched-item .t{ font-family:var(--font-mono); color:var(--ink-faint); flex-shrink:0; width:48px; font-size:11.5px; }
.sched-item .d{ color:var(--ink-soft); }

/* month / week (línguas) */
.month-block{ margin-top:6px; }
.month-head{ display:flex; align-items:baseline; gap:10px; padding:13px 16px; border-radius:var(--radius-m); color:#fff; margin-bottom:14px; }
.month-head h3{ color:#fff; font-size:18px; }
.month-head .m-sub{ font-size:12.5px; color:rgba(255,255,255,.82); font-family:var(--font-body); font-weight:500; }
.month-1 .month-head{ background:var(--cat-lang); }
.month-2 .month-head{ background:var(--accent-strong); }
.month-3 .month-head{ background:var(--ink); }

.week-list{ display:flex; flex-direction:column; gap:10px; }
.week-card{ display:grid; grid-template-columns:52px 1fr; gap:14px; padding:14px 16px; border-radius:var(--radius-m); background:var(--surface); border:1px solid var(--line); }
@media (max-width:480px){ .week-card{ grid-template-columns:1fr; } }
.week-num{ font-family:var(--font-mono); font-weight:600; color:var(--ink-faint); font-size:11px; }
.week-num b{ display:block; font-size:22px; color:var(--ink); line-height:1; margin-top:2px; }
.g-line{ font-size:13px; color:var(--ink); margin-bottom:7px; display:flex; flex-wrap:wrap; gap:4px; align-items:center; }
.g-line .lab{ font-family:var(--font-mono); font-size:10px; text-transform:uppercase; color:var(--ink-faint); letter-spacing:.05em; margin-right:4px; }
.pill{ display:inline-block; background:var(--cat-lang-soft); color:var(--cat-lang); border-radius:6px; padding:2px 8px; font-size:12px; font-weight:500; }
.pill.new{ background:var(--accent-soft); color:var(--accent-strong); font-weight:600; }
.vocab-list{ list-style:none; margin:6px 0 0; padding:0; display:flex; flex-wrap:wrap; gap:8px 16px; }
.vocab-list label{ display:flex; align-items:center; gap:7px; cursor:pointer; font-size:13px; color:var(--ink-soft); }
.vocab-list input[type="checkbox"]{
  appearance:none; width:16px; height:16px; border:1.5px solid var(--ink-faint); border-radius:4px; flex-shrink:0;
  position:relative; cursor:pointer; background:var(--surface);
}
.vocab-list input[type="checkbox"]:checked{ background:var(--good); border-color:var(--good); }
.vocab-list input[type="checkbox"]:checked::after{
  content:""; position:absolute; left:4px; top:1px; width:4px; height:8px;
  border:solid #fff; border-width:0 2px 2px 0; transform:rotate(45deg);
}
.vocab-list input[type="checkbox"]:checked + span{ color:var(--ink-faint); text-decoration:line-through; }

.milestone{ border:1.5px solid var(--accent-soft-line); background:var(--accent-soft); border-radius:var(--radius-m); padding:14px 16px; margin-top:10px; }
.milestone .m-tag{ font-family:var(--font-mono); font-size:11px; font-weight:700; letter-spacing:.05em; text-transform:uppercase; color:var(--accent-strong); display:block; margin-bottom:6px; }
.milestone p{ font-size:13px; color:var(--ink); line-height:1.5; }
.milestone ol{ margin:8px 0 0; padding-left:18px; font-size:12.5px; color:var(--ink-soft); }
.milestone li{ margin-bottom:4px; }

/* resources */
.res-grid{ display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-top:14px; }
@media (max-width:560px){ .res-grid{ grid-template-columns:1fr; } }
.res-card{ padding:14px 16px; border-radius:var(--radius-m); background:var(--surface); border:1px solid var(--line); }
.res-top{ display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:5px; }
.res-top h4{ font-size:14px; font-family:var(--font-body); font-weight:600; color:var(--ink); }
.badge{ font-family:var(--font-mono); font-size:10px; font-weight:700; letter-spacing:.03em; text-transform:uppercase; padding:3px 8px; border-radius:999px; white-space:nowrap; }
.badge.official{ background:var(--good-soft); color:var(--good); }
.badge.new{ background:var(--accent-soft); color:var(--accent-strong); }
.res-card p{ font-size:12.5px; color:var(--ink-soft); }

/* gold callout */
.gold{ background:var(--ink); color:var(--paper); padding:20px; border-radius:var(--radius-m); display:flex; gap:14px; align-items:flex-start; margin-top:20px; }
.gold .g-icon{ font-size:22px; flex-shrink:0; }
.gold h4{ color:var(--accent-strong); font-size:14px; margin-bottom:5px; letter-spacing:.02em; font-family:var(--font-body); font-weight:700; }
.gold p{ color:color-mix(in srgb, var(--paper) 82%, transparent); font-size:13px; line-height:1.55; }

/* collapsible (fontes) */
details.collapse{ margin-top:16px; }
details.collapse summary{ cursor:pointer; font-size:12.5px; color:var(--ink-faint); font-weight:600; list-style:none; display:flex; align-items:center; gap:6px; }
details.collapse summary::-webkit-details-marker{ display:none; }
details.collapse summary::before{ content:"›"; display:inline-block; transition:.15s; font-size:15px; }
details.collapse[open] summary::before{ transform:rotate(90deg); }
details.collapse ol{ margin:10px 0 0; padding-left:18px; font-size:12.5px; color:var(--ink-soft); }
details.collapse li{ margin-bottom:7px; }

/* ---------------- forma / treino ---------------- */
.tbl-scroll{ overflow-x:auto; border:1px solid var(--line); border-radius:var(--radius-m); background:var(--surface); box-shadow:var(--shadow-1); margin-top:16px; }
table.week{ width:100%; border-collapse:collapse; min-width:480px; }
table.week th{ text-align:left; font-family:var(--font-mono); font-size:10.5px; font-weight:600; letter-spacing:.05em; text-transform:uppercase; color:var(--ink-faint); padding:10px 12px; border-bottom:1px solid var(--line); background:var(--surface-2); }
table.week td{ padding:11px 12px; border-bottom:1px solid var(--line); vertical-align:top; font-size:13px; }
table.week tr:last-child td{ border-bottom:none; }
table.week tr.today{ background:var(--accent-soft); }
table.week td.day{ font-weight:600; white-space:nowrap; }
table.week td.time{ font-family:var(--font-mono); font-size:12px; color:var(--ink-soft); white-space:nowrap; }
.tag{ display:inline-block; font-size:11px; font-weight:600; padding:3px 8px; border-radius:5px; white-space:nowrap; }
.tag.judo{ background:var(--cat-fit-soft); color:var(--cat-fit); }
.tag.tiros{ background:var(--warn-soft); color:var(--warn); }
.tag.rest{ background:var(--surface-2); color:var(--ink-faint); }
.done-check{
  width:22px; height:22px; border-radius:999px; border:2px solid var(--line-strong); flex-shrink:0;
  display:inline-flex; align-items:center; justify-content:center; cursor:pointer; background:var(--surface); transition:.15s; vertical-align:middle;
}
.done-check.on{ background:var(--cat-fit); border-color:var(--cat-fit); }
.done-check svg{ width:12px; height:12px; color:#fff; opacity:0; transition:.15s; }
.done-check.on svg{ opacity:1; }

.protocols{ display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-top:14px; }
@media (max-width:560px){ .protocols{ grid-template-columns:1fr; } }
.proto{ background:var(--surface); border:1px solid var(--line); border-radius:var(--radius-m); padding:14px 16px; }
.proto h3{ font-family:var(--font-body); font-size:12.5px; font-weight:700; margin-bottom:6px; color:var(--ink); }
.proto p{ margin:0; font-size:12.5px; color:var(--ink-soft); }

/* weight tracker */
.weight-card{ margin-top:16px; }
.weight-top{ display:flex; align-items:flex-end; justify-content:space-between; gap:14px; flex-wrap:wrap; }
.weight-now .lbl{ font-family:var(--font-mono); font-size:11px; text-transform:uppercase; letter-spacing:.05em; color:var(--ink-faint); }
.weight-now .val{ font-family:var(--font-mono); font-size:30px; font-weight:700; color:var(--ink); line-height:1.1; }
.weight-now .val span{ font-size:15px; font-weight:500; color:var(--ink-faint); }
.weight-trend{ font-size:12.5px; font-weight:600; padding:5px 10px; border-radius:999px; }
.weight-trend.good{ background:var(--good-soft); color:var(--good); }
.weight-trend.warn{ background:var(--warn-soft); color:var(--warn); }
.weight-trend.flat{ background:var(--surface-2); color:var(--ink-faint); }
.weight-chart{ margin-top:14px; width:100%; height:120px; }
.weight-chart-empty{
  margin-top:14px; height:120px; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:7px;
  border:1.5px dashed var(--line-strong); border-radius:var(--radius-m); color:var(--ink-faint); text-align:center; padding:0 20px;
}
.weight-chart-empty svg{ width:24px; height:24px; opacity:.6; color:var(--ink-faint); }
.weight-chart-empty .wce-title{ font-family:var(--font-mono); font-size:14px; font-weight:700; color:var(--ink-soft); }
.weight-chart-empty .wce-sub{ font-size:12px; color:var(--ink-faint); line-height:1.4; }
.weight-form{ display:flex; gap:8px; margin-top:14px; }
.weight-form input{
  flex:1; border:1px solid var(--line); background:var(--surface-2); border-radius:var(--radius-s);
  padding:10px 12px; font-size:14px; color:var(--ink); font-family:var(--font-mono);
}
.weight-form input:focus{ outline:none; border-color:var(--accent); background:var(--surface); }
.btn{
  border:none; background:var(--ink); color:var(--paper); padding:10px 16px; border-radius:var(--radius-s);
  font-size:13.5px; font-weight:600; cursor:pointer; transition:.15s; white-space:nowrap;
}
.btn:hover{ background:var(--accent-strong); }
.btn.ghost{ background:transparent; color:var(--ink-soft); border:1px solid var(--line); }
.btn.ghost:hover{ border-color:var(--bad); color:var(--bad); background:var(--bad-soft); }
.weight-log{ margin-top:10px; max-height:150px; overflow-y:auto; }
.weight-log-row{ display:flex; justify-content:space-between; padding:7px 2px; font-size:12.5px; border-top:1px solid var(--line); color:var(--ink-soft); }
.weight-log-row:first-child{ border-top:none; }
.weight-log-row .del{ cursor:pointer; color:var(--ink-faint); display:inline-flex; align-items:center; padding:8px; margin:-8px; }
.weight-log-row .del:hover{ color:var(--bad); }

/* meal cards */
.mealcard{ border:1px solid var(--line); border-radius:var(--radius-m); overflow:hidden; margin-top:14px; background:var(--surface); box-shadow:var(--shadow-1); }
.mealcard summary{ list-style:none; cursor:pointer; }
.mealcard summary::-webkit-details-marker{ display:none; }
.mealcard .head{ padding:13px 16px; display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:6px 14px; }
.mealcard.judo .head{ background:var(--cat-fit); color:#fff; }
.mealcard.tiros .head{ background:var(--warn); color:#fff; }
.mealcard.rest .head{ background:var(--ink-faint); color:#fff; }
.mealcard .head h3{ font-family:var(--font-display); font-weight:600; font-size:15.5px; }
.mealcard .head .days{ font-family:var(--font-mono); font-size:11px; opacity:.9; }
.mealcard table{ width:100%; border-collapse:collapse; }
.mealcard td{ padding:11px 16px; border-bottom:1px solid var(--line); font-size:13px; vertical-align:top; }
.mealcard tr:last-child td{ border-bottom:none; }
.mealcard td.mtime{ font-family:var(--font-mono); font-size:11.5px; color:var(--ink-faint); white-space:nowrap; width:1%; padding-right:8px; }
.mealcard td.mname{ font-weight:600; white-space:nowrap; width:1%; padding-right:12px; }
.mealcard .note{ display:block; margin-top:3px; font-size:11.5px; color:var(--ink-faint); font-style:italic; }

/* rules grid */
.rules{ display:grid; grid-template-columns:1fr 1fr; gap:1px; background:var(--line); border:1px solid var(--line); border-radius:var(--radius-m); overflow:hidden; margin-top:14px; }
@media (max-width:560px){ .rules{ grid-template-columns:1fr; } }
.rule{ background:var(--surface); padding:13px 16px; }
.rule .k{ font-family:var(--font-mono); font-size:10.5px; font-weight:600; letter-spacing:.05em; text-transform:uppercase; color:var(--cat-fit); margin-bottom:4px; }
.rule .v{ margin:0; font-size:13px; color:var(--ink); }

/* alimentos */
.foods{ display:grid; grid-template-columns:1fr 1fr; gap:14px; margin-top:14px; }
@media (max-width:560px){ .foods{ grid-template-columns:1fr; } }
.foodbox{ background:var(--surface); border:1px solid var(--line); border-radius:var(--radius-m); padding:14px 16px; }
.foodbox h3{ font-size:11.5px; font-weight:700; margin-bottom:8px; font-family:var(--font-mono); letter-spacing:.03em; }
.foodbox.base h3{ color:var(--cat-fit); }
.foodbox.extra h3{ color:var(--warn); }
.foodbox ul{ margin:0; padding:0; list-style:none; columns:2; column-gap:12px; }
.foodbox li{ font-size:12.5px; color:var(--ink-soft); padding:2px 0; break-inside:avoid; }

footer.page-footer{ padding:30px 0 10px; text-align:center; color:var(--ink-faint); font-size:11.5px; }

/* ---------------- bottom tab bar ---------------- */
.tabbar{
  position:fixed; left:0; right:0; bottom:0; z-index:40;
  padding-bottom:var(--safe-b);
  background:color-mix(in srgb, var(--surface) 94%, transparent);
  backdrop-filter:blur(12px);
  border-top:1px solid var(--line);
}
.tabbar-inner{ max-width:640px; margin:0 auto; display:flex; height:var(--tabbar-h); }
.tabbtn{
  flex:1; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:3px;
  background:none; border:none; cursor:pointer; color:var(--ink-faint); transition:.15s; position:relative;
}
.tabbtn svg{ width:22px; height:22px; }
.tabbtn span{ font-size:10.5px; font-weight:600; }
.tabbtn.active{ color:var(--accent-strong); }
.tabbtn .tabdot{
  position:absolute; top:6px; right:calc(50% - 20px); width:6px; height:6px; border-radius:50%; background:var(--accent);
  opacity:0; transform:scale(.5); transition:.15s;
}
.tabbtn.has-today .tabdot{ opacity:1; transform:scale(1); }

/* ---------------- settings sheet ---------------- */
.sheet-backdrop{
  position:fixed; inset:0; background:rgba(20,17,12,.45); z-index:50; opacity:0; pointer-events:none; transition:.2s;
}
.sheet-backdrop.open{ opacity:1; pointer-events:auto; }
.sheet{
  position:fixed; left:0; right:0; bottom:0; z-index:51; background:var(--surface);
  border-radius:20px 20px 0 0; padding:8px 20px calc(24px + var(--safe-b));
  transform:translateY(100%); transition:.25s cubic-bezier(.32,.72,0,1); box-shadow:var(--shadow-3);
  max-width:640px; margin:0 auto; max-height:80vh; overflow-y:auto;
}
.sheet.open{ transform:translateY(0); }
.sheet .grabber{ width:36px; height:4px; background:var(--line-strong); border-radius:99px; margin:8px auto 16px; }
.sheet h3{ font-size:17px; margin-bottom:14px; }
.sheet-row{ display:flex; align-items:center; justify-content:space-between; gap:12px; padding:13px 0; border-top:1px solid var(--line); }
.sheet-row:first-of-type{ border-top:none; }
.sheet-row .sl{ font-size:14px; font-weight:600; }
.sheet-row .ss{ font-size:12px; color:var(--ink-faint); margin-top:2px; }
.seg{ display:flex; gap:4px; background:var(--surface-2); padding:3px; border-radius:999px; }
.seg button{ border:none; background:none; padding:6px 12px; border-radius:999px; font-size:12.5px; font-weight:600; color:var(--ink-soft); cursor:pointer; }
.seg button.active{ background:var(--surface); color:var(--ink); box-shadow:var(--shadow-1); }

.fab-quickadd{
  position:fixed; right:18px; bottom:calc(var(--tabbar-h) + var(--safe-b) + 18px); z-index:35;
  width:54px; height:54px; border-radius:50%; border:none; cursor:pointer;
  background:var(--accent-strong); color:#fff; display:flex; align-items:center; justify-content:center;
  box-shadow:var(--shadow-3);
}
.fab-quickadd svg{ width:24px; height:24px; }
.fab-quickadd:active{ transform:scale(.94); }

.toast{
  position:fixed; left:50%; bottom:calc(var(--tabbar-h) + var(--safe-b) + 16px); transform:translateX(-50%) translateY(10px);
  background:var(--ink); color:var(--paper); padding:10px 18px; border-radius:999px; font-size:13px; font-weight:600;
  box-shadow:var(--shadow-3); opacity:0; pointer-events:none; transition:.2s; z-index:60; white-space:nowrap;
}
.toast.show{ opacity:1; transform:translateX(-50%) translateY(0); }

/* ============ AIF: Autenticidade · Intensidade · Fidelidade ============ */
.aif-card{
  background:var(--surface); border:1px solid var(--line); border-radius:var(--radius-m);
  padding:16px; border-top:3px solid var(--aif-color);
}
.aif-title{ font-size:14px; font-weight:700; margin:0 0 6px; color:var(--aif-color); }
.aif-body{ font-size:12.5px; color:var(--ink-soft); margin:0 0 8px; }
.aif-test{ font-size:12px; color:var(--ink-faint); font-style:italic; margin:0; }

.aif-rings{ display:grid; grid-template-columns:1fr 1fr 1fr; gap:10px; }
.aif-ring-card{
  background:var(--surface-2); border:1.5px solid transparent; border-radius:var(--radius-m); padding:12px 8px;
  display:flex; flex-direction:column; align-items:center; gap:2px; text-align:center; cursor:pointer;
}
.aif-ring-card.active{ border-color:var(--ink-faint); background:var(--surface); }
.aif-ring-card svg{ width:48px; height:48px; }
.aif-ring-letter{ font-family:var(--font-mono); font-weight:700; font-size:12px; margin-top:2px; }
.aif-ring-pct{ font-size:11.5px; color:var(--ink-faint); }
.aif-detail-box:empty{ display:none; }
.aif-detail-box{ margin-top:10px; }
.aif-total{
  display:flex; align-items:baseline; justify-content:space-between; margin-top:14px;
  padding-top:14px; border-top:1px solid var(--line);
}
.aif-total-label{ font-family:var(--font-mono); font-size:11px; text-transform:uppercase; letter-spacing:.06em; color:var(--ink-faint); }
.aif-total-val{ font-family:var(--font-display); font-size:26px; font-weight:600; color:var(--ink); }
.aif-streak-row{ display:flex; gap:8px; flex-wrap:wrap; margin-top:16px; }
.aif-strip{ display:flex; gap:3px; margin-top:12px; overflow-x:auto; padding-bottom:2px; scrollbar-width:none; }
.aif-strip::-webkit-scrollbar{ display:none; }
.aif-strip-day{ width:8px; height:22px; border-radius:3px; flex-shrink:0; }
.aif-rule-text{ font-size:12px; color:var(--ink-faint); margin-top:12px; line-height:1.5; }

.today-flame{
  margin-left:6px; flex-shrink:0; display:flex; align-items:center; justify-content:center;
  width:22px; height:22px; border-radius:50%; color:var(--ink-faint); cursor:pointer;
}
.today-flame svg{ width:14px; height:14px; }
.today-flame.on{ color:var(--warn); background:var(--warn-soft); }

/* ============ Ciclo de 90 dias ============ */
.cycle-day-n{ font-family:var(--font-display); font-size:20px; font-weight:600; color:var(--ink); }
.cycle-bar{ width:100%; height:10px; background:var(--bar-track); border-radius:999px; margin-top:12px; overflow:hidden; }
.cycle-bar-fill{ height:100%; background:linear-gradient(90deg, var(--accent), var(--accent-strong)); border-radius:999px; }
.cycle-sub{ display:flex; justify-content:space-between; margin-top:6px; font-size:12px; color:var(--ink-faint); font-family:var(--font-mono); }

/* ============ Planos (estrutura reutilizável — a Rota é o primeiro exemplo) ============ */
.plano-countdown-n{ font-family:var(--font-display); font-size:34px; font-weight:600; color:var(--ink); }
.plano-countdown-label{ font-size:12.5px; color:var(--ink-faint); max-width:180px; }
.plano-chips{ display:flex; flex-wrap:wrap; align-items:center; gap:8px; }
.plano-note-box{ background:var(--accent-soft); border:1px solid var(--accent-soft-line); border-radius:var(--radius-m); padding:14px 16px; display:flex; gap:10px; align-items:flex-start; justify-content:space-between; }
.plano-note-text{ font-size:13px; color:var(--ink); margin:0; line-height:1.55; flex:1; }
.plano-fase-group{ margin-bottom:22px; }
.plano-fase-head{ display:flex; align-items:center; gap:6px; margin-bottom:10px; }
.plano-fase-label{ font-family:var(--font-mono); font-size:12px; font-weight:700; letter-spacing:.06em; color:var(--accent-strong); }
.plano-fase-input{ flex:1; border:1px solid var(--line-strong); background:var(--surface-2); border-radius:6px; padding:5px 8px; font-size:12.5px; font-family:var(--font-mono); }
.plano-marco{
  position:relative; background:var(--surface); border:1px solid var(--line); border-radius:var(--radius-m);
  padding:14px 16px; margin-bottom:8px; border-left:3px solid var(--accent);
}
.plano-marco-top{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-bottom:6px; padding-right:22px; }
.plano-marco-tipo{ display:inline-flex; align-items:center; gap:4px; font-size:10.5px; font-weight:700; letter-spacing:.03em; padding:2px 8px; border-radius:999px; }
.plano-marco-tipo svg{ width:11px; height:11px; }
.plano-marco-quando{ font-family:var(--font-mono); font-size:11px; color:var(--ink-faint); }
.plano-marco-titulo{ font-size:14px; font-weight:700; color:var(--ink); }
.plano-marco-detalhe{ font-size:12.5px; color:var(--ink-soft); margin-top:4px; line-height:1.5; }

.overview-plano-block{ margin-bottom:26px; padding-bottom:22px; border-bottom:1px solid var(--line); }
.overview-plano-block:last-child{ border-bottom:none; margin-bottom:0; padding-bottom:0; }
.overview-plano-tag{
  display:inline-block; font-family:var(--font-mono); font-size:11px; font-weight:700; text-transform:uppercase;
  letter-spacing:.05em; color:var(--accent-strong); background:var(--accent-soft); padding:4px 10px; border-radius:999px; margin-bottom:16px;
}

/* ============ Estudos (cronómetro/registo manual + tempo por período) ============ */
.est-timer-card{
  background:var(--surface-2); border:1px solid var(--line); border-radius:var(--radius-m);
  padding:16px; text-align:center;
}
.est-timer-card select, .est-timer-card input[type="text"]{
  border:1px solid var(--line-strong); background:var(--surface); border-radius:var(--radius-s);
  padding:9px 11px; font-size:13.5px; color:var(--ink); font-family:var(--font-body); width:100%;
}
.est-timer-card .row2{ display:grid; grid-template-columns:1fr 1fr; gap:8px; margin-bottom:8px; }
.est-timer-card input[type="text"]{ margin-top:0; }
.est-timer-info{ margin-bottom:10px; }
.est-timer-materia{ font-family:var(--font-display); font-size:16px; font-weight:600; }
.est-timer-tag{ font-family:var(--font-mono); font-size:11px; color:var(--ink-faint); text-transform:uppercase; letter-spacing:.05em; }
.est-timer-conteudo{ font-size:12.5px; color:var(--ink-soft); margin-top:2px; }
.est-timer-clock{ font-family:var(--font-mono); font-size:36px; font-weight:700; color:var(--accent-strong); margin:6px 0 14px; font-feature-settings:"tnum" 1; }

.est-period-tabs{ display:flex; gap:6px; overflow-x:auto; scrollbar-width:none; margin-bottom:10px; }
.est-period-tabs::-webkit-scrollbar{ display:none; }
.est-period-tabs button{
  flex-shrink:0; border:1px solid var(--line); background:var(--surface); color:var(--ink-soft);
  padding:6px 13px; border-radius:999px; font-size:12px; font-weight:600; cursor:pointer;
}
.est-period-tabs button.active{ background:var(--ink); color:var(--paper); border-color:var(--ink); }
.est-period-nav{ display:flex; align-items:center; justify-content:center; gap:10px; }
.est-period-label{ font-family:var(--font-mono); font-size:12.5px; color:var(--ink-soft); }
.est-nav-btn{
  width:28px; height:28px; border-radius:50%; border:1px solid var(--line); background:var(--surface);
  color:var(--ink-soft); display:flex; align-items:center; justify-content:center; cursor:pointer;
}
.est-nav-btn svg{ width:14px; height:14px; }
.est-period-custom{ gap:8px; }
.est-period-custom input{ border:1px solid var(--line-strong); background:var(--surface-2); border-radius:6px; padding:6px 8px; font-size:12.5px; }

.est-bars-total{ font-family:var(--font-mono); font-size:18px; font-weight:700; color:var(--ink); text-align:center; }
.est-bars-total span{ font-size:11px; font-weight:500; color:var(--ink-faint); text-transform:uppercase; letter-spacing:.04em; }
.est-bars-wrap{ overflow-x:auto; scrollbar-width:none; margin-top:12px; }
.est-bars-wrap::-webkit-scrollbar{ display:none; }
.est-bars{ display:flex; align-items:flex-end; gap:7px; padding:0 2px 4px; }
.est-bar-col{ display:flex; flex-direction:column; justify-content:flex-end; align-items:center; flex:0 0 20px; }
.est-bar-stack{ width:16px; display:flex; flex-direction:column-reverse; border-radius:3px 3px 0 0; overflow:hidden; background:var(--surface-2); }
.est-bar-seg{ width:100%; flex-shrink:0; }
.est-bar-label{ font-family:var(--font-mono); font-size:9px; color:var(--ink-faint); margin-top:6px; white-space:nowrap; }
.est-legend{ margin-top:16px; }
.est-legend-row{ display:flex; align-items:center; gap:8px; padding:7px 2px; border-top:1px solid var(--line); font-size:13px; }
.est-legend-row:first-child{ border-top:none; }
.est-legend-row .dot{ width:9px; height:9px; border-radius:50%; flex-shrink:0; }
.est-legend-name{ flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.est-legend-val{ font-family:var(--font-mono); font-weight:600; white-space:nowrap; }
.est-legend-val small{ color:var(--ink-faint); font-weight:500; }

/* ============ Confirmação (substitui o confirm() nativo do browser) ============ */
.confirm-overlay{
  position:fixed; inset:0; background:rgba(20,17,12,.5); z-index:80;
  display:flex; align-items:center; justify-content:center; padding:24px;
  opacity:0; pointer-events:none; transition:opacity .15s ease;
}
.confirm-overlay.open{ opacity:1; pointer-events:auto; }
.confirm-panel{
  background:var(--surface); border-radius:var(--radius-l); padding:22px 22px 18px;
  max-width:340px; width:100%; box-shadow:var(--shadow-3);
  transform:translateY(6px) scale(.97); transition:transform .18s cubic-bezier(.32,.72,0,1);
}
.confirm-overlay.open .confirm-panel{ transform:translateY(0) scale(1); }
.confirm-kicker{
  display:block; font-family:var(--font-mono); font-size:11px; text-transform:uppercase;
  letter-spacing:.08em; color:var(--bad); font-weight:700; margin-bottom:8px;
}
.confirm-title{ font-family:var(--font-display); font-size:17px; font-weight:600; color:var(--ink); line-height:1.4; margin-bottom:18px; }
.confirm-actions{ display:flex; justify-content:flex-end; gap:8px; }
.btn.danger{ background:var(--bad); color:#fff; }
.btn.danger:hover{ background:var(--accent-strong); }

/* Campos consistentes e confortáveis para edição por toque. */
input:not([type="checkbox"]):not([type="radio"]):not([type="file"]), select, textarea{
  min-width:0; max-width:100%; min-height:48px; padding:12px !important;
  border:1px solid var(--line-strong); border-radius:10px !important;
  background:var(--surface-2); color:var(--ink); font-family:var(--font-body, inherit);
  line-height:1.5; box-sizing:border-box;
}
textarea{ min-height:132px !important; resize:vertical; white-space:pre-wrap; }
input:focus-visible, select:focus-visible, textarea:focus-visible, button:focus-visible{
  outline:2px solid var(--accent-strong); outline-offset:3px;
}
.form-actions{ display:flex; flex-wrap:wrap; gap:10px; margin-top:14px !important; }
.form-actions > span{ display:flex; flex-wrap:wrap; gap:10px !important; }
.form-actions .btn, .manage-areas-inline{ min-height:48px; }
.manage-areas-inline{ align-self:flex-start; color:var(--accent-strong); }
.field-label{ display:flex; flex-direction:column; gap:6px; flex:1; min-width:0; font-size:12px; color:var(--ink-soft); font-weight:600; }
.field-label input,.field-label select,.field-label textarea{ width:100% !important; }
.sheet{ max-height:90dvh; overscroll-behavior:contain; scroll-padding-bottom:24px; }
.line-chart{ width:100%; margin:16px 0; }
.line-chart svg{ display:block; width:100%; height:auto; min-height:160px; overflow:visible; }
.line-chart text{ fill:var(--ink-faint); font:12px var(--font-mono); }
.overview-controls{ display:flex; flex-wrap:wrap; justify-content:space-between; gap:10px; }
.overview-controls button{ min-height:44px; }
.overview-stats{ display:flex; gap:16px; flex-wrap:wrap; color:var(--ink-soft); font-size:13px; margin:16px 0; }
.overview-stats strong{ color:var(--ink); font-size:22px; display:block; }
.progress-calendar{ display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:5px; }
.calendar-weekday{ text-align:center; font-size:11px; color:var(--ink-faint); padding:8px 0; }
.calendar-day{ border:1px solid var(--line); border-radius:10px; min-height:56px; background:var(--surface); color:var(--ink); display:flex; flex-direction:column; align-items:center; justify-content:center; gap:4px; cursor:pointer; }
.calendar-day small{ font-size:10px; color:var(--ink-soft); }
.calendar-day.has-records{ background:var(--good-soft); }
.calendar-day.selected{ outline:2px solid var(--accent-strong); outline-offset:0; }
.calendar-day.is-today > span{ font-weight:800; text-decoration:underline; text-underline-offset:3px; }
.habit-scroll{ overflow:auto; max-height:420px; margin:16px 0; }
.habit-table{ border-collapse:separate; border-spacing:3px; font-size:12px; width:max-content; min-width:100%; }
.habit-table caption{ text-align:left; color:var(--ink-faint); padding:8px 0; }
.habit-table th:first-child{ position:sticky; left:0; background:var(--surface); z-index:1; width:130px; max-width:130px; white-space:normal; text-align:left; padding:8px; }
.habit-table td{ text-align:center; min-width:32px; height:36px; border-radius:5px; background:var(--surface-2); color:var(--ink-faint); }
.habit-table td.habit-done{ background:var(--good-soft); color:var(--ink); }
.habit-table button{ min-width:36px; min-height:44px; border:0; background:transparent; color:var(--ink); cursor:pointer; }
.progress-day-detail{ margin-top:20px; padding:16px; border:1px solid var(--line); border-radius:14px; background:var(--surface); }
.progress-day-detail h3{ font-size:16px; }
.progress-day-detail ul{ list-style:none; padding:0; margin:12px 0 0; }
.progress-day-detail li{ display:flex; align-items:flex-start; gap:10px; padding:10px 0; border-top:1px solid var(--line); font-size:14px; }
.progress-day-detail small{ display:block; font-size:12px; color:var(--ink-faint); margin-top:4px; }
.progress-day-detail .completed{ color:var(--good); }
.overview-note{ font-size:12px; color:var(--ink-faint); line-height:1.6; margin-top:14px; }
@media(max-width:600px){
  .activity-edit-form .row2,.activity-edit-form .row2even{ grid-template-columns:minmax(0,1fr); gap:14px; }
  .activity-edit-form{ gap:14px; }
  .sheet{ padding-left:16px; padding-right:16px; }
  .sheet-row{ flex-wrap:wrap; }
  .editing-row > td > div{ max-width:100% !important; }
  .editing-row div:has(> input), .editing-row div:has(> .field-label), .mealcard div:has(> input), .mealcard div:has(> .field-label){ flex-direction:column; gap:12px !important; }
  .form-actions{ justify-content:flex-end !important; }
  .form-actions > span{ flex:1; }
  .form-actions .btn{ flex:1; padding:12px; }
  .mealcard table,.mealcard tbody{ display:block; width:100%; }
  .mealcard tr{ display:grid; grid-template-columns:85px minmax(0,1fr); border-bottom:1px solid var(--line); padding:12px 16px; }
  .mealcard td{ border:0; width:auto !important; padding:3px 0; white-space:normal !important; }
  .mealcard td:nth-child(3){ grid-column:1/-1; margin-top:8px; }
  .mealcard tr.editing-row,.mealcard tr[data-act="addrow"]{ display:block; }
  .mealcard tr.editing-row td{ display:block; padding:0 !important; }
  .tbl-scroll:has(.editing-row) table{ min-width:0; width:100%; }
  .tbl-scroll:has(.editing-row) tr.editing-row input{ width:100% !important; }
  .color-swatch{ min-width:32px; min-height:32px; }
  .cat-edit-row .mx{ padding:12px; }
}
.habit-table th small{ display:block; font-weight:400; color:var(--ink-faint); font-size:10px; margin-top:4px; }
.progress-shortcut{ display:flex; justify-content:center; align-items:center; min-height:48px; margin:0 0 18px; text-align:center; text-decoration:none; }
#progressOverview{ scroll-margin-top:90px; }
@media(max-width:600px){
  .est-period-custom .field-label{ width:100%; flex-basis:100%; }
  .est-period-custom{ flex-wrap:wrap; }
}
@media(max-width:600px){
  .tbl-scroll:has(.editing-row) table.week,.tbl-scroll:has(.editing-row) table.week tbody{ display:block; width:100%; }
  .tbl-scroll:has(.editing-row) table.week thead{ display:none; }
  .tbl-scroll:has(.editing-row) table.week tr{ display:flex; flex-wrap:wrap; border-bottom:1px solid var(--line); }
  .tbl-scroll:has(.editing-row) table.week td{ white-space:normal; width:auto; border:0; flex:1 1 90px; }
  .tbl-scroll:has(.editing-row) table.week tr.editing-row{ display:block; }
  .tbl-scroll:has(.editing-row) table.week tr.editing-row td{ display:block; width:100%; }
}
/* Seletor próprio: gerir áreas no mesmo espaço em que são escolhidas. */
.activity-edit-form .row2:has(.area-field){ grid-template-columns:minmax(0,1fr); }
.area-field-label{ display:block; font-size:12px; font-weight:600; color:var(--ink-soft); margin-bottom:6px; }
.area-picker-trigger{ display:flex; align-items:center; gap:10px; width:100%; min-height:48px; text-align:left; padding:12px; border:1px solid var(--line-strong); border-radius:10px; background:var(--surface-2); color:var(--ink); font:inherit; cursor:pointer; }
.area-picker-trigger span:nth-child(2){ flex:1; overflow-wrap:anywhere; }
.area-picker{ margin-top:10px; border:1px solid var(--line-strong); border-radius:14px; background:var(--surface); padding:12px; }
.area-picker-hint{ color:var(--ink-faint); font-size:12px; margin:0 0 10px; }
.area-choice-row{ display:flex; align-items:center; gap:6px; padding:6px 0; border-bottom:1px solid var(--line); }
.area-choice{ flex:1; min-width:0; display:flex; align-items:center; gap:9px; min-height:48px; background:transparent; border:0; color:var(--ink); text-align:left; font:inherit; padding:8px 4px; cursor:pointer; }
.area-choice span:nth-child(2){ flex:1; overflow-wrap:anywhere; }
.area-choice[aria-pressed="true"]{ color:var(--accent-strong); font-weight:700; }
.area-choice-row .ar-icon-btn{ width:44px; height:44px; flex-shrink:0; }
.area-rename-form{ width:100%; }
.area-create{ display:flex; flex-direction:column; gap:10px; margin-top:16px; }
.area-create .btn,.area-picker-close{ min-height:48px; }
.area-picker-close{ width:100%; margin-top:12px; }

/* Mobile: hierarquia clara, ações ao alcance e cor com propósito. */
html{ scroll-padding-top:88px; }
body{ background:var(--paper); }
h1,h2,h3,h4{ font-weight:750; letter-spacing:-.035em; line-height:1.25; }
.wrap{ padding:0 16px; }
.topbar{ background:color-mix(in srgb,var(--paper) 94%,transparent); }
.topbar-inner{ min-height:72px; padding:12px 16px; }
.topbar .brand .name{ font-size:21px; font-weight:800; letter-spacing:-.055em; }
.topbar .brand .mark{ width:32px; height:32px; }
.topbar .page-title{ font-family:var(--font-body); text-transform:none; letter-spacing:0; font-size:13px; font-weight:650; }
.iconbtn,.ar-icon-btn{ width:44px; height:44px; min-width:44px; flex-shrink:0; }
.ar-icon-btn svg,.iconbtn svg{ width:20px; height:20px; }
.btn{ min-height:48px; border-radius:12px; font-weight:700; background:var(--brand); color:#fff; padding:12px 18px; box-shadow:0 3px 10px rgba(36,88,230,.16); }
.btn:hover{ background:#1843BE; }
.btn.ghost{ background:var(--surface); color:var(--accent-strong); border:1px solid var(--line-strong); box-shadow:none; }
.btn.ghost:hover{ background:var(--accent-soft); }
.btn.danger{ background:var(--danger-solid); color:#fff; }
.hero{ padding:22px 18px 18px; margin:18px 0 0; background:linear-gradient(135deg,var(--accent-soft),var(--cat-lang-soft)); border:1px solid var(--accent-soft-line); border-radius:24px; }
.hero .greet{ display:block; font-family:var(--font-body); font-size:12px; font-weight:600; color:var(--ink-soft); margin-bottom:10px; }
.hero h1{ font-size:clamp(24px,6.5vw,30px); font-weight:800; line-height:1.15; }
.hero-subtitle{ font-size:14px; color:var(--ink-soft); margin-top:10px; }
.day-progress{ margin-top:20px; }
.day-progress strong{ font-size:13px; font-weight:650; }
.day-progress-track{ height:7px; border-radius:99px; background:var(--bar-track); margin-top:9px; overflow:hidden; }
.day-progress-track span{ display:block; height:100%; background:linear-gradient(90deg,var(--brand),var(--cat-fit)); border-radius:inherit; transition:width .25s; }
.hero .streak-row{ margin-top:14px; gap:6px; }
.hero .streak-chip{ font-size:11px; padding:7px 10px; border:0; box-shadow:none; }
.ring-grid{ gap:10px; margin-top:16px; }
.ring-card{ padding:14px 12px; border-radius:18px; min-width:0; gap:10px; }
.ring-card .rc-top{ gap:6px; }
.ring-card .rc-label{ font-size:14px; }
.ring-card svg{ width:40px; height:40px; flex-shrink:0; }
.ring-card .rc-sub{ font-size:12px; line-height:1.5; color:var(--ink-soft); }
.progress-shortcut{ margin-top:14px; font-size:13px; border-radius:14px; }
section.blk{ padding:26px 0 8px; }
.blk-head h2{ font-size:23px; }
.blk-head .kicker{ font-family:var(--font-body); font-size:11px; letter-spacing:.09em; color:var(--accent-strong); }
.period-card{ padding:18px; border-radius:22px; background:linear-gradient(120deg,var(--brand),var(--brand-end)); color:#fff; box-shadow:0 8px 24px rgba(36,88,230,.18); }
.period-card-head{ display:flex; gap:12px; align-items:center; justify-content:space-between; }
.period-card-head .kicker{ font:600 11px var(--font-body); text-transform:uppercase; letter-spacing:.09em; overflow-wrap:anywhere; }
.period-card .ar-icon-btn{ border:1px solid rgba(255,255,255,.3); color:#fff; background:rgba(255,255,255,.08); border-radius:12px; }
.period-card .period-title{ color:#fff; font-size:clamp(22px,5.8vw,28px); font-weight:800; margin-top:10px; }
.period-subtitle{ font-size:13px; margin-top:10px; color:#ECF2FF; }
.period-card .cycle-bar{ background:rgba(255,255,255,.22); height:8px; margin-top:18px; }
.period-card .cycle-bar-fill{ background:#62E9D7; }
.period-card .cycle-sub{ color:#F1F5FF; font-family:var(--font-body); gap:12px; font-size:11px; }
.period-card .cycle-sub span:last-child{ text-align:right; }
.period-editor{ display:flex; flex-direction:column; gap:16px; padding:18px; border:1px solid var(--line); border-radius:20px; background:var(--surface); }
.period-editor .row2even{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
.period-editor .form-actions{ margin-top:0 !important; }
.today-item{ min-height:82px; padding:16px; gap:12px; border-radius:18px; box-shadow:none; align-items:flex-start; }
.today-item.done{ border:1px solid color-mix(in srgb,var(--good) 25%,transparent); }
.today-check{ width:36px; height:36px; padding:0; margin-top:2px; }
.today-check.on,.done-check.on{ background:var(--fit-solid); border-color:var(--fit-solid); }
.today-txt{ min-width:0; flex:1; }
.today-txt .tt{ font-size:15px; line-height:1.5; overflow-wrap:anywhere; }
.today-txt .ts{ font-size:12px; line-height:1.6; gap:8px; color:var(--ink-soft); }
.today-item.done .tt{ color:var(--ink-soft); }
.today-flame{ border:1px solid var(--line); min-width:40px; min-height:44px; padding:10px; color:var(--ink-soft); }
.today-count{ display:inline-block; padding:4px 9px; background:var(--accent-soft); color:var(--accent-strong); font-size:12px; font-weight:700; border-radius:8px; margin-top:8px; }
.area-tag{ padding:4px 9px; font-size:11px; background:var(--surface-2); border-radius:7px; }
.dashboard-insights{ margin-top:24px; border:1px solid var(--line); border-radius:20px; background:var(--surface); padding:16px; }
.dashboard-insights > summary{ cursor:pointer; list-style:none; font-size:16px; font-weight:700; min-height:48px; display:flex; flex-direction:column; gap:6px; position:relative; padding-right:22px; }
.dashboard-insights > summary::after{ content:'+'; position:absolute; right:0; font-size:22px; color:var(--accent-strong); }
.dashboard-insights[open] > summary::after{ content:'−'; }
.dashboard-insights > summary small{ font-size:12px; color:var(--ink-soft); font-weight:400; }
.dashboard-insights > summary::-webkit-details-marker{ display:none; }
.dashboard-insights section.blk{ padding-top:16px; }
.aif-scoring-note{ margin-top:12px; font-size:12px; color:var(--ink-soft); padding-top:10px; border-top:1px solid var(--line); }
.stats{ gap:10px; }
.stat{ border-radius:16px; padding:14px; }
.stat .v{ font-family:var(--font-body); font-weight:750; }
.hcard,.plano-list-card{ border-radius:18px; padding:18px 16px; gap:14px; min-height:90px; box-shadow:none; }
.hcard .hname,.plano-list-title{ font-size:16px; font-weight:750; }
.hcard .hsum,.plano-list-desc{ font-size:13px; white-space:normal; line-height:1.6; }
.plano-list-progress{ color:var(--accent-strong); font-size:12px; font-weight:700; margin-top:8px; }
.mini-progress{ display:block; height:5px; background:var(--bar-track); border-radius:99px; overflow:hidden; margin-top:8px; }
.mini-progress > span{ display:block; height:100%; background:linear-gradient(90deg,var(--brand),var(--cat-fit)); border-radius:inherit; }
.plano-marco{ border-radius:0 16px 16px 0; padding:16px; margin-top:12px; background:var(--surface); }
.plano-marco-titulo{ font-size:15px; line-height:1.5; }
.plano-marco-detalhe,.plano-note-text{ font-size:14px; line-height:1.75; }
.plano-marco-quando{ font-family:var(--font-body); font-size:12px; }
.protocolo-card{ background:linear-gradient(140deg,#183B8B,#302168); border-radius:22px; }
.protocolo-card textarea.pc-edit,.meta-edit-row input{ color:var(--ink); }
.res-badge,.sched-head,.mealcard .head,.month-head{ background:var(--brand) !important; color:#fff; }
.sched-card:nth-child(2n) .sched-head,.mealcard:nth-child(2n) .head{ background:var(--fit-solid) !important; }
.month-block:nth-of-type(2n) .month-head{ background:var(--lang-solid) !important; }
.mealcard .head h3,.sched-head h3{ color:#fff; }
.mealcard .head{ padding:16px; }
.mealcard td,.proto p,.foods-box li,.rules li{ font-size:14px; line-height:1.7; }
.subtabs{ gap:8px; }
.subtabs button,.est-period-tabs button{ min-height:44px; padding:10px 16px; font-size:13px; font-family:var(--font-body); }
.subtabs button{ background:var(--surface); border-radius:12px; border:1px solid var(--line); }
.est-period-tabs{ gap:7px; padding-bottom:6px; }
.est-period-tabs button.active,.seg button.active{ background:var(--brand); color:#fff; box-shadow:none; }
.seg{ padding:4px; border-radius:14px; }
.seg button{ border-radius:10px; min-height:44px; font-size:12px; }
.est-nav-btn{ min-width:44px; min-height:44px; }
.est-period-label{ font-family:var(--font-body); font-size:13px; line-height:1.4; }
.line-chart{ padding:12px 8px; background:var(--surface); border:1px solid var(--line); border-radius:18px; }
.line-chart text{ font-family:var(--font-body); font-size:13px; }
.calendar-day{ min-height:54px; border-radius:12px; }
.calendar-day.has-records{ border-color:color-mix(in srgb,var(--cat-fit) 40%,var(--line)); }
.calendar-day.selected{ outline:2px solid var(--brand); }
.calendar-day small{ color:var(--ink-soft); }
.tabbar{ box-shadow:0 -4px 24px rgba(12,20,39,.08); }
.tabbar-inner{ padding:6px 8px; gap:4px; }
.tabbtn{ border-radius:15px; gap:4px; min-width:0; }
.tabbtn.active{ color:var(--accent-strong); background:var(--accent-soft); }
.tabbtn svg{ width:23px; height:23px; }
.tabbtn span{ font-size:11px; max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.fab-quickadd{ background:var(--brand); width:56px; height:56px; border-radius:18px; box-shadow:0 8px 20px rgba(36,88,230,.3); bottom:calc(var(--tabbar-h) + var(--safe-b) + 18px); }
.sheet{ padding:12px 16px calc(24px + var(--safe-b)); border-radius:26px 26px 0 0; max-height:88dvh; scroll-padding:18px; }
.sheet h3{ margin:0; font-size:19px; }
.sheet .grabber{ margin-bottom:16px; }
.sheet-row{ padding:18px 0; }
.sheet-row .sl{ font-size:15px; }
.sheet-row .ss{ font-size:13px; line-height:1.5; }
input:not([type="hidden"]),select,textarea{ border-radius:12px !important; }
.field-label{ font-size:13px; color:var(--ink-soft); }
input:focus-visible,select:focus-visible,textarea:focus-visible,button:focus-visible{ outline-color:var(--accent); }
.toast{ white-space:normal; width:max-content; max-width:calc(100vw - 32px); text-align:center; font-size:13px; }
.done-check{ min-width:36px; width:36px; height:36px; padding:0; }
.done-check:disabled{ opacity:.45; cursor:not-allowed; background:var(--surface-2); }
.daytype-badge{ padding:7px 10px; font-family:var(--font-body); font-size:11px; }
button,a,input,select,textarea{ -webkit-tap-highlight-color:transparent; }
button:active:not(:disabled){ transform:scale(.98); }
@media(max-width:600px){
  .period-editor .row2even{ grid-template-columns:minmax(0,1fr); }
  .overview-controls{ gap:8px; }
  .overview-controls .seg{ flex:1; justify-content:center; }
  .overview-controls .seg button{ flex:1; padding:8px 9px; }
  .detail-head{ gap:10px; }
  .detail-head h2{ font-size:19px; flex:1; min-width:0; overflow-wrap:anywhere; }
  .today-item .del{ min-width:36px; padding:10px; margin:0; }
  .tbl-scroll:has(table.week){ overflow:visible; border:0; box-shadow:none; background:transparent; }
  table.week,table.week tbody{ display:block !important; min-width:0 !important; width:100% !important; }
  table.week thead{ display:none; }
  table.week tr{ display:grid !important; grid-template-columns:40px minmax(0,1fr) auto; gap:5px 10px; padding:16px; background:var(--surface); border:1px solid var(--line); border-radius:18px; margin-bottom:10px; }
  table.week tr.today{ border-color:var(--accent-soft-line); background:var(--accent-soft); }
  table.week td{ padding:0 !important; border:0 !important; width:auto !important; white-space:normal !important; font-size:14px; line-height:1.6; min-width:0; }
  table.week td:first-child{ grid-column:1; grid-row:1 / span 3; }
  table.week td.day{ grid-column:2; grid-row:1; font-size:12px; color:var(--ink-soft); }
  #fitTraining td.time{ grid-column:3; grid-row:1; font:11px var(--font-body); padding-top:2px !important; }
  #fitTraining td:nth-child(4),#workList table.week td:nth-child(3){ grid-column:2 / -1; grid-row:2; }
  #fitTraining td:nth-child(5),#workList table.week td:nth-child(4){ grid-column:2 / -1; grid-row:3; }
  table.week tr.editing-row{ display:block !important; }
  table.week tr.editing-row td{ display:block; grid-column:auto; grid-row:auto; }
  .mealcard tr{ padding:16px; }
  .mealcard td.mname{ font-size:15px; }
  .form-actions .btn{ font-size:13px; }
  .sheet-row .seg{ width:100%; }
  .sheet-row .seg button{ flex:1; }
  .meta-edit-row > span{ width:100%; flex-wrap:wrap; }
  .meta-edit-row > span .field-label{ flex:1 1 100px; }
}
@media(prefers-reduced-motion:reduce){button:active:not(:disabled){transform:none;} .day-progress-track span{transition:none;}}
.weekly-date{ display:block; font:11px var(--font-body); color:var(--ink-soft); font-weight:400; margin-top:3px; }
.weekly-detail{ display:flex; gap:10px; justify-content:space-between; align-items:flex-start; }
.weekly-detail > span{ min-width:0; overflow-wrap:anywhere; }
.weekly-detail .ar-icon-btn{ background:var(--surface); border:1px solid var(--line); border-radius:10px; }
span.mx[role="button"],span.del[role="button"]{ min-width:44px; min-height:44px; display:inline-flex; align-items:center; justify-content:center; }
.vocab-list label{ min-height:44px; align-items:center; font-size:14px; }
.vocab-list input[type="checkbox"]{ accent-color:var(--brand); flex-shrink:0; }
.detail-head{ top:calc(var(--safe-t) + 72px); margin:0 -16px; padding:14px 16px; }
.backbtn{ width:44px; height:44px; }
.cardedit{ min-width:44px; min-height:44px; }
.day-picker button,.chip-add-btn,.pc-add-meta,.btn-add-activity{ min-height:44px; }
.day-picker button.active{ background:var(--brand); color:#fff; border-color:var(--brand); }
.protocolo-card .pc-eyebrow{ color:#AEC6FF; }
.proto h3{ font-size:15px; }
.overview-note,.page-footer{ color:var(--ink-soft); }
@media(max-width:600px){
  .hero{ padding:18px 16px 16px; }
  .hero .greet{ margin-bottom:8px; }
  .hero h1{ font-size:25px; }
  .hero-subtitle{ font-size:13px; margin-top:8px; }
  .day-progress{ margin-top:14px; }
  .hero .streak-row{ margin-top:12px; }
  .ring-grid{ margin-top:12px; }
  .ring-card{ padding:12px; gap:8px; }
  .ring-card svg{ width:32px; height:32px; }
  .period-card{ padding:16px; }
  .period-card .period-title{ margin-top:6px; }
  .period-subtitle{ margin-top:6px; }
  .period-card .cycle-bar{ margin-top:14px; }
  .progress-shortcut{ white-space:normal; padding-right:76px; }
}
.color-swatch{ width:44px; height:44px; min-width:44px; min-height:44px; }
.topbar .page-title{ min-width:0; flex:1; max-width:120px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; text-align:center; }
.area-tag{ max-width:100%; overflow-wrap:anywhere; white-space:normal; }
.today-item .ts > span{ min-width:0; max-width:100%; overflow-wrap:anywhere; }
.plano-list-title,.hcard .hname{ overflow-wrap:anywhere; }
.period-card .cycle-sub{ align-items:flex-start; }
.period-card .cycle-sub span:last-child{ max-width:70%; }
.native-features{ display:flex; flex-direction:column; gap:14px; padding:18px; margin:16px 0; border:1px solid var(--accent-soft-line); background:var(--accent-soft); border-radius:20px; }
.native-features h4{ font-size:17px; margin:4px 0 8px; }
.native-features p{ font-size:13px; line-height:1.6; color:var(--ink-soft); }
.native-features .kicker{ font-size:11px; font-weight:700; color:var(--accent-strong); text-transform:uppercase; letter-spacing:.06em; }
.native-features .native-note{ font-size:12px; }
.native-features .btn{ white-space:normal; }
.native-widget{ border-top:1px solid var(--accent-soft-line); padding-top:16px; }
.native-widget .btn{ width:100%; margin-top:12px; }
.today-item.native-activity-focus{outline:2px solid var(--accent);outline-offset:3px;}
.activity-copy-panel:not([hidden]){display:grid;gap:12px;padding:16px;margin:12px 0;background:var(--surface-2);border:1px solid var(--line);border-radius:16px;}
.activity-copy-panel p{margin:0;}
.activity-copy-all,.activity-copy-option{display:flex;align-items:center;gap:14px;min-height:48px;cursor:pointer;}
.activity-copy-option{padding:12px 4px;border-bottom:1px solid var(--line);}
.activity-copy-option span{min-width:0;overflow-wrap:anywhere;}
.activity-copy-option strong,.activity-copy-option small{display:block;}
.activity-copy-option small{margin-top:4px;color:var(--ink-faint);}
.activity-copy-option input,.activity-copy-all input{width:22px;height:22px;flex-shrink:0;accent-color:var(--accent);}

/* Cores das áreas e marcação conjunta do Protocolo. */
.area-vivid{background:color-mix(in srgb,var(--area-color) 18%,var(--surface));border:1px solid color-mix(in srgb,var(--area-color) 55%,transparent);}
.area-vivid .area-dot{width:10px;height:10px;box-shadow:0 0 8px color-mix(in srgb,var(--area-color) 40%,transparent);flex-shrink:0;}
#aifRings{grid-template-columns:minmax(0,1fr);}
.principles-card{display:flex;align-items:center;gap:14px;padding:18px;border:1px solid var(--line);border-radius:16px;background:linear-gradient(120deg,var(--cat-lang-soft),var(--cat-fit-soft));}
.principles-card>svg{width:40px;height:40px;flex-shrink:0;color:var(--cat-lang);}
.principles-card strong{font-size:15px;line-height:1.6;}
.principles-card p{font-size:13px;color:var(--ink-soft);margin:5px 0 0;}
.today-flame.on{color:var(--cat-lang);background:var(--cat-lang-soft);border-color:var(--cat-lang);}

.training-areas{margin:12px 0 16px;padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:var(--surface);}
.training-areas summary{min-height:44px;display:flex;align-items:center;cursor:pointer;font-size:14px;font-weight:600;color:var(--accent-strong);}
.training-areas p{font-size:13px;line-height:1.6;color:var(--ink-soft);margin:4px 0 10px;}
.training-area-options{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px;}
.training-area-option{display:flex;align-items:center;gap:9px;min-height:48px;padding:8px;border:1px solid var(--line);border-radius:10px;font-size:14px;overflow-wrap:anywhere;cursor:pointer;}
.training-area-option input[type="checkbox"]{width:22px!important;min-height:22px;height:22px;padding:0!important;flex-shrink:0;accent-color:var(--fit-solid);}

.activity-drag-handle{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;min-width:40px;width:40px;height:44px;border:1px solid var(--line);border-radius:12px;background:var(--surface-2);color:var(--ink-soft);font-size:25px;cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;}
.activity-drag-handle:active{cursor:grabbing;}
.is-reordering{position:relative;z-index:5;outline:2px solid var(--accent);box-shadow:var(--shadow-2);opacity:.85;}
.activity-order-controls{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;margin:10px 0;font-size:12px;color:var(--ink-soft);}
.activity-order-controls .btn{min-height:40px;padding:8px 12px;font-size:12px;}
#workList td:first-child .activity-drag-handle{margin-top:6px;}

.plan-document{font-size:15px;line-height:1.75;overflow-wrap:anywhere;}
.plan-document h3{font-size:20px;line-height:1.45;margin:28px 0 14px;color:var(--accent-strong);}
.plan-document h3:first-child{margin-top:0;}
.plan-document p{margin:0 0 16px;white-space:pre-wrap;}
.plan-document ul{padding-left:22px;margin:0 0 14px;}
.plan-document-table{overflow-x:auto;margin:18px 0 24px;border:1px solid var(--line);border-radius:12px;}
.plan-document-table table{width:100%;min-width:560px;border-collapse:collapse;}
.plan-document-table th,.plan-document-table td{padding:12px;text-align:left;vertical-align:top;border-bottom:1px solid var(--line);white-space:normal;}
.plan-document-table th{background:var(--accent-soft);font-size:13px;}
.plan-document-table td{font-size:14px;}

/* Rota China: fases coloridas, entregas e checklists. */
.route-document{display:grid;gap:20px;}
.route-block{min-width:0;background:var(--surface);border:1px solid color-mix(in srgb,var(--route-color) 30%,var(--line));border-top:4px solid var(--route-color);border-radius:20px;padding:20px 16px;box-shadow:var(--shadow-1);}
.route-hero{background:linear-gradient(140deg,var(--accent-soft),var(--cat-lang-soft));border-top:0;padding:24px 18px;}
.route-block-heading{display:flex;align-items:flex-start;gap:12px;margin-bottom:18px;}
.route-document .route-block-heading h3{flex:1;margin:0;font-size:19px;line-height:1.5;color:var(--route-color);}
.route-document .route-hero h3{font-size:23px;color:var(--ink);}
.route-section-count{flex-shrink:0;font-size:12px;font-weight:700;border-radius:999px;padding:5px 9px;background:color-mix(in srgb,var(--route-color) 12%,var(--surface));color:var(--ink-soft);}
.route-document .route-paragraph{margin:16px 0;color:var(--ink-soft);font-size:14px;line-height:1.8;}
.route-badge{display:inline-block;padding:7px 11px;margin:0 6px 12px 0;border:1px solid color-mix(in srgb,var(--route-color) 35%,transparent);border-radius:999px;background:color-mix(in srgb,var(--route-color) 10%,var(--surface));color:var(--ink);font-size:12px;font-weight:600;}
.route-task{margin:12px 0;padding:15px 13px;border:1px solid var(--line);border-radius:14px;background:var(--surface);transition:background .15s,border-color .15s;}
.route-task.done{border-color:var(--cat-fit);background:var(--cat-fit-soft);}
.route-task-label{display:flex;align-items:flex-start;gap:12px;min-height:44px;cursor:pointer;}
.route-task-label input[type="checkbox"]{width:24px!important;height:24px;min-height:24px;margin:2px 0 0;padding:0!important;flex-shrink:0;accent-color:var(--route-color);cursor:pointer;}
.route-task-title{min-width:0;font-size:15px;font-weight:650;line-height:1.65;color:var(--ink);}
.route-task.done .route-task-title{text-decoration:line-through;text-decoration-thickness:1px;}
.route-document .route-task-body{margin:4px 0 0 36px;font-size:13px;line-height:1.8;color:var(--ink-soft);}
.route-task-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:14px;margin-top:14px;}
.route-delivery{min-width:0;padding:14px;background:var(--surface-2);border:1px solid var(--line);border-radius:16px;}
.route-date{display:flex;flex-direction:column;gap:4px;margin-bottom:12px;}
.route-date span,.route-field-label,.route-result>span{font-size:11px;color:var(--ink-soft);font-weight:600;}
.route-date strong{font-size:15px;color:var(--route-color);}
.route-delivery .route-task{margin:7px 0 0;padding:12px;}
.route-result{margin:12px 0 0 36px;padding-top:10px;border-top:1px solid var(--line);}
.route-document .route-result p{font-size:13px;line-height:1.7;margin:4px 0 0;color:var(--ink-soft);}
.route-mission-progress,.route-overall{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin-top:20px;padding:14px;background:color-mix(in srgb,var(--route-color) 10%,var(--surface));border-radius:12px;font-size:13px;}
.route-overall progress{width:100%;height:10px;accent-color:var(--accent);border:0;border-radius:999px;overflow:hidden;}
.route-overall progress::-webkit-progress-bar{background:var(--bar-track);border-radius:999px;}
.route-overall progress::-webkit-progress-value{background:linear-gradient(90deg,var(--accent),var(--cat-lang));border-radius:999px;}

/* Rota semanal: ano → mês → página de missão, sem cortar o conteúdo. */
.weekly-route{display:grid;gap:18px;min-width:0;overflow-wrap:anywhere;}
.weekly-hero{padding:22px 18px;border:1px solid var(--accent-soft-line);border-radius:20px;background:linear-gradient(135deg,var(--accent-soft),var(--cat-lang-soft));}
.weekly-hero h1{font-size:21px;line-height:1.5;margin:0 0 18px;color:var(--ink);}
.weekly-overall{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px;font-size:14px;}
.weekly-overall progress{width:100%;height:10px;accent-color:var(--accent);}
.weekly-intro{margin:18px 0;}
.weekly-intro summary{font-size:13px;line-height:1.6;cursor:pointer;font-weight:650;color:var(--accent-strong);}
.weekly-intro p{font-size:14px;line-height:1.85;white-space:pre-wrap;margin:14px 0;color:var(--ink-soft);}
.weekly-folders{display:grid;gap:15px;}
.weekly-year{padding:12px;border:1px solid var(--line);border-top:4px solid var(--cat-lang);border-radius:18px;background:var(--surface);}
.weekly-year>summary,.weekly-month>summary{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:48px;cursor:pointer;list-style:none;font-size:16px;font-weight:700;color:var(--ink);}
.weekly-year>summary::-webkit-details-marker,.weekly-month>summary::-webkit-details-marker{display:none;}
.weekly-year>summary strong,.weekly-month>summary strong{font-size:12px;padding:5px 9px;border-radius:99px;background:var(--cat-lang-soft);color:var(--ink-soft);flex-shrink:0;}
.weekly-month{margin:12px 0 0;padding:10px;border:1px solid var(--line);border-left:3px solid var(--cat-fit);border-radius:12px;background:var(--surface-2);}
.weekly-month>summary{font-size:14px;}
.weekly-month-list{display:grid;gap:9px;padding:10px 0 0;}
.weekly-mission-row{display:flex;align-items:flex-start;gap:10px;padding:12px 10px;border:1px solid var(--line);border-radius:12px;background:var(--surface);scroll-margin-top:180px;scroll-margin-bottom:90px;}
.weekly-mission-row.done{background:var(--cat-fit-soft);border-color:var(--cat-fit);}
.weekly-mission-row button{border:0;background:none;color:var(--ink);min-width:0;padding:0;text-align:left;cursor:pointer;font-family:inherit;flex:1;min-height:44px;}
.weekly-mission-row button span{display:block;font-size:11px;line-height:1.7;color:var(--ink-soft);margin-bottom:5px;}
.weekly-mission-row button strong{display:block;font-size:14px;line-height:1.65;}
.weekly-route input[type="checkbox"]{width:24px!important;height:24px;min-height:24px;flex-shrink:0;margin:4px 0 0;padding:0!important;accent-color:var(--cat-fit);cursor:pointer;}
.weekly-mission-row.done button strong{text-decoration:line-through;}
.weekly-breadcrumb{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:12px;line-height:1.7;color:var(--ink-soft);}
.weekly-breadcrumb button{border:0;background:none;color:var(--accent-strong);font:inherit;font-weight:650;padding:8px 0;cursor:pointer;}
.weekly-mission-completion{display:flex;align-items:flex-start;gap:10px;padding:13px;border:1px solid var(--line);border-radius:12px;background:var(--surface);}
.weekly-mission-completion strong{flex:1;font-size:13px;line-height:1.7;}
.weekly-mission-completion.done{border-color:var(--cat-fit);background:var(--cat-fit-soft);}
.weekly-mission-completion>span{font-size:12px;white-space:nowrap;}
.weekly-field{padding:20px 16px;border:1px solid var(--line);border-top:4px solid var(--accent);border-radius:18px;background:var(--surface);}
.weekly-field.options{border-top-color:var(--cat-lang);}
.weekly-field.proof{border-top-color:var(--cat-fit);}
.weekly-field.done{background:var(--cat-fit-soft);}
.weekly-field-label{display:flex;align-items:flex-start;gap:12px;min-height:44px;cursor:pointer;}
.weekly-field-label strong,.weekly-field h2{font-size:14px;line-height:1.7;margin:0;color:var(--ink);}
.weekly-field p{font-size:15px;line-height:1.85;margin:10px 0 0;color:var(--ink-soft);white-space:pre-wrap;}
.weekly-journal{display:grid;gap:18px;padding:20px 16px;border:1px solid var(--line);border-top:4px solid var(--cat-lang);border-radius:18px;background:var(--surface);}
.weekly-journal textarea{width:100%;min-height:150px;padding:12px;font:14px/1.8 var(--font-body);border:1px solid var(--line-strong);border-radius:12px;background:var(--surface-2);color:var(--ink);resize:vertical;scroll-margin-top:180px;scroll-margin-bottom:100px;}
.weekly-save-state{font-size:12px;color:var(--cat-fit);min-height:18px;}
.weekly-navigation{display:flex;flex-wrap:wrap;gap:10px;justify-content:space-between;padding-bottom:16px;}
.weekly-navigation .btn{flex:1;min-width:85px;}
