:root{--blue:#4285f4;--red:#ea4335;--yellow:#fbbc04;--green:#34a853;--yellow-text:#e37400;--blue-text:#1967d2;--red-text:#d93025;--btn-primary-bg:#1a73e8;--radius-sm:8px;--radius:14px;--radius-lg:22px;--gutter:clamp(16px, 3vw, 32px);--ease-out:cubic-bezier(.22, 1, .36, 1);--ease-spring:cubic-bezier(.34, 1.56, .64, 1);--dur-fast:.16s;--dur:.28s;--font:"Noto Sans TC", system-ui, -apple-system, "PingFang TC", "Microsoft JhengHei", sans-serif;--bg:#f6f7fb;--bg-2:#eceff5;--surface:#ffffffc7;--surface-strong:#fff;--border:#2021241a;--text:#1f2328;--text-muted:#5f6368;--shadow:0 10px 30px #20212414, 0 2px 6px #2021240f;--glow-alpha:.18;--wheel-rim:#2b2f3a;--wheel-rim-shine:#ffffff38;--wheel-peg:#fff;--wheel-empty:#2021240f;--pointer-fill:#202124;--pointer-dot:#fff;--dim-color:#12141c6b;--shape-alpha:.7;--sparkle-alpha:.55;--beam-alpha:.5;--beam-blend:soft-light;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0d0f14;--bg-2:#151923;--surface:#1c202ab8;--surface-strong:#1c202a;--border:#ffffff17;--text:#eef0f4;--text-muted:#a0a6b1;--shadow:0 12px 40px #00000073, 0 2px 8px #0000004d;--glow-alpha:.32;--wheel-rim:#e8eaed;--wheel-rim-shine:#fff9;--wheel-peg:#fff;--wheel-empty:#ffffff0d;--pointer-fill:#fff;--pointer-dot:#202124;--dim-color:#020308b3;--yellow-text:var(--yellow);--blue-text:#8ab4f8;--red-text:#f28b82;--shape-alpha:1;--sparkle-alpha:.9;--beam-alpha:.07;--beam-blend:screen;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--bg:#0d0f14;--bg-2:#151923;--surface:#1c202ab8;--surface-strong:#1c202a;--border:#ffffff17;--text:#eef0f4;--text-muted:#a0a6b1;--shadow:0 12px 40px #00000073, 0 2px 8px #0000004d;--glow-alpha:.32;--wheel-rim:#e8eaed;--wheel-rim-shine:#fff9;--wheel-peg:#fff;--wheel-empty:#ffffff0d;--pointer-fill:#fff;--pointer-dot:#202124;--dim-color:#020308b3;--yellow-text:var(--yellow);--blue-text:#8ab4f8;--red-text:#f28b82;--shape-alpha:1;--sparkle-alpha:.9;--beam-alpha:.07;--beam-blend:screen;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;overflow-x:clip}body{min-height:100dvh;font-family:var(--font);color:var(--text);background:var(--bg);transition:background-color var(--dur) var(--ease-out), color var(--dur) var(--ease-out);margin:0;line-height:1.5;overflow-x:clip}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;overflow:hidden;position:absolute!important}.bg{z-index:-1;pointer-events:none;background:radial-gradient(40vmax 40vmax at 15% 10%, rgb(66 133 244/var(--glow-alpha)), transparent 70%), radial-gradient(35vmax 35vmax at 90% 20%, rgb(234 67 53/calc(var(--glow-alpha) * .7)), transparent 70%), radial-gradient(40vmax 40vmax at 80% 95%, rgb(52 168 83/calc(var(--glow-alpha) * .7)), transparent 70%), radial-gradient(30vmax 30vmax at 10% 90%, rgb(251 188 4/calc(var(--glow-alpha) * .6)), transparent 70%);position:fixed;inset:0}.site-header{padding:16px var(--gutter);padding-top:max(16px, env(safe-area-inset-top));align-items:center;gap:16px;display:flex}.brand{flex-shrink:0;display:inline-flex}.brand-logo{width:auto;height:52px;transition:transform var(--dur) var(--ease-spring);display:block}.brand:hover .brand-logo{transform:scale(1.06)rotate(-3deg)}.brand:focus-visible{outline:3px solid var(--blue);outline-offset:4px;border-radius:8px}.brand-logo-dark{display:none}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .brand-logo-light{display:none}:root:not([data-theme=light]) .brand-logo-dark{display:block}}:root[data-theme=dark] .brand-logo-light{display:none}:root[data-theme=dark] .brand-logo-dark{display:block}@media (width<=480px){.brand-logo{height:44px}}.site-title{letter-spacing:.04em;margin:0;font-size:clamp(1.1rem,2.4vw,1.5rem);font-weight:800}.header-actions{gap:8px;margin-left:auto;display:flex}.layout{gap:var(--gutter);padding:0 var(--gutter) var(--gutter);grid-template-columns:minmax(300px,380px) 1fr;grid-template-areas:"entries wheel""entries history";align-items:start;max-width:1400px;margin:0 auto;display:grid}.panel-entries{grid-area:entries}.panel-wheel{grid-area:wheel}.panel-history{grid-area:history}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(14px);min-width:0;padding:20px}.panel-wheel{box-shadow:none;-webkit-backdrop-filter:none;background:0 0;border:none;padding:0}.panel-title{margin:0 0 12px;font-size:1.05rem;font-weight:700}.placeholder{color:var(--text-muted);margin:0}.wheel-stage{aspect-ratio:1;width:min(100%,620px,72dvh);margin:0 auto;position:relative}.site-footer{text-align:center;color:var(--text-muted);padding:8px var(--gutter) max(24px, env(safe-area-inset-bottom));font-size:.85rem}@media (width<=860px){.layout{grid-template-columns:minmax(0,1fr);grid-template-areas:"wheel""history""entries"}.wheel-stage{width:min(100%,72dvh)}}.icon-btn{border:1px solid var(--border);background:var(--surface);width:42px;height:42px;color:var(--text);cursor:pointer;transition:transform var(--dur-fast) var(--ease-spring), background-color var(--dur) var(--ease-out), box-shadow var(--dur) var(--ease-out);border-radius:50%;place-items:center;display:inline-grid}.icon-btn:hover{box-shadow:var(--shadow);transform:translateY(-2px)}.icon-btn:active{transform:scale(.9)}.icon-btn:focus-visible{outline:3px solid var(--blue);outline-offset:2px}.icon-btn svg{width:20px;height:20px}.icon-btn .icon-swap{animation:icon-in .36s var(--ease-spring)}@keyframes icon-in{0%{opacity:0;transform:rotate(-90deg)scale(.4)}}@media (prefers-reduced-motion:reduce){.icon-btn .icon-swap{animation:none}}.panel-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;display:flex}.panel-head .panel-title{margin:0}.row{flex-wrap:wrap;align-items:center;gap:12px;margin:12px 0;display:flex}.row-between{justify-content:space-between}.field-label{color:var(--text-muted);margin-bottom:6px;font-size:.85rem;font-weight:600;display:block}.hint{color:var(--text-muted);font-size:.78rem}kbd{font:inherit;border:1px solid var(--border);background:var(--surface-strong);border-bottom-width:2px;border-radius:5px;padding:1px 5px;font-size:.72rem}.empty-state{text-align:center;color:var(--text-muted);border-radius:var(--radius);background:color-mix(in srgb, var(--text) 4%, transparent);animation:fade-up .4s var(--ease-out);margin:8px 0;padding:18px 12px;font-size:.9rem}.empty-state[hidden]{display:none}@keyframes fade-up{0%{opacity:0;transform:translateY(6px)}}.count-badge{background:color-mix(in srgb, var(--blue) 14%, transparent);color:var(--blue-text);border-radius:999px;align-items:baseline;gap:4px;padding:4px 12px;font-size:1.05rem;font-weight:800;display:inline-flex}.count-unit{font-size:.8rem;font-weight:600}.odometer{font-variant-numeric:tabular-nums;display:inline-flex}.odo-digits{display:inline-flex}.odo-digit{height:1.2em;line-height:1.2em;display:inline-block;overflow:hidden}.odo-strip{text-align:center;word-break:break-all;white-space:normal;width:1ch;transition:transform .7s var(--ease-spring);display:block}.btn{--btn-bg:var(--surface-strong);--btn-fg:var(--text);border:1px solid var(--border);background:var(--btn-bg);min-height:42px;color:var(--btn-fg);font:inherit;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;transition:transform var(--dur-fast) var(--ease-spring), box-shadow var(--dur) var(--ease-out), background-color var(--dur) var(--ease-out), opacity var(--dur) var(--ease-out);border-radius:999px;justify-content:center;align-items:center;gap:6px;padding:0 18px;font-weight:700;display:inline-flex;position:relative}.btn svg{flex-shrink:0;width:18px;height:18px}.btn:hover{box-shadow:var(--shadow);transform:translateY(-2px)}.btn:active{box-shadow:none;transition-duration:60ms;transform:translateY(0)scale(.95)}.btn:focus-visible{outline:3px solid var(--blue);outline-offset:3px}.btn[aria-disabled=true]{opacity:.45}.btn[aria-disabled=true]:hover{box-shadow:none;transform:none}.btn-primary{--btn-bg:var(--btn-primary-bg);--btn-fg:#fff;box-shadow:0 6px 18px color-mix(in srgb, var(--blue) 35%, transparent);border-color:#0000}.btn-primary:hover{box-shadow:0 10px 26px color-mix(in srgb, var(--blue) 45%, transparent)}.btn-primary:hover svg{animation:icon-nudge .5s var(--ease-spring)}@keyframes icon-nudge{40%{transform:rotate(90deg)scale(1.2)}to{transform:rotate(90deg)}}.btn-ghost{--btn-bg:transparent}.btn-ghost:hover{--btn-bg:var(--surface-strong)}.btn-sm{min-height:34px;padding:0 12px;font-size:.85rem}.btn-danger:hover{color:var(--red-text);border-color:color-mix(in srgb, var(--red) 40%, transparent)}.input{border:1.5px solid var(--border);border-radius:var(--radius);background:var(--surface-strong);width:100%;color:var(--text);font:inherit;transition:border-color var(--dur) var(--ease-out), box-shadow var(--dur) var(--ease-out);padding:12px 14px}.input:hover{border-color:color-mix(in srgb, var(--blue) 40%, var(--border))}.input:focus{border-color:var(--blue);box-shadow:0 0 0 4px color-mix(in srgb, var(--blue) 22%, transparent);outline:none}.input::placeholder{color:var(--text-muted);opacity:.8}.textarea{resize:vertical;min-height:120px;line-height:1.6}.is-success{animation:flash-success .7s var(--ease-out)}.is-error{animation:flash-error .7s var(--ease-out)}@keyframes flash-success{30%{border-color:var(--green);box-shadow:0 0 0 5px color-mix(in srgb, var(--green) 28%, transparent)}}@keyframes flash-error{30%{border-color:var(--red);box-shadow:0 0 0 5px color-mix(in srgb, var(--red) 25%, transparent)}}.switch{cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;align-items:center;gap:10px;font-size:.92rem;font-weight:600;display:inline-flex}.switch input{opacity:0;width:1px;height:1px;position:absolute}.switch-track{background:color-mix(in srgb, var(--text) 18%, transparent);width:46px;height:26px;transition:background-color var(--dur) var(--ease-out), box-shadow var(--dur) var(--ease-out);border-radius:999px;flex-shrink:0;position:relative}.switch-thumb{width:20px;height:20px;transition:transform .38s var(--ease-spring), width var(--dur-fast) var(--ease-out);background:#fff;border-radius:999px;position:absolute;top:3px;left:3px;box-shadow:0 2px 5px #00000040}.switch:hover .switch-track{box-shadow:0 0 0 4px color-mix(in srgb, var(--text) 8%, transparent)}.switch:active .switch-thumb{width:26px}.switch input:checked+.switch-track{background:var(--green)}.switch input:checked+.switch-track .switch-thumb{transform:translate(20px)}.switch:active input:checked+.switch-track .switch-thumb{transform:translate(14px)}.switch input:focus-visible+.switch-track{outline:3px solid var(--blue);outline-offset:2px}.segmented{background:color-mix(in srgb, var(--text) 8%, transparent);border-radius:999px;grid-template-columns:1fr 1fr;padding:3px;font-size:.85rem;font-weight:700;display:inline-grid;position:relative}.segmented label{z-index:1;cursor:pointer;-webkit-tap-highlight-color:transparent;position:relative}.segmented input{opacity:0;width:1px;height:1px;position:absolute}.segmented span:not(.segmented-indicator){color:var(--text-muted);transition:color var(--dur) var(--ease-out), transform var(--dur-fast) var(--ease-spring);padding:6px 16px;display:block}.segmented label:active span{transform:scale(.92)}.segmented input:checked+span{color:var(--text)}.segmented input:focus-visible+span{outline:2px solid var(--blue);outline-offset:-2px;border-radius:999px}.segmented-indicator{background:var(--surface-strong);width:calc(50% - 3px);transition:transform .42s var(--ease-spring);border-radius:999px;position:absolute;top:3px;bottom:3px;left:3px;box-shadow:0 2px 8px #0000001f}.segmented:has(input[value=replace]:checked) .segmented-indicator{transform:translate(100%)}.dropzone{text-align:center;border:2px dashed color-mix(in srgb, var(--text) 22%, transparent);border-radius:var(--radius);cursor:pointer;-webkit-tap-highlight-color:transparent;transition:border-color var(--dur) var(--ease-out), background-color var(--dur) var(--ease-out), transform var(--dur) var(--ease-spring);justify-items:center;gap:4px;margin-top:14px;padding:18px 14px;display:grid;position:relative}.dropzone-icon{width:28px;height:28px;color:var(--blue);transition:transform var(--dur) var(--ease-spring)}.dropzone-text{font-size:.9rem;font-weight:600}.dropzone-link{color:var(--blue-text);text-underline-offset:3px;text-decoration:underline}.dropzone:hover{border-color:var(--blue);background:color-mix(in srgb, var(--blue) 5%, transparent)}.dropzone:hover .dropzone-icon{transform:translateY(-3px)}.dropzone:active{transform:scale(.98)}.dropzone:focus-visible{outline:3px solid var(--blue);outline-offset:3px}.dropzone.is-dragover{border-style:solid;border-color:var(--blue);background:color-mix(in srgb, var(--blue) 12%, transparent);animation:1s ease-in-out infinite drop-glow;transform:scale(1.03)}.dropzone.is-dragover .dropzone-icon{animation:drop-bounce .7s var(--ease-out) infinite alternate}.dropzone.is-dragover *{pointer-events:none}@keyframes drop-glow{0%,to{box-shadow:0 0 0 0 color-mix(in srgb, var(--blue) 35%, transparent)}50%{box-shadow:0 0 0 8px color-mix(in srgb, var(--blue) 0%, transparent)}}@keyframes drop-bounce{to{transform:translateY(-7px)scale(1.1)}}.dropzone.is-busy{opacity:.6;pointer-events:none}.dropzone.is-success{border-color:var(--green);background:color-mix(in srgb, var(--green) 12%, transparent)}.dropzone.is-error{border-color:var(--red);background:color-mix(in srgb, var(--red) 10%, transparent)}.list-toolbar{justify-content:flex-end;gap:6px;margin:16px 0 8px;display:flex}.chip-list{overscroll-behavior:contain;flex-wrap:wrap;align-content:flex-start;gap:8px;max-height:min(340px,45dvh);margin:0;padding:4px 2px;list-style:none;display:flex;position:relative;overflow-y:auto}.chip-list:empty{display:none}.chip{--chip-color:var(--blue);border:1.5px solid color-mix(in srgb, var(--chip-color) 35%, var(--border));background:var(--surface-strong);max-width:100%;transition:border-color var(--dur) var(--ease-out), box-shadow var(--dur) var(--ease-out), transform var(--dur-fast) var(--ease-spring);border-radius:999px;align-items:center;display:inline-flex}.chip:before{content:"";background:var(--chip-color);width:8px;height:8px;transition:transform var(--dur) var(--ease-spring);border-radius:50%;flex-shrink:0;margin-left:10px}.chip:hover{border-color:var(--chip-color);box-shadow:0 4px 14px color-mix(in srgb, var(--chip-color) 25%, transparent);transform:translateY(-1px)}.chip:hover:before{transform:scale(1.4)}.chip-name,.chip-del{color:inherit;font:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0}.chip-name{text-overflow:ellipsis;white-space:nowrap;border-radius:6px;max-width:220px;padding:5px 4px 5px 7px;font-size:.9rem;font-weight:600;overflow:hidden}.chip-name:focus-visible,.chip-del:focus-visible{outline:2px solid var(--blue);outline-offset:1px}.chip-del{width:26px;height:26px;color:var(--text-muted);transition:background-color var(--dur-fast), color var(--dur-fast), transform var(--dur-fast) var(--ease-spring);border-radius:50%;place-items:center;margin-right:3px;display:grid}.chip-del svg{width:14px;height:14px}.chip-del:hover{background:color-mix(in srgb, var(--red) 15%, transparent);color:var(--red-text);transform:rotate(90deg)}.chip-del:active{transform:rotate(90deg)scale(.8)}.chip.is-editing{border-color:var(--blue);box-shadow:0 0 0 3px color-mix(in srgb, var(--blue) 22%, transparent)}.chip-input{background:color-mix(in srgb, var(--blue) 10%, transparent);min-width:4ch;color:var(--text);font:inherit;border:0;border-radius:6px;outline:none;margin:2px 2px 2px 6px;padding:3px 6px;font-size:.9rem;font-weight:600}.chip-input.is-invalid{background:color-mix(in srgb, var(--red) 16%, transparent)}.settings{border-top:1px solid var(--border);gap:10px;margin-top:16px;padding-top:14px;display:grid}.history-list{gap:6px;max-height:320px;margin:0;padding:0;list-style:none;display:grid;overflow-y:auto}.history-item{border-radius:var(--radius);background:var(--surface-strong);border:1px solid var(--border);grid-template-columns:auto 1fr auto;align-items:center;gap:12px;padding:10px 14px;display:grid}.history-order{color:var(--blue-text);font-variant-numeric:tabular-nums;font-weight:800}.history-name{text-overflow:ellipsis;white-space:nowrap;font-weight:700;overflow:hidden}.history-time{color:var(--text-muted);font-variant-numeric:tabular-nums;font-size:.8rem}.toast-region{left:50%;bottom:max(20px, env(safe-area-inset-bottom));z-index:100;pointer-events:none;justify-items:center;gap:8px;width:min(100% - 32px,420px);display:grid;position:fixed;transform:translate(-50%)}.toast{border-radius:var(--radius);background:var(--surface-strong);max-width:100%;color:var(--text);border:1px solid var(--border);border-left:4px solid var(--toast-color,var(--blue));box-shadow:var(--shadow);pointer-events:auto;align-items:center;gap:10px;padding:10px 12px 10px 14px;font-size:.9rem;font-weight:600;display:flex}.toast-success{--toast-color:var(--green)}.toast-error{--toast-color:var(--red)}.toast-icon{color:var(--toast-color,var(--blue));display:grid}.toast-icon svg{width:20px;height:20px}.toast-success .check{stroke-dasharray:24;stroke-dashoffset:24px;animation:draw .42s .18s var(--ease-out) forwards}@keyframes draw{to{stroke-dashoffset:0}}.toast-msg{flex:1;min-width:0}.toast-action{background:color-mix(in srgb, var(--blue) 14%, transparent);color:var(--blue-text);font:inherit;cursor:pointer;transition:background-color var(--dur-fast), transform var(--dur-fast) var(--ease-spring);border:0;border-radius:8px;padding:6px 10px;font-weight:800}.toast-action:hover{background:color-mix(in srgb, var(--blue) 24%, transparent)}.toast-action:active{transform:scale(.92)}.toast-action:focus-visible{outline:2px solid var(--blue);outline-offset:2px}@media (prefers-reduced-motion:reduce){.odo-strip{transition-duration:1ms}.dropzone.is-dragover,.dropzone.is-dragover .dropzone-icon,.is-success,.is-error,.empty-state{animation:none}.toast-success .check{stroke-dashoffset:0;animation:none}}.range-field{gap:6px;margin-top:4px;display:grid}.range-head{justify-content:space-between;align-items:baseline;font-size:.92rem;font-weight:600;display:flex}.range-head output{text-align:right;min-width:3.2em;color:var(--blue-text);font-variant-numeric:tabular-nums;font-weight:800;display:inline-block}.range-field .hint{margin:0}.range{--fill:25%;cursor:pointer;appearance:none;background:0 0;width:100%;height:26px;margin:0}.range::-webkit-slider-runnable-track{background:linear-gradient(90deg, var(--blue) var(--fill), color-mix(in srgb, var(--text) 15%, transparent) var(--fill));border-radius:999px;height:6px}.range::-moz-range-track{background:linear-gradient(90deg, var(--blue) var(--fill), color-mix(in srgb, var(--text) 15%, transparent) var(--fill));border-radius:999px;height:6px}.range::-webkit-slider-thumb{-webkit-appearance:none;border:3px solid var(--blue);width:22px;height:22px;transition:transform var(--dur-fast) var(--ease-spring), box-shadow var(--dur) var(--ease-out);background:#fff;border-radius:50%;margin-top:-8px;box-shadow:0 2px 6px #00000040}.range::-moz-range-thumb{border:3px solid var(--blue);width:16px;height:16px;transition:transform var(--dur-fast) var(--ease-spring);background:#fff;border-radius:50%;box-shadow:0 2px 6px #00000040}.range:hover::-webkit-slider-thumb{transform:scale(1.15)}.range:active::-webkit-slider-thumb{box-shadow:0 0 0 8px color-mix(in srgb, var(--blue) 20%, transparent);transform:scale(1.3)}.range:hover::-moz-range-thumb{transform:scale(1.15)}.range:active::-moz-range-thumb{transform:scale(1.3)}.range:focus-visible{outline:none}.range:focus-visible::-webkit-slider-thumb{box-shadow:0 0 0 4px color-mix(in srgb, var(--blue) 35%, transparent)}.range:focus-visible::-moz-range-thumb{box-shadow:0 0 0 4px color-mix(in srgb, var(--blue) 35%, transparent)}.wheel-stage{--charge:0;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;position:relative}.wheel-canvas{touch-action:none;cursor:grab;width:100%;height:100%;position:absolute;inset:0}.wheel-shadow{pointer-events:none;border-radius:50%;position:absolute;inset:3.5%;box-shadow:0 18px 36px #00000038}.wheel-stage.is-dragging .wheel-canvas{cursor:grabbing}.wheel-stage.is-spinning .wheel-canvas{cursor:pointer}.wheel-pointer{transform-origin:50% 33%;z-index:2;pointer-events:none;filter:drop-shadow(0 4px 6px #00000059);width:8.5%;min-width:30px;position:absolute;top:0;left:50%;translate:-50%}.wheel-pointer svg{width:100%;height:auto;display:block}.wheel-pointer path{fill:var(--pointer-fill)}.wheel-pointer circle{fill:var(--pointer-dot)}.wheel-hub{z-index:3;aspect-ratio:1;cursor:pointer;width:23%;min-width:72px;color:var(--text);font:inherit;letter-spacing:.08em;background:conic-gradient(from -45deg, var(--blue) 0 25%, var(--red) 0 50%, var(--yellow) 0 75%, var(--green) 0);transition:transform .22s var(--ease-spring), box-shadow var(--dur) var(--ease-out), filter var(--dur) var(--ease-out);border:0;border-radius:50%;place-items:center;padding:0;font-size:clamp(1rem,2.6vw,1.6rem);font-weight:900;display:grid;position:absolute;top:50%;left:50%;translate:-50% -50%;box-shadow:0 10px 28px #00000047,inset 0 -4px 10px #0000001f}.wheel-hub:before{content:"";background:var(--surface-strong);border-radius:50%;position:absolute;inset:7%;box-shadow:inset 0 2px 6px #00000014}.wheel-hub:after{content:"";border:3px solid var(--blue);opacity:0;animation:hub-pulse 2s var(--ease-out) infinite;pointer-events:none;border-radius:50%;position:absolute;inset:0}.hub-label{transition:opacity .18s, transform .26s var(--ease-spring);grid-area:1/1;position:relative}.hub-label-stop{opacity:0;color:var(--red-text);transform:scale(.6)}.wheel-hub:hover{transform:scale(1.06);box-shadow:0 14px 34px #00000052,inset 0 -4px 10px #0000001f}.wheel-hub:active{transition-duration:80ms;transform:scale(.92)}.wheel-hub:focus-visible{outline:4px solid var(--blue);outline-offset:4px}@keyframes hub-pulse{0%{opacity:.7;transform:scale(1)}70%,to{opacity:0;transform:scale(1.45)}}.wheel-stage.is-spinning .wheel-hub:after,.wheel-stage.is-empty .wheel-hub:after,.wheel-stage.is-charging .wheel-hub:after{opacity:0;animation:none}.wheel-stage.is-spinning .hub-label-start{opacity:0;transform:scale(.6)}.wheel-stage.is-spinning .hub-label-stop{opacity:1;transform:none}.wheel-stage.is-empty .wheel-hub{filter:grayscale(.85)opacity(.75)}.wheel-hub.is-error{animation:hub-error .6s var(--ease-out)}@keyframes hub-error{30%{box-shadow:0 0 0 8px color-mix(in srgb, var(--red) 40%, transparent)}}.wheel-stage.is-charging .wheel-hub{transform:scale(calc(1 - var(--charge) * .14));transition-duration:60ms}.wheel-stage.is-charged .wheel-hub{animation:.28s ease-in-out infinite alternate hub-ready}@keyframes hub-ready{to{box-shadow:0 0 0 10px color-mix(in srgb, var(--yellow) 45%, transparent), 0 10px 28px #00000047}}.charge-ring{pointer-events:none;opacity:0;width:100%;height:100%;transition:opacity .2s var(--ease-out);position:absolute;inset:0;rotate:-90deg}.wheel-stage.is-charging .charge-ring{opacity:1}.charge-track{fill:none;stroke:color-mix(in srgb, var(--text) 10%, transparent);stroke-width:1.4px}.charge-arc{fill:none;stroke:url(#charge-grad);stroke-width:1.8px;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1px;filter:drop-shadow(0 0 1.5px #fbbc04e6)}.nameplate{z-index:2;background:var(--surface-strong);border:1px solid var(--border);max-width:44%;box-shadow:var(--shadow);white-space:nowrap;text-overflow:ellipsis;animation:fade-up .3s var(--ease-out);border-radius:999px;padding:6px 14px;font-size:clamp(.85rem,1.8vw,1.05rem);font-weight:800;position:absolute;top:1.5%;left:calc(50% + max(22px,5.5%));overflow:hidden}.nameplate[hidden]{display:none}.nameplate-text:empty:before{content:"—";color:var(--text-muted)}.wheel-help{text-align:center;max-width:34em;color:var(--text-muted);margin:14px auto 0;font-size:.82rem}.wheel-help kbd{margin:0 2px}@media (prefers-reduced-motion:reduce){.wheel-hub:after,.wheel-stage.is-charged .wheel-hub{animation:none}}@property --spot-k{syntax:"<number>";inherits:false;initial-value:2.6}.spotlight-dim{--spot-k:2.6;z-index:50;pointer-events:none;opacity:0;background:radial-gradient(circle at var(--spot-x,50%) var(--spot-y,50%), transparent calc(var(--spot-r,200px) * var(--spot-k)), var(--dim-color) calc(var(--spot-r,200px) * (var(--spot-k) + .5)));transition:opacity .6s var(--ease-out), --spot-k .95s var(--ease-out);position:fixed;inset:0}.is-climax .spotlight-dim{opacity:1;--spot-k:1.04}.wheel-stage:before{content:"";opacity:0;transition:opacity .8s var(--ease-out), transform .9s var(--ease-out);pointer-events:none;background:radial-gradient(circle,#ffecaa8c,#ffecaa00 68%);border-radius:50%;position:absolute;inset:-5%;transform:scale(.9)}.is-climax .wheel-stage:before{opacity:1;transform:scale(1.04)}.wheel-stage.is-blurring .wheel-pointer{filter:drop-shadow(0 0 8px #fbbc04cc)drop-shadow(0 4px 6px #00000059)}@media (prefers-reduced-motion:reduce){.spotlight-dim{transition:opacity .3s linear}.wheel-stage:before{transition:opacity .3s linear;transform:none}}.reveal{z-index:90;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.reveal[hidden]{display:none}.reveal-backdrop{-webkit-backdrop-filter:blur(3px);background:#080a108c;position:absolute;inset:0}.reveal-confetti{pointer-events:none;z-index:2;width:100%;height:100%;position:absolute;inset:0}.reveal-flash{opacity:0;pointer-events:none;background:radial-gradient(circle at 50% 45%,#fff,#fff4c8b3 40%,#fff0 75%);position:absolute;inset:0}.reveal-card{z-index:1;background:var(--surface-strong);width:min(100%,460px);max-height:calc(100dvh - 32px);color:var(--text);text-align:center;box-shadow:0 30px 80px #00000073, 0 0 0 1px var(--border), 0 0 60px #fbbc0440;border-radius:28px;padding:34px 28px 26px;position:relative;overflow:auto}.reveal-ribbon{grid-template-columns:repeat(4,1fr);height:7px;display:grid;position:absolute;top:0;left:0;right:0}.reveal-ribbon span{transform-origin:0}.reveal-ribbon span:first-child{background:var(--blue)}.reveal-ribbon span:nth-child(2){background:var(--red)}.reveal-ribbon span:nth-child(3){background:var(--yellow)}.reveal-ribbon span:nth-child(4){background:var(--green)}.reveal-kicker{letter-spacing:.3em;color:var(--text-muted);margin:0 0 6px;font-size:.95rem;font-weight:800}.reveal-name{word-break:break-word;margin:4px 0 8px;font-size:clamp(2.4rem,11vw,4rem);font-weight:900;line-height:1.15}.reveal-name .ch{text-shadow:0 3px #00000014;display:inline-block}.reveal-name .ch:nth-child(4n+1){color:var(--blue)}.reveal-name .ch:nth-child(4n+2){color:var(--red)}.reveal-name .ch:nth-child(4n+3){color:var(--yellow-text)}.reveal-name .ch:nth-child(4n+4){color:var(--green)}.reveal-meta{color:var(--text-muted);margin:0;font-weight:700}.reveal-note{color:var(--text-muted);margin:10px 0 0;font-size:.85rem}.reveal-note[hidden]{display:none}.reveal-actions{flex-wrap:wrap;justify-content:center;gap:10px;margin-top:24px;display:flex}.reveal-actions .btn{min-width:110px}.batch-list{text-align:left;gap:6px;max-height:46dvh;margin:16px 0 0;padding:0;list-style:none;display:grid;overflow:auto}.batch-item{border-radius:var(--radius);background:color-mix(in srgb, var(--text) 5%, transparent);align-items:center;gap:12px;padding:10px 14px;font-size:1.1rem;font-weight:800;display:flex}.batch-order{color:var(--blue-text);font-variant-numeric:tabular-nums;font-size:.9rem}.draw-controls{flex-wrap:wrap;justify-content:center;align-items:center;gap:14px 22px;margin:16px auto 0;display:flex}.draw-controls .switch small{font-weight:500}.batch-control{align-items:center;gap:10px;display:flex}.stepper{border:1.5px solid var(--border);background:var(--surface-strong);transition:border-color var(--dur), box-shadow var(--dur);border-radius:999px;align-items:center;display:inline-flex}.stepper:focus-within{border-color:var(--blue);box-shadow:0 0 0 4px color-mix(in srgb, var(--blue) 22%, transparent)}.stepper-btn{width:36px;height:38px;color:var(--text);font:inherit;cursor:pointer;transition:background-color var(--dur-fast), transform var(--dur-fast) var(--ease-spring);-webkit-tap-highlight-color:transparent;background:0 0;border:0;border-radius:999px;font-size:1.2rem;font-weight:800}.stepper-btn:hover{background:color-mix(in srgb, var(--blue) 12%, transparent)}.stepper-btn:active{transform:scale(.8)}.stepper-btn:focus-visible{outline:2px solid var(--blue);outline-offset:-2px}.stepper-input{width:3.2ch;color:var(--text);font:inherit;text-align:center;font-variant-numeric:tabular-nums;appearance:textfield;background:0 0;border:0;font-size:1.05rem;font-weight:800}.stepper-input:focus{outline:none}.stepper-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.stepper-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.stepper-input.is-error{color:var(--red-text);animation:none}#batch-n{min-width:1ch;display:inline-block}.batch-tray{border-radius:var(--radius-lg);background:var(--surface);border:1px solid var(--border);max-width:620px;box-shadow:var(--shadow);margin:16px auto 0;padding:12px 14px}.batch-tray[hidden]{display:none}.batch-tray-head{justify-content:space-between;align-items:center;gap:10px;font-weight:700;display:flex}.batch-done{color:var(--blue-text);display:inline-block}.batch-tray-list{flex-wrap:wrap;gap:8px;max-height:140px;margin:10px 0 0;padding:0;list-style:none;display:flex;overflow:auto}.batch-tray-list:empty{display:none}.batch-chip{background:var(--surface-strong);border:1.5px solid color-mix(in srgb, var(--yellow) 60%, var(--border));border-radius:999px;align-items:center;gap:8px;padding:6px 12px;font-weight:800;display:inline-flex}.panel-actions{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:flex}.history-item{transition:background-color 1s var(--ease-out), border-color 1s var(--ease-out)}.history-item.is-new{background:color-mix(in srgb, var(--yellow) 18%, var(--surface-strong));border-color:color-mix(in srgb, var(--yellow) 60%, var(--border))}.bg{overflow:hidden}.bg-layer{will-change:transform;position:absolute;inset:-160px 0}.bg-shape{width:var(--s);height:var(--s);opacity:calc(var(--o) * var(--shape-alpha));background:var(--c);animation:30s ease-in-out infinite alternate bg-drift;position:absolute}.bg-circle{border-radius:50%}.bg-ring{border:max(2px, calc(var(--s) * .16)) solid var(--c);background:0 0;border-radius:50%}.bg-square{border-radius:28%}.bg-ribbon{width:calc(var(--s) * .38);height:calc(var(--s) * 1.3);border-radius:999px}.bg-layer-0 .bg-shape{filter:blur(1.5px)}@keyframes bg-drift{0%{transform:translate(0, 0) rotate(var(--r0))}to{transform:translate(var(--dx), var(--dy)) rotate(calc(var(--r0) + var(--r1)))}}.bg-sparkle{width:var(--s);height:var(--s);background:var(--c);box-shadow:0 0 calc(var(--s) * 2) var(--c);opacity:0;border-radius:50%;animation:4s ease-in-out infinite bg-twinkle;position:absolute}.bg-sparkle:before,.bg-sparkle:after{content:"";width:calc(var(--s) * 4);background:linear-gradient(90deg, transparent, var(--c), transparent);height:1px;position:absolute;top:50%;left:50%;translate:-50% -50%}.bg-sparkle:after{rotate:90deg}@keyframes bg-twinkle{0%,to{opacity:0;transform:scale(.3)}45%{opacity:var(--sparkle-alpha);transform:scale(1)}60%{opacity:calc(var(--sparkle-alpha) * .6);transform:scale(.8)}}.bg-beams{position:absolute;inset:0}.bg-beam{background:linear-gradient(180deg, rgb(255 255 255/var(--beam-alpha)), #fff0 80%);clip-path:polygon(46% 0,54% 0,100% 100%,0 100%);transform-origin:50% 0;width:60vmax;height:140vh;mix-blend-mode:var(--beam-blend);transition:opacity .9s var(--ease-out), width .9s var(--ease-out);animation:14s ease-in-out infinite alternate bg-sweep;position:absolute;top:-20vh}.bg-beam-l{--sweep-from:-28deg;--sweep-to:-12deg;left:-18vmax}.bg-beam-r{--sweep-from:28deg;--sweep-to:12deg;animation-delay:-7s;right:-18vmax}@keyframes bg-sweep{0%{rotate:var(--sweep-from)}to{rotate:var(--sweep-to)}}.is-climax .bg-beam{width:34vmax;animation-play-state:paused}.scroll-reveal{opacity:0;transition:opacity .7s var(--ease-out) var(--reveal-delay,0s), transform .8s var(--ease-out) var(--reveal-delay,0s);transform:translateY(28px)}.scroll-reveal.is-visible{opacity:1;transform:none}@media (prefers-reduced-motion:reduce){.bg-shape,.bg-sparkle,.bg-beam{animation:none}.bg-sparkle{opacity:calc(var(--sparkle-alpha) * .5)}.bg-beam{rotate:var(--sweep-to)}.bg-layer{transform:none!important}.scroll-reveal{transition:opacity .3s linear;transform:none}}.intro-running .site-header{z-index:130;position:relative}.intro-pending:not(.intro-running) .site-header,.intro-pending .layout,.intro-pending .site-footer,.reveal-pending .panel:not(.panel-wheel),.reveal-pending .site-footer{opacity:0;animation:0s 3s forwards intro-failsafe}@keyframes intro-failsafe{to{opacity:1}}.intro{z-index:120;background:var(--bg);cursor:pointer;position:fixed;inset:0}.intro-center{width:0;height:0;position:absolute}.intro-dots{position:absolute;top:0;left:0}.intro-dot{background:var(--c);width:18px;height:18px;box-shadow:0 0 18px var(--c);border-radius:50%;position:absolute;top:-9px;left:-9px}.intro-disc{opacity:0;background:conic-gradient(var(--blue) 0 25%, var(--red) 0 50%, var(--yellow) 0 75%, var(--green) 0);border-radius:50%;width:28px;height:28px;position:absolute;top:0;left:0;translate:-50% -50%;box-shadow:0 0 60px #fbbc0459}.intro-skip{left:0;right:0;bottom:max(24px, env(safe-area-inset-bottom));text-align:center;color:var(--text-muted);animation:fade-up .4s .3s var(--ease-out) backwards;margin:0;font-size:.85rem;position:absolute}.site-title .title-ch{display:inline-block}.btn.is-success{animation:btn-success .7s var(--ease-out)}.btn.is-error{animation:btn-error .6s var(--ease-out)}@keyframes btn-success{25%{box-shadow:0 0 0 6px color-mix(in srgb, var(--green) 35%, transparent);border-color:var(--green)}}@keyframes btn-error{25%{box-shadow:0 0 0 6px color-mix(in srgb, var(--red) 30%, transparent);border-color:var(--red)}}.switch input:checked+.switch-track .switch-thumb{animation:thumb-land .38s var(--ease-spring)}.switch input:not(:checked)+.switch-track .switch-thumb{animation:thumb-land-off .38s var(--ease-spring)}@keyframes thumb-land{40%{width:26px}}@keyframes thumb-land-off{40%{width:26px}}.switch.no-anim .switch-thumb{animation:none!important}.chip:active{transform:scale(.96)}.toast{transition:transform var(--dur) var(--ease-spring), box-shadow var(--dur) var(--ease-out)}.toast:hover{transform:translateY(-2px)}@media (pointer:coarse){.icon-btn{width:44px;height:44px}.btn{min-height:44px}.btn-sm{min-height:40px;padding:0 14px}.chip-name{padding:8px 4px 8px 8px}.chip-del{width:34px;height:34px}.chip-input{font-size:16px}.stepper-btn{width:44px;height:44px}.stepper-input{font-size:16px}.toast-action{padding:10px 14px}.segmented span:not(.segmented-indicator){padding:9px 18px}.panel:not(.panel-wheel){-webkit-backdrop-filter:none;background:var(--surface-strong)}}.history-list:focus-visible,.batch-tray-list:focus-visible,.batch-list:focus-visible{outline:3px solid var(--blue);outline-offset:3px;border-radius:var(--radius)}@media (hover:none){.btn:hover,.icon-btn:hover,.chip:hover,.wheel-hub:hover,.toast:hover{transform:none}.btn:hover{box-shadow:none}.btn-primary:hover{box-shadow:0 6px 18px color-mix(in srgb, var(--blue) 35%, transparent)}.chip-del:hover{color:var(--text-muted);background:0 0;transform:none}.dropzone:hover{border-color:color-mix(in srgb, var(--text) 22%, transparent);background:0 0}.dropzone:hover .dropzone-icon{transform:none}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.12s!important}.btn.is-success,.btn.is-error,.switch-thumb{animation:none!important}.btn:hover,.icon-btn:hover,.chip:hover,.chip:active,.wheel-hub:hover,.wheel-hub:active,.toast:hover{transform:none}}@media (forced-colors:active){.btn,.chip,.wheel-hub,.toast,.switch-track{border:1px solid canvastext}}
