/* Shape 30 — componentes v3 "Folha de calendário". Tudo deriva de tokens.css */
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:400 var(--fs-b)/1.5 var(--f);-webkit-font-smoothing:antialiased}
button,input,select{font:inherit;color:inherit}
button{cursor:pointer}
:focus-visible{outline:3px solid var(--forest);outline-offset:2px;border-radius:8px}
[hidden]{display:none!important}
.num{font-variant-numeric:tabular-nums}

.app{max-width:var(--col);margin:0 auto;padding-left:max(var(--s4),env(safe-area-inset-left,0px));padding-right:max(var(--s4),env(safe-area-inset-right,0px));padding-top:calc(env(safe-area-inset-top,0px) + var(--s4));padding-bottom:calc(var(--tab-h) + env(safe-area-inset-bottom,0px) + 100px)}
.view{display:flex;flex-direction:column;gap:var(--s5)}

/* títulos fortes: verde do "30" no claro, texto claro no escuro */
.strong-title{color:var(--forest-deep)}
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]) .strong-title{color:var(--ink)} }
:root[data-theme="dark"] .strong-title{color:var(--ink)}

/* ---------- topo com a marca ---------- */
.brandbar{display:flex;align-items:center;gap:var(--s3)}
.brandbar img{width:44px;height:44px}
.brandbar b{font:800 var(--fs-m)/1 var(--f);letter-spacing:-.01em}
.brandbar .sp{flex:1}
.brandbar button{min-height:var(--hit-dense);padding:0 var(--s4);border-radius:var(--r-pill);border:1.5px solid var(--line);background:var(--paper);font-size:var(--fs-xs);font-weight:600;color:var(--ink)}

/* ---------- barra de abas ---------- */
.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:30;background:var(--paper);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom,0px);padding-left:env(safe-area-inset-left,0px);padding-right:env(safe-area-inset-right,0px)}
.tabbar ul{list-style:none;margin:0 auto;padding:0;display:grid;grid-template-columns:repeat(5,1fr);max-width:var(--col);height:var(--tab-h)}
.tabbar a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;height:100%;text-decoration:none;color:var(--moss);font-size:12px;font-weight:500}
.tabbar a svg{width:25px;height:25px}
.tabbar a[aria-current="page"]{color:var(--forest);font-weight:700}

/* ---------- títulos ---------- */
.large-title{font:800 var(--fs-xl)/1.05 var(--f);letter-spacing:-.02em;margin:var(--s2) 0 0}
.lead{color:var(--moss);font-size:var(--fs-s);margin:var(--s2) 0 0}

