:root{color:#f4f6fb;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#08111b;font-family:Avenir Next,Montserrat,Segoe UI,sans-serif;font-weight:400;line-height:1.4}*{box-sizing:border-box}body{background:radial-gradient(circle at 15% 20%,#337cb64d,#0000 42%),radial-gradient(circle at 80% 8%,#f8c16c33,#0000 35%),linear-gradient(170deg,#08111b 0%,#112131 60%,#14283d 100%);min-height:100vh;margin:0}#root{min-height:100vh}.app-shell{--brand-primary:#f7d978;--brand-accent:#4d84ad;--brand-bg-start:#0a1a2a;--brand-bg-end:#11263b;--button-primary-start:#f7d978;--button-primary-end:#f8b84d;--button-primary-text:#1a2330;--button-secondary-bg:#24445f;--button-secondary-text:#deecfa;--button-border:#4a708f;--button-radius:10px;color:#f4f6fb;background:radial-gradient(circle at 12% 18%, color-mix(in srgb, var(--brand-accent) 30%, transparent), transparent 40%), radial-gradient(circle at 88% 10%, color-mix(in srgb, var(--brand-primary) 22%, transparent), transparent 34%), linear-gradient(170deg, var(--brand-bg-start) 0%, var(--brand-bg-end) 75%);min-height:100vh;padding:2rem}.app-shell.focus-mode{padding:.65rem}.app-shell.focus-mode .app-header{display:none}.app-header{max-width:1180px;margin:0 auto 1.6rem}.brand-logo{border-radius:10px;width:auto;max-height:60px;margin:0 0 .5rem;display:block}.eyebrow{border:1px solid color-mix(in srgb, var(--brand-accent) 70%, #d7e7f8 30%);text-transform:uppercase;letter-spacing:.08em;color:color-mix(in srgb, var(--brand-accent) 56%, #d8ecff 44%);border-radius:999px;margin:0;padding:.25rem .75rem;font-size:.8rem;display:inline-block}h1{letter-spacing:.03em;color:color-mix(in srgb, var(--brand-primary) 70%, #fff 30%);margin:.7rem 0 .3rem;font-size:clamp(2rem,3vw,3.3rem)}.subtitle{color:#b9c8d8;max-width:760px;margin:0}.tool-tabs{flex-wrap:wrap;gap:.7rem;margin-top:1rem;display:flex}.tab{border:1px solid var(--button-border);background:color-mix(in srgb, var(--button-secondary-bg) 70%, #0f1f2f 30%);color:var(--button-secondary-text);border-radius:var(--button-radius);padding:.45rem .9rem;font-weight:700}.tab.active{background:linear-gradient(130deg, var(--button-primary-start), var(--button-primary-end));border-color:var(--button-border);color:var(--button-primary-text)}.workspace{grid-template-columns:1.2fr 1fr;gap:1.25rem;max-width:1180px;margin:0 auto;display:grid}.workspace.display-mode{grid-template-columns:1fr;max-width:none}.workspace.panel-mode{grid-template-columns:1fr;max-width:860px}.workspace.display-mode .control-panel{display:none}.wheel-stage,.control-panel{background:#0e1926d1;border:1px solid #254059;border-radius:16px;box-shadow:0 12px 40px #00000052}.wheel-stage{flex-direction:column;align-items:center;padding:1.1rem;display:flex;position:relative}.workspace.display-mode .wheel-stage{min-height:calc(100vh - 175px);width:min(100%, calc(1180px * var(--layout-scale,1)));justify-content:center;margin:0 auto}.app-shell.focus-mode .workspace.display-mode .wheel-stage{min-height:calc(100vh - 1.3rem)}.current-readout{border:1px solid color-mix(in srgb, var(--brand-accent) 65%, #d7e7f8 35%);background:#0b1928e6;border-radius:999px;align-items:center;gap:.6rem;max-width:min(84vw,920px);margin:0 0 .5rem;padding:.45rem .9rem;display:inline-flex}.prize-overlay{z-index:10;justify-content:center;align-items:center;gap:.6rem;display:flex;position:absolute;top:-4.5rem;left:50%;transform:translate(-50%)}.prize-input{text-align:center;color:#eff5fb;background:#0d1d2d;border:1px solid #355774;border-radius:8px;min-width:200px;max-width:280px;padding:.5rem .8rem;font-size:1rem;font-weight:600}.prize-input::placeholder{color:#7a94b0}.spin-btn.compact{min-height:42px;margin-top:0;padding:.62rem .9rem}.current-readout span{color:#9eb6cc;letter-spacing:.08em;text-transform:uppercase;font-size:.78rem}.current-readout strong{color:color-mix(in srgb, var(--brand-primary) 70%, #fff 30%);white-space:nowrap;text-overflow:ellipsis;font-size:clamp(1rem,1.9vw,1.45rem);overflow:hidden}.pointer{filter:drop-shadow(0 4px 2px #0006);z-index:3;border-top:30px solid #f7f4db;border-left:20px solid #0000;border-right:20px solid #0000;width:0;height:0;margin-bottom:-11px}.wheel-scale-shell{transform-origin:50%;transition:transform .26s}.wheel-scale-shell.winner-tight-zoom{transform:scale(1.16)translateY(4px)}.wheel-frame{border-radius:50%;transition:transform .36s;position:relative}.wheel-frame.winner-zoom{transform:scale(1.08)}.wheel{width:min(calc(72vw * var(--layout-scale,1)), calc(460px * var(--layout-scale,1)));aspect-ratio:1;border:8px solid #dce8f5;border-radius:50%;position:relative;overflow:hidden;transform:rotate(0);box-shadow:inset 0 0 0 5px #0d182466,0 18px 28px #0006}.workspace.display-mode .wheel{width:min(calc(92vmin * var(--layout-scale,1)), calc(1080px * var(--layout-scale,1)))}.wheel:after{content:"";inset:var(--hub-size,42%);z-index:2;background:#102739;border:3px solid #d5e4f2;border-radius:50%;position:absolute}.wheel.spinning{filter:saturate(1.08)}.wheel-label{transform-origin:0;z-index:1;pointer-events:none;justify-content:center;align-items:center;width:44%;height:0;display:flex;position:absolute;top:50%;left:50%}.wheel-label strong{transform-origin:50%;color:#10212f;text-overflow:ellipsis;white-space:nowrap;text-align:center;background:#ffffffe6;border-radius:6px;max-width:106px;padding:.15rem .4rem;font-size:clamp(.62rem,1.55vw,.82rem);line-height:1;display:inline-block;overflow:hidden}.current-name-overlay{z-index:6;pointer-events:none;justify-content:center;align-items:center;width:100%;height:auto;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.center-name-card{background:#0f2538d1;border:1px solid #d5e4f25c;border-radius:12px;justify-items:center;gap:.2rem;width:clamp(160px,46%,540px);max-width:82vw;padding:.35rem .6rem;display:grid;box-shadow:0 6px 18px #00000059}.center-name-text{width:100%;color:color-mix(in srgb, var(--brand-primary) 90%, #fff 10%);text-align:center;white-space:normal;overflow-wrap:anywhere;word-break:break-word;text-wrap:balance;text-shadow:0 1px 4px #0006,0 4px 12px #0000004d,0 0 24px #0003;letter-spacing:.02em;font-size:clamp(.92rem,2.1vw,2.05rem);font-weight:900;line-height:1.08;display:block}.center-prize-flash{color:#ffe8a9;text-transform:uppercase;letter-spacing:.08em;font-size:clamp(.7rem,1.3vw,.95rem);font-weight:800;animation:.9s ease-in-out 3 prizeFlash}.current-name-overlay.winner .center-name-card{background:color-mix(in srgb, var(--brand-primary) 18%, #102739 82%);border-color:color-mix(in srgb, var(--brand-primary) 62%, #fff 38%)}.current-name-overlay.winner.celebrate-pulse .center-name-card{animation:.7s ease-in-out 2 winnerPulse}.current-name-overlay.winner.celebrate-confetti .center-name-card{animation:.9s ease-out 2 centerConfettiGlow}.current-name-overlay.winner.celebrate-fireworks .center-name-card{animation:.98s cubic-bezier(.16,1,.3,1) centerBurst}.current-name-overlay.winner.celebrate-streamers .center-name-card{animation:.82s ease-in-out 2 centerSway}.wheel-hub-logo{max-width:calc((100% - 2 * var(--hub-size,42%)) * .85);max-height:calc((100% - 2 * var(--hub-size,42%)) * .85);z-index:3;pointer-events:none;border-radius:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.winner-focus{pointer-events:none;opacity:0;border-radius:50%;position:absolute;inset:0}.wheel-frame.winner-zoom .winner-focus{opacity:1;transition:opacity .22s ease-out}.winner-focus:before{content:"";background:radial-gradient(circle at center, transparent 0 41%, #ffffff3d 41% 43%, transparent 43%), conic-gradient(from calc((var(--winner-slice-angle,12deg) * -.5)), color-mix(in srgb, var(--winner-slice-color,#ffc14533) 78%, #fff 22%) 0deg, color-mix(in srgb, var(--winner-slice-color,#ffc14533) 70%, transparent 30%) var(--winner-slice-angle,12deg), transparent var(--winner-slice-angle,12deg));filter:drop-shadow(0 0 16px #ffd26e73);border-radius:50%;position:absolute;inset:0}.winner-callout{color:#17283a;white-space:normal;letter-spacing:.01em;opacity:0;pointer-events:none;background:#fff3bff5;border:1px solid #f4d777;border-radius:999px;justify-items:center;gap:.1rem;max-width:min(76vw,520px);padding:.35rem .8rem;font-weight:800;display:grid;position:absolute;top:-.6rem;left:50%;transform:translate(-50%,-14px)scale(.88)}.winner-name{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.winner-prize{color:#4a6278;font-size:.75rem;font-weight:700}.winner-callout.show{opacity:1;transition:transform .36s cubic-bezier(.16,1,.3,1),opacity .22s ease-out;transform:translate(-50%,-26px)scale(1.06)}.winner-callout.celebrate-pulse.show{animation:.7s ease-in-out 2 winnerPulse}.celebration{pointer-events:none;z-index:4;position:absolute;inset:-8%}.celebration.confetti i{top:2%;left:calc((var(--i) * 5.2%) + 2%);background:hsl(calc(var(--i) * 19deg), 95%, 65%);width:8px;height:14px;animation:1.2s ease-out both confettiFall;animation-delay:calc(var(--i) * 14ms);border-radius:2px;position:absolute}.celebration.fireworks{inset:-12%}.celebration.fireworks i{background:hsl(calc(var(--i) * 25deg), 100%, 66%);width:10px;height:10px;animation:1.05s ease-out both fireworksBurst;animation-delay:calc(var(--i) * 20ms);border-radius:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.celebration.streamers{inset:-6%}.celebration.streamers i{top:-2%;left:calc((var(--i) * 6.2%) + 1%);background:linear-gradient(180deg, #fffffff2, hsl(calc(var(--i) * 18deg), 95%, 62%));transform-origin:top;width:7px;height:60px;animation:1.32s cubic-bezier(.16,1,.3,1) both streamersFall;animation-delay:calc(var(--i) * 26ms);border-radius:999px;position:absolute}@keyframes confettiFall{0%{opacity:1;transform:translateY(-6px)rotate(0)}to{opacity:0;transform:translateY(250px)rotate(260deg)}}@keyframes winnerPulse{0%{transform:scale(1.01)}50%{transform:scale(1.12)}to{transform:scale(1.03)}}@keyframes centerConfettiGlow{0%{transform:scale(.96);box-shadow:0 4px 12px #00000052}50%{transform:scale(1.08);box-shadow:0 0 26px #ffdc7a8f}to{transform:scale(1);box-shadow:0 6px 18px #00000059}}@keyframes centerBurst{0%{filter:brightness();transform:scale(.92)}45%{filter:brightness(1.28);transform:scale(1.16)}to{filter:brightness();transform:scale(1)}}@keyframes centerSway{0%{transform:translate(0)rotate(0)}25%{transform:translate(-4px)rotate(-1.2deg)}50%{transform:translate(4px)rotate(1.2deg)}to{transform:translate(0)rotate(0)}}@keyframes prizeFlash{0%{opacity:.18;transform:scale(.96)}40%{opacity:1;transform:scale(1.08)}to{opacity:.92;transform:scale(1)}}@keyframes fireworksBurst{0%{opacity:1;transform:translate(-50%,-50%)scale(.2)}to{transform:translate(-50%, -50%) rotate(calc(var(--i) * 25deg)) translateY(calc(-90px - (var(--i) * 4px))) scale(.2);opacity:0}}@keyframes streamersFall{0%{opacity:0;transform:translateY(-12px)rotate(0)}16%{opacity:1}to{transform:translateY(250px) rotate(calc((var(--i) - 8) * 3deg));opacity:0}}.wheel-note{color:#9eb6cc;text-align:center;margin:.65rem 0 0;font-size:.84rem}.display-actions{flex-wrap:wrap;justify-content:center;gap:.6rem;margin-top:.7rem;display:flex}.display-tools-panel{background:#101f2f80;border:1px solid #50708a59;border-radius:12px;width:min(95vw,900px);margin-top:.25rem;padding:.45rem .75rem .75rem}.prize-quick-edit{width:min(94vw,560px);margin-top:.55rem}.prize-quick-edit .field-label{margin-top:.35rem}.spin-btn{background:linear-gradient(130deg, var(--button-primary-start), var(--button-primary-end));border:1px solid var(--button-border);color:var(--button-primary-text);border-radius:var(--button-radius);cursor:pointer;margin-top:1rem;padding:.7rem 1.2rem;font-weight:700}.spin-btn.secondary{background:var(--button-secondary-bg);border:1px solid var(--button-border);color:var(--button-secondary-text);margin-top:0}.spin-btn:disabled{opacity:.55;cursor:not-allowed}.winner{min-height:1.5rem;color:color-mix(in srgb, var(--brand-primary) 74%, #fdf0bf 26%);margin:.85rem 0 0;font-weight:700}.control-panel{padding:1.1rem}.names-panel{width:100%}h2{margin:0 0 .9rem;font-size:1.15rem}.row{grid-template-columns:1fr auto;gap:.6rem;display:grid}.row-actions{margin-top:.5rem}.row-colors{grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem;display:grid}.field-label{color:#c7d8ea;margin-top:.8rem;margin-bottom:.35rem;font-size:.9rem;display:block}.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem;margin:.9rem 0 .4rem;display:grid}.sheet-start-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem;display:grid}.stats-grid p{background:#233c5273;border:1px solid #304e69;border-radius:10px;margin:0;padding:.7rem .8rem}.status{margin:.55rem 0 0;font-size:.88rem}.status.error{color:#ffb7be}.status.ok{color:#b5f0c8}.muted{color:#9eb6cc;margin:.65rem 0 0;font-size:.86rem}input,textarea,.control-panel select,.control-panel button{font:inherit}input,textarea,.control-panel select{box-sizing:border-box;color:#eff5fb;background:#0d1d2d;border:1px solid #355774;border-radius:8px;width:100%;padding:.6rem .7rem}.invalid-input{border-color:#d76a77;box-shadow:0 0 0 1px #d76a773d}.inline-status{margin-top:.35rem}.sheet-import-preview{color:#d8e6f5;background:#233c5252;border:1px solid #304e69;border-radius:10px;margin:.55rem 0 0;padding:.65rem .75rem;font-size:.88rem}input[type=color]{height:2.5rem;padding:.25rem}textarea{resize:vertical;margin-top:.65rem}.control-panel button{border:1px solid var(--button-border);background:var(--button-secondary-bg);color:var(--button-secondary-text);border-radius:var(--button-radius);cursor:pointer;padding:.58rem .85rem;font-weight:600}.control-panel button:hover{filter:brightness(1.08)}.control-panel button:disabled{opacity:.5;cursor:not-allowed}button.ghost{background:color-mix(in srgb, var(--button-secondary-bg) 20%, transparent)}.name-list{gap:.45rem;max-height:420px;margin:.8rem 0 0;padding:0;list-style:none;display:grid;overflow-y:auto}.name-list li{background:#233c5273;border:1px solid #304e69;border-radius:8px;justify-content:space-between;align-items:center;gap:.6rem;padding:.45rem .55rem;display:flex}.name-list span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.name-meta{color:#c7d8ea;flex:none;font-size:.9rem}.name-manager-actions{justify-content:flex-end;margin-top:.5rem;display:flex}.name-add-row{grid-template-columns:1.3fr .8fr auto;align-items:end;gap:.6rem;margin-top:.4rem;display:grid}.name-add-button{align-self:end}.name-list.editable li{flex-direction:column;align-items:stretch}.name-row-main{justify-content:space-between;align-items:center;gap:.6rem;display:flex}.name-row-actions{grid-template-columns:minmax(96px,140px) auto;gap:.55rem;margin-top:.45rem;display:grid}.name-row-actions input{min-width:0}.names-search-section{margin-top:.8rem;margin-bottom:.4rem}.color-manager{margin-top:.8rem}.color-list{gap:.4rem;max-height:250px;margin-bottom:.6rem;display:grid;overflow-y:auto}.color-item{cursor:grab;background:#233c5273;border:1px solid #304e69;border-radius:8px;grid-template-columns:20px 40px 1fr auto;align-items:center;gap:.5rem;padding:.5rem;transition:opacity .15s,border-color .15s;display:grid}.color-item:active{cursor:grabbing}.color-item.drag-over{background:#7ab8f51f;border-color:#7ab8f5}.drag-handle{color:#5a7a99;cursor:grab;-webkit-user-select:none;user-select:none;text-align:center;font-size:1rem;line-height:1}.color-preview{cursor:pointer;background:0 0;border:1px solid #0003;border-radius:6px;width:40px;height:40px;padding:0}.color-item span{color:#c7d8ea;font-family:monospace;font-size:.85rem}.color-add-row{background:#233c5240;border:1px solid #304e69;border-radius:8px;grid-template-columns:auto 1fr auto auto;align-items:center;gap:.5rem;padding:.5rem;display:grid}.color-add-row input[type=color]{cursor:pointer;width:50px;height:50px;padding:2px}.color-add-row button{white-space:nowrap}.settings-export-import{border-top:1px solid #50708a59;margin-top:1.2rem;padding-top:1.2rem}.settings-export-import h2{margin:0 0 .8rem}.import-label{cursor:pointer}.import-button{border:1px solid var(--button-border);background:var(--button-secondary-bg);color:var(--button-secondary-text);border-radius:var(--button-radius);text-align:center;padding:.58rem .85rem;font-weight:600;transition:filter .2s;display:block}.import-button:hover{filter:brightness(1.08)}.import-label input:disabled~.import-button{opacity:.5;cursor:not-allowed}@media (width<=980px){.app-shell{padding:1.15rem}.workspace{grid-template-columns:1fr}.workspace.display-mode .wheel{width:min(88vw,720px)}.row-colors{grid-template-columns:1fr 1fr}.name-add-row,.sheet-start-grid{grid-template-columns:1fr}.name-add-button{justify-self:stretch}.name-row-actions{grid-template-columns:1fr}}
