/* RFF Personal — tema escuro esportivo, mobile-first, acessível */
:root{
  --accent:#C8F135; --on-accent:#0E1013;
  --bg:#0E1013; --s1:#16191E; --s2:#1E2228; --s3:#272C34; --line:#2C323B;
  --text:#F2F4F7; --muted:#9AA3AF; --danger:#FF5C5C; --warn:#FFB547; --ok:#3DDC84;
  --r:16px; --r-sm:10px; --gap:14px;
  --display:'Barlow Condensed', 'Arial Narrow', system-ui, sans-serif;
  --body:Inter, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
}
html{font-size:16px; -webkit-text-size-adjust:100%}
html[data-font="grande"]{font-size:18px}
html[data-font="enorme"]{font-size:20.5px}
html[data-contrast="1"]{--bg:#000; --s1:#0A0A0A; --s2:#141414; --s3:#1E1E1E; --line:#7A7A7A; --text:#fff; --muted:#E2E2E2}
html[data-contrast="1"] .card, html[data-contrast="1"] input, html[data-contrast="1"] select, html[data-contrast="1"] textarea{border-color:#9A9A9A}
*{box-sizing:border-box}
body{margin:0; background:var(--bg); color:var(--text); font:400 1rem/1.5 var(--body); -webkit-font-smoothing:antialiased; min-height:100vh}
a{color:var(--accent)}
h1,h2,h3{font-family:var(--display); font-weight:700; letter-spacing:.01em; line-height:1.1; margin:.2em 0 .5em}
h1{font-size:2rem} h2{font-size:1.35rem} .display{font-size:2.4rem; font-weight:800; text-transform:uppercase}
p{margin:.3em 0 .8em}
.muted{color:var(--muted)} .small{font-size:.875rem} .center{text-align:center} .danger{color:var(--danger)} .ok-text{color:var(--ok)}
.eyebrow{font-size:.75rem; letter-spacing:.12em; text-transform:uppercase; color:var(--muted); font-weight:600; margin:0}
.sr-only{position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0)}
[hidden],.hidden{display:none!important}
:focus-visible{outline:3px solid var(--accent); outline-offset:2px; border-radius:6px}

/* Layout */
.wrap{max-width:1120px; margin:0 auto; padding:16px 16px 40px}
.wrap.aluno{max-width:640px; padding-bottom:110px}
.wrap.public{max-width:460px; padding-top:8vh}
.narrow{max-width:460px; margin:0 auto}
.stack{display:flex; flex-direction:column; gap:var(--gap)}
.row-between{display:flex; justify-content:space-between; align-items:center; gap:12px; flex-wrap:wrap}
.inline{display:flex; gap:10px; flex-wrap:wrap; align-items:center}
.grow{flex:1; min-width:0}
.grid2,.grid3,.grid4{display:grid; gap:var(--gap)}
@media(min-width:760px){.grid2{grid-template-columns:1fr 1fr}.grid3{grid-template-columns:repeat(3,1fr)}.grid4{grid-template-columns:repeat(4,1fr)}}
.grid4{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}

/* Topbar */
.topbar{position:sticky; top:0; z-index:20; display:flex; align-items:center; gap:16px; padding:10px 16px; padding-top:max(10px, env(safe-area-inset-top));
  background:rgba(14,16,19,.88); backdrop-filter:blur(12px); border-bottom:1px solid var(--line)}
.brand{display:flex; align-items:center; gap:8px; text-decoration:none; color:var(--text)}
.brand-mark{font:800 1.15rem/1 var(--display); background:var(--accent); color:var(--on-accent); padding:5px 7px 4px; border-radius:7px; letter-spacing:.04em}
.brand-name{font:700 1.15rem/1 var(--display); text-transform:uppercase; letter-spacing:.06em}
.adminnav{display:flex; gap:4px; flex:1; overflow-x:auto; scrollbar-width:none}
.adminnav a{color:var(--muted); text-decoration:none; padding:8px 12px; border-radius:999px; font-weight:600; font-size:.92rem; white-space:nowrap}
.adminnav a.on,.adminnav a:hover{color:var(--text); background:var(--s2)}
.area-aluno .topbar{justify-content:space-between}
.bell{position:relative; color:var(--text); display:grid; place-items:center; width:42px; height:42px; border-radius:50%; background:var(--s2); margin-left:auto; flex:none}
.badge{position:absolute; top:-3px; right:-3px; background:var(--danger); color:#fff; font-size:.7rem; font-weight:700; min-width:19px; height:19px; border-radius:10px; display:grid; place-items:center; padding:0 5px}
@media(max-width:759px){
  .area-admin .topbar{flex-wrap:wrap; row-gap:6px}
  .area-admin .adminnav{order:3; flex-basis:100%; margin:0 -8px}
}

/* Tabbar do aluno */
.tabbar{position:fixed; bottom:0; left:0; right:0; z-index:30; display:flex; justify-content:center; gap:4px; background:rgba(22,25,30,.96); backdrop-filter:blur(12px);
  border-top:1px solid var(--line); padding:6px 8px max(8px, env(safe-area-inset-bottom))}
.tabbar a{flex:1; max-width:140px; display:flex; flex-direction:column; align-items:center; gap:2px; padding:6px 0; color:var(--muted); text-decoration:none; font-size:.75rem; font-weight:600; border-radius:12px; min-height:52px}
.tabbar svg{width:24px; height:24px}
.tabbar a.on{color:var(--accent)}

/* Cards e componentes */
.card{background:var(--s1); border:1px solid var(--line); border-radius:var(--r); padding:18px; margin-bottom:var(--gap)}
.card h2:first-child{margin-top:0}
.empty{text-align:center; color:var(--muted); padding:32px 18px}
.btn{display:inline-flex; align-items:center; justify-content:center; gap:8px; font:600 .95rem/1 var(--body); padding:12px 18px; min-height:46px; border-radius:12px;
  border:1px solid var(--line); background:var(--s2); color:var(--text); text-decoration:none; cursor:pointer; transition:transform .08s, background .15s}
.btn:hover{background:var(--s3)} .btn:active{transform:scale(.98)}
.btn-primary{background:var(--accent); color:var(--on-accent); border-color:var(--accent)} .btn-primary:hover{background:var(--accent); filter:brightness(1.08)}
.btn-ghost{background:transparent} .btn-sm{min-height:36px; padding:8px 12px; font-size:.85rem; border-radius:10px}
.btn-lg{min-height:56px; font-size:1.05rem; padding:14px 22px} .btn-block{width:100%}
.btn-wa{background:#1FAF5A; border-color:#1FAF5A; color:#fff} .btn-wa:hover{background:#25C566}
.btn[disabled]{opacity:.45; pointer-events:none}
.icon-btn{background:var(--s2); border:1px solid var(--line); color:var(--text); width:34px; height:34px; border-radius:9px; cursor:pointer; font-size:1rem}
.icon-btn.danger{color:var(--danger)}
.link{display:block; text-align:center; margin-top:12px; color:var(--muted)}
.back{display:inline-block; color:var(--muted); text-decoration:none; margin-bottom:6px; font-size:.9rem}

/* Formulários */
label{display:flex; flex-direction:column; gap:6px; font-weight:500; font-size:.92rem}
input,select,textarea{font:inherit; font-size:1rem; color:var(--text); background:var(--s2); border:1px solid var(--line); border-radius:var(--r-sm); padding:11px 12px; min-height:46px; width:100%}
input:focus,select:focus,textarea:focus{border-color:var(--accent); outline:none; box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 25%, transparent)}
input[type=color]{padding:4px; height:46px}
input[type=checkbox],input[type=radio]{width:20px; height:20px; min-height:0; accent-color:var(--accent); flex:none}
.check{flex-direction:row; align-items:center; gap:10px; font-weight:400}
fieldset{border:0; padding:0; margin:0} legend{font-weight:600; margin-bottom:10px; padding:0}
.input-sm{width:84px; min-height:36px; padding:6px 8px} .input-inline{width:auto; display:inline-block; min-height:36px; padding:4px 8px}
.filters{display:flex; gap:10px; margin-bottom:var(--gap)} .filters input{flex:1}
.actions{display:flex; gap:10px; justify-content:flex-end; position:sticky; bottom:84px; padding:12px 0}
.actions .btn-primary{flex:1}

/* Escalas e escolhas (alvos grandes de toque) */
.scale-opts{display:grid; grid-template-columns:repeat(5,1fr); gap:6px}
.scale input,.emoji input,.choice input,.seg input,.stars input{position:absolute; opacity:0; pointer-events:none}
.scale label{align-items:center; text-align:center; gap:2px; padding:10px 4px; border:1px solid var(--line); border-radius:12px; background:var(--s2); cursor:pointer; min-height:64px; justify-content:center}
.scale label b{font:700 1.3rem var(--display)} .scale label small{font-size:.68rem; color:var(--muted); line-height:1.15}
.scale input:checked+label,.choice input:checked+span,.seg input:checked+label{background:var(--accent); color:var(--on-accent); border-color:var(--accent)}
.scale input:checked+label small{color:var(--on-accent)}
.scale input:focus-visible+label,.emoji input:focus-visible+label,.choice input:focus-visible+span,.seg input:focus-visible+label{outline:3px solid var(--accent); outline-offset:2px}
.choice-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:8px}
.choice{display:block} .choice span{display:flex; align-items:center; min-height:54px; padding:12px; border:1px solid var(--line); border-radius:12px; background:var(--s2); cursor:pointer; font-weight:600}
.yesno{display:flex; flex-wrap:wrap; gap:10px} .yesno legend{width:100%}
.yesno>label:not(.full){flex-direction:row; align-items:center; gap:8px; padding:10px 16px; border:1px solid var(--line); border-radius:12px; background:var(--s2); cursor:pointer}
.yesno .full{width:100%}
.seg{display:flex; gap:6px} .seg label{flex:1; text-align:center; align-items:center; padding:12px; border:1px solid var(--line); border-radius:12px; background:var(--s2); cursor:pointer; font-weight:700}
.steps{display:flex; gap:6px; margin:4px 0 18px} .steps span{flex:1; height:5px; border-radius:3px; background:var(--s3)} .steps span.on{background:var(--accent)}
.prose ul{padding-left:1.2em} .prose li{margin:.35em 0}

/* Check-in */
.checkin{display:flex; flex-direction:column; gap:14px}
.emoji legend{font-size:.92rem}
.emoji div{display:flex; gap:6px}
.emoji label{flex:1; display:grid; place-items:center; font-size:1.7rem; min-height:54px; border:1px solid var(--line); border-radius:12px; background:var(--s2); cursor:pointer; filter:grayscale(.6); transition:.12s}
.emoji label.txt{font-size:.72rem; font-weight:600; filter:none; text-align:center; padding:4px 2px}
.emoji input:checked+label{border-color:var(--accent); background:color-mix(in srgb, var(--accent) 18%, var(--s2)); filter:none; transform:scale(1.05)}
.readiness{display:flex; gap:14px; align-items:center}
.readiness span{display:block; color:var(--muted); font-size:.9rem}
.readiness .dot{width:16px; height:16px; border-radius:50%; flex:none}
.r-verde .dot,.l-verde{background:var(--ok); box-shadow:0 0 12px color-mix(in srgb,var(--ok) 70%,transparent)}
.r-amarelo .dot,.l-amarelo{background:var(--warn); box-shadow:0 0 12px color-mix(in srgb,var(--warn) 70%,transparent)}
.r-vermelho .dot,.l-vermelho{background:var(--danger); box-shadow:0 0 12px color-mix(in srgb,var(--danger) 70%,transparent)}
.light{display:inline-block; width:10px; height:10px; border-radius:50%; margin-right:8px; vertical-align:middle}
.dots{display:flex; gap:6px; flex-wrap:wrap} .dots .light{width:16px; height:16px; margin:0}

/* Hoje */
.today h2{font-size:1.7rem; margin:.2em 0 .1em}
.mini{list-style:none; padding:0; margin:12px 0 16px} .mini li{display:flex; justify-content:space-between; padding:8px 0; border-bottom:1px solid var(--line); font-size:.95rem}
.mini small{color:var(--muted)}
.cta{display:flex; flex-direction:column; text-decoration:none; color:var(--text); border-color:var(--accent); position:relative}
.cta b{font:700 1.5rem var(--display)} .cta .arrow{position:absolute; right:20px; top:50%; transform:translateY(-50%); font-size:1.6rem; color:var(--accent)}
.stats{display:grid; grid-template-columns:repeat(auto-fit,minmax(120px,1fr)); gap:var(--gap); margin-bottom:var(--gap)}
.stat{background:var(--s1); border:1px solid var(--line); border-radius:var(--r); padding:14px}
.stat b{display:block; font:800 1.9rem/1 var(--display)} .stat span{color:var(--muted); font-size:.8rem}
.bar{height:6px; background:var(--s3); border-radius:3px; margin-top:10px; overflow:hidden} .bar i{display:block; height:100%; background:var(--accent)}
.banner{display:flex; flex-direction:column; gap:2px; padding:14px 16px; border-radius:var(--r); background:var(--s2); border:1px solid var(--line); border-left:4px solid var(--accent); margin-bottom:var(--gap); color:var(--text); text-decoration:none}
.banner span{color:var(--muted); font-size:.9rem}
.banner-warn{border-left-color:var(--warn)} .banner-err{border-left-color:var(--danger)}
.flash{padding:12px 16px; border-radius:12px; margin-bottom:var(--gap); background:color-mix(in srgb,var(--ok) 14%,var(--s1)); border:1px solid color-mix(in srgb,var(--ok) 45%,transparent)}
.flash-err{background:color-mix(in srgb,var(--danger) 14%,var(--s1)); border-color:color-mix(in srgb,var(--danger) 50%,transparent)}
.flash-warn{background:color-mix(in srgb,var(--warn) 14%,var(--s1)); border-color:color-mix(in srgb,var(--warn) 50%,transparent)}
.hero-mark{display:inline-block; font:800 2.2rem/1 var(--display); background:var(--accent); color:var(--on-accent); padding:10px 14px 8px; border-radius:14px; letter-spacing:.04em; margin-bottom:14px}
.login .display{margin-bottom:.2em}

/* Listas */
.list{list-style:none; margin:0; padding:0}
.list li{border-bottom:1px solid var(--line)} .list li:last-child{border:0}
.list li>a,.list li>div,.list.compact li{display:flex; flex-direction:column; gap:2px; padding:12px 2px; color:var(--text); text-decoration:none}
.list.compact li{flex-direction:row; justify-content:space-between; align-items:center; gap:10px}
.list.compact li>a,.list.compact li>div{padding:0; flex:1}
.list span{color:var(--muted); font-size:.88rem} .list small{color:var(--muted); font-size:.75rem}
.list li.unread b::before{content:''; display:inline-block; width:8px; height:8px; background:var(--accent); border-radius:50%; margin-right:8px; vertical-align:middle}
.pill{display:inline-block; font-size:.72rem; font-weight:700; padding:4px 9px; border-radius:999px; background:var(--s3); color:var(--muted); text-transform:uppercase; letter-spacing:.04em; margin-left:8px; white-space:nowrap}
.pill-ok{background:color-mix(in srgb,var(--ok) 20%,transparent); color:var(--ok)}
.pill-carencia{background:color-mix(in srgb,var(--warn) 20%,transparent); color:var(--warn)}
.pill-bloqueado{background:color-mix(in srgb,var(--danger) 20%,transparent); color:var(--danger)}

/* Treinos */
details.day summary,details.card summary{cursor:pointer; list-style:none; display:flex; align-items:center; gap:8px; flex-wrap:wrap}
details summary::-webkit-details-marker{display:none}
details.day summary small,details.card summary small{color:var(--muted); width:100%}
details.day[open] summary{margin-bottom:12px}
.ex-list{padding-left:1.3em; margin:0 0 14px} .ex-list li{padding:6px 0} .ex-list span{display:block; color:var(--muted); font-size:.85rem}

/* Sessão */
.exercise header{display:flex; gap:12px; align-items:flex-start}
.ex-num{flex:none; width:32px; height:32px; border-radius:9px; background:var(--accent); color:var(--on-accent); display:grid; place-items:center; font:800 1.1rem var(--display)}
.exercise h2{margin:0 0 2px; font-size:1.3rem}
.presc{color:var(--accent); font-weight:600; font-size:.9rem; margin:0}
.hint{font-size:.88rem; color:var(--muted); margin:8px 0 0}
.ex-tools{display:flex; gap:8px; flex-wrap:wrap; align-items:center; margin:10px 0}
.cue{width:100%} .cue summary{color:var(--muted); font-size:.88rem; cursor:pointer} .cue p{font-size:.92rem; background:var(--s2); padding:10px 12px; border-radius:10px}
.sets{display:flex; flex-direction:column; gap:6px; margin-top:6px}
.set-head,.set-row{display:grid; grid-template-columns:34px 1fr 1fr 1fr 52px; gap:6px; align-items:center}
.set-head span{font-size:.7rem; color:var(--muted); text-transform:uppercase; letter-spacing:.06em; text-align:center}
.set-row input,.set-row select{text-align:center; min-height:50px; padding:6px; font-size:1.1rem; font-weight:600}
.set-row select{font-size:.9rem}
.set-n{text-align:center; font:700 1.1rem var(--display); color:var(--muted)}
.tick{min-height:50px; border-radius:12px; border:2px solid var(--line); background:var(--s2); color:var(--muted); font-size:1.4rem; cursor:pointer}
.set-row.done .tick{background:var(--accent); border-color:var(--accent); color:var(--on-accent)}
.set-row.done input,.set-row.done select{border-color:color-mix(in srgb,var(--accent) 55%,var(--line))}
.rest{position:fixed; inset:0; z-index:50; background:rgba(8,9,11,.96); display:flex; flex-direction:column; align-items:center; justify-content:center; gap:18px; padding:24px}
.rest p{text-transform:uppercase; letter-spacing:.2em; color:var(--muted); margin:0}
.rest-time{font:800 6rem/1 var(--display); color:var(--accent); font-variant-numeric:tabular-nums}
.rest-actions{display:flex; gap:12px}
.stars{display:flex; flex-direction:row-reverse; justify-content:flex-end; gap:4px}
.stars legend{width:100%; float:left}
.stars label{font-size:2.3rem; color:var(--s3); cursor:pointer; line-height:1; padding:2px}
.stars input:checked~label,.stars label:hover,.stars label:hover~label{color:var(--accent)}
.finish{border-color:var(--accent)}
.sum-ex{display:flex; flex-direction:column; padding:10px 0; border-bottom:1px solid var(--line)} .sum-ex:last-child{border:0}
.sum-ex span{color:var(--muted); font-size:.9rem}
.pr{border-color:var(--warn)}
.celebrate{position:fixed; inset:0; pointer-events:none; z-index:60; background:
  radial-gradient(circle at 20% 20%, var(--accent) 0 4px, transparent 5px), radial-gradient(circle at 70% 10%, #fff 0 3px, transparent 4px),
  radial-gradient(circle at 40% 30%, var(--warn) 0 4px, transparent 5px), radial-gradient(circle at 85% 35%, var(--accent) 0 3px, transparent 4px),
  radial-gradient(circle at 10% 45%, #fff 0 3px, transparent 4px), radial-gradient(circle at 60% 50%, var(--accent) 0 4px, transparent 5px);
  animation:confetti 1.8s ease-out forwards}
@keyframes confetti{from{transform:translateY(-40vh); opacity:1} to{transform:translateY(40vh); opacity:0}}
@media(prefers-reduced-motion:reduce){.celebrate{animation:none; display:none} *{transition:none!important}}

/* Gráficos */
.spark{margin:14px 0} .spark figcaption{display:flex; align-items:baseline; gap:10px; margin-bottom:6px}
.spark figcaption span{color:var(--muted); font-size:.85rem; flex:1} .spark figcaption b{font:800 1.5rem var(--display)} .spark figcaption em{font-style:normal; font-size:.82rem; color:var(--accent)}
.spark svg{width:100%; height:auto; overflow:visible}
.spark path{fill:none; stroke:var(--accent); stroke-width:2.5; stroke-linejoin:round; stroke-linecap:round}
.spark circle{fill:var(--bg); stroke:var(--accent); stroke-width:2}
.spark text{fill:var(--muted); font-size:10px; font-family:var(--body)}
.weekbars{display:flex; align-items:flex-end; gap:8px; height:150px; padding-top:20px}
.weekbars div{flex:1; display:flex; flex-direction:column; justify-content:flex-end; align-items:center; height:100%; position:relative}
.weekbars i{display:block; width:100%; max-width:36px; background:var(--accent); border-radius:6px 6px 2px 2px; min-height:3px}
.weekbars b{font-size:.75rem; margin-top:4px} .weekbars small{font-size:.68rem; color:var(--muted)}
.weekbars.money b{font-size:.68rem}

/* Admin */
.kpis{display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:var(--gap); margin-bottom:var(--gap)}
.kpi{background:var(--s1); border:1px solid var(--line); border-radius:var(--r); padding:16px}
.kpi b{display:block; font:800 2.1rem/1 var(--display)} .kpi span{color:var(--muted); font-size:.82rem}
.kpi.warn b{color:var(--warn)}
.tabs{display:flex; gap:4px; overflow-x:auto; border-bottom:1px solid var(--line); margin:14px 0 var(--gap); scrollbar-width:none}
.tabs a{padding:10px 14px; color:var(--muted); text-decoration:none; font-weight:600; border-bottom:3px solid transparent; white-space:nowrap}
.tabs a.on{color:var(--text); border-bottom-color:var(--accent)}
.dl{display:grid; grid-template-columns:auto 1fr; gap:6px 14px; margin:0} .dl dt{color:var(--muted); font-size:.88rem} .dl dd{margin:0; font-weight:500}
.meter{display:grid; grid-template-columns:130px 1fr 40px; gap:10px; align-items:center; margin:8px 0; font-size:.9rem}
.meter-bar{height:8px; background:var(--s3); border-radius:4px; overflow:hidden} .meter-bar i{display:block; height:100%}
.m1,.m2{background:var(--danger)} .m3{background:var(--warn)} .m4,.m5{background:var(--ok)}
blockquote{margin:10px 0; padding:10px 14px; border-left:3px solid var(--accent); background:var(--s2); border-radius:0 10px 10px 0; color:var(--muted); font-style:italic}
.table-wrap{overflow-x:auto} table{width:100%; border-collapse:collapse; font-size:.9rem}
th,td{text-align:left; padding:10px 8px; border-bottom:1px solid var(--line); white-space:nowrap}
th{color:var(--muted); font-weight:600; font-size:.75rem; text-transform:uppercase; letter-spacing:.05em}
tr.note td{white-space:normal; color:var(--muted); font-size:.85rem}
.cards{display:grid; gap:10px} @media(min-width:760px){.cards{grid-template-columns:1fr 1fr}}
.student{display:flex; align-items:center; gap:12px; text-decoration:none; color:var(--text); margin:0}
.student:hover{border-color:var(--accent)}
.avatar{position:relative; width:44px; height:44px; border-radius:50%; background:var(--s3); display:grid; place-items:center; font:700 1.2rem var(--display); flex:none}
.avatar .light{position:absolute; right:-2px; bottom:-2px; margin:0; border:2px solid var(--s1); width:14px; height:14px}
.invite{display:flex; flex-direction:column; gap:10px}
.invite.highlight{border-color:var(--accent); box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 25%,transparent)}
code,.copy{font-family:ui-monospace,Menlo,monospace; font-size:.82rem; background:var(--s2); padding:8px 10px; border-radius:8px; word-break:break-all; cursor:copy; display:block}
b.copy{display:inline; padding:2px 6px}
.sug{display:flex; justify-content:space-between; align-items:center; gap:12px; padding:12px 0; border-bottom:1px solid var(--line); flex-wrap:wrap}
.sug:last-child{border:0} .sug small{display:block; margin-top:4px} .sug-actions{display:flex; gap:6px}
.prog-row{display:flex; justify-content:space-between; align-items:center; gap:12px; flex-wrap:wrap}
.plan-row{display:flex; gap:10px; align-items:center; flex-wrap:wrap; padding:10px 0; border-bottom:1px solid var(--line)}
.plan-row>input[name=name]{flex:1; min-width:160px}
.plan-row label{flex-direction:row; align-items:center; gap:6px}
.plan .price{font:800 2.4rem/1 var(--display); margin:6px 0 10px} .plan .price small{font:500 1rem var(--body); color:var(--muted)}
.state-bloqueado{border-color:var(--danger)} .state-carencia{border-color:var(--warn)}

/* Editor de treino */
.editor-head{position:sticky; top:62px; z-index:10; background:var(--bg); padding:8px 0; border-bottom:1px solid var(--line); margin-bottom:var(--gap)}
.title-input{font:700 1.6rem var(--display); background:transparent; border-color:transparent; padding:4px 6px}
.title-input:hover{border-color:var(--line)}
.editor-grid{display:grid; gap:var(--gap)} @media(min-width:980px){.editor-grid{grid-template-columns:1fr 340px; align-items:start}.rationale{position:sticky; top:150px; max-height:calc(100vh - 170px); overflow:auto}}
.day-input{font:700 1.25rem var(--display); background:transparent; border-color:transparent; max-width:420px}
.item-edit{background:var(--s2); border:1px solid var(--line); border-radius:12px; padding:12px; margin:10px 0}
.item-top{display:flex; gap:8px; align-items:center} .item-top select{flex:1; font-weight:600}
.item-move{display:flex; gap:4px}
.item-fields{display:grid; grid-template-columns:repeat(3,1fr); gap:8px; margin:10px 0} @media(min-width:640px){.item-fields{grid-template-columns:repeat(6,1fr)}}
.item-fields label{font-size:.72rem; color:var(--muted); gap:4px} .item-fields input{text-align:center; padding:8px 4px; min-height:42px; background:var(--s1)}
.note-input{min-height:40px; font-size:.88rem; background:var(--s1)}
.add-row{display:flex; gap:8px; margin-top:10px} .add-row select{flex:1}
.why{padding:10px 0; border-bottom:1px solid var(--line)} .why:last-child{border:0}
.why b{color:var(--accent); font-size:.85rem; text-transform:uppercase; letter-spacing:.06em} .why p{margin:4px 0; font-size:.9rem}
.why cite{display:block; font-size:.74rem; color:var(--muted); font-style:normal; line-height:1.4}
.ex-card.inactive{opacity:.55}
.ex-form{margin-top:14px}

.toast{position:fixed; left:50%; bottom:96px; transform:translateX(-50%) translateY(20px); background:var(--text); color:var(--bg); padding:10px 16px; border-radius:12px; font-weight:600; font-size:.9rem; opacity:0; pointer-events:none; transition:.25s; z-index:70; max-width:90vw; text-align:center}
.toast.show{opacity:1; transform:translateX(-50%) translateY(0)}
.area-admin .toast{bottom:24px}

/* Animação dos exercícios */
.move{background:radial-gradient(120% 90% at 50% 10%, var(--s2), var(--s1)); border:1px solid var(--line); border-radius:14px; margin:12px 0 6px; overflow:hidden}
.move svg{display:block; width:100%; max-height:260px}
.move .floor{stroke:var(--line); stroke-width:2}
.move .props rect,.move .props line{fill:var(--s3); stroke:#3A414C; stroke-width:1.5}
.move .props .pad{stroke:var(--s3); stroke-width:10; stroke-linecap:round}
.move .props .rail{stroke:#3A414C; stroke-width:3}
.move .props .bar{stroke:#8A93A0; stroke-width:5; stroke-linecap:round}
.move .limb{stroke:#D5DAE1; stroke-linecap:round; fill:none}
.move .limb.far{stroke:#5D6672}
.move .limb.hl{stroke:var(--accent)}
.move .head{fill:#D5DAE1}
.move .torso-front{fill:#D5DAE1} .move .torso-front.hl{fill:var(--accent)}
.move .hl-dot{fill:var(--accent); opacity:.9}
.move .eq-plate{fill:#2A2F37; stroke:#9AA3AF; stroke-width:3} .move .eq-hub{fill:#9AA3AF}
.move .eq-db{fill:#9AA3AF; stroke:#2A2F37; stroke-width:1.5} .move .eq-db.far{fill:#4B525C}
.move .eq-cable{stroke:#9AA3AF; stroke-dasharray:4 3} .move .eq-pulley{fill:#2A2F37; stroke:#9AA3AF; stroke-width:2}
.move .eq-band{stroke:#FF8A3D; stroke-linecap:round}
.move .eq-pad{fill:#3A414C; stroke:#9AA3AF; stroke-width:1.5}
.move .eq-platform{stroke:#8A93A0; stroke-linecap:round}
.move-ctrl{display:flex; align-items:center; gap:8px; padding:8px 10px; border-top:1px solid var(--line)}
.move-btn{background:var(--s3); border:1px solid var(--line); color:var(--text); border-radius:9px; min-height:34px; padding:4px 10px; font:600 .8rem var(--body); cursor:pointer}
.move-btn[aria-pressed=true]{background:var(--accent); color:var(--on-accent)}
.move-legend{margin-left:auto; font-size:.75rem; color:var(--muted); display:flex; align-items:center; gap:6px}
.move-legend i{width:12px; height:4px; border-radius:2px; background:var(--accent)}
html[data-contrast="1"] .move .limb{stroke:#fff} html[data-contrast="1"] .move .limb.far{stroke:#9A9A9A}
.move-sm{max-width:340px}

/* Painel de evolução */
.evo-tiles{display:grid; grid-template-columns:repeat(2,1fr); gap:var(--gap); margin-bottom:var(--gap)}
@media(min-width:760px){.evo-tiles{grid-template-columns:repeat(4,1fr)}}
.evo-tile{background:var(--s1); border:1px solid var(--line); border-radius:var(--r); padding:14px; display:flex; flex-direction:column; gap:2px}
.evo-tile .eyebrow{display:flex; align-items:center; gap:6px}
.evo-tile b{font:800 2rem/1.05 var(--display); margin-top:4px}
.evo-tile small{color:var(--muted); font-size:.75rem; line-height:1.3}
.key{display:inline-block; width:10px; height:10px; border-radius:3px; flex:none}
.delta{font-size:.8rem; font-weight:700; margin-top:6px} .delta.good{color:var(--ok)} .delta.bad{color:var(--warn)}
.chart{width:100%; height:auto; display:block; overflow:visible; margin:6px 0}
.chart .ch-grid{stroke:var(--s3); stroke-width:1}
.chart .ch-ref{stroke:var(--muted); stroke-width:1; opacity:.7}
.chart .ch-axis{fill:var(--muted); font:10px var(--body)}
.chart .ch-end{fill:var(--text); font:700 11px var(--body)}
.chart .ch-line{fill:none; stroke-width:2; stroke-linejoin:round; stroke-linecap:round}
.chart .ch-dot{stroke:var(--s1); stroke-width:2}
.chart .ch-hit{fill:transparent; cursor:pointer}
.chart .ch-pt:hover .ch-dot{r:6}
.chart .ch-col{fill:var(--s3)} .chart .ch-col.hit{fill:var(--accent)} .chart .ch-col.cur{opacity:.6}
.cal-chart{max-width:300px; margin-top:14px}
.cal{fill:var(--s2); stroke:var(--line); stroke-width:1} .cal1{fill:color-mix(in srgb,var(--accent) 55%,var(--s2)); stroke:none} .cal2{fill:var(--accent); stroke:none}
.cal.today{stroke:var(--text); stroke-width:1.5}
.cal-legend{display:flex; gap:14px; margin-top:6px} .cal-legend span{display:flex; align-items:center; gap:6px}
.cal-legend i{width:12px; height:12px; border-radius:3px; display:inline-block; background:var(--s2); border:1px solid var(--line)}
.cal-legend i.cal1{background:color-mix(in srgb,var(--accent) 55%,var(--s2)); border:0} .cal-legend i.cal2{background:var(--accent); border:0}
.ch-title{font:600 .9rem var(--body); display:flex; align-items:center; gap:8px; margin:12px 0 0; color:var(--text)}
.chart-empty{padding:18px 0}
.gains em{font-style:normal; font-weight:700; margin-left:6px} .gains em.good{color:var(--ok)}
.table-view{margin-top:12px} .table-view summary{cursor:pointer; color:var(--muted); font-size:.88rem}