/* ---------- herói: folha de calendário ---------- */
.hero{position:relative;margin-top:20px;background:var(--paper);border:var(--stroke) solid var(--forest);border-radius:var(--r-l);box-shadow:var(--sh-2)}
.hero .rings{position:absolute;top:-20px;left:0;right:0;display:flex;justify-content:center;gap:44%;pointer-events:none}
.hero .rings i{width:16px;height:40px;border-radius:8px;background:var(--forest-deep);box-shadow:0 0 0 4px var(--bg)}
.hero-band{background:var(--forest);color:var(--on-forest);border-radius:calc(var(--r-l) - 4px) calc(var(--r-l) - 4px) 0 0;padding:var(--s5) var(--s5) var(--s3);display:flex;justify-content:space-between;align-items:center;gap:var(--s3);font-size:var(--fs-xs);font-weight:600}
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]) .hero-band{background:var(--forest-deep)} }
:root[data-theme="dark"] .hero-band{background:var(--forest-deep)}
.hero-band button{border:0;background:rgba(255,255,255,.18);color:var(--on-forest);border-radius:var(--r-pill);min-height:var(--hit-dense);padding:0 var(--s3);font-size:var(--fs-xs);font-weight:600}
.hero-body{padding:var(--s4) var(--s5) var(--s5);display:flex;flex-direction:column;gap:var(--s4)}
.dayno{position:relative;display:flex;align-items:flex-end;gap:var(--s2);padding-bottom:14px}
.dayno .big{position:relative;z-index:1;font:900 var(--fs-mega)/.8 var(--f);letter-spacing:-.045em}
.dayno .of{position:relative;z-index:1;font:700 var(--fs-m)/1 var(--f);color:var(--moss);padding-bottom:10px;margin-left:6px}
.dayno .swoosh{position:absolute;left:-12px;bottom:-6px;width:150px;height:34px;pointer-events:none}
.dayno .donebadge{margin-left:auto;align-self:center;width:56px;height:56px;border-radius:50%;background:var(--lime);display:grid;place-items:center;color:var(--on-lime)}
.dayno .donebadge svg{width:30px;height:30px}
.hero h1{margin:0;font:800 var(--fs-l)/1.1 var(--f);letter-spacing:-.015em}
.hero .sub{color:var(--moss);font-size:var(--fs-s);margin-top:2px}
.month{display:grid;grid-template-columns:repeat(15,1fr);gap:4px}
.month i{display:block;aspect-ratio:1;border-radius:4px;background:var(--sunk)}
.month i.done{background:var(--lime)}
.month i.cur{background:var(--paper);box-shadow:inset 0 0 0 2.5px var(--swoosh)}
.month i.done.cur{background:var(--lime)}
.month-l{display:flex;justify-content:space-between;font-size:var(--fs-xs);color:var(--moss);font-weight:500;margin-top:6px}
.dayprog{display:flex;align-items:center;gap:var(--s3);font-size:var(--fs-xs);color:var(--moss);font-weight:600}
.dayprog .bar{flex:1;height:10px;border-radius:5px;background:var(--sunk);overflow:hidden}
.dayprog .bar i{display:block;height:100%;background:var(--swoosh);border-radius:5px;transition:width .4s var(--ease)}
.cta{display:flex;align-items:center;justify-content:center;gap:var(--s2);width:100%;min-height:60px;border:0;border-radius:var(--r-m);background:var(--swoosh);color:var(--on-swoosh);font:800 var(--fs-m)/1 var(--f);letter-spacing:-.005em;box-shadow:0 6px 16px rgba(255,122,0,.28);transition:transform .12s var(--ease),background .12s}
.cta:active{transform:scale(.98);background:var(--swoosh-press)}
.cta small{font:700 var(--fs-xs) var(--f);background:rgba(17,40,26,.12);border-radius:var(--r-pill);padding:3px 9px}
.cta.go{background:var(--lime);color:var(--on-lime);box-shadow:none}
.daynav{display:flex;gap:var(--s2)}
.daynav button{flex:1;min-height:var(--hit-dense);border:1.5px solid var(--line);border-radius:var(--r-pill);background:var(--paper);color:var(--ink);font-weight:600;font-size:var(--fs-s)}
.daynav button:disabled{opacity:.4}

/* ---------- botões ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:var(--hit);padding:0 var(--s5);border-radius:var(--r-pill);border:0;background:var(--forest-deep);color:var(--on-forest);font-weight:700;font-size:var(--fs-s);text-decoration:none;transition:transform .12s var(--ease)}
.btn:active{transform:scale(.97)}
.btn.brand{background:var(--swoosh);color:var(--on-swoosh)}
.btn.secondary{background:var(--paper);color:var(--forest);box-shadow:inset 0 0 0 1.5px var(--line)}
.btn.ghost{background:var(--sunk);color:var(--ink)}
.btn.danger{background:var(--alert-soft);color:var(--alert)}
.btn.sm{min-height:var(--hit-dense);padding:0 var(--s4);font-size:var(--fs-xs)}
.btn.block{width:100%}
.iconbtn{width:var(--hit);height:var(--hit);display:inline-grid;place-items:center;border-radius:var(--r-pill);border:0;background:var(--sunk);color:var(--ink);flex:none}
.iconbtn svg{width:22px;height:22px}

/* ---------- avisos ---------- */
.banner{border-radius:var(--r-m);padding:var(--s4);background:var(--paper);box-shadow:var(--sh-1);font-size:var(--fs-s);border-left:5px solid var(--swoosh)}
.banner .btn{margin-top:var(--s2);display:flex}
.banner.danger{background:var(--alert-soft);box-shadow:none;border-left-color:var(--alert)}
.banner.danger strong{color:var(--alert)}
.banner.ok{background:var(--lime-soft);box-shadow:none;border-left-color:var(--lime)}

