:root{color-scheme:dark;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#f4f6ef;background:#0b0d10;font-synthesis:none;--bg: #0b0d10;--surface: #12161b;--surface-raised: #181d23;--surface-soft: #0f1216;--line: #2a3038;--line-soft: #1d2329;--text: #f4f6ef;--muted: #929b9f;--accent: #c8f25a;--accent-strong: #d6ff6c;--accent-ink: #111607;--proof: #f7b84a;--proof-soft: #2a2113;--danger: #ff7c72;--success: #8de381;--radius: 18px;--shadow: 0 20px 55px rgba(0, 0, 0, .32)}*{box-sizing:border-box}html{min-height:100%;background:var(--bg)}body{min-width:320px;min-height:100vh;margin:0;background:radial-gradient(circle at 88% -8%,rgba(200,242,90,.08),transparent 26rem),linear-gradient(180deg,#0b0d10,#0a0c0f);color:var(--text);-webkit-font-smoothing:antialiased;overscroll-behavior-y:none}button,input,select,textarea{font:inherit;font-size:16px}button,a{-webkit-tap-highlight-color:transparent}button{color:inherit}a{color:inherit;text-decoration:none}h1,h2,h3,p{margin-top:0}h1,h2{letter-spacing:-.035em}h1{margin-bottom:0;font-size:clamp(2rem,9vw,3.4rem);line-height:.96}h2{margin-bottom:0;font-size:1.3rem}code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--accent);overflow-wrap:anywhere}.app-shell{min-height:100vh}.app-header{position:sticky;z-index:30;top:0;display:flex;align-items:center;justify-content:space-between;min-height:58px;padding:max(10px,env(safe-area-inset-top)) 18px 10px;border-bottom:1px solid rgba(42,48,56,.82);background:#0b0d10e0;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.brand{display:flex;align-items:center;gap:10px;font-weight:800;letter-spacing:-.02em}.logo-mark{display:inline-grid;width:30px;height:30px;place-items:center;border:1px solid rgba(200,242,90,.6);border-radius:8px;background:var(--accent);color:var(--accent-ink);font-size:11px;font-weight:950;letter-spacing:-.08em;box-shadow:0 0 24px #c8f25a1f}.logo-mark--large{width:52px;height:52px;border-radius:13px;font-size:17px}.local-badge,.level-chip{display:inline-flex;align-items:center;min-height:27px;padding:5px 9px;border:1px solid var(--line);border-radius:999px;color:var(--muted);background:#12161bd9;font-size:.7rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.level-chip{min-width:37px;justify-content:center;color:var(--text)}.app-main{width:100%}.page{width:min(100%,760px);margin:0 auto;padding:24px 16px 116px}.page-title{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;margin-bottom:22px}.page-title h1{max-width:12ch}.page-lede{max-width:55ch;margin-bottom:24px;color:var(--muted);line-height:1.55}.eyebrow{margin-bottom:7px;color:var(--accent);font-size:.68rem;font-weight:900;letter-spacing:.15em;text-transform:uppercase}.muted-copy,.form-hint{color:var(--muted);font-size:.88rem;line-height:1.55}.page-loader,.boot-screen{display:grid;min-height:55vh;place-items:center;color:var(--muted)}.boot-screen{min-height:100vh}.empty-state{display:grid;min-height:55vh;padding:32px;place-content:center;text-align:center}.back-row{display:flex;align-items:center;justify-content:space-between;min-height:30px;margin-bottom:25px;color:var(--muted);font-size:.82rem}.text-link{padding:5px 0;color:var(--muted);font-weight:750}.text-link:hover{color:var(--text)}.tab-bar{position:fixed;z-index:40;right:0;bottom:0;left:0;display:grid;grid-template-columns:repeat(4,1fr);padding:8px 8px max(8px,env(safe-area-inset-bottom));border-top:1px solid var(--line);background:#0b0d10f0;box-shadow:0 -15px 35px #00000042;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.tab-bar a{display:flex;min-height:52px;align-items:center;justify-content:center;flex-direction:column;gap:3px;border-radius:12px;color:#778085;font-size:.68rem;font-weight:760}.tab-bar a.active{color:var(--accent);background:#c8f25a0f}.tab-bar__icon{height:20px;font-size:1.15rem;line-height:1}.button{display:inline-flex;min-height:50px;align-items:center;justify-content:center;gap:8px;padding:0 18px;border:1px solid transparent;border-radius:13px;cursor:pointer;font-weight:880;letter-spacing:-.01em;text-transform:uppercase}.button:disabled{cursor:not-allowed;opacity:.4}.button--primary{border-color:var(--accent);background:var(--accent);color:var(--accent-ink);box-shadow:0 8px 28px #c8f25a1f}.button--secondary{border-color:#3a444c;background:var(--surface-raised);color:var(--text)}.button--ghost{border-color:var(--line);background:transparent;color:var(--muted)}.button--proof{border-color:var(--proof);background:var(--proof);color:#241704;box-shadow:0 8px 30px #f7b84a24}.button--wide{width:100%}.button--small{min-height:41px;padding:0 15px;font-size:.75rem}.home-page{padding-top:28px}.week-pill{display:flex;min-width:72px;align-items:center;flex-direction:column;padding:10px;border:1px solid var(--line);border-radius:14px;background:var(--surface);font-size:1.25rem;font-weight:900}.week-pill small{margin-top:2px;color:var(--muted);font-size:.55rem;letter-spacing:.08em;text-transform:uppercase}.unlock-strip{margin-bottom:15px;padding:12px 14px;border:1px solid rgba(200,242,90,.16);border-left:3px solid var(--accent);border-radius:10px;background:#c8f25a0b;color:#c8cec3;font-size:.78rem;line-height:1.4}.exercise-grid{display:grid;gap:12px}.exercise-card{overflow:hidden;border:1px solid var(--line);border-radius:var(--radius);background:linear-gradient(145deg,#15191f,#101318);box-shadow:0 10px 28px #00000029;transition:border-color .16s ease,transform .16s ease}.exercise-card:active{transform:scale(.992)}.exercise-card--ready{border-color:#f7b84ae0;box-shadow:0 0 0 1px #f7b84a29,0 14px 34px #00000038}.exercise-card--ready .eyebrow{color:var(--proof)}.exercise-card__main{display:block;padding:17px}.exercise-card__head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.exercise-card__head h2{font-size:1.45rem}.exercise-card__weight{margin:13px 0 14px;color:#dfe4da;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:1.05rem;font-weight:800}.exercise-card .button{margin-top:14px}.pace-copy{margin:10px 0 0;color:var(--muted);font-size:.78rem;line-height:1.45}.progress-wrap{width:100%}.progress-track{position:relative;overflow:hidden;height:18px;border:1px solid #303840;border-radius:999px;background:#090b0d;box-shadow:inset 0 2px 5px #00000073}.progress-fill{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#9fc63a,var(--accent-strong));box-shadow:0 0 22px #c8f25a59;transition:width .42s cubic-bezier(.2,.9,.3,1)}.progress-track--ready{border-color:var(--proof)}.progress-track--ready .progress-fill{background:linear-gradient(90deg,#cf8b20,var(--proof));box-shadow:0 0 22px #f7b84a59}.progress-meta{display:flex;align-items:baseline;justify-content:flex-end;gap:4px;margin-top:8px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.progress-meta strong{font-size:1.35rem}.progress-meta span{color:var(--muted);font-size:.82rem}.progress-wrap--compact .progress-track{height:10px}.progress-wrap--compact .progress-meta{margin-top:6px}.progress-wrap--compact .progress-meta strong{font-size:.95rem}.progress-wrap--compact .progress-meta span{font-size:.7rem}.logger-page{padding-bottom:125px}.logger-hero h1{margin-bottom:20px}.weight-control{display:block;margin-bottom:10px}.weight-control>span,.giant-input>span{display:block;margin-bottom:5px;color:var(--muted);font-size:.7rem;font-weight:800;letter-spacing:.11em;text-transform:uppercase}.weight-control>div,.giant-input>div{display:flex;align-items:baseline;gap:9px}.weight-control input,.giant-input input{width:min(70vw,260px);padding:0;border:0;outline:0;background:transparent;color:var(--text);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:clamp(3rem,18vw,6rem);font-weight:900;letter-spacing:-.09em;line-height:.95}.weight-control b,.giant-input b{color:var(--muted);font-size:1.05rem;text-transform:uppercase}.weight-warning{padding:10px 12px;border-left:2px solid var(--proof);background:var(--proof-soft);color:#e6c791;font-size:.75rem;line-height:1.45}.logger-page>.progress-wrap{margin:24px 0 18px}.proof-cta{display:flex;align-items:center;justify-content:space-between;gap:15px;margin:16px 0;padding:15px;border:1px solid var(--proof);border-radius:14px;background:linear-gradient(135deg,#f7b84a24,#f7b84a0a);color:#ffe3b2}.proof-cta span{display:flex;flex-direction:column;gap:4px}.proof-cta strong{text-transform:uppercase}.proof-cta small{color:#bf9e68}.number-pad{margin:22px 0 14px;padding:0;border:0}.number-pad legend{margin-bottom:9px;color:var(--muted);font-size:.7rem;font-weight:850;letter-spacing:.12em;text-transform:uppercase}.number-pad__presets{display:grid;grid-template-columns:repeat(5,1fr);gap:7px}.number-pad__presets button{min-width:0;min-height:56px;padding:0;border:1px solid var(--line);border-radius:13px;background:var(--surface);color:var(--text);font-size:1.08rem;font-weight:850;cursor:pointer}.number-pad__presets button.is-selected{border-color:var(--accent);background:#c8f25a1a;color:var(--accent);box-shadow:inset 0 0 0 1px #c8f25a1f}.number-pad__custom{display:flex;align-items:center;justify-content:space-between;margin-top:8px;padding:7px 8px 7px 14px;border:1px solid var(--line);border-radius:12px;color:var(--muted);font-size:.78rem;font-weight:750}.number-pad__custom input{width:94px;min-height:41px;padding:0 10px;border:0;border-radius:9px;outline:0;background:#080a0d;color:var(--text);text-align:right;font-weight:850}.note-details{margin:11px 0 14px;color:var(--muted);font-size:.78rem}.note-details summary{width:fit-content;padding:6px 0;cursor:pointer}.note-details .field{margin-top:8px}.sticky-action{position:sticky;z-index:15;bottom:calc(79px + env(safe-area-inset-bottom));min-height:58px}.today-panel,.history-day,.proof-history,.logger-panel{margin-top:25px;padding:17px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}.section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:15px;margin-bottom:14px}.section-head>span{color:var(--muted);font-size:.75rem;font-weight:750}.set-list{display:grid;gap:0;margin:0;padding:0;list-style:none}.set-list li{display:flex;min-height:58px;align-items:center;justify-content:space-between;gap:15px;border-top:1px solid var(--line-soft)}.set-list li:first-child{border-top:0}.set-list li>div{display:flex;align-items:baseline;gap:10px}.set-list strong{min-width:30px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:1.1rem}.set-list span,.set-list time{color:var(--muted);font-size:.72rem;text-transform:capitalize}.delete-button{min-height:39px;padding:0 10px;border:1px solid rgba(255,124,114,.24);border-radius:9px;background:#ff7c720d;color:#da817a;cursor:pointer;font-size:.7rem;font-weight:750}.proof-page{min-height:100vh}.proof-page:before{position:fixed;z-index:-1;inset:0;background:radial-gradient(circle at 50% 8%,rgba(247,184,74,.14),transparent 38rem);content:""}.text-link--proof,.proof-page .eyebrow{color:var(--proof)}.proof-hero{margin-bottom:24px}.proof-hero p:last-child{margin:13px 0 0;color:#c7b38e}.proof-slots{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;margin:0 0 22px;padding:0;list-style:none}.proof-slots li{display:flex;min-width:0;min-height:112px;align-items:center;justify-content:center;flex-direction:column;gap:7px;border:1px solid var(--line);border-radius:13px;background:var(--surface)}.proof-slots span,.proof-slots small{color:var(--muted);font-size:.65rem}.proof-slots strong{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:1.55rem}.proof-slots li.is-pass{border-color:#8de381a6;background:#8de38112}.proof-slots li.is-pass strong{color:var(--success)}.proof-slots li.is-miss{border-color:#ff7c72a6;background:#ff7c720f}.proof-slots li.is-miss strong{color:var(--danger)}.proof-actions{display:grid;grid-template-columns:1fr 1.45fr;gap:9px;margin-top:14px}.modal-backdrop{position:fixed;z-index:100;inset:0;display:grid;padding:20px;place-items:center;background:#040507e0;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.result-modal{width:min(100%,430px);padding:26px;border:1px solid var(--line);border-radius:24px;background:#14181d;box-shadow:var(--shadow)}.result-modal--pass{border-color:#c8f25a94;box-shadow:0 0 80px #c8f25a21}.result-modal--fail{border-color:#f7b84a99}.result-modal h2{margin-bottom:20px;font-size:2rem}.result-modal p:not(.eyebrow){color:var(--muted);line-height:1.55}.result-modal__weight{margin:8px 0 14px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:3.2rem;font-weight:900}.result-modal .unlock-callout{padding:12px;border:1px solid rgba(200,242,90,.32);border-radius:10px;color:var(--accent)!important;font-weight:850;text-transform:uppercase}.skill-tree{display:grid}.skill-tree__branch{position:relative;padding-top:22px}.skill-tree__branch:first-child{padding-top:0}.skill-tree__line{position:absolute;top:0;left:29px;width:1px;height:22px;background:#354049}.skill-node{position:relative;display:flex;min-height:145px;align-items:flex-start;gap:14px;padding:17px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}.skill-node--locked{color:#a3aaad;background:linear-gradient(145deg,#11151a,#0e1115)}.skill-node--unlocked{border-color:#c8f25a61;background:linear-gradient(145deg,#c8f25a14,#11151a 60%)}.skill-node__icon{display:grid;width:26px;height:26px;flex:0 0 26px;place-items:center;border:1px solid #46515b;border-radius:50%;background:#0b0e11;color:#718087}.skill-node--unlocked .skill-node__icon{border-color:var(--accent);color:var(--accent);box-shadow:0 0 18px #c8f25a33}.skill-node__body{min-width:0;flex:1}.skill-node__body h2{font-size:1.35rem}.skill-node__arrow{align-self:center;color:var(--accent);font-size:1.3rem}.gate-list{display:grid;gap:5px;margin:12px 0 0;padding:0;list-style:none}.gate-list li{display:flex;align-items:flex-start;gap:7px;color:#747e83;font-size:.75rem;line-height:1.35}.gate-list li.is-met{color:#aeb6ac}.gate-list li.is-met span{color:var(--accent)}.check-row{display:flex;min-height:48px;align-items:center;gap:10px;cursor:pointer;color:#ced3c9;font-size:.84rem}.check-row input{width:20px;height:20px;accent-color:var(--accent)}.check-row--gate{margin-top:12px;padding-top:10px;border-top:1px solid var(--line-soft)}.locked-detail{max-width:480px;margin:50px auto;padding:28px;border:1px solid var(--line);border-radius:24px;background:var(--surface);text-align:center}.locked-detail__icon{display:block;margin-bottom:16px;color:#6b747b;font-size:3rem}.locked-detail .gate-list{text-align:left}.skill-hero{display:grid;grid-template-columns:1fr auto;align-items:end;gap:16px;margin-bottom:24px}.skill-hero .eyebrow{grid-column:1 / -1;margin-bottom:-8px}.skill-best{display:flex;align-items:flex-end;flex-direction:column}.skill-best strong{color:var(--accent);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:2.4rem;line-height:1}.skill-best span{margin-top:4px;color:var(--muted);font-size:.62rem;text-transform:uppercase}.logger-panel{margin-top:0}.giant-input{display:block;margin:10px 0 22px}.stats-grid{display:grid;gap:14px}.stat-card{padding:17px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}.weekly-chart{display:flex;height:132px;align-items:stretch;gap:5px;margin-top:19px;border-bottom:1px solid var(--line)}.weekly-chart__column{display:flex;min-width:0;height:100%;align-items:center;justify-content:flex-end;flex:1;flex-direction:column}.weekly-chart__column i{display:block;width:72%;min-height:2px;border-radius:5px 5px 0 0;background:linear-gradient(180deg,var(--accent),#6f8c25);opacity:.86}.weekly-chart__column small{height:19px;padding-top:4px;color:#657076;font-size:.55rem}.weekly-chart__value{min-height:16px;color:#879197;font-size:.55rem}.sparkline{margin-top:17px}.sparkline>span{color:var(--muted);font-size:.65rem;text-transform:uppercase}.sparkline svg{display:block;width:100%;height:42px;margin-top:5px;overflow:visible}.sparkline line{stroke:#f7b84a66;stroke-width:.6;stroke-dasharray:2 2}.sparkline polyline{fill:none;stroke:var(--accent);stroke-width:1.5;vector-effect:non-scaling-stroke}.proof-history__list{display:grid;gap:0;margin:0;padding:0;list-style:none}.proof-history__list li{display:grid;grid-template-columns:auto 1fr auto;min-height:62px;align-items:center;gap:11px;border-top:1px solid var(--line-soft)}.proof-history__list li:first-child{border-top:0}.proof-history__list div{display:flex;flex-direction:column;gap:3px}.proof-history__list span,.proof-history__list time{color:var(--muted);font-size:.7rem;text-transform:capitalize}.result-dot{width:8px;height:8px;border-radius:50%;background:var(--muted)}.result-dot--pass{background:var(--success)}.result-dot--fail{background:var(--proof)}.result-dot--abandon{background:#687278}.settings-page{display:grid;gap:14px}.settings-alert{display:flex;flex-direction:column;gap:3px;padding:14px;border:1px solid rgba(247,184,74,.38);border-radius:12px;background:#f7b84a12;color:#f5d8a7;font-size:.8rem}.settings-feedback{position:sticky;z-index:20;top:66px;box-shadow:0 10px 30px #0000004d}.settings-section{padding:17px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}.field{display:flex;flex:1;flex-direction:column;gap:7px}.field>span{color:#abb2b3;font-size:.72rem;font-weight:750}.field input,.field select{width:100%;min-height:50px;padding:0 13px;border:1px solid #333b43;border-radius:11px;outline:none;background:#0a0d10;color:var(--text)}.field input:focus,.field select:focus{border-color:var(--accent);box-shadow:0 0 0 3px #c8f25a14}.field-row,.field-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.field-stack{display:grid;gap:12px;margin-bottom:12px}.inline-save{display:grid;grid-template-columns:1fr auto;align-items:end;gap:9px}.config-list{display:grid;gap:8px}.config-card{overflow:hidden;border:1px solid var(--line-soft);border-radius:12px;background:#0e1115}.config-card summary{display:flex;min-height:62px;align-items:center;justify-content:space-between;gap:15px;padding:11px 13px;cursor:pointer;list-style:none}.config-card summary::-webkit-details-marker{display:none}.config-card summary>span:first-child{display:flex;flex-direction:column;gap:4px}.config-card summary small,.config-card summary>span:last-child{color:var(--muted);font-size:.7rem}.config-card__body{padding:14px;border-top:1px solid var(--line-soft)}.config-actions{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:14px}.file-field input{padding:10px}.danger-copy{color:var(--danger);font-size:.78rem;line-height:1.45}.install-card p{margin-bottom:0;color:var(--muted);font-size:.85rem;line-height:1.55}.settings-foot{margin:10px 0 0;color:#5e676c;font-size:.68rem;text-align:center}.lock-page{display:grid;min-height:100vh;padding:max(24px,env(safe-area-inset-top)) 16px max(24px,env(safe-area-inset-bottom));place-items:center;background:radial-gradient(circle at 50% 0%,rgba(200,242,90,.12),transparent 34rem)}.lock-card{width:min(100%,450px);padding:24px;border:1px solid var(--line);border-radius:24px;background:#12161bf5;box-shadow:var(--shadow)}.lock-brand{display:flex;align-items:center;gap:14px;margin-bottom:23px}.lock-brand h1{font-size:2.1rem}.lock-intro{margin-bottom:22px;color:var(--muted);line-height:1.55}.lock-card form{display:grid;gap:14px}.default-password-note{margin:0;padding:11px;border:1px solid rgba(247,184,74,.34);border-radius:10px;background:#f7b84a12;color:#e7c590;font-size:.75rem;line-height:1.45}.form-error,.form-success{margin:0;padding:11px 12px;border:1px solid rgba(255,124,114,.36);border-radius:10px;background:#ff7c7212;color:#ffaba4;font-size:.78rem;line-height:1.45}.form-success{border-color:#8de38152;background:#8de3810f;color:var(--success)}@media(min-width:700px){.app-header{padding-right:26px;padding-left:26px}.page{padding-right:24px;padding-left:24px}.exercise-grid,.stats-grid{grid-template-columns:1fr 1fr}.tab-bar{right:auto;left:50%;width:520px;bottom:14px;transform:translate(-50%);border:1px solid var(--line);border-radius:18px;padding-bottom:8px}.sticky-action{bottom:90px}}@media(max-width:390px){.page{padding-right:13px;padding-left:13px}.number-pad__presets{gap:5px}.proof-slots{gap:4px}.proof-slots li{min-height:104px}.field-grid{grid-template-columns:1fr}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.01ms!important}}
