@font-face{font-family:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;font-stretch:62% 125%;src:url(/assets/archivo-vietnamese-wdth-normal-rJmnGBSt.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;font-stretch:62% 125%;src:url(/assets/archivo-latin-ext-wdth-normal-7khWdh9v.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;font-stretch:62% 125%;src:url(/assets/archivo-latin-wdth-normal-DY7AcnAa.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}*{box-sizing:border-box}body{margin:0;background:#0c1017;color:#f5f7fb;font-family:Inter,system-ui,sans-serif}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.spin{animation:spin 1s linear infinite}.shell{min-height:100vh;display:grid;grid-template-columns:235px 1fr}aside{border-right:1px solid #202634;padding:25px 18px;display:flex;flex-direction:column}.logo{font-size:21px;font-weight:800;display:flex;gap:9px;align-items:center;margin:0 9px 32px}.logo svg{color:#9cff78}nav{display:grid;gap:7px}nav a{display:flex;gap:11px;align-items:center;padding:12px;border-radius:10px;color:#939dac}nav a.active{background:#171d28;color:#fff}.athlete{margin-top:auto;border-top:1px solid #202634;padding:20px 10px 0;font-weight:700}.athlete small{display:block;color:#758092;margin-top:4px;font-weight:500}main{padding:44px;max-width:1400px;width:100%;margin:auto}header{display:flex;justify-content:space-between;gap:20px;align-items:start}h1{font-size:43px;margin:8px 0 6px;letter-spacing:-.04em}header p,.coach p,.lower p{color:#929dac}.kicker{text-transform:uppercase;letter-spacing:.13em;font-size:11px;font-weight:800;color:#8ecbff}.api{background:#151c25;border:1px solid #252d3b;padding:8px 11px;border-radius:999px;font-size:12px;color:#a6b1bf}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:35px 0}.card,.today,.coach,.lower article{background:#121823;border:1px solid #202837;border-radius:17px}.card{padding:20px}.card span,.card small{display:block;color:#828d9d}.card strong{display:block;font-size:31px;margin:9px 0}.grid{display:grid;grid-template-columns:1.7fr .8fr;gap:15px}.today,.coach{padding:25px}.row{display:flex;justify-content:space-between;gap:20px}.today h2{font-size:34px;margin:7px 0}.score{font-size:33px;font-weight:800;text-align:right}.score small{display:block;font-size:11px;color:#7f8a99}.meta{display:flex;gap:8px}.meta span{border:1px solid #2b3546;padding:7px 9px;border-radius:999px;color:#a7b1bf;font-size:12px}.workout{display:flex;align-items:end;height:100px;gap:4px;margin:25px 0}.bar{flex:1;border-radius:4px 4px 0 0;background:#5981a8}.warm,.cool{height:42%}.tempo{height:60%}.hard{height:93%}.easy{height:30%}button{border:0;background:#d9ff70;color:#10150c;padding:12px 16px;border-radius:10px;font-weight:800;display:inline-flex;align-items:center;gap:7px}.coach svg{color:#a7ff80}.coach h3,.lower h3{font-size:23px;margin:10px 0}.prompt{margin-top:22px;background:#0d131d;border:1px solid #242e3c;padding:14px;border-radius:11px;color:#adb8c6}.lower{display:grid;grid-template-columns:1fr 1fr;gap:15px;margin-top:15px}.lower article{padding:24px}.load{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.load div{background:#0d131c;border-radius:12px;padding:15px}.load strong{font-size:26px;display:block}.load span{color:#7d8998;font-size:12px}.outline{background:transparent;color:#fff;border:1px solid #313b4c}@media(max-width:900px){.shell{grid-template-columns:1fr}aside{display:none}main{padding:25px}.stats{grid-template-columns:1fr 1fr}.grid,.lower{grid-template-columns:1fr}}@media(max-width:560px){.stats{grid-template-columns:1fr}h1{font-size:36px}header{display:block}.api{display:inline-block;margin-top:10px}}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:32px 20px;background:radial-gradient(ellipse at top left,#22372b 0,transparent 55%),#0c1017;color:#f5f7fb}.auth-card{width:100%;max-width:440px;padding:36px;background:#121823;border:1px solid #293344;border-radius:22px}.auth-card h1{font-size:32px;margin:18px 0 12px;line-height:1.15}.auth-card p{color:#a2adbd;line-height:1.6}.auth-card form{display:flex;flex-direction:column;gap:10px;margin-top:26px}.auth-card label{font-size:13px;margin-top:8px}.auth-card input{width:100%;padding:13px;border:1px solid #354055;border-radius:9px;background:#0c1017;color:#f5f7fb;font:inherit}.auth-card input:focus-visible{outline:2px solid #9cff78;outline-offset:2px}.auth-card button,.account-bar button{cursor:pointer;border-radius:8px;padding:11px 15px;font:inherit}.auth-submit{background:#9cff78;color:#0c1017;border:0;font-weight:700!important;margin-top:14px}.auth-card button:disabled,.account-bar button:disabled{opacity:.55;cursor:wait}.auth-switch{border:0;background:transparent;color:#9cff78;width:100%;margin-top:14px}.auth-card small{color:#a2adbd}.auth-card .auth-error{color:#ff9090;margin:6px 0}.auth-role{border:1px solid #354055;border-radius:9px;padding:10px 13px;display:flex;gap:18px;margin-top:8px}.auth-role legend{font-size:12px;color:#a2adbd;padding:0 4px}.auth-role label{display:flex;align-items:center;gap:6px;margin-top:0;font-size:14px;color:#f5f7fb}.auth-role input{width:auto;padding:0}.auth-strava{border-top:1px solid #293344;margin-top:22px;padding-top:22px;font-size:13px}.auth-strava strong{color:#fc824b}.account-bar{display:flex;gap:16px;align-items:center;justify-content:flex-end;padding:10px 24px;background:#121823;color:#a2adbd;font-size:13px;flex-wrap:wrap}.account-bar button{background:transparent;border:1px solid #354055;color:#f5f7fb}@media(max-width:480px){.auth-card{padding:24px}.auth-card h1{font-size:28px}}.account-bar a{color:#9cff78;text-decoration:none}.profile-layout{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(240px,1fr);gap:20px;margin-top:28px}.profile-panel{padding:26px;border:1px solid #293344;border-radius:17px;background:#121823;min-width:0}.profile-panel h2{margin:0 0 12px;font-size:21px}.profile-panel p{color:#a2adbd;font-size:14px;line-height:1.6;overflow-wrap:anywhere}.profile-summary{display:grid;gap:20px;align-content:start}.profile-fields{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin:24px 0;padding:0;border:0;min-width:0}.profile-fields label{display:flex;flex-direction:column;gap:9px;font-size:13px;color:#b5becc;min-width:0}.profile-fields input,.profile-fields select{min-width:0;width:100%;padding:12px;background:#0c1017;border:1px solid #354055;color:#f5f7fb;border-radius:9px;font:inherit;color-scheme:dark}.profile-fields input:focus-visible,.profile-fields select:focus-visible{outline:2px solid #9cff78;outline-offset:2px}.profile-actions{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.profile-actions span,.profile-connected{color:#9cff78}.profile-error{color:#ff9090}.profile-page button{cursor:pointer}.profile-page button:disabled{opacity:.6;cursor:wait}@media(max-width:1000px){.profile-layout{grid-template-columns:1fr}}@media(max-width:560px){.profile-fields{grid-template-columns:1fr}.profile-panel{padding:20px}}.training-calendar{margin-top:26px}.calendar-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.calendar-toolbar h2{font-size:21px;margin:0}.calendar-controls{display:flex;gap:5px;flex-wrap:wrap}.calendar-controls button{background:#171e2c;color:#bec8d8;border:1px solid #303d50;cursor:pointer}.calendar-controls button[aria-pressed=true]{background:#9cff78;color:#0c1017}.calendar-summary{display:flex;gap:24px;flex-wrap:wrap;margin:18px 0;color:#929dac;font-size:13px}.calendar-summary strong{color:#d7e3f2}.calendar-scroll{overflow-x:auto;padding-bottom:12px}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(140px,1fr));gap:8px}.calendar-day{grid-template-columns:minmax(0,1fr)}.calendar-cell{min-width:0;display:flex;flex-direction:column;border:1px solid #283448;border-radius:12px;background:#121823;padding:10px;min-height:220px}.calendar-month .calendar-cell{min-height:160px}.calendar-day .calendar-cell{min-height:320px}.calendar-today{border-color:#8ecbff}.calendar-outside{background:#0c1017}.calendar-outside .calendar-date{color:#768295}.calendar-drop-target{border-color:#9cff78;background:#152016}.calendar-date{padding:4px 0 10px;background:transparent;color:#c8d4e4;font-size:12px;display:flex;flex-wrap:wrap;cursor:pointer;text-align:left}.calendar-date small{color:#9cff78}.calendar-events{display:flex;flex-direction:column;gap:6px;margin-bottom:8px}.calendar-event{display:flex;flex-direction:column;align-items:start;width:100%;text-align:left;font:inherit;background:#1a2332;border:1px solid #2d4059;border-left:3px solid #9cacc0;border-radius:8px;padding:6px 8px;cursor:pointer}button.calendar-event:hover{background:#1e2a3d}.calendar-event-race{border-left-color:#ff7070}.calendar-event-run{border-left-color:#ffb84d}.calendar-event-club{border-left-color:#8ecbff}.calendar-event-title{font-size:12px;font-weight:600;color:#eef3fa;overflow-wrap:anywhere}.calendar-event-location{color:#a7b6c8;font-size:10px}.calendar-workouts{flex:1}.calendar-workout{background:#1a2636;border:1px solid #2d4059;border-radius:8px;margin:8px 0;overflow:hidden}.calendar-workout[draggable=true]{cursor:grab}.calendar-workout.calendar-dragging{opacity:.45}.calendar-workout-open{display:flex;flex-direction:column;align-items:start;text-align:left;width:100%;background:transparent;color:#eef3fa;padding:10px;cursor:pointer;overflow-wrap:anywhere}.calendar-workout-open small{color:#8ecbff;font-size:10px;text-transform:uppercase}.calendar-workout-open strong{font-size:13px}.calendar-workout-open span{font-size:11px;color:#a7b6c8}.calendar-status{padding:6px 10px;font-size:11px;background:transparent;color:#9cff78;cursor:pointer;text-align:left}.calendar-add{background:transparent;border:1px dashed #35435a;color:#9cacc0;padding:8px;font-size:11px;justify-content:center;cursor:pointer;margin-top:10px}.calendar-empty{color:#7c8a9d;font-size:12px}.training-calendar button:focus-visible{outline:2px solid #9cff78;outline-offset:2px}.profile-fields .profile-confirm{grid-column:1/-1;flex-direction:row;align-items:start;line-height:1.5}.profile-fields .profile-confirm input{width:auto;margin-top:3px}.profile-category{display:block;font-size:30px;color:#9cff78}.category-bands{width:100%;border-collapse:collapse;margin-top:12px;font-size:13px}.category-bands th,.category-bands td{padding:8px;text-align:left;border-bottom:1px solid #293344}.profile-summary summary{cursor:pointer;color:#c8d4e4}.profile-summary a,.estimated-category a{color:#8ecbff}.estimated-category summary{cursor:pointer;color:#c8d4e4}.estimated-category button{cursor:pointer;margin-top:8px}.training-progress{margin:24px 0 30px;padding:24px;border:1px solid #293344;border-radius:17px;background:#101721}.progress-heading,.progress-totals,.progress-track-title{display:flex;justify-content:space-between;gap:16px;align-items:center;flex-wrap:wrap}.progress-heading h2{margin:8px 0;font-size:26px}.training-progress p{color:#9eacbd;line-height:1.5;font-size:13px}.progress-totals strong,.progress-totals span{display:flex;gap:6px;align-items:center;color:#9cff78}.progress-tracks{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:14px;margin:20px 0}.progress-track{display:flex;flex-direction:column;background:#17202e;border:1px solid #2b394e;border-radius:12px;padding:18px;min-width:0}.progress-track h3{font-size:18px;margin:0}.progress-track-title span{color:#8ecbff;font-size:12px}.progress-xp{font-size:27px;color:#9cff78;margin-top:16px}.progress-track progress{width:100%;height:9px;accent-color:#9cff78}.progress-badges{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0 16px}.progress-badges span{display:inline-flex;gap:4px;align-items:center;padding:5px 7px;background:#263449;border-radius:6px;font-size:11px;color:#d5e6fb}.progress-badges .progress-locked{color:#a3afbe;background:transparent;padding:0}.progress-track small{color:#a3afbe;margin-top:auto}.progress-track button{margin-top:14px;justify-content:center;cursor:pointer}.training-progress summary{cursor:pointer;color:#8ecbff;font-size:13px}@media(max-width:560px){.training-progress{padding:16px}.progress-tracks{grid-template-columns:1fr}}.challenge-layout{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:20px;margin-top:24px}.challenge-event{margin-top:16px}.challenge-event h2{margin-top:12px}.challenge-actions{display:flex;gap:10px;flex-wrap:wrap}.challenge-board{align-self:start;overflow-wrap:anywhere}.challenge-rules{color:#9eacbd;font-size:13px;line-height:1.6}.challenge-form{margin-top:20px}.challenges-page button{cursor:pointer}.challenges-page button:disabled{opacity:.5;cursor:default}@media(max-width:900px){.challenge-layout{grid-template-columns:1fr}}.pub{--bg:#0c1017;--panel:#0f151f;--panel-2:#121823;--line:#202837;--line-2:#2a3445;--text:#f5f7fb;--body:#c7cedb;--muted:#8f99a8;--green:#9cff78;--blue:#8ecbff;--warm:#ffb84d;--work:#ff9f5a;--red:#ff7070;--measure:68ch;min-height:100vh;background:var(--bg);color:var(--text);font-family:Archivo Variable,Archivo,system-ui,sans-serif;font-size:17px;line-height:1.6;font-feature-settings:"ss01" 0;-webkit-font-smoothing:antialiased}.pub ::selection{background:var(--green);color:var(--bg)}.pub :focus-visible{outline:2px solid var(--green);outline-offset:3px;border-radius:4px}.pub{scrollbar-color:var(--line-2) var(--bg)}.pub a{color:var(--blue);text-decoration-thickness:1px;text-underline-offset:3px}.pub a:hover{color:var(--text)}.pub main{padding:0;max-width:none;margin:0}.pub header,.pub footer{display:block}.pub button{font:inherit;cursor:pointer}.pub h1,.pub h2,.pub h3{color:var(--text);font-stretch:110%;font-weight:800;text-wrap:balance;letter-spacing:-.025em;margin:0}.pub h1{font-size:clamp(2.3rem,5.2vw,4.3rem);line-height:1.02}.pub h2{font-size:clamp(1.55rem,2.8vw,2.3rem);line-height:1.1;margin-top:0}.pub h3{font-size:1.2rem;line-height:1.25;font-stretch:105%;letter-spacing:-.01em}.pub p,.pub li{color:var(--body)}.pub strong{color:var(--text)}.pub .num,.pub table{font-variant-numeric:tabular-nums}.pub .wrap{max-width:1160px;margin:0 auto;padding-inline:clamp(16px,4vw,48px)}.pub .measure{max-width:var(--measure)}.pub .lede{font-size:clamp(1.05rem,1.6vw,1.25rem);line-height:1.55;color:var(--body);max-width:60ch}.pub .muted{color:var(--muted)}.pub .small{font-size:.9rem}.pub .site-note{margin:0;padding:8px 16px;display:flex;flex-wrap:wrap;justify-content:center;gap:4px 12px;font-size:.86rem;background:var(--panel-2);border-bottom:1px solid var(--line);text-align:center}.pub .site-note strong{color:var(--green);font-weight:700}.pub .site-note a{font-weight:600}.pub .site-header{position:sticky;top:0;z-index:20;background:#0c1017eb;-webkit-backdrop-filter:saturate(1.2) blur(8px);backdrop-filter:saturate(1.2) blur(8px);border-bottom:1px solid var(--line)}.pub .site-header .wrap{display:flex;align-items:center;gap:28px;min-height:64px}.pub .brand{display:flex;align-items:center;gap:10px;color:var(--text);text-decoration:none;font-weight:800;font-stretch:112%;font-size:1.15rem;letter-spacing:-.01em;white-space:nowrap}.pub .brand:hover{color:var(--text)}.pub .site-nav{display:flex;gap:22px;flex:1}.pub .site-nav a{color:var(--body);text-decoration:none;font-size:.95rem;font-weight:500;padding:6px 0;border-bottom:2px solid transparent}.pub .site-nav a:hover,.pub .site-nav a[aria-current=page]{color:var(--text);border-bottom-color:var(--green)}.pub .header-actions{display:flex;gap:10px;align-items:center}@media(max-width:820px){.pub .site-header .wrap{flex-wrap:wrap;gap:6px 16px;padding-block:10px}.pub .site-nav{order:3;flex-basis:100%;overflow-x:auto;gap:18px;padding-bottom:2px;scrollbar-width:none}.pub .header-actions{margin-left:auto}}.pub .btn{display:inline-flex;align-items:center;gap:8px;border-radius:10px;padding:11px 18px;font-weight:700;font-size:.95rem;text-decoration:none;border:1px solid transparent;transition:background-color .15s,border-color .15s,color .15s}.pub .btn-primary{background:var(--green);color:var(--bg)}.pub .btn-primary:hover{background:#b8ff9e;color:var(--bg)}.pub .btn-ghost{background:transparent;color:var(--text);border-color:var(--line-2)}.pub .btn-ghost:hover{border-color:var(--muted);color:var(--text)}.pub .btn[disabled]{opacity:.5;cursor:not-allowed}.pub .btn-sm{padding:7px 13px;font-size:.88rem}.pub .crumbs{font-size:.85rem;color:var(--muted);padding-top:22px}.pub .crumbs ol{list-style:none;display:flex;flex-wrap:wrap;gap:6px;margin:0;padding:0}.pub .crumbs li{color:var(--muted)}.pub .crumbs li+li:before{content:"/";margin-right:6px;color:var(--line-2)}.pub .crumbs a{color:var(--muted);text-decoration:none}.pub .crumbs a:hover{color:var(--text);text-decoration:underline}.pub .page-head{padding:28px 0 36px;border-bottom:1px solid var(--line)}.pub .page-head h1{max-width:20ch}.pub .page-head .lede{margin-top:16px}.pub .dates{display:flex;gap:16px;flex-wrap:wrap;font-size:.85rem;color:var(--muted);margin-top:14px}.pub section.band{padding:clamp(48px,7vw,88px) 0;border-bottom:1px solid var(--line)}.pub .split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:clamp(28px,5vw,64px);align-items:start}@media(max-width:900px){.pub .split{grid-template-columns:1fr}}.pub .cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:28px 36px;margin-top:28px}.pub .cols>div{border-top:2px solid var(--line-2);padding-top:14px}.pub .cols>div h3{margin-bottom:6px}.pub .cols>div p{margin:0;font-size:.97rem}.pub .prose{max-width:var(--measure)}.pub .prose h2{margin:2.4em 0 .5em;font-size:clamp(1.35rem,2.2vw,1.8rem)}.pub .prose h3{margin:1.8em 0 .4em}.pub .prose p{margin:0 0 1em}.pub .prose ul,.pub .prose ol{padding-left:1.25em;margin:0 0 1.1em}.pub .prose li{margin:.3em 0}.pub .article-layout{display:grid;grid-template-columns:minmax(0,var(--measure)) minmax(200px,260px);gap:clamp(32px,6vw,80px);padding:36px 0 64px;justify-content:space-between}@media(max-width:980px){.pub .article-layout{grid-template-columns:1fr}}.pub .aside{position:sticky;top:88px;align-self:start;font-size:.92rem}.pub .aside h2{font-size:.95rem;font-stretch:100%;letter-spacing:0;margin:0 0 8px;color:var(--muted);font-weight:700}.pub .aside ul{list-style:none;padding:0;margin:0 0 24px;display:grid;gap:8px}@media(max-width:980px){.pub .aside{position:static}}.pub figure{margin:1.6em 0;background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:clamp(14px,2.4vw,22px)}.pub figcaption{font-size:.88rem;color:var(--muted);margin-top:12px;line-height:1.5}.pub .note{border:1px solid var(--line-2);border-radius:12px;padding:14px 16px;margin:1.4em 0;background:var(--panel-2)}.pub .note p:last-child{margin-bottom:0}.pub table{width:100%;border-collapse:collapse;font-size:.93rem;margin:1em 0 1.4em}.pub th{text-align:left;color:var(--muted);font-weight:600;font-size:.82rem;border-bottom:1px solid var(--line-2);padding:8px 10px 8px 0}.pub td{border-bottom:1px solid var(--line);padding:9px 10px 9px 0;color:var(--body);vertical-align:top}.pub .table-scroll{overflow-x:auto}.pub code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.88em;background:var(--panel-2);border:1px solid var(--line);border-radius:5px;padding:1px 5px;color:var(--text)}.pub .flow{list-style:none;display:flex;flex-wrap:wrap;gap:8px;align-items:stretch;padding:0;margin:0}.pub .flow li{flex:1 1 120px;background:var(--panel-2);border:1px solid var(--line-2);border-radius:10px;padding:10px 12px;color:var(--text);font-weight:700;font-size:.92rem;position:relative}.pub .flow li small{display:block;color:var(--muted);font-weight:500;font-size:.8rem;margin-top:2px}.pub .flow li:not(:last-child):after{content:"";position:absolute;right:-7px;top:50%;width:6px;height:10px;background:var(--green);clip-path:polygon(0 0,100% 50%,0 100%);transform:translateY(-50%);z-index:1}@media(max-width:640px){.pub .flow{flex-direction:column}.pub .flow li:not(:last-child):after{right:auto;left:18px;top:auto;bottom:-8px;width:10px;height:6px;clip-path:polygon(0 0,100% 0,50% 100%);transform:none}}.pub .tool{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.25fr);gap:clamp(20px,4vw,48px);padding:32px 0 48px;align-items:start}@media(max-width:900px){.pub .tool{grid-template-columns:1fr}}.pub .tool-results{position:sticky;top:84px;display:grid;gap:16px}@media(max-width:900px){.pub .tool-results{position:static}}.pub .field{display:grid;gap:6px;margin-bottom:14px}.pub .field label{font-size:.88rem;font-weight:600;color:var(--text)}.pub .field input{background:var(--panel-2);border:1px solid var(--line-2);color:var(--text);border-radius:10px;padding:11px 12px;font:inherit;font-variant-numeric:tabular-nums;max-width:220px}.pub .field input:focus{border-color:var(--green);outline:none}.pub .field small{color:var(--muted);font-size:.82rem}.pub .result{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:clamp(14px,2.4vw,22px)}.pub .stat-row{display:flex;flex-wrap:wrap;gap:24px;margin:4px 0 16px}.pub .stat-row div{display:grid}.pub .stat-row span{font-size:.8rem;color:var(--muted)}.pub .stat-row strong{font-size:1.5rem;font-stretch:108%;font-variant-numeric:tabular-nums}.pub .chips{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 16px}.pub .chip{background:var(--panel-2);border:1px solid var(--line-2);color:var(--body);border-radius:999px;padding:6px 12px;font-size:.85rem}.pub .chip[aria-pressed=true]{border-color:var(--green);color:var(--text)}.pub .field-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 14px}.pub .field-row input{max-width:none;width:100%;box-sizing:border-box}.pub details.field summary{cursor:pointer;font-size:.88rem;font-weight:600;color:var(--blue)}.pub .result-title{font-size:.95rem;font-stretch:100%;letter-spacing:0;color:var(--muted);margin:18px 0 6px}.pub .split-legend{list-style:none;margin:0;padding:0;display:grid;gap:6px;font-size:.9rem}.pub .split-legend li{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.pub .split-legend i{width:10px;height:10px;border-radius:2px;flex:none}.pub .next{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:0;border-top:1px solid var(--line);margin-top:8px}.pub .next a{display:block;padding:16px 18px 18px 0;text-decoration:none;border-bottom:1px solid var(--line)}.pub .next a strong{display:block;color:var(--text);font-size:1rem}.pub .next a span{color:var(--muted);font-size:.9rem}.pub .next a:hover strong{color:var(--green)}.pub .defs{margin:0;display:grid;gap:14px}.pub .defs dt{color:var(--text);font-weight:700}.pub .defs dd{margin:2px 0 0;color:var(--body);font-size:.97rem}.pub .demo{--scene:4.5s;background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:clamp(14px,2.4vw,22px);display:grid;gap:14px;min-width:0}.pub .demo-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.pub .demo-tag{font-size:.75rem;font-weight:700;color:var(--green);letter-spacing:.04em;text-transform:uppercase}.pub .demo-title{margin:2px 0 0;color:var(--text);font-weight:800;font-stretch:108%;font-size:1.15rem;line-height:1.25}.pub .demo-stage{min-height:228px;display:grid;align-content:center}.pub .demo-ftp{display:grid;grid-template-columns:1fr 1fr;gap:12px}.pub .demo-field{background:var(--panel-2);border:1px solid var(--line-2);border-radius:10px;padding:10px 12px;display:grid;gap:2px}.pub .demo-field>span{font-size:.8rem;color:var(--muted)}.pub .demo-field strong{font-size:1.4rem}.pub .demo-type{display:inline-block;animation:demo-type .6s steps(3) .2s both}.pub .demo-result{grid-column:1/-1}.pub .demo-result>strong{font-size:clamp(2.6rem,6vw,3.4rem);font-stretch:108%;line-height:1;color:var(--text)}.pub .demo-result>span{color:var(--muted);font-weight:700}.pub .demo-result p{margin:6px 0 0;font-size:.9rem}.pub .demo-zones{list-style:none;margin:0;padding:0;display:grid;gap:8px}.pub .demo-zones li{display:grid;grid-template-columns:minmax(0,8.5rem) minmax(0,1fr) 6.5rem;gap:10px;align-items:center;font-size:.86rem;color:var(--body)}.pub .demo-zone-name strong{color:var(--text)}.pub .demo-zone-track{height:10px}.pub .demo-bar{display:block;height:100%;border-radius:0 4px 4px 0;transform-origin:left;animation:demo-grow .6s cubic-bezier(.2,.7,.2,1) both}.pub .demo-zone-watts{text-align:right;color:var(--text)}.pub .demo-reveal{animation:demo-reveal 1.4s ease-in-out .2s both}.pub .demo-reveal>div>ol{display:none}.pub .demo-free{margin:16px 0 0;font-weight:700;color:var(--green)}.pub .demo-in{animation:demo-in .45s ease-out both}.pub .demo-steps{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.pub .demo-steps button{background:none;border:0;padding:6px 0 0;text-align:left;color:var(--muted);font-size:.8rem;font-weight:600;display:grid;gap:6px}.pub .demo-steps button[aria-current=step],.pub .demo-steps button:hover{color:var(--text)}.pub .demo-track{display:block;height:3px;border-radius:2px;background:var(--line-2);overflow:hidden}.pub .demo-track span{display:block;height:100%;background:var(--green);transform-origin:left;transform:scaleX(0)}.pub .demo-steps .done .demo-track span{transform:scaleX(1)}.pub .demo-steps [aria-current=step] .demo-track span{animation:demo-progress var(--scene) linear forwards}.pub .demo.paused .demo-track span{animation-play-state:paused}@keyframes demo-progress{to{transform:scaleX(1)}}@keyframes demo-in{0%{opacity:0;transform:translateY(6px)}}@keyframes demo-grow{0%{transform:scaleX(0)}}@keyframes demo-reveal{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}@keyframes demo-type{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}@media(max-width:520px){.pub .demo-zones li{grid-template-columns:minmax(0,1fr) 5.8rem}.pub .demo-zone-track{grid-column:1/-1;order:3}}@media(prefers-reduced-motion:reduce){.pub .demo-stage *{animation:none!important}}.pub .load-chart{margin:28px 0 0}.pub .chart-legend{display:flex;flex-wrap:wrap;gap:6px 18px;font-size:.84rem;color:var(--body);margin-bottom:10px}.pub .chart-legend span,.pub .chart-tip div{display:flex;align-items:center;gap:8px}.pub .chart-legend i,.pub .chart-tip i{display:inline-block;width:14px;height:2px;border-radius:1px;flex:none}.pub .chart-legend i.box,.pub .chart-tip i.box{width:10px;height:10px;border-radius:2px}.pub .chart-wrap{position:relative;touch-action:pan-y}.pub .chart-wrap svg{display:block;overflow:visible;font-variant-numeric:tabular-nums}.pub .chart-wrap svg:focus-visible{outline-offset:6px}.pub .chart-tip{position:absolute;top:6px;width:180px;display:grid;gap:3px;background:var(--panel-2);border:1px solid var(--line-2);border-radius:10px;padding:8px 10px;font-size:.82rem;color:var(--muted);pointer-events:none;box-shadow:0 6px 18px #00000059}.pub .chart-tip strong{color:var(--text);font-variant-numeric:tabular-nums;min-width:2.2em}.pub .chart-table{margin-top:12px;font-size:.9rem}.pub .chart-table summary{cursor:pointer;color:var(--blue);font-weight:600}.pub .chart-table table{margin-bottom:6px}.pub .ad-slot{margin:40px 0;padding-top:10px;border-top:1px solid var(--line)}.pub .ad-slot>span{display:block;font-size:.72rem;color:var(--muted);margin-bottom:6px}.pub .site-footer{padding:56px 0 40px;border-top:1px solid var(--line);margin-top:0}.pub .footer-grid{display:grid;grid-template-columns:1.4fr repeat(4,1fr);gap:28px}@media(max-width:820px){.pub .footer-grid{grid-template-columns:1fr 1fr}}.pub .footer-grid h2{font-size:.85rem;font-stretch:100%;letter-spacing:0;color:var(--muted);margin:0 0 10px;font-weight:700}.pub .footer-grid ul{list-style:none;padding:0;margin:0;display:grid;gap:8px}.pub .footer-grid a{color:var(--body);text-decoration:none;font-size:.93rem}.pub .footer-grid a:hover{color:var(--text);text-decoration:underline}.pub .disclaimer{font-size:.84rem;color:var(--muted);max-width:70ch;margin-top:36px;line-height:1.55}.pub .embedded-editor button{font-weight:600}@media(prefers-reduced-motion:reduce){.pub *{transition:none!important;scroll-behavior:auto!important}}