/* ---------- blocos do dia / listas ---------- */
.group{background:var(--paper);border-radius:var(--r-l);box-shadow:var(--sh-1);overflow:hidden}
.group-head{display:flex;align-items:center;gap:var(--s3);padding:var(--s4) var(--s5) var(--s2)}
.group-head h2{margin:0;font:700 var(--fs-m)/1.2 var(--f);letter-spacing:-.01em}
.group-head .count{margin-left:auto;font-size:var(--fs-xs);color:var(--moss);font-weight:600;white-space:nowrap}
.group-head .count.done{color:var(--on-lime);background:var(--lime);border-radius:var(--r-pill);padding:3px 10px}
.group-note{padding:0 var(--s5) var(--s3);font-size:var(--fs-s);color:var(--moss)}
.row{display:grid;grid-template-columns:auto 1fr auto;gap:var(--s3);align-items:center;padding:var(--s3) var(--s5);min-height:68px;border-top:1px solid var(--line)}
.group-head + .row,.group-note + .row{border-top:0}
.row .body{min-width:0}
.row .title{font-weight:600;font-size:var(--fs-b);line-height:1.25}
.row .sub{font-size:var(--fs-s);color:var(--moss);line-height:1.4}
.row .sub b{color:var(--ink);font-weight:700}
.row.done .title{color:var(--moss);text-decoration:line-through;text-decoration-thickness:1.5px}
.tappable{cursor:pointer}
.chev{color:var(--moss);width:18px;height:18px}

.check{appearance:none;-webkit-appearance:none;width:30px;height:30px;margin:0;border-radius:9px;border:2.5px solid var(--forest);background:var(--paper);display:grid;place-items:center;cursor:pointer;transition:background .15s,border-color .15s}
.check:checked{background:var(--lime);border-color:var(--lime)}
.check:checked::after{content:"";width:8px;height:14px;border:solid var(--on-lime);border-width:0 3px 3px 0;transform:translateY(-2px) rotate(45deg)}
.checkwrap{width:var(--hit-dense);height:var(--hit);display:grid;place-items:center;margin-left:-6px;cursor:pointer}

.thumb{display:block;width:76px;height:76px;border-radius:var(--r-s);background-color:#fff;background-repeat:no-repeat;background-size:200% 200%;flex:none;box-shadow:inset 0 0 0 1px var(--line)}
.thumb.lg{width:100%;height:auto;aspect-ratio:1;border-radius:var(--r-l)}

.sets{display:flex;flex-wrap:wrap;gap:6px;margin-top:var(--s2)}
.set{min-width:var(--hit-dense);height:var(--hit-dense);padding:0 10px;border-radius:var(--r-s);border:2px solid var(--line);background:var(--paper);font:700 var(--fs-s) var(--f);color:var(--moss);display:inline-flex;align-items:center;justify-content:center}
.set.on{background:var(--lime);border-color:var(--lime);color:var(--on-lime)}
.rx{font-weight:700;color:var(--ink)}
.inline-inputs{display:flex;gap:var(--s2);margin-top:var(--s2)}
.inline-inputs input{width:110px;min-height:var(--hit-dense);border:1.5px solid var(--line);border-radius:var(--r-s);background:var(--sunk);padding:0 var(--s3);font-weight:600}

/* ---------- plano ---------- */
.week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}
.dcell{aspect-ratio:1/1.25;border-radius:var(--r-s);border:2px solid var(--line);background:var(--paper);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:4px;color:var(--ink)}
.dcell b{font:800 20px var(--f)}
.dcell small{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10px;color:var(--moss);line-height:1.1;text-align:center;font-weight:600}
.dcell.today{border-color:var(--swoosh)}
.dcell.sel{border-color:var(--forest);box-shadow:inset 0 0 0 1.5px var(--forest)}
.dcell.done{background:var(--lime);border-color:var(--lime);color:var(--on-lime)}
.dcell.done small{color:var(--on-lime)}
.dcell .pip{width:24px;height:4px;border-radius:2px;background:var(--sunk);overflow:hidden;margin-top:2px}
.dcell .pip i{display:block;height:100%;background:var(--swoosh)}
.dcell.done .pip{background:rgba(17,40,26,.15)}
.dcell.done .pip i{background:var(--on-lime)}
.weeklabel{font:700 var(--fs-s) var(--f);margin:var(--s3) 0 var(--s2)}

