:root{--color-background:#170047;--color-accent-primary:#4f00ff;--color-accent-secondary:#6f47ff;--color-accent-tertiary:#ffcfb8;--color-text-primary:#fff;--color-text-secondary:#ffffff80;--color-text-heading-alt:#ceb8ff;--color-heading-highlight:#eee6ff;--color-border:#ffffff40;--color-surface-hover-strong:#4f00ff4d;--color-tag-fill:#ffcfb833;--font-heading:"Unbounded", system-ui, sans-serif;--font-body:"Figtree", system-ui, sans-serif;--container-max:1536px;--space-page-margin:24px;--space-container-padding:28px;--radius-sm:3px;--radius-base:.25rem;--ease-standard:cubic-bezier(.4, 0, .2, 1);--transition-fast:all .15s ease}*,:before,:after{box-sizing:border-box;border:0 solid;margin:0;padding:0}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;line-height:1.5}body{background:var(--color-background);color:var(--color-text-primary);min-height:100vh;font-family:var(--font-body);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}svg{display:block}[hidden]{display:none!important}a{color:inherit;text-decoration:none}.page-wrapper{background:var(--color-background);z-index:0;flex-direction:column;min-height:100vh;display:flex;position:relative}.bg-columns{z-index:-1;pointer-events:none;padding-left:var(--space-page-margin);padding-right:var(--space-page-margin);position:absolute;inset:69px 0 0}.bg-columns-inner{max-width:var(--container-max);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 1' preserveAspectRatio='none'%3E%3Cpath d='M1 0V1M2 0V1M3 0V1' stroke='white' stroke-opacity='0.1' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3C/svg%3E");background-repeat:no-repeat;background-size:100% 100%;height:100%;margin-left:auto;margin-right:auto}.nav{border-bottom:1px solid var(--color-border);width:100%;padding-left:var(--space-page-margin);padding-right:var(--space-page-margin);z-index:1;position:relative}.nav-inner{border-left:1px solid var(--color-border);border-right:1px solid var(--color-border);max-width:var(--container-max);justify-content:space-between;align-items:center;height:68px;margin-left:auto;margin-right:auto;padding-left:.75rem;padding-right:.75rem;display:flex}.main-wrapper{flex-direction:column;flex:1;width:100%;display:flex}.hero{border-bottom:1px solid var(--color-border);width:100%;padding-left:var(--space-page-margin);padding-right:var(--space-page-margin);flex:1;display:flex;position:relative}.hero-glow{pointer-events:none;background-image:radial-gradient(50% 100% at 0 0,#ffcdb380,#c89d9b60,#906c8440,#593c6c20,#210b5400),radial-gradient(50% 100% at 100% 0,#4f00ff,#3806aa80,#210b5400);height:calc(100% + 69px);position:absolute;top:-69px;left:0;right:0}.hero-inner{border-left:1px solid var(--color-border);border-right:1px solid var(--color-border);width:100%;max-width:var(--container-max);min-height:70vh;padding:var(--space-container-padding);z-index:1;flex-direction:column;justify-content:center;margin-left:auto;margin-right:auto;display:flex;position:relative}.hero-message{flex-direction:column;gap:2.25rem;display:flex}.hero-tag{border:1px solid var(--color-accent-tertiary);color:var(--color-accent-tertiary);background:var(--color-tag-fill);border-radius:var(--radius-sm);align-self:flex-start;padding:.375rem .5rem;font-size:12px;font-weight:500;line-height:1;display:inline-block}.hero-headline{font-family:var(--font-heading);color:var(--color-accent-tertiary);letter-spacing:-.01em;max-width:14ch;font-size:clamp(2rem,5.2vw,4.75rem);font-weight:600;line-height:1.1}.hero-headline-highlight{color:var(--color-heading-highlight)}.hero-subheadline{color:var(--color-text-primary);max-width:456px;font-size:18px;line-height:1.5}.hero-cta-row{flex-wrap:wrap;gap:.75rem;display:flex}.button{height:2.75rem;color:var(--color-text-primary);background:var(--color-accent-primary);border:1px solid var(--color-accent-primary);border-radius:var(--radius-base);transition:var(--transition-fast);align-items:center;gap:.5rem;padding:0 .75rem;font-size:1rem;font-weight:500;display:flex}.button:hover{border-color:var(--color-accent-secondary);box-shadow:0 0 16px 2px #6f47ff66}.button:active{background:var(--color-accent-secondary);border-color:var(--color-accent-secondary)}.button-secondary{height:2.75rem;color:var(--color-text-primary);background:var(--color-background);border:1px solid var(--color-border);border-radius:var(--radius-base);transition:var(--transition-fast);align-items:center;gap:.5rem;padding:0 .75rem;font-size:1rem;font-weight:500;display:flex}.button-secondary:hover{border-color:var(--color-accent-secondary);background-image:linear-gradient(var(--color-surface-hover-strong), var(--color-surface-hover-strong));box-shadow:0 0 8px 2px #6f47ff4d}.button-secondary:active{background:var(--color-accent-secondary);border-color:var(--color-accent-secondary)}.game-view{grid-template-columns:minmax(0,1fr);align-items:center;gap:2.5rem;display:grid}.game-actions{flex-wrap:wrap;gap:.75rem;display:flex}.game-panel{flex-direction:column;align-items:flex-start;gap:1.5rem;max-width:520px;display:flex}.game-tag{border:1px solid var(--color-accent-tertiary);color:var(--color-accent-tertiary);background:var(--color-tag-fill);border-radius:var(--radius-sm);padding:.375rem .5rem;font-size:12px;font-weight:500;line-height:1;display:inline-block}.game-heading{font-family:var(--font-heading);color:var(--color-accent-tertiary);font-size:28px;font-weight:600;line-height:1.1}.game-description{color:var(--color-text-primary);font-size:18px;line-height:1.5}.game-board{justify-self:center;width:100%;max-width:640px}.ludo-controls{align-items:center;gap:1rem;width:100%;display:flex}.ludo-die{--die-colour:var(--color-accent-tertiary);cursor:pointer;width:4.5rem;height:4.5rem;transition:var(--transition-fast);background:0 0;border-radius:.6rem;flex-shrink:0;padding:0}.ludo-die:not(:disabled):hover{box-shadow:0 0 16px 2px #6f47ff66}.ludo-die:focus-visible{outline:2px solid var(--color-accent-secondary);outline-offset:3px}.ludo-die:disabled{cursor:default}.ludo-die.is-prompt{animation:1.2s ease-in-out infinite ludo-die-pulse}.ludo-die.is-rolling{transform:rotate(-8deg)scale(.96)}.ludo-die-svg{width:100%;height:100%}.ludo-die-face{fill:var(--die-colour);stroke:var(--color-background);stroke-width:.3px;transition:fill .2s}.ludo-pip{fill:var(--color-background);opacity:0}.ludo-pip.is-on{opacity:1}.ludo-readout{flex-direction:column;gap:.25rem;min-width:0;display:flex}.ludo-die-label{font-family:var(--font-heading);color:var(--color-text-heading-alt);font-size:20px;font-weight:600;line-height:1.1;transition:color .2s}.ludo-die-label.is-prompt{color:var(--color-accent-tertiary)}.ludo-status{color:var(--color-text-secondary);min-height:3em;font-size:14px;font-weight:500;line-height:1.5}.ludo-players{grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem;width:100%;list-style:none;display:grid}.ludo-player{border:1px solid var(--color-border);border-radius:var(--radius-base);transition:var(--transition-fast);align-items:center;gap:.5rem;padding:.625rem .75rem;font-size:14px;font-weight:500;display:flex}.ludo-player.is-active{border-color:var(--color-accent-secondary);background:var(--color-surface-hover-strong);box-shadow:0 0 8px 2px #6f47ff4d}.ludo-swatch{border-radius:50%;flex-shrink:0;width:.75rem;height:.75rem}.ludo-player-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.ludo-player-score{color:var(--color-text-secondary);white-space:nowrap;font-size:12px}.ludo-svg{border:1px solid var(--color-border);border-radius:var(--radius-base);width:100%;height:auto;overflow:hidden}.ludo-board-bg{fill:#1a0842}.ludo-base{stroke:var(--color-border);stroke-width:.03px}.ludo-base-inner{fill:var(--color-background);stroke-width:.05px;stroke-opacity:.6}.ludo-slot{fill:none;stroke-width:.04px;stroke-opacity:.5}.ludo-cell{stroke:var(--color-border);stroke-width:.03px}.ludo-star{fill:#fff;fill-opacity:.45}.ludo-centre{stroke:var(--color-background);stroke-width:.04px}.ludo-token{transform-origin:0 0;transition:transform .16s var(--ease-standard);outline:none}.ludo-token.is-movable{cursor:pointer}.ludo-token-ring{stroke:#fff;stroke-width:.09px;opacity:0;transform-box:fill-box;transform-origin:50%}.ludo-token.is-movable .ludo-token-ring{animation:1s ease-in-out infinite ludo-pulse}.ludo-token:focus-visible .ludo-token-ring{stroke:var(--color-accent-secondary);opacity:1}.ludo-token-body{stroke:var(--color-background);stroke-width:.07px}.ludo-token-core{fill:var(--color-background);fill-opacity:.35}@keyframes ludo-pulse{0%,to{opacity:.35;transform:scale(.85)}50%{opacity:1;transform:scale(1.2)}}@keyframes ludo-die-pulse{0%,to{box-shadow:0 0 #ffcfb800,0 0 12px 2px #6f47ff40}50%{box-shadow:0 0 0 8px #ffcfb855,0 0 24px 6px #6f47ff80}}.footer{width:100%;padding-left:var(--space-page-margin);padding-right:var(--space-page-margin);background:var(--color-background)}.footer-inner{border-left:1px solid var(--color-border);border-right:1px solid var(--color-border);max-width:var(--container-max);padding:1.5rem var(--space-container-padding);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-left:auto;margin-right:auto;display:flex}.footer-copyright{font-size:14px;line-height:1.5}.footer-legal{max-width:760px;color:var(--color-text-secondary);flex-basis:100%;font-size:13px;line-height:1.6}@keyframes reveal{0%{opacity:0;filter:blur(10px);transform:translateY(24px)}to{opacity:1;filter:blur();transform:translateY(0)}}.reveal{animation:reveal .6s var(--ease-standard) both}.reveal-delay-1{animation-delay:.1s}.reveal-delay-2{animation-delay:.2s}.reveal-delay-3{animation-delay:.3s}@media (width>=768px){:root{--space-page-margin:32px;--space-container-padding:40px}.bg-columns-inner{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 1' preserveAspectRatio='none'%3E%3Cpath d='M1 0V1M2 0V1M3 0V1M4 0V1M5 0V1M6 0V1M7 0V1' stroke='white' stroke-opacity='0.1' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3C/svg%3E")}}@media (width>=1024px){:root{--space-page-margin:48px;--space-container-padding:64px}.bg-columns-inner{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 1' preserveAspectRatio='none'%3E%3Cpath d='M1 0V1M2 0V1M3 0V1M4 0V1M5 0V1M6 0V1M7 0V1M8 0V1M9 0V1M10 0V1M11 0V1' stroke='white' stroke-opacity='0.1' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3C/svg%3E")}.game-view{grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:4rem}.game-heading{font-size:40px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.reveal{animation:none}.ludo-token{transition:none}.ludo-token.is-movable .ludo-token-ring{opacity:1;animation:none}.ludo-die.is-prompt{animation:none;box-shadow:0 0 0 4px #ffcfb880}}
