@import url(https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=DM+Sans:wght@400;500;600;700&family=Fraunces:opsz,wght@9..144,500;9..144,600&display=swap);:root{--paper:#f7f2ea;--paper-deep:#ede5d8;--ink:#202421;--muted:#7c7f78;--line:#ddd4c6;--card:#fcfaf6;--accent:#ef6c4e;--accent-deep:#c44d38;--teal:#2f8d86;--yellow:#f2c94c;--shadow:0 20px 60px rgba(73, 52, 29, .10);--sans:'DM Sans',ui-sans-serif,sans-serif;--serif:'Fraunces',Georgia,serif;--mono:'DM Mono',ui-monospace,monospace}*{box-sizing:border-box}html{min-width:320px;scroll-behavior:smooth}body{margin:0;color:var(--ink);background:var(--paper);font-family:var(--sans);-webkit-font-smoothing:antialiased}button,input,textarea{font:inherit}button{color:inherit;cursor:pointer}button:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid color-mix(in srgb,var(--teal),transparent 62%);outline-offset:3px}.app-shell{min-height:100dvh;max-width:1480px;margin:auto;padding:0 5.4vw;overflow:hidden}.topbar{height:88px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:11px;text-decoration:none;color:var(--ink);font-weight:700;letter-spacing:-.055em;font-size:21px}.brand-mark{width:25px;height:25px;position:relative;display:flex;align-items:center;justify-content:center;border:2px solid var(--ink);border-radius:50%;transform:rotate(-20deg);overflow:hidden}.brand-mark span{position:absolute;width:2px;height:27px;background:var(--accent);transform:rotate(55deg)}.brand-mark span:nth-child(2){background:var(--teal);transform:rotate(115deg)}.brand-mark span:nth-child(3){background:var(--yellow);transform:rotate(175deg)}.topbar-actions{display:flex;align-items:center;gap:22px}.save-status{color:var(--muted);font-family:var(--mono);font-size:10px;letter-spacing:.03em;text-transform:uppercase}.save-dot{width:6px;height:6px;display:inline-block;margin-right:7px;background:var(--teal);border-radius:50%;vertical-align:1px}.icon-button{width:36px;height:36px;border:1px solid var(--line);border-radius:50%;background:0 0;display:grid;place-items:center;transition:.2s ease}.icon-button:hover{background:var(--card);transform:rotate(12deg)}.icon{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.icon-moon{display:none}.intro{display:flex;justify-content:space-between;align-items:flex-end;padding:68px 0 53px}.eyebrow,.section-kicker{margin:0 0 16px;color:var(--accent-deep);font:500 10px/1 var(--mono);letter-spacing:.15em;text-transform:uppercase}.eyebrow-line{width:27px;height:1px;margin-right:9px;display:inline-block;background:var(--accent);vertical-align:3px}h1{margin:0;font:500 clamp(47px, 6.5vw, 94px)/.9 var(--serif);letter-spacing:-.065em}.winner-card h2 em,h1 em{color:var(--accent);font-style:italic}.intro-copy{width:280px;margin:0 3.5vw 4px 30px;color:var(--muted);font-size:14px;line-height:1.6}.workspace{display:grid;grid-template-columns:minmax(0,1fr) minmax(330px,395px);gap:clamp(35px,7vw,115px);align-items:start}.wheel-column{min-width:0}.wheel-stage{position:relative;min-height:600px;display:flex;flex-direction:column;justify-content:center;align-items:center;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.wheel-stage:after,.wheel-stage:before{content:"";position:absolute;top:0;bottom:0;width:1px;background:var(--line);opacity:.5}.wheel-stage:before{left:9%}.wheel-stage:after{right:9%}.wheel-wrap{width:min(100%,570px);aspect-ratio:1;position:relative;margin-top:8px}#wheelCanvas{width:100%;height:100%;display:block;filter:drop-shadow(0 20px 22px rgba(67,45,24,.16))}.pointer{position:absolute;z-index:3;top:-12px;left:50%;width:0;height:0;transform:translateX(-50%);border-left:12px solid transparent;border-right:12px solid transparent;border-top:30px solid var(--ink);filter:drop-shadow(0 3px 1px rgba(0,0,0,.16))}.wheel-hub{width:66px;height:66px;position:absolute;z-index:2;top:50%;left:50%;display:grid;place-items:center;transform:translate(-50%,-50%);background:var(--paper);border:1px solid var(--ink);border-radius:50%;box-shadow:0 3px 0 var(--ink)}.hub-ring{width:42px;height:42px;border:1px solid var(--accent);border-radius:50%}.hub-dot{width:8px;height:8px;position:absolute;background:var(--accent);border-radius:50%}.stage-note{position:absolute;top:22%;z-index:1;display:flex;align-items:center;gap:8px;color:var(--muted);font:10px var(--mono);text-transform:uppercase;letter-spacing:.08em;writing-mode:vertical-rl}.stage-note-left{left:2%}.stage-note-right{right:2%;transform:rotate(180deg)}.note-number{color:var(--accent);font-size:9px}.wheel-caption{display:flex;gap:13px;align-items:center;margin:4px 0 22px;color:var(--muted);font:10px var(--mono);text-transform:uppercase;letter-spacing:.08em}.caption-divider{width:20px;height:1px;background:var(--line)}.spin-area{display:flex;flex-direction:column;align-items:center;padding-top:25px}.spin-button{position:relative;width:min(100%,340px);border:0;border-radius:4px;padding:18px 24px;background:var(--accent);color:#fffaf2;font-weight:700;font-size:14px;letter-spacing:.015em;box-shadow:inset 0 -3px 0 rgba(108,37,22,.23);transition:transform .2s,background .2s,box-shadow .2s}.spin-button:not(:disabled):hover{transform:translateY(-3px);background:var(--accent-deep);box-shadow:inset 0 -3px 0 rgba(108,37,22,.23),0 8px 20px rgba(196,77,56,.2)}.spin-button:not(:disabled):active{transform:translateY(1px)}.spin-button:disabled{opacity:.45;cursor:not-allowed}.spin-key{position:absolute;right:16px;top:50%;transform:translateY(-50%);padding:3px 5px;border:1px solid rgba(255,255,255,.4);border-radius:3px;font:9px var(--mono)}.spin-subtext{min-height:16px;margin:11px 0 29px;color:var(--muted);font-size:11px}.control-panel{padding:25px 25px 26px;background:var(--card);border:1px solid var(--line);border-radius:5px;box-shadow:var(--shadow)}.panel-heading{display:flex;justify-content:space-between;align-items:flex-start;padding-bottom:19px;border-bottom:1px solid var(--line)}.panel-heading .section-kicker{margin-bottom:8px}.panel-heading h2{margin:0;font:500 25px var(--serif);letter-spacing:-.04em}.count-badge{display:grid;place-items:center;width:27px;height:27px;border-radius:50%;background:var(--paper-deep);color:var(--muted);font:10px var(--mono)}.input-block{padding:20px 0 12px}.input-block label{display:block;margin-bottom:9px;font-size:11px;font-weight:700}.input-block textarea{width:100%;resize:vertical;min-height:134px;padding:13px 14px;border:1px solid var(--line);border-radius:3px;background:var(--paper);color:var(--ink);font:13px/1.65 var(--mono);transition:border .2s}.input-block textarea::placeholder{color:#aaa59b}.input-block textarea:focus{border-color:var(--teal);outline:0}.input-footer{display:flex;justify-content:space-between;gap:10px;margin-top:7px;color:var(--muted);font-size:10px;line-height:1.4}.char-count{flex:none;font-family:var(--mono)}.quick-actions{display:flex;gap:17px;padding:0 0 18px;border-bottom:1px solid var(--line)}.text-button{display:inline-flex;align-items:center;gap:5px;padding:0;border:0;background:0 0;color:var(--teal);font-size:11px;font-weight:600}.text-button:hover{color:var(--accent-deep)}.danger-text{color:var(--muted);margin-left:auto}.mini-icon{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.options-list{max-height:226px;overflow-y:auto;padding:6px 0;scrollbar-width:thin;scrollbar-color:var(--line) transparent}.option-row{display:flex;align-items:center;gap:10px;min-height:39px;border-bottom:1px solid color-mix(in srgb,var(--line),transparent 42%);animation:rowIn .24s ease both}@keyframes rowIn{from{opacity:0;transform:translateX(-5px)}to{opacity:1;transform:none}}.option-color{width:8px;height:8px;flex:none;border-radius:50%}.option-index{width:20px;color:var(--muted);font:10px var(--mono)}.option-name{flex:1;min-width:0;overflow:hidden;color:var(--ink);font-size:12px;text-overflow:ellipsis;white-space:nowrap}.option-edit-input{width:100%;min-width:0;padding:5px 7px;border:1px solid var(--teal);border-radius:2px;background:var(--paper);color:var(--ink);font-size:12px}.row-actions{display:flex;gap:3px;opacity:0;transition:opacity .2s}.option-row:focus-within .row-actions,.option-row:hover .row-actions{opacity:1}.row-button{width:25px;height:25px;display:grid;place-items:center;border:0;border-radius:3px;color:var(--muted);background:0 0}.row-button:hover{color:var(--ink);background:var(--paper-deep)}.row-button svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.empty-options{padding:26px 13px 22px;text-align:center;color:var(--muted)}.empty-options strong{display:block;margin-top:12px;color:var(--ink);font:500 15px var(--serif)}.empty-options p{max-width:230px;margin:6px auto 0;font-size:11px;line-height:1.5}.empty-orbit{width:36px;height:36px;position:relative;margin:auto;border:1px dashed var(--line);border-radius:50%}.empty-orbit span{width:5px;height:5px;position:absolute;background:var(--accent);border-radius:50%}.empty-orbit span:first-child{top:3px;left:14px}.empty-orbit span:nth-child(2){right:2px;bottom:8px;background:var(--teal)}.empty-orbit span:nth-child(3){left:4px;bottom:5px;background:var(--yellow)}.settings-divider{height:1px;margin:4px 0 22px;background:var(--line)}.setting-group{margin-bottom:23px}.setting-label-row{display:flex;justify-content:space-between;align-items:center}.setting-label,.setting-label-row label{font-size:11px;font-weight:700}.setting-label-row output,.theme-name{color:var(--accent-deep);font:10px var(--mono)}input[type=range]{width:100%;height:3px;margin:15px 0 7px;accent-color:var(--accent);cursor:pointer}.range-labels{display:flex;justify-content:space-between;color:var(--muted);font:9px var(--mono)}.toggle-list{display:flex;flex-direction:column;gap:16px;padding-bottom:22px}.toggle-row{display:flex;align-items:center;gap:10px;cursor:pointer}.toggle-row>span:first-child{flex:1;display:flex;flex-direction:column;gap:3px}.toggle-row strong{font-size:11px;font-weight:700}.toggle-row small{color:var(--muted);font-size:10px}.toggle-row input{position:absolute;opacity:0;pointer-events:none}.switch{width:31px;height:17px;position:relative;flex:none;border-radius:12px;background:var(--paper-deep);transition:.2s}.switch:after{content:"";width:11px;height:11px;position:absolute;top:3px;left:3px;border-radius:50%;background:#a6a098;transition:.2s}.toggle-row input:checked+.switch{background:var(--teal)}.toggle-row input:checked+.switch:after{left:17px;background:#fff}.theme-picker{padding-top:17px;border-top:1px solid var(--line)}.theme-swatches{display:flex;gap:8px;margin-top:12px}.theme-swatch{width:42px;height:25px;display:flex;padding:3px;gap:2px;border:1px solid transparent;border-radius:3px;background:var(--paper-deep)}.theme-swatch.active{border-color:var(--ink);box-shadow:0 2px 0 var(--ink)}.theme-swatch span{flex:1;border-radius:2px}.theme-swatch[data-theme=citrus] span:first-child{background:#ef6c4e}.theme-swatch[data-theme=citrus] span:nth-child(2){background:#2f8d86}.theme-swatch[data-theme=citrus] span:nth-child(3){background:#f2c94c}.theme-swatch[data-theme=tide] span:first-child{background:#276b83}.theme-swatch[data-theme=tide] span:nth-child(2){background:#e78e62}.theme-swatch[data-theme=tide] span:nth-child(3){background:#e9c46a}.theme-swatch[data-theme=berry] span:first-child{background:#9e4d69}.theme-swatch[data-theme=berry] span:nth-child(2){background:#ed8f78}.theme-swatch[data-theme=berry] span:nth-child(3){background:#d8b35c}.theme-swatch[data-theme=meadow] span:first-child{background:#557d63}.theme-swatch[data-theme=meadow] span:nth-child(2){background:#e1865b}.theme-swatch[data-theme=meadow] span:nth-child(3){background:#d8bc63}.lower-note{display:flex;align-items:center;gap:22px;margin:79px 0 42px;color:var(--muted);font:10px var(--mono);text-transform:uppercase;letter-spacing:.1em}.lower-note .rule{height:1px;flex:1;background:var(--line)}.lower-note p{margin:0;white-space:nowrap}.spark-mark{margin-right:8px;color:var(--accent);font-size:17px}.lower-note-right{opacity:.8}.local-mark{margin-left:6px;color:var(--teal);font-size:16px}footer{display:flex;justify-content:space-between;padding:19px 0 25px;border-top:1px solid var(--line);color:var(--muted);font:9px var(--mono);letter-spacing:.08em;text-transform:uppercase}kbd{padding:3px 5px;border:1px solid var(--line);border-radius:2px;font-size:9px}.modal-backdrop{position:fixed;z-index:20;inset:0;display:grid;place-items:center;padding:20px;background:rgba(32,36,33,.72);backdrop-filter:blur(6px);animation:fadeIn .3s ease}.modal-backdrop[hidden]{display:none}@keyframes fadeIn{from{opacity:0}to{opacity:1}}.winner-card{width:min(100%,470px);position:relative;padding:53px 40px 40px;overflow:hidden;text-align:center;background:var(--card);border:1px solid var(--line);box-shadow:0 30px 90px rgba(0,0,0,.22);animation:popIn .45s cubic-bezier(.2,.9,.25,1.2)}@keyframes popIn{from{opacity:0;transform:scale(.88) translateY(22px)}to{opacity:1;transform:none}}.modal-close{position:absolute;top:18px;right:18px;width:30px;height:30px;display:grid;place-items:center;border:1px solid var(--line);border-radius:50%;background:0 0;color:var(--muted)}.modal-close:hover{color:var(--ink);background:var(--paper-deep)}.winner-kicker{margin:0 0 21px;color:var(--teal);font:10px var(--mono);letter-spacing:.16em;text-transform:uppercase}.winner-star{color:var(--yellow);font-size:16px;vertical-align:-2px;margin-right:5px}.winner-card h2{margin:0;font:500 clamp(32px, 6vw, 47px)/1 var(--serif);letter-spacing:-.06em}.winner-slice{width:58px;height:5px;margin:26px auto 17px;border-radius:5px;background:var(--accent)}.winner-message{margin:0 0 28px;color:var(--muted);font-size:12px}.modal-action{padding:13px 19px;border:1px solid var(--ink);border-radius:3px;background:var(--ink);color:var(--paper);font-size:12px;font-weight:700}.modal-action:hover{background:var(--teal);border-color:var(--teal)}.modal-action span{margin-left:18px;font-size:17px;vertical-align:-1px}.confetti{position:absolute;inset:0;overflow:hidden;pointer-events:none}.confetti i{width:8px;height:15px;position:absolute;top:-20px;animation:fall 2.7s ease-in forwards}.confetti i:nth-child(3n){width:5px;height:5px;border-radius:50%}.confetti i:nth-child(4n){transform:rotate(45deg)}@keyframes fall{to{top:105%;transform:translateY(20px) rotate(620deg)}}body.dark{--paper:#1d2423;--paper-deep:#27302e;--ink:#f6efe4;--muted:#aeb3aa;--line:#39433f;--card:#232b29;--accent:#f17a5c;--accent-deep:#ff9878;--teal:#66b9ae;--yellow:#eecb61;--shadow:0 20px 60px rgba(0,0,0,.24)}body.dark .brand-mark{border-color:var(--ink)}body.dark .wheel-hub{background:var(--paper)}body.dark .modal-backdrop{background:rgba(5,10,9,.76)}body.dark .spin-button{color:#211c18}body.dark .spin-key{border-color:rgba(32,36,33,.4)}body.dark .empty-options strong{color:var(--ink)}@media (max-width:900px){.app-shell{padding:0 4vw}.intro{padding:50px 0 38px}.workspace{grid-template-columns:1fr;gap:40px}.control-panel{max-width:620px;width:100%;margin:auto}.wheel-stage{min-height:500px}.wheel-wrap{max-width:480px}.stage-note{display:none}.lower-note{margin-top:60px}}@media (max-width:560px){.app-shell{padding:0 18px}.topbar{height:70px}.save-status{display:none}.intro{display:block;padding:39px 0 32px}.intro-copy{width:auto;margin:24px 0 0;max-width:330px}.wheel-stage{min-height:360px}.wheel-wrap{width:calc(100% - 25px);max-width:390px}.pointer{border-left-width:9px;border-right-width:9px;border-top-width:24px}.wheel-hub{width:48px;height:48px}.hub-ring{width:30px;height:30px}.hub-dot{width:6px;height:6px}.wheel-caption{font-size:8px}.spin-button{width:100%}.control-panel{padding:21px 17px}.quick-actions{gap:11px}.text-button{font-size:10px}.lower-note{display:block;margin:53px 0 34px;text-align:center}.lower-note .rule{display:block;margin-bottom:20px}.lower-note-right{display:none}footer{font-size:8px}footer span:last-child{display:none}.winner-card{padding:48px 23px 30px}}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:NaNs!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:NaNs!important}}