/* ---------- exercícios ---------- */
.search{width:100%;min-height:var(--hit);border-radius:var(--r-m);border:1.5px solid var(--line);background:var(--paper);padding:0 var(--s4);font-size:var(--fs-b)}
.chips{display:flex;gap:var(--s2);overflow-x:auto;padding-bottom:4px;scrollbar-width:none}
.chips::-webkit-scrollbar{display:none}
.chip{flex:none;min-height:var(--hit-dense);padding:0 var(--s4);border-radius:var(--r-pill);border:1.5px solid var(--line);background:var(--paper);font-size:var(--fs-s);font-weight:600}
.chip[aria-pressed="true"]{background:var(--forest-deep);border-color:var(--forest-deep);color:var(--on-forest)}
.exgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s3)}
.excard{border:0;background:var(--paper);border-radius:var(--r-m);box-shadow:var(--sh-1);padding:var(--s2);text-align:left;display:flex;flex-direction:column;gap:var(--s2);color:var(--ink)}
.excard .thumb{width:100%;height:auto;aspect-ratio:1}
.excard span{font-weight:600;font-size:var(--fs-s);line-height:1.25;padding:0 4px 4px}

/* ---------- progresso ---------- */
.tiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s3)}
.tile{background:var(--paper);border-radius:var(--r-m);box-shadow:var(--sh-1);padding:var(--s4);border-top:4px solid var(--forest)}
.tile .k{font-size:var(--fs-xs);color:var(--moss);font-weight:600}
.tile .v{font:800 32px/1.05 var(--f);letter-spacing:-.02em;margin-top:4px}
.tile .v small{font:600 14px var(--f);color:var(--moss)}
.tile .d{font-size:var(--fs-xs);margin-top:4px;font-weight:600;color:var(--moss)}
.tile .d.good{color:var(--forest)} .tile .d.bad{color:var(--alert)}
.chart{background:var(--paper);border-radius:var(--r-l);box-shadow:var(--sh-1);padding:var(--s4) var(--s5)}
.chart .section-title{font:700 var(--fs-m) var(--f);display:flex;align-items:baseline;gap:8px;margin-bottom:var(--s2)}
.chart .section-title small{font:500 var(--fs-xs) var(--f);color:var(--moss)}
.chart svg{width:100%;height:auto;display:block;overflow:visible}
.chart .empty{color:var(--moss);font-size:var(--fs-s);padding:var(--s6) 0;text-align:center}
.field{display:grid;grid-template-columns:1fr 130px;align-items:center;gap:var(--s3);padding:var(--s2) var(--s5);min-height:60px;border-top:1px solid var(--line)}
.group-head + .field{border-top:0}
.field input,.field select{width:100%;min-height:var(--hit-dense);border:1.5px solid var(--line);border-radius:var(--r-s);background:var(--sunk);padding:0 var(--s3);text-align:right;font-weight:600;font-variant-numeric:tabular-nums}
.tbl{width:100%;border-collapse:collapse;font-size:var(--fs-s)}
.tbl th,.tbl td{text-align:left;padding:10px var(--s5);border-top:1px solid var(--line);vertical-align:top}
.tbl th{border-top:0;color:var(--moss);font-weight:600;font-size:var(--fs-xs)}
.prose{padding:0 var(--s5) var(--s5);font-size:var(--fs-s)}
.prose p{margin:0 0 var(--s3)} .prose ul{margin:0;padding-left:20px} .prose li{margin:5px 0}
.seg{display:inline-grid;grid-auto-flow:column;background:var(--sunk);border-radius:14px;padding:3px}
.seg button{border:0;background:transparent;min-height:var(--hit-dense);padding:0 var(--s4);border-radius:11px;font-size:var(--fs-xs);font-weight:600}
.seg button[aria-pressed="true"]{background:var(--paper);color:var(--forest);box-shadow:var(--sh-1);font-weight:700}

