/*! Style Guide: see project_design_system.md (Claude memory) and Admin > Instructions before adding new button styles or design tokens. */:root{--radius-sm:8px;--radius-md:12px;--radius-lg:20px;--radius-pill:9999px;--text-xs:11px;--text-sm:13px;--text-base:14px;--text-lg:16px;--text-xl:20px;--text-2xl:24px;--text-3xl:32px;--ease:cubic-bezier(.25,.86,.44,1);--dur-fast:.15s;--dur-base:.25s;--dur-slow:.4s;--btn-h:44px;--btn-h-sm:36px;--btn-h-xs:28px;--btn-h-hero:48px;--btn-primary-bg:var(--neon-green,#00ff88);--btn-primary-fg:#0a0c10;--btn-secondary-color:var(--neon-blue,#00e5ff);--btn-destructive-color:#ff6b6b;--btn-destructive-bg:rgba(255,60,60,.1);--btn-destructive-border:rgba(255,60,60,.35);--btn-ghost-color:var(--text-muted,#9aa0a6);--btn-ghost-border:var(--border-glass,rgba(255,255,255,.1));--focus-ring-color:var(--neon-blue,#00e5ff)}#spot-drawer.park-drawer--active{--btn-secondary-color:var(--neon-orange)}#spot-drawer.shop-drawer--active{--btn-secondary-color:var(--neon-pink)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:var(--btn-h);padding:0 var(--text-lg);border-radius:var(--radius-md);font-family:var(--font-heading);font-size:var(--text-base);font-weight:700;line-height:1;letter-spacing:.2px;cursor:pointer;border:none;background:transparent;color:inherit;text-decoration:none;transition:background var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease),filter var(--dur-fast) var(--ease),opacity var(--dur-fast) var(--ease);user-select:none;-webkit-tap-highlight-color:transparent;white-space:nowrap}.btn:active:not(:disabled){transform:scale(.97);filter:brightness(.95)}.btn:disabled{opacity:.4;cursor:not-allowed;transform:none!important;filter:none!important}.btn:focus-visible{outline:2px solid var(--focus-ring-color);outline-offset:2px}.btn--hero{background:linear-gradient(45deg,#00c853,#64dd17);color:#000;min-height:var(--btn-h-hero);font-size:var(--text-lg);font-weight:800;padding:0 var(--text-xl)}.btn--hero:hover:not(:disabled){filter:brightness(1.08)}.btn--primary{background:var(--btn-primary-bg);color:var(--btn-primary-fg)}.btn--primary:hover:not(:disabled){filter:brightness(1.05)}.btn--secondary{background:transparent;border:2px solid var(--btn-secondary-color);color:var(--btn-secondary-color);min-height:calc(var(--btn-h) - 0px)}.btn--secondary:hover:not(:disabled){background:rgb(from var(--btn-secondary-color) r g b / .08)}@supports not (color: rgb(from black r g b / .08)){.btn--secondary:hover:not(:disabled){background:#00e5ff14}}.btn--ghost{background:transparent;border:1px solid var(--btn-ghost-border);color:var(--btn-ghost-color)}.btn--ghost:hover:not(:disabled){background:#ffffff0a;border-color:var(--text-secondary, #c5c8ce);color:var(--text-main)}.btn--destructive{background:var(--btn-destructive-bg);border:1px solid var(--btn-destructive-border);color:var(--btn-destructive-color)}.btn--destructive:hover:not(:disabled){background:#ff3c3c33;border-color:#ff3c3c99}.btn--sm{min-height:var(--btn-h-sm);padding:0 var(--text-sm);font-size:var(--text-sm)}.btn--xs{min-height:var(--btn-h-xs);padding:0 10px;font-size:var(--text-xs);font-weight:600}.btn--full{width:100%}.btn-icon{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--radius-pill);background:transparent;border:none;color:var(--text-muted);cursor:pointer;line-height:1;padding:0;flex-shrink:0;transition:background var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease);-webkit-tap-highlight-color:transparent}.btn-icon:hover:not(:disabled){background:#ffffff14;color:var(--text-main)}.btn-icon:active:not(:disabled){transform:scale(.92)}.btn-icon:focus-visible{outline:2px solid var(--focus-ring-color);outline-offset:2px}.btn-icon:disabled{opacity:.4;cursor:not-allowed}.btn-icon--sm{width:32px;height:32px;font-size:14px}.btn-icon--lg{width:48px;height:48px;font-size:20px}.btn-spinner{width:14px;height:14px;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;animation:btn-spin .6s linear infinite;flex-shrink:0}@keyframes btn-spin{to{transform:rotate(360deg)}}.label-required{color:#ff6b6b;font-size:.9em;font-weight:700;margin-left:2px}.label-optional{color:var(--text-muted,#9aa0a6);font-size:.85em;font-weight:400;margin-left:4px}.label-optional:after{content:"(opt.)"}@media (min-width:768px){.label-optional:after{content:"(optional)"}}.toggle-btn{flex:1;padding:9px;border-radius:8px;border:1px solid var(--border-glass);background:transparent;color:var(--text-muted);font-family:var(--font-body);font-size:13px;cursor:pointer;font-weight:600;transition:border-color .15s,background .15s,color .15s}.toggle-btn.active{border-color:var(--neon-blue);background:#00e5ff26;color:var(--neon-blue)}:root{--grip-grain-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.6' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0.08 0 0 0 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");--plywood-grain-image:url(/img/plywood-grain.png)}body.grip-grain{background-image:var(--grip-grain-image);background-repeat:repeat}.grip-grain-surface{position:relative;isolation:isolate}.grip-grain-surface:before{content:"";position:absolute;inset:0;pointer-events:none;z-index:0;background-image:var(--grip-grain-image);background-repeat:repeat;opacity:.5;border-radius:inherit}.grip-grain-surface>*{position:relative;z-index:1}.keyboard-aware{transition:transform .3s cubic-bezier(.25,.86,.44,1),max-height .3s cubic-bezier(.25,.86,.44,1),min-height .3s cubic-bezier(.25,.86,.44,1),height .3s cubic-bezier(.25,.86,.44,1)}.topbar-login-btn{background:transparent;border:2px solid var(--neon-green,#00ff88);color:var(--neon-green,#00ff88);border-radius:20px;padding:8px 16px;font-size:14px;font-weight:600;font-family:inherit;cursor:pointer;transition:background .15s,box-shadow .15s}.topbar-login-btn:hover{background:#00ff8814}.topbar-profile-btn{width:36px;height:36px;min-width:36px;aspect-ratio:1/1;border-radius:50%;border:2px solid var(--neon-blue);box-shadow:0 0 8px var(--neon-blue);background:none;padding:0;cursor:pointer;overflow:hidden;flex-shrink:0;transition:transform .2s,box-shadow .2s}.topbar-profile-btn:hover{transform:scale(1.07);box-shadow:0 0 14px var(--neon-blue)}.topbar-profile-btn img{width:100%;height:100%;object-fit:cover;display:block;border-radius:50%}.empty-state{color:var(--text-muted);text-align:center;padding:48px;font-size:14px}.modal-close-btn{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--radius-pill);background:transparent;border:none;color:var(--text-muted);cursor:pointer;line-height:1;padding:0;flex-shrink:0;font-size:20px;transition:background var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease);-webkit-tap-highlight-color:transparent}.modal-close-btn:hover:not(:disabled){background:#ffffff14;color:var(--text-main)}.modal-close-btn:active:not(:disabled){transform:scale(.92)}.modal-close-btn:focus-visible{outline:2px solid var(--focus-ring-color);outline-offset:2px}.form-input{background:var(--bg-raised,#1a1a24);border:1px solid var(--border,rgba(255,255,255,.08));color:var(--text-primary,var(--text-main,#f0f0f5));padding:9px 12px;border-radius:var(--radius-sm,8px);font-size:13px;font-family:inherit;transition:border-color .2s;width:100%}.form-input:focus{outline:none;border-color:var(--accent,var(--neon-blue,#00e5ff))}.form-error{background:#ff00001a;border:1px solid rgba(255,0,0,.3);color:#ff6b6b;padding:8px 12px;border-radius:var(--radius-sm,8px);font-size:12px}.modal{position:fixed;top:0;left:0;width:100vw;height:100dvh;background:#000000bf;z-index:var(--z-modal,1000);display:flex;justify-content:center;align-items:center;opacity:0;pointer-events:none;transition:opacity .3s ease}.modal.open{opacity:1;pointer-events:auto}.modal-content{width:90%;max-width:400px;max-height:calc(90dvh - 20px);overflow-y:auto;padding:30px;border-radius:20px;transform:scale(.9);transition:transform .3s cubic-bezier(.175,.885,.32,1.275),max-width .4s ease;background:var(--bg-dark,var(--bg-surface,#13131a));border:1px solid var(--border-glass,rgba(255,255,255,.1));color:var(--text-main,var(--text-primary,#f0f0f5))}.modal.open .modal-content{transform:scale(1)}.brand-swap{position:relative;display:inline-block;vertical-align:baseline;line-height:1}.brand-swap>span{display:inline-block;transition:transform .45s cubic-bezier(.7,0,.2,1),opacity .35s ease;will-change:transform,opacity}.brand-swap .brand-word{color:inherit}.brand-swap .brand-beta{position:absolute;left:0;top:0;color:#ff007f;transform:translateY(110%);opacity:0;white-space:nowrap}.brand-swap.beta-swapped .brand-word{transform:translateY(-110%);opacity:0}.brand-swap.beta-swapped .brand-beta{transform:translateY(0);opacity:1}
