@font-face{font-family:Montserrat;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/montserrat-latin-variable.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Oswald;font-style:normal;font-weight:200 700;font-display:swap;src:url(/fonts/oswald-latin-variable.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Montserrat Fallback;src:local(Arial),local(ArialMT);font-weight:100 900;size-adjust:109.81%;ascent-override:88.34%;descent-override:22.77%;line-gap-override:0%}@font-face{font-family:Oswald Fallback;src:local(Arial Bold),local(Arial-BoldMT);font-weight:100 900;size-adjust:79.46%;ascent-override:149.76%;descent-override:36.5%;line-gap-override:0%}:root{--bg:#fff;--surface-1:#f4f4f2;--surface-2:#ebebe7;--surface-3:#dfe0db;--line:#e6e6e2;--line-strong:#cfd1cb;--text:#15171c;--gold:#d9a514;--on-scene:#fff;--on-scene-shadow:0 1px 2px #0009, 0 0 8px #00000080;--over-dark:#fff;--over-light:#14161a;--over-shade:0 0 2px #00000080, 0 0 6px #00000073;--text-muted:#5b616c;--accent:#1b1d22;--accent-text:#fff;--primary-hover:#000;--danger:#b02424;--warning:#875000;--present:#0a6b49;--focus:#1b1d22;--scrim:#14161a59;--glass:#ffffffd1;--glass-strong:#f4f4f2f7;--mark-outline:#14161a47;--shadow-float:0 12px 32px #14161a24, 0 2px 6px #14161a14;--chevron:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%235b616c' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");--chart-neutral:#3b4049;--chart-grid:#14161a14;--chart-axis:#14161a40;--chart-track:#14161a0a;--grade-blue:#2f6fd6;--grade-green:#2a8f45;--grade-red:#d6453d;--grade-yellow:#a88200;--grade-black:#2b2f37;--grade-white:#878e99;--avatar-washer:#fff;--avatar-bolt:#000;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--font-display:"Oswald", "Oswald Fallback", system-ui, sans-serif;--font-body:"Montserrat", "Montserrat Fallback", system-ui, sans-serif;--font-mono:ui-monospace, "SF Mono", Menlo, monospace;--text-display:2.25rem;--lh-display:2.5rem;--text-title:1.75rem;--lh-title:2rem;--text-heading:1.25rem;--lh-heading:1.5rem;--text-body:.9375rem;--lh-body:1.5rem;--text-small:.8125rem;--lh-small:1.25rem;--text-micro:.6875rem;--lh-micro:1rem;--weight-text:300;--weight-small:400;--weight-label:500;--tracking-label:normal;--tracking-heading:normal;--radius-sm:0;--radius:0;--radius-pill:0;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--tap:44px;--rail-inset:env(safe-area-inset-left,0px);--rail-width:calc(64px + var(--rail-inset));--rail-open-width:calc(248px + var(--rail-inset));--dur-press:.12s;--dur-fade:.14s;--dur-state:.2s;--dur-enter:.32s;--ease-standard:cubic-bezier(.2, 0, 0, 1);--ease-spring:cubic-bezier(.34, 1.45, .64, 1);font-family:var(--font-body);font-size:100%;font-weight:var(--weight-text);line-height:var(--lh-body);font-variant-numeric:tabular-nums;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:transparent}:root[data-theme=dark]{--bg:#14161a;--surface-1:#1d2027;--surface-2:#272b33;--surface-3:#333843;--line:#2a2e36;--line-strong:#3b404b;--text:#eef0f3;--gold:#f2c335;--text-muted:#9ba2ae;--accent:#f1eee6;--accent-text:#14161a;--primary-hover:#fff;--danger:#ff8080;--warning:#f0b45a;--present:#34d399;--focus:#f1eee6;--scrim:#0000008c;--glass:#14161ab8;--glass-strong:#1d2027f5;--mark-outline:#ffffff4d;--shadow-float:0 12px 32px #00000073, 0 2px 6px #00000040;--chevron:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%239ba2ae' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");--chart-neutral:#e9ebef;--chart-grid:#ffffff12;--chart-axis:#ffffff38;--chart-track:#ffffff0a;--grade-blue:#4a8bf0;--grade-green:#3fb05a;--grade-red:#e5534b;--grade-yellow:#f6c90e;--grade-black:#7a8291;--grade-white:#e9ebef;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}html,body{overflow-x:clip}*{scrollbar-width:none}::-webkit-scrollbar{display:none}.scroll-thumb{z-index:100;background:var(--text);opacity:.3;pointer-events:none;width:2px;transition:width var(--dur-enter) var(--ease-standard), opacity var(--dur-enter) var(--ease-standard);position:fixed;top:0;left:0}.scroll-thumb.bold{opacity:.65;width:5px;transition-duration:var(--dur-state)}@media (pointer:fine){.scroll-thumb{pointer-events:auto;cursor:default}.scroll-thumb:hover{opacity:.8;width:7px}}@media (prefers-reduced-motion:reduce){.scroll-thumb{transition:none}}body{background:var(--bg);overscroll-behavior:none;font-size:var(--text-body)}h1,h2,h3{font-family:var(--font-display);letter-spacing:var(--tracking-heading);margin:0;font-weight:700}h1{font-size:var(--text-title);line-height:var(--lh-title)}h2,h3{font-size:var(--text-heading);line-height:var(--lh-heading)}button:not(.route-row,.profile-button,.version),th,.badge,.nav-label,.menu-updates{letter-spacing:var(--tracking-label);font-weight:var(--weight-label)}@media (width>=820px){h1{font-size:var(--text-display);line-height:var(--lh-display)}}p{margin:0}a{color:var(--text);transition:color var(--dur-fade) var(--ease-standard), background-size var(--dur-state) var(--ease-standard);text-decoration:none}a:not([class]),.toast-link{background-image:linear-gradient(currentColor, currentColor), linear-gradient(var(--line-strong), var(--line-strong));transition:color var(--dur-fade) var(--ease-standard), background-size var(--dur-state) var(--ease-standard);background-position:0 100%,0 100%;background-repeat:no-repeat;background-size:0% 1.5px,100% 1px;padding-bottom:1px}a:not([class]):hover,a:not([class]):focus-visible,.toast-link:hover,.toast-link:focus-visible{background-size:100% 1.5px,100% 1px}.back-link .label,.lb-name,.site-footer a,.login-legal a,.menu-legal a{transition:background-size var(--dur-state) var(--ease-standard), color var(--dur-fade) var(--ease-standard);background-image:linear-gradient(currentColor,currentColor);background-position:0 100%;background-repeat:no-repeat;background-size:0% 1.5px}.back-link:hover .label,.back-link:focus-visible .label,.lb-name:hover,.lb-name:focus-visible,.site-footer a:hover,.site-footer a:focus-visible,.login-legal a:hover,.login-legal a:focus-visible,.menu-legal a:hover,.menu-legal a:focus-visible{background-size:100% 1.5px}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}::selection{background:color-mix(in srgb, var(--accent) 30%, transparent)}.muted{color:var(--text-muted)}.small{font-size:var(--text-small);line-height:var(--lh-small);font-weight:var(--weight-small)}.hint{font-size:var(--text-small);line-height:var(--lh-small);color:var(--text-muted);font-weight:var(--weight-small);margin:0}.error{color:var(--danger)}.warning-text{color:var(--warning)}.status-ok{color:var(--present);font-size:var(--text-small);font-weight:var(--weight-small)}.page-message{padding:var(--space-5) var(--space-4)}.load-failed{align-items:flex-start;gap:var(--space-3);flex-direction:column;display:flex}.turn-upright{display:none}@media (orientation:landscape) and (pointer:coarse) and (height<=500px){.turn-upright{z-index:400;place-content:center;gap:var(--space-2);padding:var(--space-5) calc(env(safe-area-inset-right) + var(--space-5)) var(--space-5) calc(env(safe-area-inset-left) + var(--space-5));background:var(--bg);text-align:center;display:grid;position:fixed;inset:0}.turn-upright h2{font-size:var(--text-title);line-height:var(--lh-title);margin:0}.turn-upright p{color:var(--text-muted);font-size:var(--text-small)}}.load-failed p{margin:0}.with-icon{align-items:center;gap:6px;display:inline-flex}button{justify-content:center;align-items:center;gap:var(--space-2);font:inherit;font-size:var(--text-body);color:var(--text);border-radius:var(--radius-sm);min-height:var(--tap);cursor:pointer;transition:transform var(--dur-press) var(--ease-standard), color var(--dur-fade) var(--ease-standard), opacity var(--dur-fade) var(--ease-standard);background:0 0;border:0;padding:10px 2px;font-weight:500;display:inline-flex;position:relative}button:after{content:"";transform-origin:0;height:1.5px;transition:transform var(--dur-state) var(--ease-standard);pointer-events:none;background:currentColor;position:absolute;bottom:6px;left:2px;right:2px;transform:scaleX(0)}button:focus-visible:after{transform:scaleX(1)}@media (hover:hover){button:hover:not(:disabled):after{transform:scaleX(1)}}button:active:not(:disabled){transform:scale(.97)}button:disabled{opacity:.45;cursor:default}button.primary{font-weight:600}button.primary:after,button[aria-pressed=true]:after{background:var(--accent);height:2px;transform:scaleX(1)}@keyframes line-redraw{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes label-redraw{0%{background-size:0% 2px}to{background-size:100% 2px}}@media (hover:hover){button.primary:hover:not(:disabled):after,button[aria-pressed=true]:hover:not(:disabled):after{animation:line-redraw var(--dur-state) var(--ease-standard)}button.primary:hover:not(:disabled)>.label,button[aria-pressed=true]:hover:not(:disabled)>.label,a.landing-enter:hover{animation:label-redraw var(--dur-state) var(--ease-standard)}}button.big,.login-card button.primary{align-self:flex-start;min-height:48px}button.link{min-height:0;color:var(--text-muted);font-size:inherit;background:0 0;padding:4px 0;font-weight:500;position:relative}button.link:after,.chip:after,.view-switch button:after{content:"";transform-origin:0;height:1.5px;transition:transform var(--dur-state) var(--ease-standard);background:currentColor;border-radius:0;position:absolute;bottom:0;left:0;right:0;transform:scaleX(0)}button.link:hover:after,button.link:focus-visible:after,.chip:hover:after,.chip:focus-visible:after,.view-switch button:hover:after,.view-switch button:focus-visible:after{transform:scaleX(1)}@media (hover:hover){button.link:hover:not(:disabled){color:var(--text);background:0 0}}button.link.danger,.danger-button{color:var(--danger)}button.link.small,.link.small{font-size:var(--text-small);font-weight:var(--weight-small)}.icon-button,.star-button{border-radius:var(--radius-pill);width:40px;height:40px;min-height:40px;color:var(--text-muted);background:0 0;padding:0}.icon-button:after{bottom:4px;left:10px;right:10px}.star-button:after,.star-button[aria-pressed=true]:after{background:currentColor;height:1.5px;bottom:4px;left:10px;right:10px}.star-button[aria-pressed=true]:not(:hover):not(:focus-visible):after{transform:scaleX(0)}.star-button{margin-left:auto}.icon-button:hover,.icon-button:focus-visible{color:var(--text)}.icon-button.danger:hover,.icon-button.danger:focus-visible{color:var(--danger)}.star-button+.star-button{margin-left:0}.share-button{margin-left:auto}.share-button~.star-button{margin-left:0}.star-button.saved{color:var(--accent)}.star-button[aria-pressed=true]{box-shadow:none;background:0 0}.star-button[aria-pressed=true] svg{animation:pop var(--dur-enter) var(--ease-spring)}button[aria-pressed=true]{color:var(--text)}input,select{font:inherit;color:var(--text);border:none;border-bottom:1.5px solid var(--text-muted);min-height:var(--tap);transition:border-color var(--dur-state) var(--ease-standard), box-shadow var(--dur-state) var(--ease-standard);background:0 0;border-radius:0;padding:10px 2px;font-size:16px}input:not(.switch):focus,select:focus{border-bottom-color:var(--text);box-shadow:0 .5px 0 var(--text);outline:none}input:autofill{-webkit-text-fill-color:var(--text);transition:background-color 0s 100000s}input::placeholder{color:var(--text-muted)}select{appearance:none;background-image:var(--chevron);cursor:pointer;background-position:right 4px center;background-repeat:no-repeat;padding-right:30px}.float-field{font-weight:var(--weight-small);flex-direction:column;display:flex;position:relative}.float-field input{min-height:56px;padding:24px 2px 6px;line-height:24px}.float-label{color:var(--text-muted);pointer-events:none;transform-origin:0 0;transition:transform var(--dur-state) var(--ease-standard);font-size:16px;line-height:24px;position:absolute;top:24px;left:2px}.float-field input:focus+.float-label,.float-field input:not(:placeholder-shown)+.float-label{transform:translateY(-21px)scale(.8)}.float-field input:autofill+.float-label{transform:translateY(-21px)scale(.8)}.float-field.with-action input{padding-right:44px}button.float-action,button.float-action:hover,button.float-action:focus-visible,button.float-action[aria-pressed=true]{box-shadow:none;background:0 0;position:absolute;bottom:2px;right:-4px}button.float-action:hover{color:var(--text)}button.float-action:after{display:none}input.switch{appearance:none;border-radius:var(--radius-pill);border:1.5px solid var(--line-strong);cursor:pointer;width:40px;height:22px;min-height:0;transition:border-color var(--dur-state) var(--ease-standard);background:0 0;flex:none;margin:0;padding:0;position:relative}input.switch:before{content:"";border-radius:var(--radius-pill);background:var(--text-muted);width:13px;height:13px;transition:transform var(--dur-state) var(--ease-spring), background-color var(--dur-state) var(--ease-standard);position:absolute;top:3px;left:3px}input.switch:checked{border-color:var(--text);background:0 0}input.switch:checked:before{background:var(--text);transform:translate(18px)}input.switch:disabled{opacity:.45;cursor:default}.filter-row{gap:var(--space-1) var(--space-5);margin:var(--space-3) 0 var(--space-1);flex-wrap:wrap;display:flex}.chip{min-height:36px;color:var(--text-muted);font-size:var(--text-small);background:0 0;border-radius:0;padding:6px 0;font-weight:500;position:relative}@media (hover:hover){.chip:hover:not(:disabled){color:var(--text);background:0 0}}.chip[aria-pressed=true],.chip[aria-pressed=true]:hover{box-shadow:none;color:var(--text);background:0 0;font-weight:600}.chip[aria-pressed=true]:after,.more-filters[aria-expanded=true]:after{background:var(--accent);height:2px;transform:scaleX(1)}.small-chip{min-height:30px;padding:var(--space-1) 0;font-size:var(--text-micro);font-weight:var(--weight-small)}.swatch-row,.action-row{gap:var(--space-2);flex-wrap:wrap;display:flex}.chip-row{gap:var(--space-1) var(--space-4);flex-wrap:wrap;display:flex}.action-row button{min-height:36px;padding:6px var(--space-3);font-size:var(--text-small);font-weight:var(--weight-small)}.card,.chart-card{padding:var(--space-4);background:var(--surface-1);border-radius:var(--radius)}.badge{font-size:var(--text-micro);line-height:var(--lh-micro);letter-spacing:.06em;color:var(--text-muted);align-items:center;font-weight:600;display:inline-flex}.badge-new{color:var(--accent)}.row-icon{border-radius:var(--radius-pill);background:var(--surface-2);width:40px;height:40px;color:var(--text-muted);flex:none;place-items:center;display:grid}.swatch{border-radius:var(--radius-pill);border:2px solid var(--mark-outline);flex:none;width:18px;height:18px}.grade-chip{font-size:var(--text-small);color:var(--text-muted);font-weight:var(--weight-small);align-items:center;gap:6px;display:inline-flex}.grade-chip .tag,.grade-chip-button .tag,.grade-toggle .tag{border:1px solid var(--mark-outline);border-radius:0;width:14px;height:8px}.route-code{font-family:var(--font-mono);font-size:var(--text-micro);letter-spacing:.06em;color:var(--text-muted);font-weight:var(--weight-small)}.tag-row{gap:0 var(--space-2);flex-wrap:wrap;display:flex}.tag-chip{font-size:var(--text-small);color:var(--text-muted);font-weight:var(--weight-small)}.tag-chip+.tag-chip:before{content:"·";margin-right:var(--space-2);color:var(--line-strong)}.saved-mark,.project-mark{color:var(--accent);display:inline-flex}.note-mark{color:var(--text-muted);display:inline-flex}.saved-tile-text .note-mark{margin-right:auto}.project-count{align-items:center;gap:var(--space-1);color:var(--text);font-variant-numeric:tabular-nums;display:inline-flex}.loader{padding:var(--space-4) 0;place-items:center;display:grid}.loader-page{min-height:100dvh}.loader-canvas{width:144px;height:144px;display:block}.loader-master{z-index:60;pointer-events:none;transition:opacity var(--dur-state) var(--ease-standard);place-items:center;display:grid;position:fixed;inset:0}.loader-master.cover{background:var(--bg);pointer-events:auto}.loader-master.leaving{opacity:0;pointer-events:none}.loader-inline .loader-canvas{width:108px;height:108px}.toast{left:50%;bottom:calc(env(safe-area-inset-bottom) + var(--space-5));z-index:40;border-radius:var(--radius-sm);background:var(--surface-3);box-shadow:var(--shadow-float);color:var(--text);font-size:var(--text-small);align-items:center;gap:var(--space-3);white-space:nowrap;transform-origin:50% 100%;animation:toast-in var(--dur-enter) var(--ease-spring);padding:10px 18px;font-weight:500;display:flex;position:fixed;transform:translate(-50%)}.toast.leaving{animation:toast-out .22s var(--ease-standard) forwards}@keyframes toast-out{to{opacity:0;transform:translate(-50%,16px)scale(.92)}}.toast-trophy{flex:none;overflow:visible}.trophy-cup{fill:#0000;animation:trophy-fill .42s var(--ease-standard) .22s forwards}.trophy-body{transform-box:view-box;transform-origin:12px 20px;animation:trophy-shake .32s var(--ease-standard) .6s}.trophy-streak{stroke:var(--gold);opacity:0;transform-box:view-box;animation:trophy-streak .42s var(--ease-standard) .64s}@keyframes trophy-fill{to{fill:var(--gold);stroke:var(--gold)}}@keyframes trophy-shake{20%{transform:rotate(-12deg)}40%{transform:rotate(11deg)}60%{transform:rotate(-7deg)}80%{transform:rotate(4deg)}}@keyframes trophy-streak{0%{opacity:0;transform:translate(0)}30%{opacity:1}to{opacity:0;transform:translate(var(--dx), var(--dy))}}@keyframes pop{0%{transform:scale(.6)}to{transform:scale(1)}}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,16px)scale(.9)}to{opacity:1;transform:translate(-50%)scale(1)}}@keyframes sheet-in{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}@keyframes dialog-in{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.dialog-backdrop{z-index:10;padding:var(--space-2);background:var(--scrim);animation:fade-in var(--dur-state) var(--ease-standard);place-items:end center;display:grid;position:fixed;inset:0}.dialog{width:min(420px,100%);margin-bottom:env(safe-area-inset-bottom);padding:var(--space-6) var(--space-5) var(--space-5);align-items:center;gap:var(--space-3);text-align:center;background:var(--surface-1);border-radius:var(--radius);box-shadow:var(--shadow-float);animation:sheet-in var(--dur-enter) var(--ease-standard);flex-direction:column;display:flex;position:relative}.dialog:before{content:"";top:var(--space-2);border-radius:var(--radius-pill);background:var(--surface-3);width:36px;height:4px;margin-left:-18px;position:absolute;left:50%}@media (width>=820px){.dialog-backdrop{place-items:center}.dialog{padding-top:var(--space-5);animation-name:dialog-in}.dialog:before{display:none}}.dialog h3{text-wrap:balance}.dialog-actions{justify-content:flex-end;align-items:center;gap:var(--space-5);width:100%;display:flex}.dialog-actions button{flex:none;align-self:center}.dialog-actions.centered{justify-content:center;row-gap:var(--space-2);flex-wrap:wrap}button.muted-action{color:var(--text-muted)}button.muted-action:hover{color:var(--text)}.logged-mark{border-radius:var(--radius-pill);background:var(--surface-2);width:56px;height:56px;color:var(--text);animation:pop var(--dur-enter) var(--ease-spring);place-items:center;display:grid}.tries-stepper{align-items:center;gap:var(--space-5);display:flex}.tries-stepper button{border-radius:var(--radius-pill);width:44px;height:52px;font-size:var(--text-title);padding:0}.tries-stepper output{text-align:center;min-width:2ch;font-size:var(--text-display);line-height:var(--lh-display);font-variant-numeric:tabular-nums;font-weight:600}.flash-celebration{pointer-events:none;z-index:2;width:0;height:0;position:absolute;top:0;left:50%}.flash-bolt{color:var(--accent);filter:drop-shadow(0 0 14px color-mix(in srgb, var(--accent) 55%, transparent));animation:1.8s cubic-bezier(.3,.7,.4,1) forwards flash-bolt;display:grid;position:absolute;top:0;left:0;transform:translate(-50%,-50%)scale(0)}.flash-ring{border-radius:var(--radius-pill);border:2px solid var(--accent);width:24px;height:24px;animation:.7s ease-out 80ms forwards flash-ring;position:absolute;top:0;left:0;transform:translate(-50%,-50%)scale(0)}.flash-ray{border-radius:var(--radius-pill);background:var(--accent);opacity:0;width:3px;height:12px;animation:flash-ray .75s ease-out var(--delay) forwards;margin-left:-1.5px;position:absolute;top:0;left:0}@keyframes flash-bolt{0%{opacity:1;transform:translate(-50%,-50%)scale(0)rotate(-25deg)}22%{transform:translate(-50%,-50%)scale(1.3)rotate(8deg)}32%{transform:translate(-50%,-50%)scale(.92)rotate(-4deg)}42%{transform:translate(-50%,-50%)scale(1)rotate(0)}78%{opacity:1;transform:translate(-50%,-50%)scale(1)}to{opacity:0;transform:translate(-50%,-95%)scale(.9)}}@keyframes flash-ring{0%{opacity:.9;transform:translate(-50%,-50%)scale(0)}to{opacity:0;transform:translate(-50%,-50%)scale(6)}}@keyframes flash-ray{0%{transform:rotate(var(--angle)) translateY(-18px) scaleY(.4);opacity:1}to{transform:rotate(var(--angle)) translateY(-78px) scaleY(1);opacity:0}}.topbar{align-items:center;gap:var(--space-3);min-height:56px;padding:calc(env(safe-area-inset-top) + var(--space-2)) var(--space-4) var(--space-2);background:var(--bg);border-bottom:1px solid var(--line);grid-area:topbar;display:flex}.topbar-title{font-family:var(--font-display);font-size:var(--text-heading);line-height:var(--lh-heading);letter-spacing:var(--tracking-heading);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:700;overflow:hidden}.topbar .push{margin-left:auto}.back-link{color:var(--text-muted);font-size:var(--text-small);align-items:center;gap:2px;font-weight:500;text-decoration:none;display:inline-flex}.back-link:hover{color:var(--text)}.profile-menu{position:relative}.profile-button,button.profile-button:hover{align-items:center;gap:var(--space-2);background:0 0;padding:6px 0 6px 12px;display:inline-flex}.profile-button:after{display:none}.viewport-corner .profile-button:after{display:block;bottom:2px;left:9px;right:9px}.menu-screen{z-index:40;padding:calc(env(safe-area-inset-top) + var(--space-2)) var(--space-5) calc(env(safe-area-inset-bottom) + var(--space-5));overscroll-behavior:contain;background:var(--bg);animation:menu-in var(--dur-enter) var(--ease-standard);flex-direction:column;display:flex;position:fixed;inset:0;overflow-y:auto}@keyframes menu-in{0%{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:none}}.menu-head{justify-content:space-between;align-items:center;gap:var(--space-3);border-bottom:1px solid var(--line);min-height:64px;display:flex}.menu-who{align-items:center;gap:var(--space-3);min-width:0;color:var(--text);text-decoration:none;display:flex}.menu-avatar{background:var(--surface-2);flex:none;place-items:center;width:36px;height:36px;display:grid}.menu-who[aria-current=page] .menu-avatar{box-shadow:inset 0 -2px 0 var(--accent)}.menu-who-text{min-width:0;line-height:var(--lh-small);flex-direction:column;display:flex}.menu-name{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.menu-role{color:var(--text-muted);font-size:var(--text-micro);font-weight:var(--weight-small)}button.menu-close{width:44px;color:var(--text);flex:none;padding:0}button.menu-close:after{left:12px;right:12px}.menu-pages{padding:var(--space-4) 0;flex-direction:column;align-items:flex-start;display:flex}.menu-pages a{color:var(--text-muted);font-family:var(--font-display);font-size:var(--text-title);letter-spacing:var(--tracking-heading);align-items:center;gap:14px;padding:8px 0;font-weight:600;line-height:1.2;text-decoration:none;display:flex}.menu-pages a:hover,.menu-pages a:focus-visible,.menu-pages a[aria-current=page]{color:var(--text)}.menu-label{transition:background-size var(--dur-state) var(--ease-standard);background-image:linear-gradient(currentColor,currentColor);background-position:0 100%;background-repeat:no-repeat;background-size:0% 2px;padding-bottom:2px}.menu-pages a:hover .menu-label,.menu-pages a:focus-visible .menu-label,.menu-pages a[aria-current=page] .menu-label{background-size:100% 2px}.menu-foot{padding-top:var(--space-2);border-top:1px solid var(--line);flex-direction:column;align-items:flex-start;margin-top:auto;display:flex}.menu-row{justify-content:space-between;align-items:flex-start;width:100%;display:flex}.menu-own-list{flex-direction:column;display:flex}button.menu-theme{width:44px;color:var(--text-muted);padding:0}button.menu-theme:after{left:12px;right:12px}button.menu-theme:hover{color:var(--text)}.menu-own{align-items:center;gap:var(--space-3);color:var(--text-muted);font-weight:var(--weight-label);padding:10px 2px;text-decoration:none;display:flex}.menu-own:hover,.menu-own:focus-visible,.menu-own[aria-current=page]{color:var(--text)}.menu-last{align-items:baseline;gap:var(--space-4);padding-top:var(--space-2)}.menu-version{color:var(--text-muted);font-size:var(--text-micro);font-weight:var(--weight-small);font-variant-numeric:tabular-nums;flex:none;text-decoration:none}.menu-copyright,.footer-copyright{color:var(--text-muted);font-size:var(--text-micro);font-weight:var(--weight-small)}.menu-legal{gap:var(--space-1) var(--space-4);padding-top:var(--space-2);font-size:var(--text-micro);font-weight:var(--weight-small);flex-wrap:wrap;display:flex}.menu-legal a{color:var(--text-muted);padding:3px 0;text-decoration:none}@media (width>=820px){.menu-legal{display:none}}@media (prefers-reduced-motion:reduce){.menu-screen{animation:none}}.app-rail{display:none}@media (width>=820px){.with-rail{padding-left:var(--rail-width)}.page.signed-in .topbar{display:none}.app-rail{z-index:5;width:var(--rail-width);padding:calc(env(safe-area-inset-top) + var(--space-3)) var(--space-2) calc(env(safe-area-inset-bottom) + var(--space-3)) calc(var(--rail-inset) + var(--space-2));background:var(--surface-1);border-right:1px solid var(--line);transition:width var(--dur-state) var(--ease-standard), box-shadow var(--dur-state) var(--ease-standard);flex-direction:column;display:flex;position:fixed;inset:0 auto 0 0;overflow:hidden}.app-rail:has(:focus-visible){width:var(--rail-open-width);box-shadow:var(--shadow-float)}@media (hover:hover){.app-rail:hover{width:var(--rail-open-width);box-shadow:var(--shadow-float)}}}.rail-items{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.rail-own{gap:var(--space-2);padding-top:var(--space-2);border-top:1px solid var(--line);flex-direction:column;margin-top:auto;display:flex}.rail-bottom{width:calc(var(--rail-open-width) - var(--rail-inset) - 2 * var(--space-2));align-items:center;gap:var(--space-2);display:flex}.rail-divider{background:var(--line);flex:none;width:1px;height:28px}button.rail-theme,button.rail-theme:hover{border-radius:var(--radius-sm);width:40px;height:40px;min-height:40px;color:var(--text-muted);background:0 0;flex:none;padding:0}button.rail-theme:hover,button.rail-theme:focus-visible{color:var(--text)}button.rail-theme:after{bottom:4px;left:10px;right:10px}.nav-item,button.nav-item:hover{text-align:left;width:100%;min-height:var(--tap);border-radius:var(--radius-sm);color:var(--text-muted);white-space:nowrap;font-size:var(--text-body);line-height:var(--lh-body);font-weight:var(--weight-label);background:0 0;justify-content:flex-start;align-items:center;gap:14px;padding:0 0 0 14px;text-decoration:none;display:flex;position:relative}.nav-icon{flex:none;justify-content:center;width:20px;display:inline-flex}.nav-label,.rail-who,.rail-divider,.rail-theme{opacity:0;transition:opacity var(--dur-state) var(--ease-standard), color var(--dur-fade) var(--ease-standard)}.app-rail:has(:focus-visible) :is(.nav-label,.rail-who,.rail-divider,.rail-theme){opacity:1}@media (hover:hover){.app-rail:hover :is(.nav-label,.rail-who,.rail-divider,.rail-theme){opacity:1}}.nav-label{transition:opacity var(--dur-state) var(--ease-standard), background-size var(--dur-state) var(--ease-standard);background-image:linear-gradient(currentColor,currentColor);background-position:0 100%;background-repeat:no-repeat;background-size:0% 1.5px}.nav-item:hover,.nav-item:focus-visible{color:var(--text)}.nav-item:hover .nav-label,.nav-item:focus-visible .nav-label{background-size:100% 1.5px}.nav-item[aria-current=page]{color:var(--text)}.nav-item[aria-current=page] .nav-label{background-size:100% 1.5px}.nav-item[aria-current=page] .nav-icon:after{content:"";background:currentColor;width:20px;height:1.5px;position:absolute;bottom:6px;left:14px}.nav-item.rail-profile{width:auto;min-width:0;min-height:52px;color:var(--text);flex:1;padding-left:8px}.rail-avatar{border-radius:var(--radius-sm);background:var(--surface-2);flex:none;place-items:center;width:32px;height:32px;display:grid}.rail-profile[aria-current=page] .rail-avatar{box-shadow:inset 0 0 0 1.5px var(--accent)}.rail-who{min-width:0;line-height:var(--lh-small);flex-direction:column;display:flex}.rail-name{text-overflow:ellipsis;font-weight:600;overflow:hidden}.rail-role{color:var(--text-muted);font-size:var(--text-micro);font-weight:var(--weight-small)}@media (prefers-reduced-motion:reduce){.app-rail,.nav-label,.rail-who,.rail-divider,.rail-theme{transition:none}}.wall-keeper.away{visibility:hidden;content-visibility:hidden;pointer-events:none;position:fixed;inset:0}@media (width>=820px){.wall-keeper.away{left:var(--rail-width)}}.wall-view{--panel-width:380px;grid-template:"stage"1fr"sidebar"/minmax(0,1fr);height:100dvh;display:grid}.stage{grid-area:stage;min-width:0;min-height:0;position:relative;overflow:clip}.sidebar{background:var(--surface-1);--sheet-pad-bottom:calc(env(safe-area-inset-bottom) + var(--space-4));max-height:45dvh;padding:var(--space-4) var(--space-4) var(--sheet-pad-bottom);border-top-left-radius:var(--radius);border-top-right-radius:var(--radius);grid-area:sidebar;overflow-y:auto}@media (width>=820px){.wall-view{grid-template-rows:1fr auto;grid-template-areas:"stage""footer"}.sidebar{z-index:2;width:var(--panel-width);max-height:calc(100% - 3 * var(--space-3) - 36px - var(--space-2));margin:var(--space-3);--sheet-pad-bottom:var(--space-5);padding:var(--space-5);border-radius:var(--radius);box-shadow:var(--shadow-float);grid-area:stage;place-self:start end;position:relative}}.gym-name{display:none}@media (width>=820px){.gym-name{font-size:var(--text-body);line-height:var(--lh-heading);font-weight:var(--weight-label);color:var(--text);align-items:center;gap:6px;margin:0;display:flex}.gym-name svg{flex:none}.stage .gym-name{top:var(--space-4);left:var(--space-5);pointer-events:none;position:absolute}.page .gym-name{padding:var(--space-4) var(--space-5) 0}}.view-switch{top:var(--space-3);left:var(--space-3);align-items:center;display:flex;position:absolute}.view-choices{gap:var(--space-1);padding:2px var(--space-2);border-radius:var(--radius-sm);background:var(--glass);-webkit-backdrop-filter:blur(10px);display:flex}.view-switch button,.view-switch button:hover{width:36px;min-height:36px;color:var(--text-muted);background:0 0;border-radius:0;place-items:center;padding:0;display:grid;position:relative}.view-switch button:hover{color:var(--text)}.view-switch button[aria-pressed=true]{color:var(--text);box-shadow:none;background:0 0}.view-switch button:after{bottom:2px;left:9px;right:9px}.view-switch button[aria-pressed=true]:after{background:var(--accent);height:2px;transform:scaleX(1)}.view-name-clip{display:none}.stage-tools{display:contents}@media (width>=820px){.stage-tools{top:var(--space-3);right:calc(var(--panel-width) + 2 * var(--space-3));align-items:flex-end;gap:var(--space-2);flex-direction:column;display:flex;position:absolute}.stage-tools .view-switch,.stage-tools .viewport-corner{position:static}.view-choices,.stage-tools .viewport-corner{padding:var(--space-1) 2px;flex-direction:column;gap:0}.view-choices button+button,.stage-tools .viewport-corner .corner-button+.corner-button{border-top:1px solid var(--line)}.view-name-clip{pointer-events:none;align-items:center;display:flex;position:absolute;top:0;bottom:0;right:calc(100% + 2px);overflow:hidden}.view-name{margin:0 var(--space-3) 0 var(--space-4);color:var(--text);font-size:var(--text-small);font-weight:var(--weight-label);white-space:nowrap;transform:translateX(calc(100% + var(--space-3) + 2px));transition:transform var(--dur-enter) var(--ease-standard)}.view-switch button[aria-pressed=true] .view-name{transform:none}}.viewport-corner{top:var(--space-3);right:var(--space-3);align-items:center;gap:var(--space-1);padding:2px var(--space-2);border-radius:var(--radius-sm);background:var(--glass);-webkit-backdrop-filter:blur(10px);display:flex;position:absolute}button.corner-button,button.corner-button:hover,.viewport-corner .profile-button,.viewport-corner button.profile-button:hover{width:36px;height:36px;min-height:36px;color:var(--text-muted);background:0 0;place-items:center;padding:0;display:grid}button.corner-button:hover,.viewport-corner button.profile-button:hover{color:var(--text)}button.corner-button:after{bottom:2px;left:9px;right:9px}button.corner-button[aria-pressed=true]{color:var(--text)}@media (display-mode:standalone) and (width<=819px){.view-switch,.viewport-corner{top:calc(var(--space-3) + 20px)}}@media (width>=820px){.viewport-corner .profile-menu{display:none}.viewport-corner:not(:has(.corner-button)){display:none}}button.plan-label{animation:label-in var(--dur-state) var(--ease-standard);min-height:0;color:var(--on-scene);font-size:var(--text-small);white-space:nowrap;text-shadow:var(--on-scene-shadow);background:0 0;padding:2px 2px 6px}button.plan-label:after{bottom:1px}@keyframes label-in{0%{opacity:0}}button.plan-label.muted{opacity:.55}.place-editor{align-items:flex-start;gap:var(--space-3);flex-direction:column;display:flex}.place-editor h2{margin:0}.place-editor .field{width:100%}.place-actions{gap:var(--space-1) var(--space-4);flex-wrap:wrap;display:flex}.place-actions:empty{display:none}button.plan-label.moving{pointer-events:none;transform:translateY(-24px)}.pilot-scale{touch-action:none;cursor:ns-resize;width:64px;color:var(--text);font-size:var(--text-small);text-shadow:0 0 3px var(--bg), 0 0 6px var(--bg);position:absolute;top:72px;bottom:40px;left:0}.pilot-tick{opacity:.55;width:10px;height:1px;box-shadow:0 0 2px var(--bg);background:currentColor;position:absolute;left:0}.pilot-tick.meter{opacity:.9;width:20px}.pilot-tick-label{white-space:nowrap;position:absolute;top:50%;left:26px;transform:translateY(-50%)}.pilot-now{background:var(--accent);width:34px;height:2px;transition:bottom var(--dur-press) linear;position:absolute;left:0;transform:translateY(1px)}.pilot-now-label{white-space:nowrap;color:var(--text);font-weight:600;position:absolute;top:50%;left:40px;transform:translateY(-50%)}.pilot-pad{right:var(--space-3);bottom:var(--space-3);flex-direction:column;align-items:center;gap:2px;display:flex;position:absolute}.pilot-pad-row{gap:2px;display:flex}.pilot-move,.pilot-help-button{background:var(--glass);-webkit-backdrop-filter:blur(10px);width:48px;height:48px;min-height:0;color:var(--text-muted);touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;padding:0}.pilot-move:active{color:var(--text)}.pilot-move:after,.pilot-help-button:after{display:none}@media (pointer:fine){.pilot-pad{display:none}}.pilot-help-button{top:var(--space-3);left:var(--space-3);width:40px;height:40px;font-weight:700;font-size:var(--text-body);position:absolute}.pilot-help-button:hover,.pilot-help-button[aria-expanded=true]{color:var(--text)}.pilot-help{top:calc(var(--space-3) + 48px);left:var(--space-3);z-index:3;width:min(320px, calc(100% - 2 * var(--space-3)));max-height:calc(100% - 2 * var(--space-3) - 48px);padding:var(--space-4);background:var(--glass-strong);-webkit-backdrop-filter:blur(10px);box-shadow:var(--shadow-float);font-size:var(--text-small);position:absolute;overflow-y:auto}.pilot-help h3{font-size:var(--text-small);margin:var(--space-3) 0 var(--space-1)}.pilot-help h3:first-child{margin-top:0}.pilot-help dl{gap:2px var(--space-3);grid-template-columns:auto 1fr;margin:0;display:grid}.pilot-help dt{white-space:nowrap;font-weight:600}.pilot-help dd{color:var(--text-muted);margin:0}.sticky-actions{bottom:calc(-1 * var(--sheet-pad-bottom,var(--space-4)));margin-bottom:calc(-1 * var(--sheet-pad-bottom,var(--space-4)));padding:var(--space-3) 0 var(--sheet-pad-bottom,var(--space-4));background:var(--surface-1);border-top:1px solid var(--line);align-self:stretch;position:sticky}.list-header{justify-content:space-between;align-items:center;display:flex}button.filter-button{gap:4px;width:auto;min-width:40px;padding:0 6px}button.filter-button:after{left:6px;right:6px}button.filter-button[aria-pressed=true],button.filter-button[aria-expanded=true]{color:var(--text)}.filter-count{font-size:var(--text-micro);font-variant-numeric:tabular-nums;font-weight:600}.filters-on{margin:0 0 var(--space-2)}.extra-filters .toggle{min-height:30px}.date-span{align-items:center}.date-span .inline-input{color:var(--text-muted);font-size:var(--text-small);font-weight:var(--weight-small)}.date-span input[type=date]{width:auto;min-height:34px;font-size:var(--text-small);font-weight:var(--weight-small);padding:4px 2px}.toggle{color:var(--text-muted);font-size:var(--text-small);font-weight:var(--weight-small);align-items:center;gap:6px;display:flex}.route-list{gap:var(--space-3);flex-direction:column;display:flex}.route-list .filter-row{margin:0}.route-list ul{gap:var(--space-1);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.route-row{text-align:left;width:100%;min-height:52px;color:inherit;border-radius:var(--radius);border-bottom:1px solid var(--line);background:0 0;grid-template-columns:auto 1fr auto auto 1.5em;align-items:center;gap:10px;padding:10px 2px;text-decoration:none;display:grid;position:relative}.route-row:after{content:"";transform-origin:0;height:1.5px;transition:transform var(--dur-state) var(--ease-standard);pointer-events:none;background:currentColor;position:absolute;bottom:-1px;left:0;right:0;transform:scaleX(0)}.route-row:focus-visible:after{transform:scaleX(1)}@media (hover:hover){.route-row:hover:after{transform:scaleX(1)}}.route-name{gap:2px var(--space-2);flex-wrap:wrap;align-items:center;min-width:0;display:flex}.done{color:var(--text);justify-content:center;display:inline-flex}.saved-list{gap:var(--space-1);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.saved-list .draft-row{border-bottom:1px solid var(--line)}.saved-list .draft-row .route-row{border-bottom:0;grid-template-columns:auto minmax(0,1fr) auto auto}.route-thumb{aspect-ratio:1;background:var(--surface-1);width:100%;display:block}.saved-grid{margin:var(--space-3) 0 0;gap:var(--space-4) var(--space-3);grid-template-columns:repeat(3,minmax(0,1fr));padding:0;list-style:none;display:grid}@media (width<=339px){.saved-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=600px){.saved-grid{grid-template-columns:repeat(auto-fill,minmax(168px,1fr))}}button.saved-tile{align-items:stretch;gap:var(--space-1);flex-direction:column;width:100%;min-height:0;padding:0 0 6px}button.saved-tile:after{bottom:0;left:0;right:0}.saved-tile-text{justify-content:space-between;align-items:center;gap:var(--space-2);display:flex}.saved-tile-grade{border:1px solid var(--mark-outline);flex:none;width:18px;height:10px}.saved-cards{margin:var(--space-3) 0 0;gap:var(--space-5);flex-direction:column;padding:0;list-style:none;display:flex}.saved-cards>li+li{padding-top:var(--space-5);border-top:1px solid var(--line)}.saved-card{align-items:start;gap:var(--space-4);text-align:left;grid-template-columns:minmax(112px,min(36%,400px)) minmax(0,1fr);width:100%;display:grid}.saved-card-text{gap:var(--space-2);flex-direction:column;min-width:0;display:flex}.saved-card .panel-title{flex-wrap:wrap}.saved-card .panel-title h2{font-size:var(--text-heading);line-height:var(--lh-heading)}.saved-card-actions{align-items:center;gap:0 var(--space-5);flex-wrap:wrap;display:flex}.saved-dialog .route-thumb{background:var(--surface-2)}.more-filters[aria-expanded=true]{color:var(--text)}.extra-filters{gap:var(--space-2);padding:var(--space-3);border-radius:var(--radius);background:var(--surface-2);flex-direction:column;display:flex}.extra-filters .chip:not([aria-pressed=true]){background:0 0}.grade-toggle{place-items:center;width:34px;padding:0;display:inline-grid}.grade-toggle .tag{width:16px;height:10px}.area-select{min-height:34px;font-size:var(--text-small);font-weight:var(--weight-small);padding:4px 26px 4px 2px}.route-panel{gap:var(--space-4);flex-direction:column;display:flex}.panel-header{justify-content:space-between;align-items:center;display:flex}.panel-header .link{align-items:center;gap:2px;display:inline-flex}.panel-title{align-items:center;gap:var(--space-2);display:flex}.panel-title h2{font-size:var(--text-title);line-height:var(--lh-title);font-weight:700}.list-header h2{font-size:var(--text-heading)}.facts{gap:var(--space-2) var(--space-4);font-size:var(--text-small);line-height:var(--lh-small);font-weight:var(--weight-small);grid-template-columns:auto 1fr;margin:0;display:grid}.facts dt{color:var(--text-muted)}.facts dd{margin:0}.you-finished{gap:var(--space-1);background:var(--surface-2);padding:var(--space-3) var(--space-4);border-radius:var(--radius);font-size:var(--text-small);line-height:var(--lh-small);font-weight:var(--weight-small);flex-direction:column;display:flex}.you-finished p{margin:0}.route-note{gap:var(--space-1);flex-direction:column;display:flex}.route-note-label{font-size:var(--text-small);line-height:var(--lh-small);font-weight:var(--weight-small)}.route-note textarea{font:inherit;color:var(--text);border:none;border-bottom:1.5px solid var(--text-muted);min-height:var(--tap);resize:none;max-height:40vh;transition:border-color var(--dur-state) var(--ease-standard), box-shadow var(--dur-state) var(--ease-standard);background:0 0;border-radius:0;padding:10px 2px;font-size:16px;line-height:1.4;overflow-y:auto}.route-note textarea:focus{border-bottom-color:var(--text);box-shadow:0 .5px 0 var(--text);outline:none}.route-note textarea::placeholder{color:var(--text-muted)}.route-note-status{min-height:var(--lh-small);margin:0}.note-text{white-space:pre-line;overflow-wrap:anywhere}.you-finished .with-icon{flex-wrap:wrap;display:flex}.you-finished .link{color:var(--text);font-weight:600}.panel-footer{bottom:calc(-1 * var(--sheet-pad-bottom,0px));align-items:center;gap:var(--space-2);margin:var(--space-1) calc(-1 * var(--space-4)) calc(-1 * var(--sheet-pad-bottom,0px));padding:var(--space-2) var(--space-4) calc(var(--sheet-pad-bottom,0px) - var(--space-1));background:var(--surface-1);flex-direction:column;display:flex;position:sticky}@media (width>=820px){.panel-footer{margin-inline:calc(-1 * var(--space-5));padding-inline:var(--space-5)}}.panel-links{gap:var(--space-5);display:flex}.draft-list{gap:var(--space-3);flex-direction:column;display:flex}.draft-list h2{margin:var(--space-2) 0 0}.draft-list ul{gap:var(--space-1);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.draft-row{align-items:center;gap:var(--space-3);display:flex}.draft-import{align-items:flex-start;gap:var(--space-1);flex-direction:column;display:flex}.draft-import p{margin:0}.scan-start{align-items:flex-start;gap:var(--space-2);flex-direction:column;display:flex}button.scan-drop{display:none}@media (width>=820px){button.scan-button{display:none}button.scan-drop,button.scan-drop:hover:not(:disabled){justify-content:center;align-items:center;gap:var(--space-2);width:100%;min-height:72px;padding:var(--space-3) var(--space-4);border:1px dashed var(--line-strong);color:var(--text-muted);font-size:var(--text-small);font-weight:var(--weight-small);text-align:center;transition:border-color var(--dur-fade) var(--ease-standard), color var(--dur-fade) var(--ease-standard);display:flex}button.scan-drop:after{display:none}button.scan-drop:hover:not(:disabled),button.scan-drop:focus-visible,button.scan-drop.over{border-color:var(--text);color:var(--text)}button.scan-drop.over{border-style:solid}}.term{--term-bg:#0c0e11;--term-bar:#171b21;--term-line:#2a2f37;--term-text:#d5d9df;--term-muted:#8b929c;--term-ok:#7bd88f;--term-wait:#e3b341;--term-bad:#ff7b72;border:1px solid var(--term-line);background:var(--term-bg);width:100%;color:var(--term-text);font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:12px;line-height:1.5}button.term-head,button.term-head:hover:not(:disabled){align-items:center;gap:var(--space-2);background:var(--term-bar);width:100%;min-height:32px;color:var(--term-text);font:inherit;text-align:left;padding:4px 10px;display:flex}button.term-head:after{display:none}button.term-head>svg{color:var(--term-muted);transition:transform var(--dur-state) var(--ease-standard);flex:none}button.term-head[aria-expanded=true]>svg{transform:rotate(90deg)}.term-title{color:var(--term-muted)}.term-title:before{content:"> "}.term-now.running{color:var(--term-wait)}.term-now.ok{color:var(--term-ok)}.term-now.failed{color:var(--term-bad)}.term-total{color:var(--term-muted);margin-left:auto}.draft-list ol.term-lines{-webkit-user-select:text;user-select:text;max-height:240px;margin:0;padding:8px 10px 4px;list-style:none;overflow-y:auto}.term-lines li{grid-template-columns:7ch 1fr auto 9ch;column-gap:1ch;padding-bottom:4px;display:grid}.term-at,.term-took{color:var(--term-muted)}.term-took{text-align:right}.term-lines .ok .term-flag{color:var(--term-ok)}.term-lines .running .term-flag{color:var(--term-wait)}.term-lines .failed .term-flag,.term-lines .failed .term-detail{color:var(--term-bad)}.term-detail{color:var(--term-muted);overflow-wrap:anywhere;grid-column:2/-1}.term-cursor{vertical-align:text-bottom;background:var(--term-wait);width:.6em;height:1em;margin-left:.4em;animation:1s steps(2,start) infinite term-blink;display:inline-block}@keyframes term-blink{to{visibility:hidden}}.term-foot{justify-content:flex-end;padding:0 10px 6px;display:flex}button.term-copy,button.term-copy:hover:not(:disabled){min-height:28px;color:var(--term-muted);font:inherit;padding:2px 0}button.term-copy:hover:not(:disabled){color:var(--term-text)}.lineup{z-index:1;pointer-events:none;position:absolute;inset:0}.lineup-photo{outline:1px solid var(--on-scene);position:absolute;box-shadow:0 0 0 100vmax #0000002e}.lineup-photo img,.lineup-photo svg{width:100%;height:100%;position:absolute;inset:0}.lineup-photo img{opacity:.42;transition:opacity var(--dur-state) var(--ease-standard)}.lineup-photo.strong img{opacity:.85}.lineup-ring,.lineup-ring-edge,.lineup-volume{fill:none;vector-effect:non-scaling-stroke}.lineup-volume{stroke:var(--on-scene);stroke-width:2px;stroke-dasharray:7 5}.lineup-ring-edge{stroke:#000000b3;stroke-width:4px}.lineup-ring{stroke-width:2px}.lineup-bar{left:50%;bottom:var(--space-3);width:max-content;max-width:calc(100% - 2 * var(--space-3));padding:var(--space-2) var(--space-4);background:var(--glass-strong);box-shadow:var(--shadow-float);pointer-events:auto;text-align:center;position:absolute;transform:translate(-50%)}.lineup-hint{font-size:var(--text-small);color:var(--text-muted);margin:0}.lineup-actions{justify-content:center;gap:0 var(--space-5);flex-wrap:wrap;display:flex}.scan-check{z-index:60;background:var(--bg);animation:fade-in var(--dur-state) var(--ease-standard);flex-direction:column;display:flex;position:fixed;inset:0}.scan-check-head{padding:calc(var(--space-3) + env(safe-area-inset-top)) var(--space-4) var(--space-2)}.scan-check-head h2{margin:0}.scan-check-head p{margin:var(--space-1) 0 0}.scan-check-view{overscroll-behavior:contain;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;background:var(--surface-2);cursor:crosshair;flex:1 1 0;min-height:0;display:flex;overflow:auto}.scan-check-view.tool-move{cursor:grab}.scan-check-photo{flex:none;margin:auto;position:relative}.scan-check-photo img,.scan-check-photo svg{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.scan-check-wait{place-items:center;margin:0;display:grid;position:absolute;inset:0}.scan-check-edge,.scan-check-ring,.scan-check-volume{fill:none;vector-effect:non-scaling-stroke}.scan-check-edge{stroke:#000000b3;stroke-width:4px}.scan-check-ring{stroke-width:2px}.scan-check-volume{stroke:var(--on-scene);stroke-width:2px;stroke-dasharray:7 5}.scan-check-stroke{fill:none;stroke-linecap:round;stroke-linejoin:round;stroke:#fff9}.scan-check-stroke.out{stroke:#0000008c}.scan-check-bar{align-items:center;gap:var(--space-1);padding:var(--space-2) var(--space-3) calc(var(--space-2) + env(safe-area-inset-bottom));flex-direction:column;display:flex}.scan-check-tools,.scan-check-colors,.scan-check-actions{flex-wrap:wrap;justify-content:center;align-items:center;display:flex}.scan-check-tools{gap:0 clamp(var(--space-2), 4vw, var(--space-5))}.scan-check-tool{width:44px;font-size:var(--text-title);color:var(--text-muted);padding:0;line-height:1}.scan-check-brushes{align-items:center;gap:var(--space-1);display:inline-flex}.scan-check-brush{width:36px;color:var(--text-muted);padding:0}.scan-check-brush span{background:currentColor;border-radius:50%;display:block}.scan-check-colors{gap:var(--space-2) var(--space-2);min-height:var(--tap)}.scan-check-colors .chip{margin:0 var(--space-1)}.scan-check-count{justify-content:center;gap:var(--space-1) var(--space-4);font-size:var(--text-small);color:var(--text-muted);font-variant-numeric:tabular-nums;flex-wrap:wrap;margin:0;display:flex}.scan-check-count span{align-items:center;gap:6px;display:inline-flex}.scan-check-actions{gap:0 var(--space-5)}.draft-list ul.scan-groups{flex:100%;gap:0}.scan-groups li{align-items:center;gap:var(--space-3);min-height:40px;display:flex}.scan-groups li .scan-text{flex:auto}.scan-row-actions{gap:0 var(--space-4);flex-wrap:wrap;margin-left:auto;display:inline-flex}.draft-list ul.scan-rows{gap:0;width:100%}.scan-row{align-items:center;gap:var(--space-1) var(--space-3);padding:var(--space-2) 0;border-bottom:1px solid var(--line);font-size:var(--text-small);flex-wrap:wrap;display:flex}.scan-row.running .scan-text{color:var(--text-muted);animation:scan-wait 1.6s var(--ease-standard) infinite}@keyframes scan-wait{50%{opacity:.45}}.scan-text{flex:10rem;min-width:0}.draft-row .route-row{flex:1;grid-template-columns:auto 1fr;min-width:0}.draft-text{flex-direction:column;gap:2px;min-width:0;display:flex}.sandbox-panel{gap:var(--space-4);flex-direction:column;display:flex}.sandbox-panel .panel-header .link{display:inline-flex}.panel-group{gap:var(--space-3);padding-top:var(--space-4);border-top:1px solid var(--line);flex-direction:column;display:flex}.group-title{font-family:var(--font-body);font-size:var(--text-micro);line-height:var(--lh-micro);letter-spacing:.08em;color:var(--text-muted);margin:0;font-weight:600}.field{gap:var(--space-2);flex-direction:column;display:flex}.field-label{font-size:var(--text-small);font-weight:var(--weight-small)}.optional{margin-left:var(--space-1);font-size:var(--text-micro);color:var(--text-muted);font-weight:var(--weight-small)}.swatch-button{border-radius:var(--radius-pill);border:2px solid var(--mark-outline);width:30px;height:30px;min-height:30px;padding:0}.swatch-button:after{bottom:-6px;left:0;right:0}.grade-chip-button{align-items:center;gap:6px;display:inline-flex}.option-grid{gap:var(--space-2);grid-template-columns:repeat(3,1fr);display:grid}.option{min-height:40px;padding:var(--space-2);font-size:var(--text-small);font-weight:var(--weight-small)}.selection-card{gap:var(--space-2);padding:var(--space-3);border-radius:var(--radius);background:var(--surface-2);flex-direction:column;display:flex}.selection-name{align-items:center;gap:var(--space-2);margin:0;font-weight:600;display:flex}.volume-list{gap:var(--space-1);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.volume-row{align-items:center;gap:var(--space-2);width:100%;min-height:40px;padding:var(--space-2) var(--space-3);text-align:left;font-size:var(--text-small);font-weight:var(--weight-small);grid-template-columns:auto 1fr auto auto;display:grid}.sandbox-footer{bottom:calc(-1 * var(--sheet-pad-bottom,0px));margin:0 calc(-1 * var(--space-4)) calc(-1 * var(--sheet-pad-bottom,0px));padding:var(--space-2) var(--space-4) calc(var(--sheet-pad-bottom,0px) - var(--space-1));gap:var(--space-2);background:var(--surface-1);border-top:1px solid var(--line);flex-direction:column;display:flex;position:sticky}@media (width>=820px){.sandbox-footer{margin:0 calc(-1 * var(--space-5)) calc(-1 * var(--sheet-pad-bottom,0px));padding:var(--space-2) var(--space-5) calc(var(--sheet-pad-bottom,0px) - var(--space-2))}}.save-row{align-items:center;gap:var(--space-4);display:flex}.save-row .hint{margin:0 auto 0 0}.save-row .split-button{font-size:inherit}.save-row .split-button[aria-pressed=true]{color:var(--text)}.save-row .split-button[aria-pressed=true]:after{background:var(--accent);height:2px;transform:scaleX(1)}.save-row>button{white-space:nowrap;flex:none}.set-row{align-items:center;gap:var(--space-2);grid-template-columns:3rem minmax(0,1fr);display:grid}.set-label{font-size:var(--text-micro);line-height:var(--lh-micro);font-weight:var(--weight-small);color:var(--text-muted)}.sandbox-panel{gap:var(--space-3)}.sandbox-panel .panel-group{gap:var(--space-1);padding-top:var(--space-3)}.sandbox-panel .chip{min-height:32px;padding:4px 0}.sandbox-panel .chip:after{bottom:4px}.sandbox-panel .volume-sub-row{grid-column:2}.sandbox-panel .volume-fold{align-items:center;gap:2px;display:inline-flex}.sandbox-panel .volume-fold:before{content:"";background:var(--chevron) center / 12px no-repeat;order:1;width:12px;height:12px;transition:transform .12s;transform:rotate(-90deg)}.sandbox-panel .volume-fold[aria-expanded=true]:before{transform:none}.sandbox-panel .volume-sizes{padding-left:var(--space-3);border-left:1px solid var(--line)}.sandbox-panel .small-chip{min-height:28px}.sandbox-panel .swatch-row{flex-wrap:nowrap;gap:6px;padding:6px 0 10px}.sandbox-panel .swatch-button{flex:none;width:24px;height:24px;min-height:24px}.sandbox-panel .grade-swatch{width:40px;height:20px;min-height:20px}@media (width>=820px){.sandbox-panel .swatch-button{width:22px;height:22px;min-height:22px}.sandbox-panel .grade-swatch{width:36px;height:18px;min-height:18px}}.sandbox-panel .removal-field{align-items:center;gap:0 var(--space-3);flex-flow:wrap}.sandbox-panel .removal-field input[type=date]{max-width:9rem;min-height:32px;font-size:var(--text-small);padding-top:2px;padding-bottom:2px}.sandbox-panel .toggle{min-height:32px}.volumes-fold>summary{cursor:pointer}.volumes-fold[open]>summary{margin-bottom:var(--space-2)}.selected-bar{left:var(--space-3);bottom:var(--space-3);z-index:2;max-width:calc(100% - 2 * var(--space-3) - 36px - var(--space-2));align-items:center;gap:0 var(--space-4);padding:0 var(--space-3);background:var(--glass);-webkit-backdrop-filter:blur(10px);flex-wrap:wrap;display:flex;position:absolute}.selected-name{align-items:center;gap:var(--space-2);font-size:var(--text-small);font-weight:600;display:inline-flex}.selected-bar .swatch-row{flex-wrap:nowrap;gap:6px}.selected-bar .size-row{gap:var(--space-3);display:inline-flex}.selected-bar .swatch-button{width:22px;height:22px;min-height:22px}.draw-volume-bar{padding:var(--space-2) var(--space-3);gap:var(--space-2) var(--space-4);max-width:min(560px, calc(100% - 2 * var(--space-3) - 36px - var(--space-2)))}.draw-hint{font-size:var(--text-small);flex-basis:100%;margin:0}.draw-height{align-items:center;gap:var(--space-2);font-size:var(--text-small);color:var(--text-muted);flex:200px;display:flex}.draw-height input{min-width:0;accent-color:var(--text);flex:1}.draw-distance{text-align:right;font-variant-numeric:tabular-nums;min-width:4ch;color:var(--text)}.draw-steps{align-items:center;gap:var(--space-3);flex-wrap:wrap;display:inline-flex}button.delete-button,button.delete-button:hover{color:var(--danger)}.removal-field{gap:var(--space-2);flex-direction:column;display:flex}.removal-field input[type=date]{max-width:200px}.site-footer{display:none}@media (width>=820px){.site-footer{align-items:center;gap:var(--space-4);padding:var(--space-1) var(--space-4);font-size:var(--text-micro);line-height:var(--lh-micro);color:var(--text-muted);background:var(--bg);border-top:1px solid var(--line);font-weight:var(--weight-small);grid-area:footer;display:flex}.footer-links{gap:var(--space-4);display:flex}.site-footer a{color:var(--text-muted);text-decoration:none}.site-footer a:hover{color:var(--text)}.site-footer .version-menu{margin-left:auto}}.version-menu{position:relative}.version-menu .version{border-radius:var(--radius-sm);min-height:0;font:inherit;color:var(--text-muted);background:0 0;padding:2px 6px}.version-menu .version:after{bottom:-1px;left:6px;right:6px}.version-menu:hover .version,.version-menu:focus-within .version{color:var(--text);background:0 0}.version-stack{z-index:30;visibility:hidden;pointer-events:none;padding-bottom:10px;transition:visibility 0s linear .2s;position:absolute;bottom:100%;right:0}.version-menu:hover .version-stack,.version-menu:focus-within .version-stack{visibility:visible;pointer-events:auto;transition-delay:0s}.wall-view .version-stack{right:calc(var(--space-3) - var(--space-4))}.wall-view .version-list{width:var(--panel-width)}.version-list{width:min(420px, calc(100vw - 2 * var(--space-4)));overscroll-behavior:contain;max-height:min(60vh,520px);padding:var(--space-1) var(--space-4);background:var(--surface-1);box-shadow:var(--shadow-float);opacity:0;flex-direction:column-reverse;margin:0;list-style:none;transition:opacity .15s ease-in,transform .15s ease-in;display:flex;overflow-y:auto;transform:translateY(6px)}.version-menu:hover .version-list,.version-menu:focus-within .version-list{opacity:1;transition:opacity .15s ease-out, transform .35s var(--ease-spring);transform:none}.stack-row{justify-content:space-between;align-items:baseline;gap:var(--space-4);opacity:0;padding:10px 0;transition:opacity .1s ease-in,transform .1s ease-in;display:flex;transform:translateY(10px)}.stack-row+.stack-row{border-bottom:1px solid var(--line)}.version-menu:hover .stack-row,.version-menu:focus-within .stack-row{opacity:1;transition:transform .4s var(--ease-spring), opacity .2s ease-out;transition-delay:calc(min(var(--i), 10) * 25ms);transform:none}.stack-label{color:var(--text);font-size:var(--text-small);line-height:var(--lh-small);font-weight:var(--weight-small);text-wrap:pretty}.stack-version{color:var(--text-muted);font-size:var(--text-micro);font-weight:var(--weight-label);font-variant-numeric:tabular-nums;flex:none}.stack-version.current,.update-version.current{color:var(--text);text-underline-offset:4px;text-decoration:underline;text-decoration-thickness:1.5px}.updates{margin:0;padding:0;list-style:none}.update{padding:var(--space-3) 0;border-bottom:1px solid var(--line)}.update-head{align-items:baseline;gap:var(--space-3);color:var(--text-muted);font-size:var(--text-small);font-variant-numeric:tabular-nums;display:flex}.update-version{color:var(--text);font-weight:var(--weight-label)}.update p{margin:var(--space-1) 0 0}.page{flex-direction:column;min-height:100dvh;display:flex}.page-content{width:min(720px,100%);padding:var(--space-5) var(--space-4) calc(env(safe-area-inset-bottom) + var(--space-6));flex:1;margin:0 auto}@media (width>=1100px){.page-content.wide{width:min(1280px,100%);padding:var(--space-6) var(--space-6) var(--space-7)}}.page-content.full{width:100%}@media (width>=820px){.page-content.full{padding:var(--space-6) var(--space-6) var(--space-7)}}.legal h1{margin:var(--space-1) 0 var(--space-3)}.legal h2{margin:var(--space-5) 0 var(--space-2)}.legal p,.legal li{color:var(--text);line-height:1.6}.login{align-content:center;place-items:center;gap:var(--space-4);min-height:100%;padding:var(--space-4);display:grid}.login-card{gap:var(--space-4);background:var(--surface-1);width:min(360px,100%);padding:var(--space-6) var(--space-5) var(--space-5);border-radius:var(--radius);flex-direction:column;display:flex}.login-card h1{margin:0 0 var(--space-2);font-size:var(--text-display);line-height:var(--lh-display)}.login-legal{justify-content:center;gap:var(--space-1) var(--space-4);font-size:var(--text-micro);font-weight:var(--weight-small);flex-wrap:wrap;display:flex}.login-legal a{color:var(--text-muted);text-decoration:none}.settings-section{margin-bottom:var(--space-6)}.settings-section h2{margin:0 0 var(--space-1)}.setting-row{justify-content:space-between;align-items:center;gap:var(--space-4);padding:var(--space-3) 0;border-bottom:1px solid var(--line);display:flex}.setting-row .muted.small{font-size:var(--text-small);font-weight:var(--weight-small)}.inline-input{align-items:center;gap:var(--space-2);flex:none;display:flex}.inline-input input{width:72px}.password-form{gap:var(--space-2);flex-direction:column;max-width:360px;display:flex}.profile-header{align-items:center;gap:var(--space-4);margin-bottom:var(--space-5);display:flex}.profile-header:has(.log-out){flex-wrap:wrap}.profile-info{flex:14rem;min-width:0}.profile-header .log-out{white-space:nowrap;align-self:flex-start;margin-left:auto}.profile-header p{margin:2px 0 0}.profile-header .follow-counts{margin:2px 0 var(--space-1);font-size:var(--text-small);color:var(--text-muted)}.follow-counts strong{font-variant-numeric:tabular-nums;color:var(--text);font-weight:600}.avatar{border-radius:var(--radius-pill);background:var(--surface-2);width:56px;height:56px;color:var(--text-muted);flex:none;place-items:center;display:grid}.avatar,.rail-avatar,.menu-avatar,.table-avatar{overflow:hidden}.avatar img,.rail-avatar img,.menu-avatar img,.table-avatar img{object-fit:cover;width:100%;height:100%;display:block}.avatar.has-blob,.rail-avatar.has-blob,.menu-avatar.has-blob,.table-avatar.has-blob{background:0 0}.blob-avatar{width:100%;height:100%;display:grid}.blob-avatar>img,.blob-avatar>svg{grid-area:1/1;width:100%;height:100%;display:block}.blob-bolt-washer{fill:var(--avatar-washer);fill-opacity:.25;stroke:var(--avatar-bolt);stroke-opacity:.3}.blob-bolt-hole{fill:var(--avatar-bolt);fill-opacity:.55}.blob-bolt-socket{fill:var(--avatar-bolt);fill-opacity:.85}button.avatar-button{flex:none;min-height:0;padding:0 0 6px}button.avatar-button:after{bottom:0;left:0;right:0}.avatar-editor>.crop-window,.avatar-editor>.avatar,.avatar-editor>.crop-zoom,.avatar-editor>.hint{align-self:center}.avatar.avatar-large{width:160px;height:160px}.crop-window{aspect-ratio:1;background:var(--surface-2);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;width:min(260px,70vw)}.crop-window:active{cursor:grabbing}.crop-zoom{align-items:center;gap:var(--space-3);width:min(260px,70vw);font-size:var(--text-small);color:var(--text-muted);display:flex}.crop-zoom input{min-width:0;accent-color:var(--text);flex:1}.avatar-editor .info-note{width:100%;margin:var(--space-2) 0 0;text-align:left}.avatar-editor .info-note>span{flex-direction:column;gap:2px;display:flex}.avatar-editor .info-note strong{color:var(--text);font-weight:600}.who-sees-line.now{color:var(--text);font-weight:500}.avatar-editor .info-note a{margin-top:var(--space-1);align-self:flex-start}.username{word-break:break-all;align-items:center;gap:6px;display:flex}.username-editor{font-family:var(--font-display);font-weight:700;font-size:var(--text-title);line-height:var(--lh-title);letter-spacing:var(--tracking-heading);position:relative}@media (width>=820px){.username-editor{font-size:var(--text-display);line-height:var(--lh-display)}}input.username-input{max-width:100%;min-height:0;font:inherit;letter-spacing:inherit;margin-bottom:-1.5px;padding:0}.username-note{z-index:2;padding:4px var(--space-2);background:var(--surface-2);box-shadow:var(--shadow-float);color:var(--text-muted);font-family:var(--font-body);font-size:var(--text-small);line-height:var(--lh-small);font-weight:var(--weight-small);letter-spacing:normal;white-space:nowrap;position:absolute;top:calc(100% + 2px);left:0}.username-note.ok{color:var(--present)}.profile-line{line-height:28px}button.icon-button.inline-pen{vertical-align:middle;width:28px;height:28px;min-height:28px;color:var(--text-muted);place-items:center;padding:0;display:inline-grid}button.icon-button.inline-pen:hover:not(:disabled){color:var(--text)}.email-editor{vertical-align:middle;align-items:center;display:inline-flex;position:relative}input.email-input{max-width:100%;height:28px;min-height:0;font-size:inherit;padding:0}.follow-counts button.link{min-height:0;font:inherit;color:inherit;padding:0}.follow-dialog{width:min(480px,100%)}.follow-list{max-height:min(50vh,420px);margin:0;padding:0;list-style:none;overflow-y:auto}.follow-list li{align-items:center;gap:var(--space-1) var(--space-3);padding:var(--space-2) 0;border-bottom:1px solid var(--line);flex-wrap:wrap;display:flex}.follow-actions{gap:var(--space-4);margin-left:auto;display:inline-flex}button.small{min-height:36px;font-size:var(--text-small);padding:6px 0}.feed-when{white-space:nowrap}.feed .feed-news-item{justify-content:space-between;align-items:center;gap:var(--space-1) var(--space-3);text-align:left;flex-flow:wrap}.feed .feed-news-item>:first-child{flex:12rem;min-width:0}.empty-state{align-items:flex-start;gap:var(--space-5);padding:var(--space-5) 0;color:var(--text-muted);flex-direction:column;display:flex}.progression h2{margin:0}.stat-tiles{gap:var(--space-2);margin-top:var(--space-3);grid-template-columns:repeat(2,1fr);display:grid}@media (width>=620px){.stat-tiles{grid-template-columns:repeat(4,1fr)}}.stat-tile{gap:var(--space-1);padding:var(--space-3) var(--space-4);background:var(--surface-1);border-radius:var(--radius);flex-direction:column;display:flex}.stat-value{font-size:var(--text-title);line-height:var(--lh-title);font-variant-numeric:tabular-nums;align-items:center;min-height:2rem;font-weight:600;display:flex}.stat-value .grade-chip{font-size:var(--text-heading);color:var(--text)}.stat-label{font-size:var(--text-micro);line-height:var(--lh-micro);color:var(--text-muted);font-weight:var(--weight-small)}.progression-grid{gap:var(--space-3);margin-top:var(--space-3);grid-template-columns:minmax(0,1fr);grid-template-areas:"sessions""pyramid""tries""chart""records";display:grid}.pg-sessions{grid-area:sessions}.pg-pyramid{grid-area:pyramid}.pg-tries{grid-area:tries}.pg-chart{grid-area:chart}.pg-records{grid-area:records}.progression-grid>div>.chart-card{height:100%}@media (width>=1100px){.page-content.wide .progression-grid{grid-template-columns:repeat(3,minmax(0,1fr));grid-template-areas:"chart chart chart""sessions pyramid tries""records records records"}.page-content.wide .record-grid{grid-template-columns:repeat(6,1fr)}}.chart-header{justify-content:space-between;align-items:center;gap:var(--space-3);display:flex}.chart-legend{gap:var(--space-1) var(--space-4);margin:var(--space-2) 0 var(--space-3);font-size:var(--text-micro);color:var(--text-muted);font-weight:var(--weight-small);flex-wrap:wrap;display:flex}.legend-swatch{background:var(--chart-neutral);vertical-align:-1px;border-radius:0;width:12px;height:10px;display:inline-block}.legend-swatch.faded{opacity:.4}.legend-swatch.striped{background:repeating-linear-gradient(135deg, var(--chart-neutral) 0 2px, transparent 2px 4px)}.chart-area{position:relative}.chart-label{fill:var(--text);font-size:var(--text-small);font-weight:var(--weight-small)}.chart-value{fill:var(--text-muted);font-size:var(--text-micro);font-variant-numeric:tabular-nums;font-weight:var(--weight-small)}.chart-tick{fill:var(--text-muted);font-size:var(--text-micro);font-weight:var(--weight-small)}.chart-grid{stroke:var(--chart-grid)}.chart-axis{stroke:var(--chart-axis)}.chart-track{fill:var(--chart-track)}.chart-tooltip{border-radius:var(--radius-sm);background:var(--bg);border:1px solid var(--line-strong);box-shadow:var(--shadow-float);font-size:var(--text-small);white-space:nowrap;pointer-events:none;font-weight:var(--weight-small);padding:6px 10px;position:absolute;top:0;transform:translate(-50%,-100%)}.chart-table{border-collapse:collapse;width:100%;font-size:var(--text-small);font-weight:var(--weight-small)}.chart-table th,.chart-table td{text-align:left;border-bottom:1px solid var(--line);padding:6px 4px}.chart-table th{color:var(--text-muted);font-weight:500}.last-session{flex-direction:column;gap:6px;display:flex}.last-session .grade-breakdown{font-size:var(--text-heading);line-height:var(--lh-heading);font-weight:600}.grade-breakdown{gap:var(--space-1) 14px;flex-wrap:wrap;display:flex}.grade-count{align-items:center;gap:6px;display:inline-flex}.grade-count .dot{border-radius:var(--radius-pill);flex:none;width:10px;height:10px}.session-list{margin:var(--space-3) 0 0;padding:0;list-style:none}.session-list li{padding:var(--space-2) 0;border-top:1px solid var(--line);font-size:var(--text-small);font-weight:var(--weight-small);flex-direction:column;gap:3px;display:flex}.record-grid{gap:var(--space-4) var(--space-3);margin-top:var(--space-3);grid-template-columns:repeat(2,1fr);display:grid}@media (width>=620px){.record-grid{grid-template-columns:repeat(3,1fr)}}.record{flex-direction:column;gap:2px;display:flex}.record-value{font-size:var(--text-heading);line-height:var(--lh-heading);font-weight:600}.record-value .grade-chip{font-size:var(--text-body);color:var(--text)}.tries-list{margin:var(--space-3) 0 0;gap:var(--space-2);flex-direction:column;padding:0;list-style:none;display:flex}.tries-list li{align-items:center;gap:var(--space-3);font-size:var(--text-small);font-weight:var(--weight-small);grid-template-columns:1fr auto auto;display:grid}.tries-value{font-variant-numeric:tabular-nums;font-weight:600}.leaderboard,.feed{margin:var(--space-3) 0;gap:var(--space-2);flex-direction:column;padding:0;list-style:none;display:flex}.leaderboard li{align-items:center;gap:2px var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius);background:var(--surface-1);grid-template-columns:2.2em 1fr auto;grid-template-areas:"place name points""place detail detail";display:grid}.leaderboard li.me{box-shadow:inset 0 0 0 1.5px var(--accent)}.leaderboard .place{font-size:var(--text-heading);font-variant-numeric:tabular-nums;text-align:center;color:var(--text-muted);grid-area:place;font-weight:600}.leaderboard .lb-name{grid-area:name;justify-self:start}.leaderboard .lb-points{font-variant-numeric:tabular-nums;grid-area:points;font-weight:600}.leaderboard .hint{grid-area:detail}.info-note{align-items:flex-start;gap:var(--space-3);margin:var(--space-5) 0 var(--space-4);padding:var(--space-3) var(--space-4);background:var(--surface-1);font-size:var(--text-small);line-height:var(--lh-small);font-weight:var(--weight-small);color:var(--text-muted);display:flex}.info-note svg{margin-top:calc((var(--lh-small) - 18px) / 2);color:var(--text);flex:none}.hint.after-note{margin-top:var(--space-4)}.lb-name{color:var(--text);font-weight:600;text-decoration:none}.people-search{appearance:none;width:100%}.people-search::-webkit-search-cancel-button{appearance:none}.people-list{margin:var(--space-3) 0;gap:var(--space-2);flex-direction:column;padding:0;list-style:none;display:flex}.people-list li{align-items:center;gap:var(--space-2) var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius);background:var(--surface-1);flex-wrap:wrap;display:flex}.people-list li button{margin-left:auto}.covered-email{color:var(--text-muted);font-size:var(--text-small);font-weight:var(--weight-small)}.covered-email.shown{color:var(--text);font-variant-numeric:tabular-nums}.admin-toolbar{align-items:center;gap:var(--space-2) var(--space-4);margin-bottom:var(--space-4);flex-wrap:wrap;display:flex}.admin-toolbar .people-search{width:min(320px,100%)}.admin-sort{display:none}@media (width<=959px){.admin-sort{display:block}}button.sort-button{min-height:0;font:inherit;letter-spacing:inherit;color:inherit;gap:4px;padding:0}button.sort-button[aria-pressed=true]{color:var(--text)}button.sort-button>.label{margin-bottom:-3px;padding-bottom:3px}.admin-table{border-collapse:separate;border-spacing:0;background:var(--surface-1);border:1px solid var(--line);border-radius:var(--radius);width:100%;overflow:hidden}.admin-table th{padding:var(--space-3) var(--space-4);background:var(--surface-2);color:var(--text-muted);font-size:var(--text-micro);line-height:var(--lh-micro);text-align:left;white-space:nowrap}.admin-table td{padding:var(--space-3) var(--space-4);border-top:1px solid var(--line);vertical-align:middle;font-size:var(--text-small);font-weight:var(--weight-small)}.admin-table .cell-avatar{width:1%;padding-right:0}.table-avatar{border-radius:var(--radius-sm);background:var(--surface-2);width:40px;height:40px;color:var(--text-muted);place-items:center;display:grid}.admin-table .cell-user{font-size:var(--text-body)}.status{white-space:nowrap}.status-dot{width:8px;height:8px;margin-right:var(--space-2);background:var(--present);vertical-align:1px;border-radius:0;display:inline-block}.status-dot.blocked{background:var(--danger)}.admin-table .cell-actions{white-space:nowrap;width:1%}.table-actions{justify-content:flex-end;gap:var(--space-1);display:flex}.admin-footer{margin-top:var(--space-4);justify-content:flex-end;display:flex}@media (width<=959px){.admin-table,.admin-table tbody{background:0 0;border:0;border-radius:0;display:block;overflow:visible}.admin-table thead{clip-path:inset(50%);width:1px;height:1px;position:absolute;overflow:hidden}.admin-table tr{gap:0 var(--space-3);margin-bottom:var(--space-2);padding:var(--space-3) var(--space-4);background:var(--surface-1);border-radius:var(--radius);grid-template-columns:40px 1fr;grid-template-areas:"avatar user""avatar role""email email""joined joined""profile profile""status status""actions actions";display:grid}.admin-table td{border:0;padding:0;display:block}.admin-table .cell-avatar{grid-area:avatar;width:auto}.admin-table .cell-user{grid-area:user;align-self:end}.admin-table .cell-role{color:var(--text-muted);margin-bottom:var(--space-2);grid-area:role}.admin-table .cell-email{grid-area:email}.admin-table .cell-joined{grid-area:joined}.admin-table .cell-profile{grid-area:profile}.admin-table .cell-status{grid-area:status}.admin-table :is(.cell-email,.cell-joined,.cell-profile,.cell-status){gap:var(--space-3);border-top:1px solid var(--line);padding:6px 0;display:flex}.admin-table td[data-label]:before{content:attr(data-label);width:6rem;color:var(--text-muted);font-size:var(--text-micro);letter-spacing:var(--tracking-label);flex:none}.admin-table .cell-actions{width:auto;padding-top:var(--space-2);grid-area:actions}}.boulder-board{margin-top:var(--space-6)}.boulder-board .hint{margin:var(--space-2) 0 var(--space-3)}.boulder-table{border-collapse:separate;border-spacing:0;background:var(--surface-1);border:1px solid var(--line);border-radius:var(--radius);width:100%;overflow:hidden}.boulder-table th{padding:var(--space-3) var(--space-4);background:var(--surface-2);color:var(--text-muted);font-size:var(--text-micro);line-height:var(--lh-micro);text-align:left;white-space:nowrap}.boulder-table td{padding:var(--space-3) var(--space-4);border-top:1px solid var(--line);vertical-align:middle;font-size:var(--text-small);font-weight:var(--weight-small);font-variant-numeric:tabular-nums}.boulder-table .swatch{vertical-align:middle;display:inline-block}@media (width<=959px){.boulder-table,.boulder-table tbody{background:0 0;border:0;border-radius:0;display:block;overflow:visible}.boulder-table thead{clip-path:inset(50%);width:1px;height:1px;position:absolute;overflow:hidden}.boulder-table tr{gap:var(--space-2) var(--space-3);margin-bottom:var(--space-2);padding:var(--space-3) var(--space-4);background:var(--surface-1);border-radius:var(--radius);grid-template-columns:repeat(4,1fr);grid-template-areas:"area area grade grade""color color color color""days sends flash flash""feel feel feel feel";display:grid}.boulder-table td{border:0;padding:0;display:block}.boulder-table .cell-area{grid-area:area;font-weight:600}.boulder-table .cell-grade{grid-area:grade;justify-self:end}.boulder-table .cell-color{color:var(--text-muted);grid-area:color}.boulder-table .cell-feel{grid-area:feel}.boulder-table td:nth-child(4){grid-area:days}.boulder-table td:nth-child(5){grid-area:sends}.boulder-table td:nth-child(6){grid-area:flash}.boulder-table td[data-label]:before{content:attr(data-label);color:var(--text-muted);font-size:var(--text-micro);line-height:var(--lh-micro);display:block}}.qr-code{width:220px;max-width:100%;margin:var(--space-3) auto;padding:var(--space-2);background:#fff;line-height:0}.qr-code svg{width:100%;height:auto}.gyms-intro{margin-bottom:var(--space-4)}.gym-tiles{gap:var(--space-5);grid-template-columns:repeat(auto-fill,minmax(260px,1fr));margin:0;padding:0;list-style:none;display:grid}.gym-tile{gap:var(--space-1);flex-direction:column;display:flex}.gym-picture{aspect-ratio:4/3;margin-bottom:var(--space-2);border-radius:var(--radius);background:radial-gradient(circle, var(--line-strong) 0 5px, transparent 6px) 0 0 / 56px 56px, radial-gradient(circle, var(--line-strong) 0 3px, transparent 4px) 28px 28px / 56px 56px, var(--surface-2);place-items:center;display:grid;position:relative;overflow:hidden}.gym-initials{font-family:var(--font-display);letter-spacing:var(--tracking-heading);color:var(--text-muted);font-size:4.5rem;font-weight:700;line-height:1}.gym-edit,button.gym-edit:hover{right:var(--space-3);bottom:var(--space-3);width:40px;height:40px;min-height:40px;color:var(--text);filter:drop-shadow(0 0 2px var(--bg)) drop-shadow(0 0 4px var(--bg));background:0 0;border-radius:0;padding:0;position:absolute}.gym-edit:after{bottom:4px;left:10px;right:10px}.gym-edit:hover,.gym-edit:focus-visible{transform:scale(1.06)}.gym-dialog{width:min(560px,100%);max-height:calc(100dvh - var(--space-5));overflow-y:auto}.dialog.form-dialog{text-align:left;align-items:stretch}.field{gap:var(--space-1);font-size:var(--text-small);font-weight:var(--weight-small);color:var(--text-muted);flex-direction:column;display:flex}.field input,.field select{width:100%}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.feed-item{gap:var(--space-1);padding:var(--space-3) var(--space-4);border-radius:var(--radius);background:var(--surface-1);flex-direction:column;display:flex}.feed-head{justify-content:space-between;align-items:baseline;gap:var(--space-2);display:flex}.at-gym{margin-left:var(--space-2);font-family:var(--font-body);font-size:var(--text-micro);line-height:var(--lh-micro);letter-spacing:0;color:var(--present);white-space:nowrap;vertical-align:middle;align-items:center;gap:5px;font-weight:500;display:inline-flex}.at-gym-dot{border-radius:var(--radius-pill);background:var(--present);width:7px;height:7px;box-shadow:0 0 0 3px color-mix(in srgb, var(--present) 25%, transparent)}.at-gym-now{align-items:center;gap:0 var(--space-2);margin:0 0 var(--space-4);flex-wrap:wrap;display:flex}.competition-section h2{margin:var(--space-5) 0 var(--space-2);color:var(--text-muted)}.competition-list{gap:var(--space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.competition-card{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius);background:var(--surface-1);display:flex}.competition-card-text{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.competition-head h1{margin:0 0 var(--space-1)}.competition-head .action-row{margin:var(--space-3) 0 var(--space-2)}.competition-body{gap:var(--space-4);margin-top:var(--space-4);display:grid}.competition-main>.filter-row:first-child{margin-top:0}.competition-aside{gap:var(--space-2);flex-direction:column;display:flex}@media (width>=1100px){.page-content.wide .competition-body{grid-template-columns:minmax(0,2fr) minmax(0,1fr);align-items:start}}.new-competition-section{margin-top:var(--space-6)}.new-competition{align-items:center;gap:var(--space-2) var(--space-3);flex-wrap:wrap;display:flex}.new-competition input{flex:100%}.ach-summary{gap:var(--space-2);margin-bottom:var(--space-5);flex-direction:column;max-width:420px;display:flex}.ach-bar{background:var(--surface-2);border-radius:0;height:6px;display:block;overflow:hidden}.ach-bar>span{background:var(--text);height:100%;transition:width var(--dur-enter) var(--ease-standard);display:block}.ach-category{margin-bottom:var(--space-5)}.ach-category h2{margin-bottom:var(--space-2)}button.ach-category-title{align-items:center;gap:var(--space-2);min-height:var(--tap);font:inherit;letter-spacing:inherit;color:var(--text);padding:0;display:inline-flex}button.ach-category-title>svg{color:var(--text-muted);transition:transform var(--dur-state) var(--ease-standard);flex:none}button.ach-category-title[aria-expanded=true]>svg{transform:rotate(90deg)}button.ach-category-title[aria-expanded]>.label{background-image:linear-gradient(currentColor,currentColor)}.ach-category-count{font-family:var(--font-body);font-size:var(--text-small);letter-spacing:0;color:var(--text-muted);font-weight:500}.ach-grid{gap:var(--space-2);grid-template-columns:repeat(auto-fill,minmax(80px,1fr));margin:0;padding:0;list-style:none;display:grid}@media (width>=520px){.ach-grid{grid-template-columns:repeat(auto-fill,minmax(96px,1fr))}}button.ach-tile,button.ach-tile:hover{justify-content:center;align-items:center;gap:var(--space-1);aspect-ratio:1;width:100%;min-height:0;padding:var(--space-2);background:var(--surface-1);color:var(--text);text-align:center;transition:background-color var(--dur-fade) var(--ease-standard), box-shadow var(--dur-fade) var(--ease-standard);flex-direction:column;display:flex;position:relative}button.ach-tile:after{display:none}button.ach-tile:hover,button.ach-tile:focus-visible{background:var(--surface-2)}.ach-title{font-size:var(--text-small);text-wrap:balance;overflow-wrap:anywhere;font-weight:600;line-height:1.25}button.ach-tile.locked,button.ach-tile.locked:hover{box-shadow:inset 0 0 0 1px var(--line-strong);background:0 0}button.ach-tile.locked:hover,button.ach-tile.locked:focus-visible{box-shadow:inset 0 0 0 1px var(--text-muted)}.ach-tile.locked .ach-title{color:var(--text-muted);letter-spacing:.2em}.ach-tile.locked .ach-bar{width:70%;height:4px}.ach-count{font-size:var(--text-micro);line-height:var(--lh-micro);color:var(--text-muted);font-weight:var(--weight-small);font-variant-numeric:tabular-nums}.ach-new{font-family:var(--font-body);font-size:var(--text-micro);letter-spacing:.04em;color:var(--gold);align-items:flex-start;gap:1px;font-weight:600;line-height:1;display:inline-flex}.ach-tile .ach-new{position:absolute;top:6px;right:6px}.ach-tile.is-new{box-shadow:inset 0 0 0 1px var(--gold)}.ach-new .sparkle{animation:twinkle 1.8s var(--ease-standard) infinite}.ach-new .sparkle:nth-of-type(2){margin-top:5px;animation-delay:.6s}.ach-new .sparkle:nth-of-type(3){margin-top:-2px;animation-delay:1.2s}@keyframes twinkle{0%,to{opacity:.25;transform:scale(.6)rotate(0)}45%{opacity:1;transform:scale(1.15)rotate(45deg)}}.ach-dialog .ach-bar{width:60%}.ach-teaser{margin-bottom:var(--space-6)}.ach-teaser-head{align-items:baseline;gap:var(--space-2) var(--space-4);margin-bottom:var(--space-3);flex-wrap:wrap;display:flex}.ach-teaser-head h2{margin:0}.ach-teaser-head .ach-bar{flex:120px;align-self:center;max-width:240px}.ach-teaser .ach-grid{grid-template-columns:repeat(auto-fill,minmax(96px,112px))}.toast-link{margin-left:var(--space-3);color:inherit;font-weight:600}@media (prefers-reduced-motion:reduce){.trophy-cup{fill:var(--gold);stroke:var(--gold)}*,:before,:after{transition-duration:1ms!important;transition-delay:0s!important;animation-duration:1ms!important;animation-iteration-count:1!important}.flash-celebration{display:none}.stack-row,.version-list,.version-menu:hover .stack-row,.version-menu:focus-within .stack-row,.version-menu:hover .version-list,.version-menu:focus-within .version-list,button:active:not(:disabled){transform:none}}.nav-item[aria-current=page] .nav-icon:after{display:none}button:has(>.label):after{display:none}button>.label{transition:background-size var(--dur-state) var(--ease-standard);background-image:linear-gradient(currentColor,currentColor);background-position:0 100%;background-repeat:no-repeat;background-size:0% 1.5px;margin-bottom:-6px;padding-bottom:6px}button:focus-visible>.label{background-size:100% 1.5px}@media (hover:hover){button:hover:not(:disabled)>.label{background-size:100% 1.5px}}button.primary>.label,button[aria-pressed=true]>.label{background-image:linear-gradient(var(--accent), var(--accent));background-size:100% 2px}.view-name .over-scene>[data-ink]{text-underline-offset:5px;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none;text-decoration:underline;text-decoration-thickness:2px}.over-scene{white-space:nowrap;align-items:center;display:inline-flex}.over-scene>[data-ink]{transition:color 80ms linear,text-shadow 80ms linear}.over-scene>[data-ink=light]{color:var(--over-dark)}.over-scene>[data-ink=dark]{color:var(--over-light)}.over-scene>[data-shade]{text-shadow:var(--over-shade)}.over-scene-icon[data-shade] svg{filter:drop-shadow(0 0 2px #0000008c)}.over-scene-icon{margin-right:6px;display:inline-flex}.grade-legend{right:var(--space-3);bottom:var(--space-3);z-index:3;align-items:flex-end;gap:var(--space-2);flex-direction:column;display:flex;position:absolute}button.grade-button,button.grade-button:hover{background:var(--glass);-webkit-backdrop-filter:blur(10px);width:36px;min-height:36px;color:var(--text-muted);place-items:center;padding:0;display:grid}button.grade-button:after{bottom:2px;left:9px;right:9px}button.grade-button:hover,button.grade-button[aria-expanded=true]{color:var(--text)}.grade-ladder{background:var(--glass-strong);box-shadow:var(--shadow-float);animation:ladder-open var(--dur-fade) var(--ease-standard);flex-direction:column;gap:3px;margin-right:6px;padding:5px;display:flex}@media (pointer:coarse){.grade-ladder{margin-right:3px}}@keyframes ladder-open{0%{opacity:0;transform:translateY(4px)}}.ladder-step{display:flex;position:relative}button.ladder-color{border:1px solid var(--mark-outline);width:14px;height:14px;min-height:0;transition:transform var(--dur-press) var(--ease-standard), box-shadow var(--dur-fade) var(--ease-standard);padding:0}button.ladder-color:after{display:none}button.ladder-color:hover,button.ladder-color[aria-expanded=true]{box-shadow:0 0 0 2px var(--text)}@media (pointer:coarse){button.ladder-color{width:20px;height:20px}}.ladder-detail{align-items:center;gap:var(--space-2);background:var(--glass-strong);box-shadow:var(--shadow-float);white-space:nowrap;font-size:var(--text-small);font-weight:var(--weight-label);color:var(--text);animation:ladder-in var(--dur-fade) var(--ease-standard);padding:4px 8px;display:flex;position:absolute;top:50%;right:calc(100% + 10px);transform:translateY(-50%)}.ladder-holds{gap:2px;display:inline-flex}@keyframes ladder-in{0%{opacity:0;transform:translate(4px,-50%)}}.dev-toolbar{z-index:200;align-items:flex-end;gap:var(--space-2);font-size:var(--text-small);display:flex;position:fixed;bottom:64px;right:0}.dev-tab{min-height:0;padding:var(--space-2) 6px;writing-mode:vertical-rl;background:var(--text);color:var(--bg);font-size:var(--text-small);letter-spacing:.08em;font-weight:700}.dev-tab:after{display:none}.dev-panel{width:min(320px,100vw - 48px);max-height:calc(100dvh - 64px - var(--space-4));scrollbar-width:thin;scrollbar-color:var(--text-muted) transparent;padding:var(--space-3) var(--space-4);background:var(--glass-strong);-webkit-backdrop-filter:blur(10px);box-shadow:var(--shadow-float);border:1px dashed var(--line-strong);overflow-y:auto}.dev-panel section+section{margin-top:var(--space-3);padding-top:var(--space-2);border-top:1px solid var(--line)}.dev-panel h3{font-size:var(--text-small);margin-bottom:var(--space-1)}.dev-row{align-items:center;gap:var(--space-1) var(--space-3);flex-wrap:wrap;display:flex}.dev-row select{flex:1;min-width:0}.dev-panel button.link,.dev-panel .chip{font-size:var(--text-small)}.dev-label{width:64px;color:var(--text-muted)}.dev-row input[type=range]{min-width:80px;accent-color:var(--text);flex:1}.dev-value{font-variant-numeric:tabular-nums;min-width:52px}.dev-stage{z-index:150;pointer-events:none;place-items:center;display:grid;position:fixed;inset:0}.dev-cover{background:var(--bg)}.dev-anchor{width:0;height:0;position:relative}.dev-inline-box{padding:var(--space-4);background:var(--surface-1);box-shadow:var(--shadow-float)}.tour{z-index:300;touch-action:none;position:fixed;inset:0}.tour-dim{animation:tour-in var(--dur-enter) var(--ease-standard);display:block;position:absolute;inset:0}.tour-shade{fill:#000000bd}.tour-ring{stroke:#ffffff47;stroke-width:1.5px}.tour-card{visibility:hidden;width:min(360px,100vw - 24px);padding:var(--space-4) var(--space-5);background:var(--surface-1);color:var(--text);box-shadow:0 0 0 1.5px var(--text), 0 12px 40px #00000080;transition:left var(--dur-enter) var(--ease-standard), top var(--dur-enter) var(--ease-standard);position:absolute}.tour-card[data-placed]{visibility:visible;animation:tour-in var(--dur-enter) var(--ease-standard)}.tour-count{margin:0 0 var(--space-1);font-size:var(--text-small);color:var(--text-muted);font-weight:600}.tour-card h2{margin:0 0 var(--space-2);color:inherit}.tour-text{margin:0;font-size:1rem;font-weight:500;line-height:1.5}.tour-actions{align-items:center;gap:var(--space-2);margin-top:var(--space-4);display:flex}.tour-card button,.tour-card button:hover:not(:disabled){color:var(--text)}button.tour-skip{margin-right:auto;padding-left:0;font-weight:600}button.tour-arrow,button.tour-arrow:hover:not(:disabled){width:var(--tap);min-height:var(--tap);box-shadow:inset 0 0 0 1.5px var(--text);place-items:center;padding:0;display:grid}button.tour-arrow:after{display:none}button.tour-arrow:disabled{opacity:.35}button.tour-next,button.tour-next:hover:not(:disabled){background:var(--text);color:var(--bg)}.tour-card :focus-visible{outline:2px solid var(--focus);outline-offset:2px}@keyframes tour-in{0%{opacity:0}}.tour-row .muted.small{display:block}.landing{width:min(1120px,100%);min-height:100dvh;padding:0 var(--space-5);flex-direction:column;margin:0 auto;display:flex}.landing-top{justify-content:space-between;align-items:center;gap:var(--space-4);padding:calc(env(safe-area-inset-top) + var(--space-4)) 0 var(--space-4);display:flex}.app-name{align-items:center;gap:.35em;display:inline-flex}.app-name svg{flex:none;width:auto;height:1em}.landing-name .app-name svg{height:28px}.landing-name{align-items:center;gap:var(--space-3);font-family:var(--font-display);font-size:var(--text-heading);letter-spacing:var(--tracking-heading);font-weight:700;display:inline-flex}.landing-enter{padding:var(--space-2) 0;color:var(--text);font-weight:var(--weight-label);background:linear-gradient(var(--accent), var(--accent)) no-repeat 0 100% / 100% 2px;text-decoration:none}.landing-hero{padding:var(--space-7) 0 var(--space-6);max-width:46rem}.landing-hero h1{text-wrap:balance;font-size:clamp(2.25rem,7vw,4.25rem);line-height:1.05}.landing-lead{margin:var(--space-4) 0 0;max-width:38rem;color:var(--text);font-size:1.125rem;line-height:1.55}.landing-shots{gap:var(--space-3);padding-bottom:var(--space-6);grid-template-columns:repeat(auto-fit,minmax(260px,1fr));display:grid}.landing-shots img{border:1px solid var(--line);width:100%;height:auto;display:block}.landing-shots img:first-child{grid-column:1/-1}.landing-section{padding:var(--space-6) 0;border-top:1px solid var(--line)}.landing-section h2{margin-bottom:var(--space-5);font-size:var(--text-title);line-height:var(--lh-title)}.landing-grid{gap:var(--space-6) var(--space-5);grid-template-columns:repeat(auto-fill,minmax(230px,1fr));margin:0;padding:0;list-style:none;display:grid}.landing-feature svg{color:var(--text-muted)}.landing-feature h3{margin:var(--space-2) 0 var(--space-1)}.landing-feature p{color:var(--text-muted);line-height:1.55}.landing-gyms{max-width:44rem}.landing-gyms>svg{color:var(--text-muted)}.landing-gyms h2{margin:var(--space-2) 0 0}.landing-points{margin:var(--space-4) 0;color:var(--text-muted);padding-left:1.1em;line-height:1.6}.landing-foot{align-items:center;gap:var(--space-2) var(--space-5);padding:var(--space-4) 0 calc(env(safe-area-inset-bottom) + var(--space-5));border-top:1px solid var(--line);font-size:var(--text-micro);color:var(--text-muted);flex-wrap:wrap;margin-top:auto;display:flex}.landing-legal{gap:var(--space-1) var(--space-4);flex-wrap:wrap;display:flex}.landing-legal a{color:var(--text-muted);text-decoration:none}.landing-legal a:hover{color:var(--text)}.login-about{margin:var(--space-4) 0 0;font-size:var(--text-small)}.dialog.session-editor{width:min(480px,100%)}.session-times{gap:var(--space-4);grid-template-columns:1fr 1fr;display:grid}.session-climbs{max-height:40dvh;margin:0;padding:0;list-style:none;overflow-y:auto}.session-climbs li{align-items:center;gap:var(--space-2);border-top:1px solid var(--line);font-size:var(--text-small);background:var(--surface-1);padding:6px 0;display:flex}.session-climbs li.dragging{background:var(--surface-2)}button.session-grip{width:32px;height:32px;color:var(--text-muted);cursor:grab;touch-action:none;flex:none;place-items:center;padding:0;display:grid}button.session-grip:after{display:none}.session-climbs li.dragging button.session-grip{cursor:grabbing;color:var(--text)}.session-climb-meters{margin-left:auto}.session-climb-time{text-align:right;font-variant-numeric:tabular-nums;min-width:3.25em}.session-meters{margin:0;font-weight:600}.session-friend-add{align-items:center;gap:var(--space-3);display:flex}.session-tags{gap:var(--space-1) var(--space-4);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.session-tags li{align-items:center;gap:var(--space-1);display:inline-flex}.session-prompt{left:50%;bottom:calc(env(safe-area-inset-bottom) + var(--space-5));z-index:40;width:max-content;max-width:calc(100vw - 2 * var(--space-4));border-radius:var(--radius-sm);background:var(--surface-3);box-shadow:var(--shadow-float);font-size:var(--text-small);align-items:center;gap:var(--space-2) var(--space-4);animation:toast-in var(--dur-enter) var(--ease-spring);flex-wrap:wrap;padding:10px 10px 10px 18px;font-weight:500;display:flex;position:fixed;transform:translate(-50%)}.session-edit{align-self:flex-start}