/* ---------- sheet ---------- */
.scrim{position:fixed;inset:0;background:rgba(13,27,18,.5);z-index:40;opacity:0;transition:opacity .25s}
.scrim.open{opacity:1}
.sheet{position:fixed;left:0;right:0;bottom:0;z-index:41;max-height:92vh;max-height:92dvh;overflow-y:auto;overscroll-behavior:contain;background:var(--bg);border-radius:var(--r-l) var(--r-l) 0 0;box-shadow:var(--sh-2);transform:translateY(100%);transition:transform .42s var(--ease);padding:var(--s2) max(var(--s4),env(safe-area-inset-right,0px)) calc(env(safe-area-inset-bottom,0px) + var(--s8)) max(var(--s4),env(safe-area-inset-left,0px))}
.sheet.open{transform:none}
.sheet .grab{width:40px;height:5px;border-radius:3px;background:var(--line);margin:0 auto var(--s3)}
.sheet-inner{max-width:var(--col);margin:0 auto;display:flex;flex-direction:column;gap:var(--s4)}
.sheet-top{display:flex;align-items:flex-start;gap:var(--s3)}
.sheet-top h2{flex:1;margin:0;font:800 var(--fs-l)/1.1 var(--f);letter-spacing:-.015em}
.how{margin:0;padding-left:22px;display:flex;flex-direction:column;gap:8px}
.setrow{display:grid;grid-template-columns:28px 1fr 1fr var(--hit-dense);gap:var(--s2);align-items:center;padding:var(--s2) var(--s5);border-top:1px solid var(--line)}
.setrow input{width:100%;min-height:var(--hit-dense);border:1.5px solid var(--line);border-radius:var(--r-s);background:var(--sunk);padding:0 var(--s3);font-weight:600}
.setrow .n{font:800 var(--fs-s) var(--f);color:var(--moss)}

