.life-html,body.life{color:#eceae4;background:#1d1f21;height:100%;overflow:hidden}body.life{--panel:#1d1f21;--panel-raise:#26292c;--silk:#eceae4;--silk-dim:#a8a59d;--led:#ff3b2f;--k0:#c8332b;--k1:#e8792b;--k2:#e9c531;--k3:#ece9e0;font-family:var(--font-silk);caret-color:var(--led);scrollbar-color:#4a4e52 var(--panel)}body.life ::selection{color:#fff;background:#c8261c}body.life :focus-visible{outline:2px solid var(--k2);outline-offset:3px}body.life main:focus{outline:none}body.life .skip{color:#1d1f21;font-family:var(--font-silk);letter-spacing:.16em;background:#ece9e0;border-radius:3px;font-weight:700}.silk{font-family:var(--font-silk);letter-spacing:.16em;text-transform:uppercase;font-weight:700}.small{color:var(--silk-dim);font-size:.72rem;font-weight:500}.seg{font-family:var(--font-seg);color:var(--led);letter-spacing:.04em;font-variant-numeric:tabular-nums;font-weight:700}.seg-wrap{display:inline-block;position:relative}.seg-ghost{font-family:var(--font-seg);color:#ff3b2f1a;letter-spacing:.04em;font-weight:700;position:absolute;inset:0}.seg-ghost:before{content:attr(data-ghost)}.seg-group+.seg-group{margin-left:.32em}.stage{position:fixed;inset:0}#stage-canvas{width:100%;height:100%;display:block}#stage-labels{pointer-events:none;position:absolute;inset:0}.row-label{font-family:var(--font-silk);letter-spacing:.18em;text-transform:uppercase;color:var(--silk);white-space:nowrap;pointer-events:auto;cursor:pointer;text-align:right;background:0 0;border:0;padding:.2rem .4rem;font-size:.78rem;font-weight:700}.row-tag{letter-spacing:.14em;color:var(--silk-dim);margin-left:.7em;font-size:.62rem;font-weight:500}.day-label{font-family:var(--font-silk);letter-spacing:.16em;text-transform:uppercase;color:var(--silk-dim);white-space:nowrap;font-size:.68rem;font-weight:500}.hud-top{pointer-events:none;z-index:2;align-items:flex-start;gap:1.5rem 2.5rem;padding:1.5rem clamp(1rem,3vw,2.5rem);display:flex;position:fixed;top:0;left:0;right:0}.hud-top>*{pointer-events:auto}.back{color:var(--silk);border:1px solid #4a4e52;border-radius:3px;align-items:center;gap:.5rem;padding:.55rem .8rem;font-size:.78rem;text-decoration:none;display:inline-flex}.back:hover{border-color:var(--silk);color:#fff}.title{color:var(--silk);letter-spacing:.08em;margin:.15rem 0 0;font-size:clamp(1.4rem,1rem + 1.6vw,2.6rem);line-height:1}.tempo{flex-direction:column;align-items:flex-end;gap:.35rem;margin-left:auto;display:flex}.tempo .seg,.tempo .seg-ghost{font-size:clamp(2rem,1.4rem + 2vw,3.2rem);line-height:1}.langs{gap:.25rem;margin:0;padding:0;list-style:none;display:flex}.langs a{min-width:2.4rem;height:2.2rem;color:var(--silk-dim);border-radius:3px;place-items:center;font-size:.72rem;text-decoration:none;display:grid}.langs a.on{color:var(--panel);background:var(--silk)}.flat{z-index:2;position:fixed;top:6.25rem;left:clamp(1rem,3vw,2.5rem)}.flat-days,.flat-row .keys{display:none}.flat-rows{flex-wrap:wrap;gap:.4rem;max-width:34rem;margin:0;padding:0;list-style:none;display:flex}.row-btn{color:var(--silk);background:var(--panel-raise);cursor:pointer;border:1px solid #3c4044;border-radius:3px;padding:.5rem .7rem;font-size:.7rem}.row-btn:hover,.row-btn[aria-expanded=true]{border-color:var(--silk)}.hud-bottom{z-index:2;background:linear-gradient(#1d1f2100,#1d1f21f5 45%);flex-wrap:wrap;align-items:flex-end;gap:.75rem 2rem;padding:1.25rem clamp(1rem,3vw,2.5rem) 1.5rem;display:flex;position:fixed;bottom:0;left:0;right:0}.counters{flex-wrap:wrap;gap:.75rem 2.25rem;display:flex}.counter{flex-direction:column;gap:.3rem;display:flex}.counter .seg{font-size:clamp(1.1rem,.9rem + .8vw,1.6rem)}.note{font-family:var(--font-label);color:var(--silk-dim);flex-basis:100%;order:3;max-width:none;margin:0;font-size:.75rem}.run{color:var(--panel);background:var(--k3);cursor:pointer;border:0;border-radius:4px;align-items:center;gap:.65rem;margin-left:auto;padding:.85rem 1.3rem;font-size:.85rem;display:inline-flex;box-shadow:inset 0 -4px #00000040}.run:active,.run[aria-pressed=true]{transform:translateY(2px);box-shadow:inset 0 2px #00000040}.run .led{background:#3d1714;border-radius:50%;width:.6rem;height:.6rem}.run[aria-pressed=true] .led{background:var(--led)}.panel{color:#1d1f21;z-index:3;background:#ece9e0;border-radius:4px;width:min(26rem,100% - 2rem);max-height:calc(100% - 19rem);padding:1.4rem 1.5rem 1.5rem;position:fixed;top:8.75rem;right:clamp(1rem,3vw,2.5rem);overflow:auto;box-shadow:0 18px 40px #00000073}.panel[hidden]{display:none}.panel .small{color:#55595d}.panel-close{float:right;color:#1d1f21;cursor:pointer;background:0 0;border:1px solid #1d1f21;border-radius:3px;padding:.4rem .6rem;font-size:.7rem}.panel-title{font-family:var(--font-silk);letter-spacing:.01em;color:#1d1f21;margin:.2rem 0 .4rem;font-size:1.7rem;font-weight:700;line-height:1.05}.panel-row{margin:0 0 .9rem}.panel-when{font-family:var(--font-label);color:#1d1f21;margin:0 0 .6rem;font-size:.85rem;font-weight:600}.panel-body,.panel-source{font-family:var(--font-label);margin:0 0 .75rem;font-size:.95rem;line-height:1.5}.panel-source{color:#55595d;font-size:.8rem}.facts{background:#1d1f21;border-radius:3px;flex-wrap:wrap;gap:.6rem 1.25rem;margin:.2rem 0 1rem;padding:.75rem .9rem;display:flex}.facts dt{color:var(--silk-dim);margin:0}.facts dd{margin:.2rem 0 0;font-size:1.4rem}.facts-list{grid-template-columns:repeat(auto-fit,minmax(10rem,1fr));gap:.7rem 1.25rem;margin:.25rem 0 1rem;display:grid}.facts-list dt{margin:0}.facts-list dd{font-family:var(--font-label);margin:.15rem 0 0;font-size:.92rem;line-height:1.35}.panel h3{margin:1rem 0 .4rem}.shelf ol{border-top:1px solid #c9c5bb;gap:.3rem;margin:0;padding:0;list-style:none;display:grid}.shelf li{font-family:var(--font-silk);border-bottom:1px solid #c9c5bb;justify-content:space-between;gap:1rem;padding:.35rem 0;font-size:1.05rem;font-weight:700;display:flex}.shelf .year{font-family:var(--font-label);color:#55595d;font-size:.85rem;font-weight:500}.logged{font-family:var(--font-label);margin:.7rem 0 .4rem;font-size:.9rem}.logged .seg{margin-right:.3rem;font-size:1.3rem}.also p,.whoop-note{font-family:var(--font-label);margin:0 0 .6rem;font-size:.9rem}.whoop{margin-top:1rem}.whoop-note{color:#55595d}.play{color:#ece9e0;cursor:pointer;background:#1d1f21;border:0;border-radius:4px;margin-top:.4rem;padding:.8rem 1.1rem;font-size:.8rem;box-shadow:inset 0 -4px #00000059}.play:active{transform:translateY(2px);box-shadow:inset 0 2px #00000059}.game{z-index:10;background:#0a1220;position:fixed;inset:0}.game[hidden]{display:none}.game canvas{touch-action:manipulation;outline:none;width:100%;height:100%;display:block}.game-hud{pointer-events:none;background:linear-gradient(#0e0f11d1,#0e0f1180 60%,#0e0f1100);align-items:flex-start;gap:1rem 2rem;padding:1.25rem clamp(1rem,3vw,2.5rem) 2.5rem;display:flex;position:absolute;top:0;left:0;right:0}.game-hud .game-close{pointer-events:auto}.game-title{color:var(--silk);margin:.2rem auto 0 0;font-size:clamp(1.1rem,.9rem + 1vw,1.8rem)}.readout{flex-direction:column;align-items:flex-end;gap:.25rem;display:flex}.readout .seg-wrap{display:inline-grid}.readout .seg-wrap>*{grid-area:1/1;justify-self:end}.readout .seg-ghost{white-space:nowrap;position:static}.readout .seg,.readout .seg-ghost{font-size:clamp(1.8rem,1.4rem + 1.6vw,2.8rem);line-height:1}.readout.best .seg{font-size:clamp(1.1rem,1rem + .6vw,1.5rem)}.game-heading{margin-right:auto}@media (width<=640px){.game-hud{background:linear-gradient(#0e0f11e6,#0e0f11c7 78%,#0e0f1100);grid-template-columns:1fr auto;grid-template-areas:"head close""score best";gap:.9rem 1rem;padding-top:1rem;display:grid}.game-heading{grid-area:head}.game-close{grid-area:close;align-self:start}.game-hud .readout{grid-area:score;align-items:flex-start}.game-hud .readout.best{grid-area:best;align-self:end;align-items:flex-end}.game .game-toast{top:12.75rem}}.game-heading .game-title{margin:.2rem 0 0}.game-sub{margin:.4rem 0 0}.game-toast{color:#ece9e0;opacity:0;pointer-events:none;background:#1d1f21d1;border-radius:3px;margin:0;padding:.5rem .9rem;font-size:.8rem;transition:opacity .16s ease-out;position:absolute;top:6.5rem;left:50%;transform:translate(-50%)}.bm-ui{background:#0e0f11c7;border:1px solid #2d3034;border-radius:4px;gap:.6rem;width:min(44rem,100% - 1.5rem);padding:.75rem .9rem .85rem;display:grid;position:absolute;bottom:clamp(.75rem,3vh,1.75rem);left:50%;transform:translate(-50%)}.bm-ui[hidden]{display:none}.bm-meter{grid-template-columns:5.5rem 1fr;align-items:center;gap:.75rem;display:grid}.bm-track{background:repeating-linear-gradient(90deg,#1b1d20 0 calc(12.5% - 1px),#2b2e32 calc(12.5% - 1px) 12.5%);border-radius:2px;height:.9rem;position:relative}.bm-meter.ear .bm-track{visibility:hidden}.bm-centre{background:#ff9b2f;width:2px;margin-left:-1px;position:absolute;top:-.2rem;bottom:-.2rem;left:50%}.bm-mark{background:var(--led);border-radius:1px;width:.7rem;margin-left:-.35rem;position:absolute;top:.1rem;bottom:.1rem;left:50%;box-shadow:0 0 8px #ff3b2f99}.bm-mark.locked{background:#2ee66b;box-shadow:0 0 10px #2ee66bb3}.bm-controls{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.bm-btn{white-space:nowrap;min-width:2.75rem;min-height:2.75rem;color:var(--silk);cursor:pointer;touch-action:none;-webkit-user-select:none;user-select:none;background:#1d1f22;border:1px solid #3a3d41;border-radius:3px;padding:0 .8rem;font-size:.72rem}.bm-btn[data-step]{letter-spacing:0;font-size:1.2rem}.bm-btn:active{background:#2a2d31}.bm-pitch{flex-direction:column;align-items:center;min-width:6.5rem;display:inline-flex}.bm-pitch .seg{color:#2ee66b;font-size:1.15rem}.bm-mix{margin-left:auto}.bm-mix:disabled{opacity:.45;cursor:default}@media (width<=640px){.bm-controls{grid-template-columns:1fr auto 1fr;grid-template-areas:"down pitch up""back.fwd""mix mix mix";display:grid}.bm-controls [data-step="-1"]{grid-area:down}.bm-controls [data-step="1"]{grid-area:up}.bm-controls .bm-pitch{grid-area:pitch}.bm-controls [data-hold=back]{grid-area:back}.bm-controls [data-hold=fwd]{grid-area:fwd}.bm-mix{grid-area:mix;justify-content:center;margin:0}.bm-meter{grid-template-columns:4.5rem 1fr}}.tri-ui{background:#0e0f11b8;border:1px solid #2d3034;border-radius:4px;grid-template-columns:1fr auto 1fr;grid-template-areas:"course tap stats";align-items:end;gap:1rem;width:min(46rem,100% - 1.5rem);padding:.8rem 1rem;display:grid;position:absolute;bottom:clamp(.75rem,3vh,1.75rem);left:50%;transform:translate(-50%)}.tri-ui[hidden],.tri-light[hidden]{display:none}.tri-course{grid-area:course}.tri-progress{background:linear-gradient(90deg,#24505f 0 21%,#3a3d41 21% 23%,#5d4a2f 23% 67%,#3a3d41 67% 69%,#3f5a37 69% 100%);border-radius:2px;height:.4rem;position:relative}.tri-progress span{background:var(--led);width:.25rem;height:1rem;margin-left:-.125rem;position:absolute;top:-.3rem;left:0;box-shadow:0 0 6px #ff3b2fb3}.tri-leg{color:var(--silk);margin:.55rem 0 0}.tri-stats{grid-area:stats;justify-content:flex-end;align-items:flex-end;gap:1.1rem;display:flex}.tri-hr{flex-direction:column;align-items:flex-end;display:flex}.tri-hr .seg{color:#2ee66b;font-size:1.6rem;line-height:1}.tri-hr .seg[data-zone=amber]{color:#ffb02e}.tri-hr .seg[data-zone=red]{color:var(--led)}.tri-energy{gap:.35rem;min-width:6.5rem;display:grid}.tri-bar{background:#26292d;border-radius:2px;height:.55rem;overflow:hidden}.tri-bar span{background:#e8e4da;width:100%;height:100%;transition:width .12s linear;display:block}.tri-bar span[data-low=true]{background:var(--led)}.tri-tap{width:5.5rem;height:5.5rem;color:var(--silk);cursor:pointer;touch-action:none;-webkit-user-select:none;user-select:none;background:#1d1f22;border:2px solid #4a4e52;border-radius:50%;grid-area:tap;font-size:.72rem;position:relative}.tri-tap:active{background:#2a2d31}.tri-ring{pointer-events:none;border:2px solid #e8e4da;border-radius:50%;position:absolute;inset:-.45rem}.tri-tap[data-zone="0"]{border-color:#3d6b8f}.tri-tap[data-zone="1"]{border-color:#2ee66b}.tri-tap[data-zone="2"]{border-color:var(--led)}.tri-light{color:var(--silk);background:#0e0f11d1;border-radius:3px;align-items:center;gap:.7rem;padding:.55rem .9rem;display:flex;position:absolute;top:9rem;left:50%;transform:translate(-50%)}.tri-lamp{background:#5a1a16;border-radius:50%;width:1.1rem;height:1.1rem;box-shadow:inset 0 0 0 2px #2a0c0a}.tri-light.green .tri-lamp{background:#2ee66b;box-shadow:0 0 14px #2ee66be6}@media (width<=640px){.tri-ui{grid-template-columns:1fr auto;grid-template-areas:"course course""stats tap"}.tri-stats{justify-content:flex-start}.tri-light{top:12.75rem}}.game-toast.on{opacity:1}.game-close{color:var(--silk);cursor:pointer;background:#1d1f21b3;border:1px solid #4a4e52;border-radius:3px;padding:.55rem .8rem;font-size:.72rem}.game-screen{color:#1d1f21;background:#ece9e0;border-radius:4px;width:min(26rem,100% - 2rem);padding:1.25rem 1.4rem 1.4rem;position:absolute;bottom:clamp(1.5rem,6vh,4rem);left:50%;transform:translate(-50%);box-shadow:0 18px 40px #00000073}.game-screen[hidden]{display:none}.game-screen .small{color:#55595d}.game-hint{font-family:var(--font-label);margin:0 0 1rem;font-size:.95rem;line-height:1.45}.game-screen .run{color:#ece9e0;background:#1d1f21;margin:0}.game-final{margin:.25rem 0 .9rem;font-size:3.4rem;line-height:1}.game-form label{margin-bottom:.35rem;display:block}.game-form-row{gap:.5rem;display:flex}.game-form input{min-width:0;font-family:var(--font-silk);letter-spacing:.06em;color:#1d1f21;background:#fff;border:1px solid #1d1f21;border-radius:3px;flex:1;padding:.55rem .7rem;font-size:1.05rem;font-weight:700}.game-form button{color:#ece9e0;cursor:pointer;background:#c8261c;border:0;border-radius:3px;padding:0 .9rem;font-size:.72rem}.game-msg{font-family:var(--font-label);min-height:1.2em;margin:.6rem 0;font-size:.88rem}.board-tabs{gap:.3rem;margin-bottom:.4rem;display:flex}.board-tabs button{color:#55595d;cursor:pointer;background:0 0;border:1px solid #b9b5ab;border-radius:3px;padding:.4rem .6rem;font-size:.66rem}.board-tabs button[aria-selected=true]{color:#ece9e0;background:#1d1f21;border-color:#1d1f21}.board-list{border-top:1px solid #c9c5bb;max-height:13rem;margin:0 0 1rem;padding:0;list-style:none;overflow:auto}.board-list li{font-family:var(--font-silk);border-bottom:1px solid #c9c5bb;grid-template-columns:1.6rem 1fr auto;align-items:baseline;gap:.5rem;padding:.35rem 0;font-weight:700;display:grid}.board-list .rank{color:#55595d;font-weight:500}.board-list .pts{font-family:var(--font-seg);color:#c8261c}.board-list .empty{font-family:var(--font-label);color:#55595d;font-weight:400;display:block}.legend{align-self:flex-end;gap:1.1rem;margin:0 0 .25rem;padding:0;list-style:none;display:flex}.legend li{align-items:center;gap:.45rem;display:flex}.dot{border-radius:50%;width:.55rem;height:.55rem}.dot.lit{background:var(--led)}.dot.maybe,.key.maybe:after{background:#8c2a22}body.life:not(.is-flat) .flat:not(:focus-within){clip-path:inset(50%);width:1px;height:1px;overflow:hidden}body.life.is-flat .stage{display:none}body.life.is-flat{height:auto;overflow:auto}body.life.is-flat .hud-top,body.life.is-flat .hud-bottom,body.life.is-flat .flat{position:static}body.life.is-flat .hud-top{flex-wrap:wrap}body.life.is-flat .tempo{order:3;align-items:flex-start;margin-left:0}body.life.is-flat .langs{order:1;margin-left:auto}body.life.is-flat .title{flex-basis:100%;order:2}body.life.is-flat .flat{padding:.5rem clamp(1rem,3vw,2.5rem) 0}body.life.is-flat .flat-days{text-align:center;grid-template-columns:5.5rem repeat(7,1fr);gap:.25rem;margin-bottom:.4rem;display:grid}body.life.is-flat .flat-days span{color:var(--silk-dim);font-size:.6rem}body.life.is-flat .flat-rows{gap:.55rem;max-width:none;display:grid}body.life.is-flat .flat-row{grid-template-columns:5.5rem 1fr;align-items:center;gap:.25rem;display:grid}body.life.is-flat .row-btn .row-tag{letter-spacing:.06em;white-space:nowrap;margin:.2em 0 0;font-size:.46rem;display:block}body.life.is-flat .row-btn{text-align:left;letter-spacing:.1em;padding:.45rem .3rem;font-size:.62rem}body.life.is-flat .flat-row .keys{grid-template-columns:repeat(14,1fr);gap:3px;display:grid}.key{border-radius:2px;height:1.6rem;position:relative;box-shadow:inset 0 -3px 3px #0000004d}.key:nth-child(2n){margin-right:3px}.key.q0{background:var(--k0)}.key.q1{background:var(--k1)}.key.q2{background:var(--k2)}.key.q3{background:var(--k3)}.key:after{content:"";background:#00000059;border-radius:50%;width:5px;height:5px;margin-left:-2.5px;position:absolute;top:4px;left:50%}.key.lit:after{background:var(--led)}.key.accent:after{background:#ff6a4d;width:8px;height:8px;margin-left:-4px;top:3px}.key.now{outline-offset:1px;outline:2px solid #fff}body.life.is-flat .hud-bottom{background:0 0}body.life.is-flat .panel{border-radius:8px 8px 0 0;width:auto;max-height:70vh;position:fixed;inset:auto 0 0}
