*,*:before,*:after{box-sizing:border-box}*{margin:0}html{interpolate-size:allow-keywords}body{line-height:1.5;-webkit-font-smoothing:antialiased}img,picture,video,canvas,svg{display:block;max-width:100%}input,button,textarea,select{font:inherit}p{overflow-wrap:break-word;text-wrap:pretty}h1,h2,h3,h4,h5,h6{overflow-wrap:break-word;text-wrap:balance}#root,#app{isolation:isolate}:root{--charcoal: #1f2429;--charcoal-soft: #272d33;--charcoal-line: #3a434c;--pale-blue: #a8c6de;--pale-blue-dim: #7f9ab0;--ink: #e8eef4;--amber: #d9a441;--amber-deep: #c4813a;--green: #3dd68c;--surface: var(--charcoal);--panel: var(--charcoal-soft);--line: var(--charcoal-line);--text: var(--ink);--text-dim: var(--pale-blue-dim);--font-sans: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;--font-condensed: "Roboto Condensed", "Archivo Narrow", "Helvetica Neue Condensed", "Arial Narrow", "Liberation Sans Narrow", var(--font-sans);--radius: 14px;font-family:var(--font-sans);color-scheme:dark light}@media(prefers-color-scheme:light){:root{--surface: #eef3f7;--panel: #ffffff;--line: #cddae5;--text: #1f2429;--text-dim: #566470;--pale-blue: #4d7fa6;--pale-blue-dim: #566470}}body{min-height:100dvh;background-color:var(--surface);color:var(--text)}.page{max-width:80ch;margin-inline:auto;padding:2rem}.button{display:inline-flex;align-items:center;gap:.4rem;padding:.55rem 1.05rem;border:1px solid var(--line);border-radius:999px;background:var(--panel);color:var(--text);font-size:.95rem;text-decoration:none;cursor:pointer;transition:border-color .2s ease,background-color .2s ease}.button:hover:not(:disabled){border-color:var(--pale-blue)}.button:disabled{opacity:.45;cursor:not-allowed}.button--quiet{background:transparent;color:var(--text-dim)}.monitor{display:flex;flex-direction:column;gap:clamp(.75rem,2vh,2rem);min-height:100dvh;padding:clamp(1rem,2.5vmin,2rem);background-color:var(--surface);transition:background-color 1.6s ease}.monitor[data-zone=drifting]{background-color:color-mix(in srgb,var(--surface) 94%,var(--amber))}.monitor[data-zone=over]{background-color:color-mix(in srgb,var(--surface) 88%,var(--amber-deep))}.monitor__bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem}.monitor__class{font-size:clamp(1.1rem,2.2vw,1.6rem);font-weight:600;letter-spacing:.01em}.monitor__actions{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.monitor__stage{display:flex;flex:1;flex-direction:column;align-items:center;justify-content:center;gap:clamp(.5rem,1.5vh,1.25rem);text-align:center}.monitor__goal{font-size:clamp(1.1rem,3vw,2.1rem);font-weight:500;color:var(--text)}.monitor__message{min-height:1.6em;font-size:clamp(.95rem,2vw,1.4rem);color:var(--text-dim);transition:color .6s ease}.monitor[data-zone=over] .monitor__message{color:var(--amber)}.monitor__notice{max-width:46ch;padding:.75rem 1rem;border:1px solid var(--line);border-radius:var(--radius);color:var(--text-dim);font-size:.95rem}.meter{position:relative;width:min(100%,78vh);--mode-accent: var(--pale-blue);--zone-color: var(--mode-accent)}.meter[data-accent=green]{--mode-accent: var(--green)}.meter[data-accent=amber]{--mode-accent: var(--amber)}.meter[data-zone=drifting]{--zone-color: var(--amber)}.meter[data-zone=over]{--zone-color: var(--amber-deep)}.meter__dial{width:100%;height:auto;overflow:visible}.meter__dial path{fill:none;stroke-linecap:round;stroke-width:22}.meter__track{stroke:var(--line);opacity:.7}.meter__target{stroke:var(--mode-accent);opacity:.25}.meter__drift{stroke:var(--amber);opacity:.22}.meter__value{stroke:var(--zone-color);filter:drop-shadow(0 0 12px color-mix(in srgb,var(--zone-color) 45%,transparent));transition:stroke-dasharray .32s ease-out,stroke .9s ease,filter .9s ease}.meter[data-rewarding] .meter__value{filter:drop-shadow(0 0 22px color-mix(in srgb,var(--green) 55%,transparent))}.meter__tick{stroke:var(--mode-accent);stroke-width:3;opacity:.8}.meter__readout{position:absolute;inset-inline:0;bottom:0;display:flex;flex-direction:column;align-items:center}.meter__number{font-family:var(--font-condensed);font-stretch:75%;font-variant-numeric:tabular-nums;font-size:clamp(4.5rem,17vh,11rem);font-weight:700;line-height:.85;color:var(--zone-color);transition:color .9s ease}.meter[data-zone=over] .meter__number{animation:breathe 2.6s ease-in-out infinite}.meter__scale{font-size:clamp(.7rem,1.4vw,.95rem);letter-spacing:.22em;text-transform:uppercase;color:var(--text-dim)}.meter__progress{width:min(340px,60%);height:6px;margin:.75rem auto 0;border-radius:999px;background:var(--line);overflow:hidden}.meter__progress span{display:block;height:100%;background:var(--green);transition:width .9s linear}@keyframes breathe{0%,to{opacity:1;transform:scale(1)}50%{opacity:.72;transform:scale(.985)}}.modes{display:flex;flex-wrap:wrap;justify-content:center;gap:.6rem}.mode{--mode-accent: var(--pale-blue);display:flex;flex-direction:column;gap:.15rem;min-width:8.5rem;padding:.7rem 1.4rem;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);color:var(--text-dim);cursor:pointer;transition:border-color .25s ease,color .25s ease,box-shadow .25s ease}.mode[data-accent=green]{--mode-accent: var(--green)}.mode[data-accent=amber]{--mode-accent: var(--amber)}.mode:hover{border-color:var(--mode-accent)}.mode[aria-pressed=true]{color:var(--text);border-color:var(--mode-accent);box-shadow:inset 0 -3px 0 var(--mode-accent)}.mode__name{font-size:clamp(1rem,1.8vw,1.3rem);font-weight:600}.mode__threshold{font-family:var(--font-condensed);font-stretch:75%;font-size:.85rem;letter-spacing:.06em;color:var(--text-dim)}.points{display:flex;align-items:baseline;gap:.45rem;padding:.45rem .95rem;border:1px solid var(--line);border-radius:999px;transition:border-color .7s ease,box-shadow .7s ease}.points[data-earned]{border-color:var(--green);box-shadow:0 0 20px color-mix(in srgb,var(--green) 40%,transparent)}.points__value{font-family:var(--font-condensed);font-stretch:75%;font-variant-numeric:tabular-nums;font-size:1.4rem;font-weight:700;color:var(--green)}.points__label{font-size:.8rem;letter-spacing:.1em;text-transform:uppercase;color:var(--text-dim)}.setup{display:flex;flex-direction:column;gap:1.25rem;max-width:62rem;margin-inline:auto;padding:clamp(1rem,3vmin,2rem)}.setup__bar{display:flex;align-items:center;justify-content:space-between;gap:1rem}.setup__bar h1{font-size:1.6rem}.card{display:flex;flex-direction:column;gap:.85rem;padding:1.25rem;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel)}.card h2{font-size:1.15rem}.card__hint{max-width:68ch;color:var(--text-dim);font-size:.9rem}.card>.button{align-self:flex-start}.field{display:flex;flex-direction:column;gap:.35rem;font-size:.9rem;color:var(--text-dim)}.field--inline{flex-direction:row;align-items:center;gap:.6rem}.field input[type=text],.field select{padding:.55rem .7rem;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--text)}.field input[type=text]:focus-visible,.field select:focus-visible{outline:2px solid var(--pale-blue);outline-offset:1px}.field input[type=range]{accent-color:var(--pale-blue)}.presets{display:grid;gap:.6rem;grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));list-style:none;padding:0}.preset{display:flex;flex-direction:column;gap:.2rem;width:100%;height:100%;padding:.85rem 1rem;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);color:var(--text);text-align:left;cursor:pointer;transition:border-color .25s ease}.preset:hover,.preset[aria-pressed=true]{border-color:var(--pale-blue)}.preset__name{font-weight:600}.preset__description{color:var(--text-dim);font-size:.85rem}.modeList{display:grid;gap:.85rem;grid-template-columns:repeat(auto-fit,minmax(17rem,1fr));list-style:none;padding:0}.modeEditor{--mode-accent: var(--pale-blue);display:flex;flex-direction:column;gap:.6rem;padding:.9rem;border:1px solid var(--line);border-left:4px solid var(--mode-accent);border-radius:var(--radius);background:var(--surface)}.modeEditor[data-accent=green]{--mode-accent: var(--green)}.modeEditor[data-accent=amber]{--mode-accent: var(--amber)}.modeEditor .button{align-self:flex-start}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}
