.no-permission-page{justify-content:center;align-items:center;min-height:calc(100vh - 200px);padding:2rem;display:flex}.no-permission-card{background:var(--color-bg-card);text-align:center;border:1px solid var(--color-border);width:100%;max-width:480px;box-shadow:var(--shadow-lg);border-radius:16px;padding:2.5rem}.no-permission-icon{background:linear-gradient(135deg, var(--color-error) 0%, #dc2626 100%);border-radius:50%;justify-content:center;align-items:center;width:80px;height:80px;margin:0 auto 1.5rem;display:flex}.no-permission-icon svg{width:48px;height:48px;stroke:var(--color-text-inverse)}.no-permission-card h1{color:var(--color-text-primary);margin:0 0 .75rem;font-size:1.75rem;font-weight:700}.no-permission-message{color:var(--color-text-secondary);margin:0 0 1.5rem;font-size:1rem;line-height:1.6}.required-role-info{background:var(--color-bg-secondary);border-radius:8px;justify-content:center;align-items:center;gap:.75rem;margin-bottom:1.5rem;padding:1rem;display:flex}.role-label{color:var(--color-text-secondary);font-size:.875rem}.role-badge{background:linear-gradient(135deg, var(--color-purple) 0%, #764ba2 100%);color:var(--color-text-inverse);font-size:.875rem;font-weight:600;font-family:var(--font-mono);border-radius:6px;padding:.375rem .75rem}.no-permission-help{text-align:left;background:var(--color-bg-secondary);border-left:3px solid var(--color-purple);border-radius:8px;margin-bottom:1.5rem;padding:1.25rem}.no-permission-help h3{color:var(--color-text-primary);margin:0 0 .75rem;font-size:.875rem;font-weight:600}.no-permission-help ul{color:var(--color-text-secondary);margin:0;padding-left:1.25rem;font-size:.875rem;line-height:1.8}.no-permission-help li{margin-bottom:.25rem}.no-permission-actions{justify-content:center;gap:1rem;display:flex}.no-permission-actions .btn-primary,.no-permission-actions .btn-secondary{border-radius:8px;padding:.75rem 1.5rem;font-size:.9375rem;font-weight:600;text-decoration:none;transition:all .2s}.no-permission-actions .btn-primary{background:linear-gradient(135deg, var(--color-purple) 0%, #764ba2 100%);color:var(--color-text-inverse);border:none}.no-permission-actions .btn-primary:hover{box-shadow:0 4px 12px var(--color-purple-glow);transform:translateY(-2px)}.no-permission-actions .btn-secondary{color:var(--color-text-secondary);border:1px solid var(--color-border);background:0 0}.no-permission-actions .btn-secondary:hover{background:var(--color-bg-tertiary);color:var(--color-text-primary)}@media (max-width:480px){.no-permission-card{padding:1.5rem}.no-permission-actions{flex-direction:column}.no-permission-actions .btn-primary,.no-permission-actions .btn-secondary{text-align:center;width:100%}}.full-page-loader{min-height:calc(100vh - var(--layout-offset,0px));justify-content:center;align-items:center;gap:var(--space-4);text-align:center;color:var(--color-text-secondary);flex-direction:column;display:flex}.full-page-loader__text{font-size:.95rem}.wheel-and-hamster{--dur:1s;width:12em;height:12em;font-size:clamp(10px,1.8vw,14px);position:relative}.wheel,.hamster,.hamster div,.spoke{position:absolute}.wheel,.spoke{border-radius:50%;width:100%;height:100%;top:0;left:0}.wheel{z-index:2;background:radial-gradient(100% 100%,#9990 47.8%,#999 48%)}.hamster{animation:hamster var(--dur) ease-in-out infinite;transform-origin:50% 0;z-index:1;width:7em;height:3.75em;top:50%;left:calc(50% - 3.5em);transform:rotate(4deg)translate(-.8em,1.85em)}.hamster__head{animation:hamsterHead var(--dur) ease-in-out infinite;transform-origin:100%;background:#f48c25;border-radius:70% 30% 0 100%/40% 25% 25% 60%;width:2.75em;height:2.5em;top:0;left:-2em;box-shadow:inset 0 -.25em #facc9e,inset .75em -1.55em #fce6cf}.hamster__ear{animation:hamsterEar var(--dur) ease-in-out infinite;transform-origin:50% 75%;background:#fbb6b6;border-radius:50%;width:.75em;height:.75em;top:-.25em;right:-.25em;box-shadow:inset -.25em 0 #f48c25}.hamster__eye{animation:hamsterEye var(--dur) linear infinite;background-color:#000;border-radius:50%;width:.5em;height:.5em;top:.375em;left:1.25em}.hamster__nose{background:#f98686;border-radius:35% 65% 85% 15%/70% 50% 50% 30%;width:.2em;height:.25em;top:.75em;left:0}.hamster__body{animation:hamsterBody var(--dur) ease-in-out infinite;transform-origin:17%;width:4.5em;height:3em;transform-style:preserve-3d;background:#fce6cf;border-radius:50% 30%/15% 60% 40% 40%;top:.25em;left:2em;box-shadow:inset .1em .75em #f48c25,inset .15em -.5em #facc9e}.hamster__limb--fr,.hamster__limb--fl{clip-path:polygon(0 0,100% 0,70% 80%,60% 100%,0% 100%,40% 80%);transform-origin:50% 0;width:1em;height:1.5em;top:2em;left:.5em}.hamster__limb--fr{animation:hamsterFRLimb var(--dur) linear infinite;background:linear-gradient(#facc9e 80%,#f98686 80%);transform:rotate(15deg)translateZ(-1px)}.hamster__limb--fl{animation:hamsterFLLimb var(--dur) linear infinite;background:linear-gradient(#fce6cf 80%,#fbb6b6 80%);transform:rotate(15deg)}.hamster__limb--br,.hamster__limb--bl{clip-path:polygon(0 0,100% 0,100% 30%,70% 90%,70% 100%,30% 100%,40% 90%,0 30%);transform-origin:50% 30%;border-radius:.75em .75em 0 0;width:1.5em;height:2.5em;top:1em;left:2.8em}.hamster__limb--br{animation:hamsterBRLimb var(--dur) linear infinite;background:linear-gradient(#facc9e 90%,#f98686 90%);transform:rotate(-25deg)translateZ(-1px)}.hamster__limb--bl{animation:hamsterBLLimb var(--dur) linear infinite;background:linear-gradient(#fce6cf 90%,#fbb6b6 90%);transform:rotate(-25deg)}.hamster__tail{animation:hamsterTail var(--dur) linear infinite;transform-origin:.25em .25em;background:#fbb6b6;border-radius:.25em 50% 50% .25em;width:1em;height:.5em;top:1.5em;right:-.5em;transform:rotate(30deg)translateZ(-1px);box-shadow:inset 0 -.2em #f98686}.spoke{animation:spoke var(--dur) linear infinite;background:radial-gradient(100% 100%,#999 4.8%,#9990 5%),linear-gradient(#8c8c8c00 46.9%,#a6a6a6 47% 52.9%,#a6a6a600 53%) 50%/99% 99% no-repeat}@keyframes hamster{0%,to{transform:rotate(4deg)translate(-.8em,1.85em)}50%{transform:rotate(0)translate(-.8em,1.85em)}}@keyframes hamsterHead{0%,25%,50%,75%,to{transform:rotate(0)}12.5%,37.5%,62.5%,87.5%{transform:rotate(8deg)}}@keyframes hamsterEye{0%,90%,to{transform:scaleY(1)}95%{transform:scaleY(0)}}@keyframes hamsterEar{0%,25%,50%,75%,to{transform:rotate(0)}12.5%,37.5%,62.5%,87.5%{transform:rotate(12deg)}}@keyframes hamsterBody{0%,25%,50%,75%,to{transform:rotate(0)}12.5%,37.5%,62.5%,87.5%{transform:rotate(-2deg)}}@keyframes hamsterFRLimb{0%,25%,50%,75%,to{transform:rotate(50deg)translateZ(-1px)}12.5%,37.5%,62.5%,87.5%{transform:rotate(-30deg)translateZ(-1px)}}@keyframes hamsterFLLimb{0%,25%,50%,75%,to{transform:rotate(-30deg)}12.5%,37.5%,62.5%,87.5%{transform:rotate(50deg)}}@keyframes hamsterBRLimb{0%,25%,50%,75%,to{transform:rotate(-60deg)translateZ(-1px)}12.5%,37.5%,62.5%,87.5%{transform:rotate(20deg)translateZ(-1px)}}@keyframes hamsterBLLimb{0%,25%,50%,75%,to{transform:rotate(20deg)}12.5%,37.5%,62.5%,87.5%{transform:rotate(-60deg)}}@keyframes hamsterTail{0%,25%,50%,75%,to{transform:rotate(30deg)translateZ(-1px)}12.5%,37.5%,62.5%,87.5%{transform:rotate(10deg)translateZ(-1px)}}@keyframes spoke{0%{transform:rotate(0)}to{transform:rotate(-1turn)}}.loading-screen{justify-content:center;align-items:center;gap:var(--space-4);min-height:100vh;color:var(--color-text-secondary);flex-direction:column;display:flex}.loading-spinner{border:3px solid var(--color-border);border-top-color:var(--color-accent);border-radius:50%;width:40px;height:40px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.page-enter{opacity:0;transform:translateY(10px)}.page-enter-active{opacity:1;transition:opacity .3s,transform .3s;transform:translateY(0)}:root,[data-theme=dark]{--color-bg-primary:#08080a;--color-bg-secondary:#101116;--color-bg-tertiary:#171922;--color-bg-card:#14151c;--color-bg-card-hover:#1b1d27;--color-border:#ffffff1a;--color-border-hover:#fff3;--color-text-primary:#fafafa;--color-text-secondary:#a1a1aa;--color-text-muted:#71717a;--color-text-inverse:#18181b;--color-accent:#ff5b68;--color-accent-hover:#ff725f;--color-accent-muted:#ff5b6826;--color-accent-glow:#ff5b685c;--color-secondary:#ffcb31;--color-secondary-muted:#ffcb3126;--color-success:#22c987;--color-success-muted:#22c98726;--color-error:#ef4444;--color-error-muted:#ef44441f;--color-warning:#ffbd3d;--color-glass-bg:#08080ae6;--color-glass-card:#14151cdb;--color-overlay:#000000b3;--color-spinner-track:#ffffff4d;--color-spinner-color:white;--color-purple:#8a5cff;--color-purple-hover:#7b4dff;--color-purple-glow:#8a5cff57;--color-teal:#27d9d2;--color-teal-muted:#27d9d226;--color-teal-glow:#27d9d257;--color-pink:#ff4fd8;--color-pink-muted:#ff4fd824;--color-primary:var(--color-purple);--color-text:var(--color-text-primary);--game-stage-bg:#08080a;--game-panel-bg:#12131ae0;--game-panel-bg-strong:#0c0d12f0;--game-panel-border:#ffffff1f;--game-panel-border-hot:#ff5b68b8;--game-grid-line:#ffffff09;--game-neon-coral:0 0 28px #ff5b6847;--game-neon-teal:0 0 28px #27d9d242;--game-neon-gold:0 0 28px #ffcb313d;--font-sans:"Outfit", system-ui, sans-serif;--font-mono:"JetBrains Mono", monospace;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;--space-12:3rem;--space-16:4rem;--radius-sm:.375rem;--radius-md:.5rem;--radius-lg:.75rem;--radius-xl:1rem;--radius-2xl:1.5rem;--shadow-sm:0 1px 2px #0000004d;--shadow-md:0 8px 22px #00000059;--shadow-lg:0 18px 40px #00000073;--shadow-glow:0 0 40px var(--color-accent-glow);--transition-fast:.15s ease;--transition-normal:.25s ease;--transition-slow:.35s ease}[data-theme=light]{--color-bg-primary:#f5f5f4;--color-bg-secondary:#e7e5e4;--color-bg-tertiary:#d6d3d1;--color-bg-card:#fff;--color-bg-card-hover:#fafaf9;--color-border:#d4d4d8;--color-border-hover:#a1a1aa;--color-text-primary:#18181b;--color-text-secondary:#52525b;--color-text-muted:#71717a;--color-text-inverse:#fafafa;--color-accent:#e85d2a;--color-accent-hover:#d4522a;--color-accent-muted:#e85d2a1f;--color-accent-glow:#e85d2a40;--color-secondary:#d4a017;--color-secondary-muted:#d4a0171f;--color-success:#16a34a;--color-success-muted:#16a34a1f;--color-error:#dc2626;--color-error-muted:#dc26261a;--color-warning:#ca8a04;--color-glass-bg:#f5f5f4e0;--color-glass-card:#ffffffe6;--color-overlay:#0006;--color-spinner-track:#00000026;--color-spinner-color:var(--color-text-primary);--color-purple:#7c3aed;--color-purple-hover:#6d28d9;--color-purple-glow:#8b5cf64d;--shadow-sm:0 1px 2px #0000000f;--shadow-md:0 4px 6px #00000014;--shadow-lg:0 10px 15px #0000001a;--shadow-glow:0 0 40px var(--color-accent-glow)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px}body{font-family:var(--font-sans);background-color:var(--game-stage-bg,var(--color-bg-primary));color:var(--color-text-primary);min-height:100vh;line-height:1.6}body:before{content:"";background:linear-gradient(#ffffff08 1px, transparent 1px), linear-gradient(90deg, #ffffff08 1px, transparent 1px), linear-gradient(115deg, #ff5b6821, #08080a00 42%), linear-gradient(245deg, #27d9d21c, #08080a00 38%), var(--game-stage-bg,var(--color-bg-primary));pointer-events:none;z-index:-1;background-size:48px 48px,48px 48px,100% 100%,100% 100%,100% 100%;position:fixed;inset:0}#root{flex-direction:column;min-height:100vh;display:flex}a{color:var(--color-accent);transition:color var(--transition-fast);text-decoration:none}a:hover{color:var(--color-accent-hover)}button{cursor:pointer;font-family:inherit}input,textarea,select{font-family:inherit}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--color-bg-secondary)}::-webkit-scrollbar-thumb{background:var(--color-border-hover);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--color-text-muted)}.container{width:100%;max-width:1280px;padding:0 var(--space-6);margin:0 auto}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}::selection{background:var(--color-accent-muted);color:var(--color-text-primary)}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}