/* ---------- MODO TREINO ---------- */
.wm{position:fixed;inset:0;z-index:50;background:var(--bg);display:flex;flex-direction:column;overflow-y:auto;overscroll-behavior:contain}
.wm-bar{position:sticky;top:0;z-index:2;background:var(--bg);padding:calc(env(safe-area-inset-top,0px) + var(--s3)) max(var(--s4),env(safe-area-inset-right,0px)) var(--s3) max(var(--s4),env(safe-area-inset-left,0px))}
.wm-bar .in{max-width:var(--col);margin:0 auto;display:flex;align-items:center;gap:var(--s3)}
.wm-bar .count{font:700 var(--fs-s) var(--f);white-space:nowrap}
.segs{flex:1;display:flex;gap:3px}
.segs i{flex:1;height:7px;border-radius:4px;background:var(--line)}
.segs i.on{background:var(--lime)} .segs i.cur{background:var(--swoosh)}
.wm-body{flex:1;max-width:var(--col);width:100%;margin:0 auto;padding:0 max(var(--s4),env(safe-area-inset-right,0px)) var(--s4) max(var(--s4),env(safe-area-inset-left,0px));display:flex;flex-direction:column;gap:var(--s4)}
.wm-kicker{font-size:var(--fs-xs);font-weight:700;color:var(--forest)}
.wm h2{margin:0;font:800 30px/1.08 var(--f);letter-spacing:-.02em}
.wm .meta{display:flex;flex-wrap:wrap;gap:var(--s2)}
.wm .pill{display:inline-flex;align-items:center;min-height:36px;padding:0 var(--s3);border-radius:var(--r-pill);background:var(--paper);box-shadow:var(--sh-1);font-weight:600;font-size:var(--fs-s)}
.wm .pill.hot{background:var(--swoosh-soft);color:var(--swoosh-text);box-shadow:none;font-weight:700}
.wm .img .thumb.lg{box-shadow:var(--sh-1),inset 0 0 0 var(--stroke) var(--forest)}
.bigsets{display:grid;grid-template-columns:repeat(auto-fill,minmax(64px,1fr));gap:var(--s2)}
.bigsets .set{height:56px;font-size:var(--fs-b);border-radius:var(--r-m)}
.bigsets .set.cur{border-color:var(--swoosh);color:var(--ink);box-shadow:inset 0 0 0 1px var(--swoosh)}
.stepper{display:grid;grid-template-columns:64px 1fr 64px;gap:var(--s2);align-items:center;background:var(--paper);border-radius:var(--r-m);padding:var(--s2);box-shadow:var(--sh-1)}
.stepper button{height:56px;border:0;border-radius:var(--r-s);background:var(--sunk);font:700 28px var(--f);color:var(--forest)}
.stepper .val{text-align:center}
.stepper .val input{width:100%;border:0;background:transparent;text-align:center;font:900 36px var(--f);padding:0;color:var(--ink)}
.stepper .val small{display:block;font-size:var(--fs-xs);color:var(--moss);font-weight:500}
.wm-foot{position:sticky;bottom:0;background:linear-gradient(to top,var(--bg) 75%,transparent);padding:var(--s4) max(var(--s4),env(safe-area-inset-right,0px)) calc(env(safe-area-inset-bottom,0px) + var(--s4)) max(var(--s4),env(safe-area-inset-left,0px))}
.wm-foot .in{max-width:var(--col);margin:0 auto;display:grid;grid-template-columns:60px 1fr 60px;gap:var(--s2)}
.wm-foot .nav{height:60px;border:1.5px solid var(--line);border-radius:var(--r-m);background:var(--paper);color:var(--forest);display:grid;place-items:center}
.wm-foot .nav:disabled{opacity:.35}
.wm-foot .nav svg{width:24px;height:24px}
details.howto{background:var(--paper);border-radius:var(--r-m);box-shadow:var(--sh-1);padding:var(--s4)}
details.howto summary{font-weight:700;cursor:pointer;list-style:none;display:flex;justify-content:space-between;min-height:var(--hit-dense);align-items:center}
details.howto summary::-webkit-details-marker{display:none}
details.howto summary::after{content:"+";font:700 24px/1 var(--f);color:var(--forest)}
details.howto[open] summary::after{content:"–"}
details.howto ol{margin:var(--s3) 0 0;padding-left:22px;display:flex;flex-direction:column;gap:8px;font-size:var(--fs-s)}
.phasebox{background:var(--paper);border-radius:var(--r-m);box-shadow:var(--sh-1);overflow:hidden}
.phasebox .row{min-height:56px}

