:root{--color-brand-orange: #D94B18;--color-brand-orange-dark: #731F0D;--color-brand-teal: #44605D;--color-brand-cream: #ECE7E3;--color-bg: #0D0D0D;--surface: rgba(255, 255, 255, .08);--surface-hover: rgba(255, 255, 255, .12);--surface-active: rgba(255, 255, 255, .15);--border: rgba(68, 96, 93, .3);--text: white;--text-muted: rgba(255, 255, 255, .6);--text-dim: rgba(255, 255, 255, .4);--color-danger: rgba(235, 60, 60, .5);--color-success: rgba(100, 200, 120, .7);--shadow: rgba(0, 0, 0, .3);--shadow-heavy: rgba(0, 0, 0, .5);--gradient-teal: rgba(68, 96, 93, .15);--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--radius-sm: 4px;--radius: 10px;--radius-lg: 18px;--radius-xl: 24px;--radius-full: 50%;--font-body: "Rubik", sans-serif;--font-display: "Caveat Brush", cursive;--text-xs: 12px;--text-sm: 14px;--text-base: 16px;--text-lg: 18px;--text-display: 42px;--z-wheel: 10;--z-description: 100;--z-overlay: 1001;--z-app-bar: 1002;--z-winner: 1500;--z-toast: 2000;--ease: .15s ease;--ease-panel: .45s cubic-bezier(.4, 0, .2, 1);--app-bar-height: 52px;--drawer-max-height: 55vh;--builder-max-width: 560px;--desktop-bar-width: 600px;--icon-btn-size: 44px}html,body{height:100%;overflow:hidden}.app-bar{position:fixed;bottom:0;left:0;right:0;z-index:var(--z-app-bar);background:var(--color-bg);box-sizing:border-box;box-shadow:0 -2px 12px var(--shadow);max-height:calc(var(--app-bar-height) + env(safe-area-inset-bottom,0px));overflow:hidden;transition:max-height var(--ease-panel),border-radius var(--ease-panel);border-radius:0;top:auto;display:flex;flex-direction:column}.app-bar.expanded{max-height:var(--drawer-max-height);border-radius:var(--radius-xl) var(--radius-xl) 0 0;background:linear-gradient(to bottom,var(--gradient-teal),var(--color-bg));background-color:var(--color-bg);border-top:1px solid var(--border);box-shadow:0 -8px 32px var(--shadow-heavy),0 -2px 8px var(--shadow)}.app-bar.fullscreen{max-height:100dvh;height:100dvh;border-radius:0;background:linear-gradient(to bottom,var(--gradient-teal),var(--color-bg));background-color:var(--color-bg);box-shadow:none;border-top:none}.app-bar-header{display:flex;align-items:center;justify-content:space-between;padding:0 var(--space-2);height:calc(var(--app-bar-height) + env(safe-area-inset-bottom,0px));padding-bottom:env(safe-area-inset-bottom,0px);box-sizing:border-box;flex-shrink:0;position:relative}.app-bar-body{opacity:0;transition:opacity var(--ease);padding:0 var(--space-5) calc(var(--space-6) + env(safe-area-inset-bottom));max-height:calc(var(--drawer-max-height) - var(--app-bar-height));overflow-y:auto;overflow-x:hidden;scrollbar-width:none;display:flex;flex-direction:column}.app-bar-body::-webkit-scrollbar{display:none}.app-bar-body.visible{opacity:1;transition:opacity var(--ease) .1s}.app-bar.fullscreen .app-bar-body{flex:1;max-height:none;padding:env(safe-area-inset-top,0px) 0 0;overflow:hidden}.app-bar.fullscreen.closing{max-height:calc(var(--app-bar-height) + env(safe-area-inset-bottom,0px));height:auto}.app-bar.expanded.fullscreen.closing{max-height:var(--drawer-max-height);height:auto;border-radius:var(--radius-xl) var(--radius-xl) 0 0}.app-bar.fullscreen.closing .app-bar-body{opacity:0;transition:opacity var(--ease)}.header-left,.header-right{width:var(--icon-btn-size);display:flex;align-items:center;flex-shrink:0}.header-left{justify-content:flex-start}.header-right{justify-content:flex-end}.header-title{position:absolute;left:50%;transform:translate(-50%);display:inline-block;padding:6px 18px;font-family:var(--font-body);font-weight:700;font-size:var(--text-lg);color:var(--color-brand-cream);z-index:1;line-height:1;white-space:nowrap}.header-title:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:var(--color-brand-orange);transform:skew(-10deg);border-radius:var(--radius-sm);z-index:-1}.header-menu-btn,.header-action-btn{width:var(--icon-btn-size);height:var(--icon-btn-size);border:none;border-radius:var(--radius);background:transparent;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;transition:background var(--ease)}.header-menu-btn:hover,.header-action-btn:hover{background:var(--surface-hover)}.header-menu-btn:active,.header-action-btn:active{transform:scale(.93)}text{font-family:var(--font-body);font-size:var(--text-base);font-weight:600;pointer-events:none}body.poker{background-image:url(/Pattern_St_Patrick.svg)}body.wedding{background-image:url(/Pattern_Wedding.svg)}body.baby{background-image:url(/Pattern_Baby.svg)}#root,#App{height:100%}#App{display:flex;flex-direction:column;padding-bottom:calc(var(--app-bar-height) + env(safe-area-inset-bottom,0px));position:relative}#background-circle{position:relative;background-color:var(--text);border-radius:var(--radius-full);box-shadow:10px 10px 30px;margin-top:-5px}#chartWrapper{flex:0 0 auto;display:flex;justify-content:center}#chart{width:100%;align-self:center;display:grid;grid-template-columns:1fr;grid-template-rows:1fr;justify-items:center}#chart>*{grid-row-start:1;grid-row-end:2;grid-column-start:1;grid-column-end:2}#chart>svg{z-index:var(--z-wheel);animation:wheelFadeIn .4s ease}@keyframes wheelFadeIn{0%{opacity:0}to{opacity:1}}#spin-prompt,#description{flex:0 0 auto;text-align:center;padding-bottom:var(--space-2)}#spin-prompt{position:relative;padding-top:var(--space-8)}#spin-prompt h1,#description{pointer-events:none}.spin-prompt-dismiss{position:absolute;top:var(--space-2);right:var(--space-2);background:none;border:none;color:var(--text);font-size:var(--text-sm);cursor:pointer;opacity:.6;line-height:1;padding:var(--space-1)}.spin-prompt-dismiss:hover{opacity:1}#spin-prompt.hidden,#description.hidden{visibility:hidden}#description{z-index:var(--z-description)}#spin-prompt h1,#description h1{font-family:var(--font-display);font-size:var(--text-display);font-weight:400;-webkit-text-stroke:1.5px black;color:var(--text);text-shadow:2px 2px 0 #000,-1px -1px 0 #000,1px -1px 0 #000,-1px 1px 0 #000;padding:0 var(--space-3);margin:0}#description h1{text-align:center}.drawer-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-overlay);background:var(--shadow-heavy);opacity:0;pointer-events:none;transition:opacity .3s ease}.drawer-overlay.open{opacity:1;pointer-events:auto}.drawer-inner{display:flex;flex-direction:column;gap:var(--space-4)}.drawer-section{display:flex;flex-direction:column;gap:10px}.drawer-section-label{font-family:var(--font-body);font-size:var(--text-xs);font-weight:700;text-transform:uppercase;letter-spacing:1.2px;color:var(--color-brand-teal);padding:0 var(--space-1)}.drawer-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;padding:var(--space-1)}@media(max-width:359px){.drawer-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}.drawer-route-btn{display:flex;flex-direction:column;align-items:center;gap:var(--space-2);width:100%;background:var(--surface);border:1.5px solid rgba(68,96,93,.25);border-radius:var(--radius-lg);padding:var(--space-4) var(--space-2) var(--space-3);cursor:pointer;transition:background var(--ease),transform var(--ease),border-color var(--ease),box-shadow var(--ease);box-shadow:inset 0 1px 0 var(--surface),0 2px 4px var(--shadow)}.drawer-route-btn:hover{background:var(--surface-active);border-color:#fff3;transform:scale(1.04);box-shadow:0 0 0 1px var(--surface-hover),0 4px 12px var(--shadow)}.drawer-route-btn:active{transform:scale(.97)}.drawer-route-btn.active{border:2px solid var(--color-brand-orange);background:var(--surface-active);box-shadow:0 0 0 1px #d94b1833,0 2px 8px var(--shadow)}.drawer-route-btn img{width:60px;height:60px;object-fit:contain;background:#ffffffd9;border-radius:50%;padding:var(--space-1)}.drawer-route-btn span{font-family:var(--font-body);font-size:var(--text-xs);font-weight:700;color:var(--color-brand-cream);text-transform:capitalize;letter-spacing:.3px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wedding #description h1{-webkit-text-stroke:1.5px black;color:#ff6876;text-shadow:2px 2px 0 black,-1px -1px 0 black,1px -1px 0 black,-1px 1px 0 black}.drawer-route-wrapper{position:relative;animation:cardFadeIn .3s ease both}.route-actions{position:absolute;inset:var(--space-1);z-index:1;pointer-events:none}.route-action-btn{position:absolute;width:22px;height:22px;border:1px solid var(--surface-hover);border-radius:var(--radius-full);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background var(--ease),transform var(--ease),opacity var(--ease);opacity:.5;pointer-events:auto}.route-action-btn.edit-btn{top:0;right:0;background:var(--surface-active)}.route-action-btn.delete-btn{bottom:0;right:0;background:var(--color-danger)}.drawer-route-wrapper:hover .route-action-btn{opacity:1}.route-action-btn.edit-btn:hover{background:#ffffff4d;transform:scale(1.15)}.route-action-btn.delete-btn:hover{background:#eb3c3ce6;transform:scale(1.15)}.route-action-btn.confirm-btn{top:0;right:0;background:var(--color-danger);opacity:1}.route-action-btn.confirm-btn:hover{background:#eb3c3ce6;transform:scale(1.15)}.route-action-btn.cancel-btn{bottom:0;right:0;background:var(--surface-active);opacity:1}.route-action-btn.cancel-btn:hover{background:#ffffff4d;transform:scale(1.15)}.route-action-btn:active{transform:scale(.9)}@keyframes cardFadeIn{0%{opacity:0;transform:translateY(var(--space-2))}to{opacity:1;transform:translateY(0)}}@media(min-width:768px){body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:0;background:radial-gradient(ellipse at 50% 40%,rgba(217,75,24,.12) 0%,transparent 50%),radial-gradient(ellipse at 50% 70%,rgba(68,96,93,.09) 0%,transparent 45%)}.app-bar{width:var(--desktop-bar-width);max-width:var(--desktop-bar-width);left:50%;right:auto;transform:translate(-50%);border-radius:var(--radius) var(--radius) 0 0}.drawer-inner{max-width:var(--desktop-bar-width);margin:0 auto}.drawer-grid{gap:14px}.wheel-container{justify-content:flex-start;padding-top:var(--space-6)}#spin-prompt h1,#description h1{font-size:52px}#background-circle{box-shadow:15px 15px 50px #00000059}.wheel-builder{margin-top:var(--space-12)!important;padding:0 var(--space-2) var(--space-2) var(--space-4)!important}}.plus-btn{border-style:dashed;border-color:#44605d59;background:#ffffff0a}.plus-btn:hover{border-color:#44605d99;background:var(--surface-hover)}.plus-btn .plus-icon{font-size:28px;font-weight:300;color:var(--text-muted);line-height:1;display:flex;align-items:center;justify-content:center;width:60px;height:60px}.toast{position:fixed;bottom:80px;left:50%;transform:translate(-50%);background:#0d0d0de6;color:var(--color-brand-cream);padding:10px var(--space-6);border-radius:20px;border:1px solid var(--border);font-family:var(--font-body);font-size:var(--text-sm);z-index:var(--z-toast);pointer-events:none;animation:toastFade 2s ease forwards}@keyframes toastFade{0%,70%{opacity:1}to{opacity:0}}.winner-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-winner);background:var(--shadow-heavy);display:flex;align-items:center;justify-content:center;animation:overlayFadeIn .3s ease}@keyframes overlayFadeIn{0%{opacity:0}to{opacity:1}}.winner-modal{background:linear-gradient(to bottom,var(--gradient-teal),var(--color-bg));background-color:var(--color-bg);border:1px solid var(--border);border-radius:var(--radius-xl);padding:var(--space-8) var(--space-10);text-align:center;display:flex;flex-direction:column;gap:var(--space-3);min-width:240px;max-width:320px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 16px 48px var(--shadow-heavy);animation:modalPopIn .3s cubic-bezier(.34,1.56,.64,1)}@keyframes modalPopIn{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}.winner-label{font-family:var(--font-body);font-weight:800;font-size:26px;color:var(--text);line-height:1.2}.winner-description{font-family:var(--font-body);font-size:var(--text-sm);color:var(--text-muted)}.winner-btn{margin-top:var(--space-2);background:var(--color-brand-orange);color:var(--color-brand-cream);border:none;border-radius:var(--radius);padding:var(--space-3) var(--space-6);font-family:var(--font-body);font-size:var(--text-base);font-weight:700;cursor:pointer;transition:transform var(--ease),opacity var(--ease)}.winner-btn:hover{opacity:.9;transform:scale(1.03)}.winner-btn:active{transform:scale(.96)}.wheel-container{flex:1 1 auto;display:flex;flex-direction:column;justify-content:flex-start;align-items:center;min-height:0;overflow:hidden}.toggle-row{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;transition:background var(--ease)}.toggle-row:hover{background:var(--surface-hover)}.toggle-label{font-family:var(--font-body);font-size:var(--text-sm);color:var(--text-muted)}.toggle-switch{width:var(--icon-btn-size);height:var(--space-6);background:var(--surface-active);border-radius:var(--radius);position:relative;transition:background .25s ease;flex-shrink:0}.toggle-switch.active{background:var(--color-success)}.toggle-knob{width:var(--space-5);height:var(--space-5);background:var(--text);border-radius:var(--radius-full);position:absolute;top:2px;left:2px;transition:transform .25s ease;box-shadow:0 1px 3px var(--shadow)}.toggle-switch.active .toggle-knob{transform:translate(var(--space-5))}.wheel-builder-wrapper{display:flex;flex-direction:column;height:100%}.wheel-builder{display:flex;flex-direction:column;padding:var(--space-2) var(--space-2) 14px;gap:14px;max-width:var(--builder-max-width);margin:0 auto;width:100%;box-sizing:border-box;flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:var(--surface-active) transparent}.wheel-builder::-webkit-scrollbar{width:var(--radius-sm)}.wheel-builder::-webkit-scrollbar-track{background:transparent}.wheel-builder::-webkit-scrollbar-thumb{background:var(--surface-active);border-radius:var(--radius-sm)}.wheel-builder::-webkit-scrollbar-thumb:hover{background:#ffffff4d}.builder-save-footer{flex-shrink:0;display:flex;gap:10px;padding:var(--space-3) var(--space-2) calc(var(--space-3) + env(safe-area-inset-bottom,0px));max-width:var(--builder-max-width);margin:0 auto;width:100%;box-sizing:border-box;background:linear-gradient(to bottom,transparent,var(--color-bg) var(--space-2))}.builder-cancel-btn{flex:1;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px var(--space-5);color:var(--color-brand-cream);font-family:var(--font-body);font-size:var(--text-base);font-weight:600;cursor:pointer;transition:background var(--ease),transform var(--ease)}.builder-cancel-btn:hover{background:var(--surface-active)}.builder-cancel-btn:active{transform:scale(.97)}.builder-label{font-family:var(--font-body);font-size:13px;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;margin-top:var(--space-1)}.builder-input{background:var(--surface-hover);border:1px solid var(--border);border-radius:var(--radius);padding:10px 14px;color:var(--text);font-family:var(--font-body);font-size:var(--text-base);outline:none;box-sizing:border-box}.builder-input::placeholder{color:var(--text-dim)}.builder-input:focus{border-color:var(--color-brand-orange);background:var(--surface-active)}.builder-input.input-error{border-color:var(--color-danger);background:#eb3c3c14}.builder-slug{font-family:var(--font-body);font-size:var(--text-xs);color:var(--text-dim);margin-top:-6px}.piece-row{display:flex;gap:var(--space-2);align-items:center}.piece-label,.piece-description{flex:1;min-width:0}.remove-piece-btn{background:#eb3c3c;border:none;color:var(--text);font-size:var(--text-lg);width:var(--space-8);height:var(--space-8);border-radius:var(--radius);cursor:pointer;flex-shrink:0}.remove-piece-btn:disabled{opacity:.2;cursor:default}.remove-piece-btn:not(:disabled):hover{background:#eb3c3cbf}.add-piece-btn{background:var(--surface);border:1px dashed rgba(255,255,255,.25);border-radius:var(--radius);padding:10px;color:var(--text-muted);font-family:var(--font-body);font-size:var(--text-sm);cursor:pointer;display:flex;align-items:center;justify-content:center;gap:6px}.add-piece-btn:hover{background:var(--surface-active);color:var(--text)}.palette-dropdown{position:relative;outline:none}.palette-trigger{display:flex;align-items:center;gap:var(--space-3);width:100%;background:var(--surface);border:2px solid transparent;border-radius:var(--radius);padding:var(--space-2) var(--space-3);cursor:pointer;transition:border-color var(--ease),background var(--ease)}.palette-trigger:hover{background:var(--surface-hover)}.palette-caret{margin-left:auto;opacity:.5;transition:transform var(--ease);flex-shrink:0;color:var(--text)}.palette-caret.open{transform:rotate(180deg)}.palette-dropdown-menu{position:absolute;top:calc(100% + var(--space-1));left:0;right:0;background:var(--color-bg);border:1px solid var(--surface-hover);border-radius:var(--radius);overflow:hidden;z-index:var(--z-wheel)}.palette-option{display:flex;align-items:center;gap:var(--space-3);width:100%;background:transparent;border:none;border-bottom:1px solid var(--surface);padding:var(--space-2) var(--space-3);cursor:pointer;transition:background .1s ease}.palette-option:last-child{border-bottom:none}.palette-option.selected,.palette-option:hover{background:var(--surface-hover)}.palette-swatches{display:flex;gap:3px}.swatch{width:18px;height:18px;border-radius:var(--radius-sm);display:inline-block}.palette-name{font-family:var(--font-body);font-size:13px;color:var(--text-muted)}.color-swatch-row{display:flex;gap:var(--space-2);flex-wrap:wrap}.color-swatch{width:36px;height:36px;border-radius:var(--radius-full);border:2px solid transparent;cursor:pointer;transition:border-color var(--ease),transform var(--ease)}.color-swatch.selected{border-color:var(--text);transform:scale(1.15)}.color-swatch:hover{border-color:var(--text-muted)}.pattern-picker,.craig-picker{display:flex;gap:10px;flex-wrap:wrap}.pattern-picker,.craig-picker{display:grid;grid-template-columns:repeat(5,1fr)}.picker-option{display:flex;flex-direction:column;align-items:center;gap:var(--space-1);background:var(--surface);border:2px solid transparent;border-radius:var(--radius);padding:var(--space-2);cursor:pointer;transition:border-color var(--ease);font-family:var(--font-body);font-size:var(--text-xs);color:var(--text-muted)}.picker-option.selected{border-color:var(--text)}.picker-option:hover{background:var(--surface-hover)}.picker-thumb{width:56px;height:56px;border-radius:var(--radius);background-color:var(--surface-hover)}.picker-thumb.no-background{display:flex;flex-direction:column;justify-content:center}.picker-thumb.no-background span{color:var(--color-bg);font-family:var(--font-body);font-size:var(--text-xs)}.none-thumb{display:flex;align-items:center;justify-content:center;font-family:var(--font-body);font-size:var(--text-xs);color:var(--text-dim)}.craig-thumb{width:56px;height:56px;object-fit:contain}.craig-picker .picker-option{background:#ffffffd9}.craig-picker .picker-option:hover{background:#fff}.craig-picker .picker-option.selected{background:#fff;border-color:var(--color-brand-orange)}.builder-color-input{width:56px;height:40px;border:2px solid var(--border);border-radius:var(--radius);background:none;cursor:pointer;padding:2px}.builder-save-btn{flex:1;background:var(--color-brand-orange);border:none;border-radius:var(--radius);padding:14px;font-family:var(--font-body);font-size:var(--text-base);font-weight:700;color:var(--color-brand-cream);cursor:pointer;transition:transform var(--ease),opacity var(--ease)}.builder-save-btn:hover{background:var(--color-brand-orange-dark);transform:scale(1.02)}.builder-save-btn:active{transform:scale(.97)}@media(max-width:480px){.pattern-picker,.craig-picker{grid-template-columns:repeat(4,1fr)}.wheel-container{padding-top:8vh}}