/* ---------- descanso / cronômetro (verde do "30") ---------- */
.rest{position:fixed;inset:0;z-index:60;background:var(--forest-deep);color:var(--on-forest);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--s4);padding:calc(env(safe-area-inset-top,0px) + var(--s6)) max(var(--s5),env(safe-area-inset-right,0px)) calc(env(safe-area-inset-bottom,0px) + var(--s6)) max(var(--s5),env(safe-area-inset-left,0px));text-align:center}
.rest .lbl{font:700 var(--fs-m) var(--f);max-width:var(--col)}
.rest .hint{color:var(--on-forest-2);font-size:var(--fs-s);max-width:var(--col)}
.rest .clock{font:900 min(34vw,156px)/1 var(--f);letter-spacing:-.04em;font-variant-numeric:tabular-nums}
.rest .ringbar{width:min(80vw,360px);height:12px;border-radius:6px;background:rgba(255,255,255,.18);overflow:hidden}
.rest .ringbar i{display:block;height:100%;background:var(--swoosh);transition:width .25s linear}
.rest .next{color:var(--on-forest-2);font-size:var(--fs-s)}
.rest .ctl{display:flex;gap:var(--s2);flex-wrap:wrap;justify-content:center;margin-top:var(--s3)}
.rest .ctl button{min-height:52px;padding:0 var(--s5);border-radius:var(--r-pill);border:0;background:rgba(255,255,255,.15);color:#fff;font-weight:700;font-size:var(--fs-b)}
.rest .ctl button.main{background:var(--swoosh);color:var(--on-swoosh)}

.timerpill{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(var(--tab-h) + env(safe-area-inset-bottom,0px) + var(--s3));z-index:35;display:flex;align-items:center;gap:var(--s3);background:var(--forest-deep);color:#fff;border-radius:var(--r-pill);padding:6px 6px 6px var(--s5);box-shadow:var(--sh-2);max-width:calc(100% - 32px)}
.timerpill .tl{font-size:var(--fs-xs);color:var(--on-forest-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:40vw}
.timerpill .tt{font:800 22px var(--f);min-width:70px;font-variant-numeric:tabular-nums}
.timerpill button{border:0;border-radius:var(--r-pill);min-height:var(--hit-dense);padding:0 var(--s3);background:rgba(255,255,255,.16);color:#fff;font-weight:700;font-size:var(--fs-xs)}

.toast{position:fixed;left:50%;top:calc(env(safe-area-inset-top,0px) + 12px);transform:translate(-50%,-160%);z-index:95;background:var(--forest-deep);color:#fff;border-radius:var(--r-pill);padding:12px 20px;font-size:var(--fs-s);font-weight:600;transition:transform .3s var(--ease);max-width:calc(100% - 32px);box-shadow:var(--sh-2)}
.toast.show{transform:translate(-50%,0)}
.foot{color:var(--moss);font-size:var(--fs-xs);text-align:center}

/* ---------- entrada (Face ID) ---------- */
.auth{position:fixed;inset:0;z-index:90;background:var(--bg);color:var(--ink);overflow-y:auto;display:flex;align-items:center;justify-content:center;padding:calc(env(safe-area-inset-top,0px) + var(--s8)) max(var(--s5),env(safe-area-inset-right,0px)) calc(env(safe-area-inset-bottom,0px) + var(--s8)) max(var(--s5),env(safe-area-inset-left,0px))}
.auth-in{width:100%;max-width:400px;display:flex;flex-direction:column;gap:var(--s4);text-align:center;align-items:stretch}
.auth-logo{width:140px;height:140px;align-self:center;filter:drop-shadow(0 10px 24px rgba(17,40,26,.15))}
.auth-title{margin:0;font:900 44px/1 var(--f);letter-spacing:-.03em}
.auth-sub{margin:0;color:var(--moss);font-size:var(--fs-b)}
.auth-field{display:flex;flex-direction:column;gap:6px;font-size:var(--fs-xs);font-weight:600;color:var(--moss);text-align:left}
.auth-field input{min-height:52px;border-radius:var(--r-m);border:1.5px solid var(--line);background:var(--paper);color:var(--ink);padding:0 var(--s4);font-size:var(--fs-b)}
.auth .cta:disabled{opacity:.7}
.auth-link{border:0;background:transparent;color:var(--forest);font-weight:700;min-height:var(--hit);text-decoration:underline;text-underline-offset:3px}
.auth-err{margin:0;min-height:1.4em;color:var(--alert);font-weight:600;font-size:var(--fs-s)}
.auth-skip{border:0;background:transparent;color:var(--moss);font-size:var(--fs-xs);min-height:var(--hit-dense);margin-top:var(--s4)}

@media (min-width:734px){ .exgrid{grid-template-columns:repeat(3,minmax(0,1fr))} }
@media (prefers-reduced-motion:reduce){ *{transition:none!important;animation:none!important} }
