@import "https://fonts.googleapis.com/css2?family=Libre+Baskerville:wght@400;700&family=Source+Serif+4:opsz,wght@8..60,400;8..60,500;8..60,600;8..60,700&display=swap";:root{--font-display:"Libre Baskerville", Georgia, serif;--font-body:"Source Serif 4", Georgia, serif;--font-ui:"Source Serif 4", Georgia, serif;--font-mono:ui-monospace, "SF Mono", Menlo, Consolas, monospace;--bg:oklch(96.5% .012 83);--paper:oklch(99% .007 83);--paper-strong:oklch(100% .003 83);--surface:oklch(94.2% .015 83);--surface-hover:oklch(91.8% .02 83);--text-primary:oklch(20% .028 72);--text-secondary:oklch(37% .026 72);--text-tertiary:oklch(55% .022 72);--border:oklch(82% .024 83);--border-strong:oklch(58% .035 72);--accent:oklch(43% .132 260);--accent-strong:oklch(34% .14 260);--accent-soft:oklch(92% .04 260);--success:oklch(43% .12 150);--success-soft:oklch(91% .052 150);--warning:oklch(62% .135 72);--warning-soft:oklch(93% .05 72);--danger:oklch(50% .16 28);--danger-soft:oklch(92% .045 28);--shadow:0 22px 60px color-mix(in oklch, var(--text-primary) 13%, transparent);--space-2xs:.25rem;--space-xs:.5rem;--space-sm:.75rem;--space-md:1rem;--space-lg:1.5rem;--space-xl:2rem;--space-2xl:3rem;--space-3xl:4rem;font-family:var(--font-body);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;color:var(--text-secondary);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px;line-height:1.5}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}[data-theme=dark]{--bg:oklch(18% .016 72);--paper:oklch(22% .018 72);--paper-strong:oklch(25% .02 72);--surface:oklch(27% .02 72);--surface-hover:oklch(32% .024 72);--text-primary:oklch(91% .014 83);--text-secondary:oklch(78% .016 83);--text-tertiary:oklch(64% .018 83);--border:oklch(38% .026 72);--border-strong:oklch(55% .032 72);--accent:oklch(74% .115 248);--accent-strong:oklch(82% .095 248);--accent-soft:oklch(31% .055 248);--success:oklch(72% .11 150);--success-soft:oklch(29% .052 150);--warning:oklch(77% .12 72);--warning-soft:oklch(31% .047 72);--danger:oklch(72% .13 28);--danger-soft:oklch(31% .055 28);--shadow:0 22px 70px oklch(0% none none/.38)}*,:before,:after{box-sizing:border-box}body{background:var(--bg);min-width:320px;margin:0;padding:0}#root{min-height:100svh}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);color:var(--text-primary);font-weight:700;line-height:1.14}p{margin:0}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button,input{font-family:var(--font-ui)}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--text-tertiary)}[data-theme=dark] ::-webkit-scrollbar-thumb{background:var(--surface-hover)}.screen-toolbar{top:var(--space-md);right:var(--space-md);z-index:20;position:fixed}.theme-toggle{align-items:center;gap:var(--space-xs);min-height:2.5rem;color:var(--text-secondary);background:color-mix(in oklch, var(--paper) 88%, transparent);border:1px solid var(--border);cursor:pointer;box-shadow:0 8px 24px color-mix(in oklch, var(--text-primary) 8%, transparent);border-radius:999px;padding:.25rem .7rem .25rem .3rem;display:inline-flex}.theme-toggle:hover{color:var(--text-primary);background:var(--paper);border-color:var(--border-strong)}.theme-toggle-track{background:var(--accent-soft);border:1px solid color-mix(in oklch, var(--accent) 35%, var(--border));border-radius:999px;justify-content:center;align-items:center;width:2rem;height:2rem;display:inline-flex}.theme-toggle-thumb{color:var(--accent-strong);font-family:var(--font-display);font-size:1rem;line-height:1}.theme-toggle-label{font-size:.875rem;font-weight:600}.loading-screen,.start-screen,.lobby-screen,.win-overlay{min-height:100svh;color:var(--text-secondary);background:radial-gradient(ellipse 80% 60% at 50% -20%, color-mix(in oklch, var(--accent-soft) 45%, transparent), transparent), var(--bg);padding:clamp(1.5rem,4vw,4rem)}.loading-screen{justify-content:center;align-items:center;gap:var(--space-md);flex-direction:column;display:flex}.loading-spinner,.button-spinner{border:2px solid var(--border);border-top-color:var(--accent);border-radius:999px;width:1.75rem;height:1.75rem;animation:.8s linear infinite spin}.button-spinner{width:1rem;height:1rem}@keyframes spin{to{transform:rotate(360deg)}}.loading-text{color:var(--text-secondary);font-size:1rem}.lobby-screen,.win-overlay{justify-content:center;align-items:center;display:flex}.lobby-content,.win-card,.results-card{background:var(--paper);border:1px solid var(--border);width:min(100%,58rem);box-shadow:var(--shadow);border-radius:.5rem;position:relative}.lobby-content:before,.win-card:before,.results-card:before{content:"";pointer-events:none;border:1px solid color-mix(in oklch, var(--border) 70%, transparent);border-radius:.28rem;position:absolute;inset:.55rem}.start-kicker,.lobby-kicker{color:var(--accent-strong);letter-spacing:.08em;text-transform:uppercase;margin:0;font-size:.78rem;font-weight:700}.start-title,.lobby-title,.win-title,.results-title{color:var(--text-primary);font-family:var(--font-display);margin:0}.start-title{letter-spacing:-.02em;font-size:clamp(2.8rem,7vw,5rem);line-height:.92}.start-subtitle{max-width:55ch;color:var(--text-secondary);margin:0;font-size:1.05rem;line-height:1.7}.start-screen{flex-direction:column;justify-content:center;align-items:center;display:flex;overflow-y:auto}.start-content{gap:var(--space-xl);flex-direction:column;width:min(100%,46rem);padding:clamp(3rem,8vh,7rem) clamp(1.5rem,5vw,4rem);display:flex}.start-hero{gap:var(--space-md);flex-direction:column;padding-top:2rem;display:flex}.mode-section{gap:var(--space-sm);flex-direction:column;display:flex}.mode-options{gap:var(--space-xs);width:100%;display:flex}.mode-chip{min-height:2.5rem;color:var(--text-tertiary);border:1px solid var(--border);cursor:pointer;text-align:center;background:0 0;border-radius:.35rem;flex:1;padding:.55rem .75rem;font-size:.925rem;font-weight:700;transition:color .15s,background .15s,border-color .15s}.mode-chip:hover{color:var(--text-secondary);border-color:var(--border-strong)}.mode-chip.selected{color:oklch(98% .005 83);background:var(--accent);border-color:var(--accent)}[data-theme=dark] .mode-chip.selected{color:oklch(12% .01 248);background:var(--accent);border-color:var(--accent)}.mode-description{color:var(--text-tertiary);margin:0;font-size:.9rem;line-height:1.5}.error-banner{justify-content:space-between;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);color:var(--danger);background:var(--danger-soft);border:1px solid color-mix(in oklch, var(--danger) 42%, var(--border));border-radius:.35rem;font-weight:600;display:flex}.error-dismiss{appearance:none;color:var(--danger);cursor:pointer;background:0 0;border:0;font-size:1.35rem;line-height:1}.start-actions{gap:var(--space-sm);flex-direction:column;display:flex}.start-action{width:100%;min-height:3.25rem;color:var(--text-primary);background:var(--paper);border:1px solid var(--border);cursor:pointer;border-radius:.35rem;flex-direction:column;align-items:center;gap:.15rem;padding:.85rem 1rem;text-decoration:none;transition:background .15s,border-color .15s,transform .15s;display:flex}.start-action:hover{background:var(--surface);border-color:var(--border-strong);transform:translateY(-1px)}.start-action.primary{color:oklch(98% .005 83);background:var(--accent);border-color:var(--accent)}.start-action.primary:hover{background:var(--accent-strong);border-color:var(--accent-strong)}[data-theme=dark] .start-action.primary{color:oklch(12% .01 248)}.action-label{font-size:1.05rem;font-weight:700}.action-desc{color:color-mix(in oklch, currentColor 72%, transparent);font-size:.85rem}.start-action.primary .action-desc{color:color-mix(in oklch, currentColor 78%, transparent)}.start-rules{gap:var(--space-sm);padding-top:var(--space-lg);border-top:1px solid var(--border);flex-direction:column;display:flex}.rule{align-items:baseline;gap:var(--space-sm);color:var(--text-tertiary);font-size:.9rem;line-height:1.5;display:flex}.rule-num{color:var(--text-tertiary);font-family:var(--font-mono);opacity:.6;flex:none;font-size:.75rem;font-weight:700}.game-error-banner{justify-content:space-between;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);color:var(--danger);background:var(--danger-soft);border:1px solid color-mix(in oklch, var(--danger) 42%, var(--border));border-radius:.35rem;font-weight:600;display:flex}.lobby-actions,.win-actions,.results-actions,.lobby-host-section,.lobby-join-section{gap:var(--space-sm);flex-direction:column;display:flex}.lobby-btn,.play-again-button,.home-button,.results-leave,.lobby-back,.path-toggle{justify-content:center;align-items:center;gap:var(--space-sm);min-height:2.75rem;color:var(--text-primary);background:var(--paper-strong);border:1px solid var(--border);cursor:pointer;border-radius:.35rem;padding:.75rem 1rem;text-decoration:none;transition:background .15s,border-color .15s,transform .15s;display:inline-flex}.lobby-btn{text-align:left;justify-content:flex-start;width:100%}.lobby-btn:hover:not(:disabled),.home-button:hover,.results-leave:hover,.lobby-back:hover,.path-toggle:hover{background:var(--surface);border-color:var(--border-strong);transform:translateY(-1px)}.start-button,.play-again-button{color:oklch(98% .005 83);background:var(--accent);border-color:var(--accent)}.start-button:hover:not(:disabled),.play-again-button:hover{background:var(--accent-strong);border-color:var(--accent-strong)}.lobby-btn:disabled,.start-button:disabled{opacity:.55;cursor:not-allowed;transform:none}.lobby-btn-icon{display:none}.lobby-btn-label{color:inherit;font-size:1.05rem;font-weight:700}.lobby-btn-desc{color:color-mix(in oklch, currentColor 72%, transparent);font-size:.875rem}.game-container{background:var(--bg);flex-direction:column;height:100svh;display:flex;overflow:hidden}.opponent-bar{padding:var(--space-xs) var(--space-lg);background:var(--accent-soft);border-bottom:1px solid color-mix(in oklch, var(--accent) 28%, var(--border));flex-shrink:0}.opponent-bar-inner{justify-content:space-between;align-items:center;gap:var(--space-md);max-width:86rem;margin:0 auto;display:flex}.opponent-info{align-items:center;gap:var(--space-xs);min-width:0;display:flex}.opponent-name{color:var(--text-primary);font-weight:700}.opponent-sep,.opponent-clicks{color:var(--text-secondary)}.opponent-status,.path-badge,.results-player-badge{border-radius:999px;align-items:center;min-height:1.45rem;padding:.1rem .45rem;font-size:.75rem;font-weight:700;display:inline-flex}.opponent-status.finished,.start-badge{color:var(--success);background:var(--success-soft)}.opponent-status.playing,.current-badge{color:var(--accent-strong);background:var(--accent-soft)}.game-header{justify-content:space-between;align-items:center;gap:var(--space-md);padding:var(--space-md) var(--space-lg);background:var(--paper);border-bottom:1px solid var(--border);flex-shrink:0;display:flex}.header-left,.header-right{align-items:center;gap:var(--space-md);min-width:0;display:flex}.header-stat{flex-direction:column;gap:.05rem;min-width:max-content;display:flex}.stat-label{color:var(--text-tertiary);letter-spacing:.08em;text-transform:uppercase;font-size:.72rem;font-weight:700}.stat-value{color:var(--text-primary);font-variant-numeric:tabular-nums;font-size:1rem;font-weight:700}.goal-title{max-width:17rem;color:var(--accent-strong);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.current-page-title{max-width:20rem;color:var(--text-secondary);text-align:right;text-overflow:ellipsis;white-space:nowrap;font-style:italic;overflow:hidden}.path-toggle{min-height:2.5rem;color:var(--text-secondary);background:0 0;padding:.55rem .8rem}.path-toggle.active{color:var(--accent-strong);background:var(--accent-soft);border-color:color-mix(in oklch, var(--accent) 42%, var(--border))}.path-panel{background:var(--surface);border-bottom:1px solid var(--border);flex-shrink:0;max-height:14rem;overflow-y:auto}.path-list{gap:var(--space-xs);max-width:86rem;padding:var(--space-sm) var(--space-lg);flex-wrap:wrap;margin:0 auto;display:flex}.path-entry{align-items:center;gap:var(--space-xs);background:var(--paper);border:1px solid var(--border);border-radius:999px;min-width:0;padding:.35rem .55rem;display:inline-flex}.path-dot-wrap{align-items:center;display:flex}.path-dot{background:var(--text-tertiary);border-radius:999px;width:.55rem;height:.55rem}.path-dot.start{background:var(--success)}.path-dot.current{background:var(--accent)}.path-line{display:none}.path-title{align-items:center;gap:var(--space-xs);min-width:0;color:var(--text-secondary);font-size:.875rem;display:inline-flex}.article-container{background:var(--paper);flex:1;position:relative;overflow-y:auto}.article-loading{z-index:5;justify-content:center;align-items:center;gap:var(--space-sm);background:color-mix(in oklch, var(--paper) 92%, transparent);color:var(--text-secondary);flex-direction:column;display:flex;position:absolute;inset:0}.article-content{background:var(--paper);width:100%;min-height:100%;padding:clamp(1.25rem,3vw,3rem) clamp(1.25rem,5vw,5rem);transition:opacity .15s}.article-content.loading{opacity:.42;pointer-events:none}.article-content .mw-parser-output{width:100%;max-width:none;color:var(--text-primary);font-size:1.04rem;line-height:1.72}.article-content .mw-parser-output p{margin:.65em 0}.article-content .mw-parser-output a{color:var(--accent);text-underline-offset:.16em;cursor:pointer;text-decoration:underline;text-decoration-thickness:.06em}.article-content .mw-parser-output a:hover{color:var(--accent-strong)}.article-content .mw-parser-output a:visited{color:color-mix(in oklch, var(--accent) 74%, var(--danger))}.article-content .mw-parser-output h1,.article-content .mw-parser-output h2{color:var(--text-primary);border-bottom:1px solid var(--border);font-family:var(--font-display);margin:1.3em 0 .35em;padding-bottom:.25em;font-size:1.75rem}.article-content .mw-parser-output h3{color:var(--text-primary);font-family:var(--font-display);margin:1.2em 0 .25em;font-size:1.25rem}.article-content .mw-parser-output h4{color:var(--text-primary);margin:1em 0 .25em;font-size:1rem;font-weight:700}.article-content .mw-parser-output ul,.article-content .mw-parser-output ol{margin:.5em 0 .5em 1.5em;padding:0}.article-content .mw-parser-output img{max-width:100%;height:auto}.article-content .mw-parser-output .thumbinner,.article-content .mw-parser-output table.infobox{background:var(--surface);border:1px solid var(--border);border-radius:.25rem}.article-content .mw-parser-output .thumbinner{padding:.25rem}.article-content .mw-parser-output .thumbcaption{color:var(--text-secondary);padding:.25rem 0;font-size:.86rem}.article-content .mw-parser-output .tright{float:right;clear:right;margin:.35rem 0 1rem 1.5rem}.article-content .mw-parser-output .tleft{float:left;clear:left;margin:.35rem 1.5rem 1rem 0}.article-content .mw-parser-output table{border-collapse:collapse;margin:.75rem 0}.article-content .mw-parser-output table.infobox{float:right;clear:right;width:22rem;margin:0 0 1rem 1.5rem;font-size:.9rem;line-height:1.45}.article-content .mw-parser-output .infobox th,.article-content .mw-parser-output .infobox td{border:1px solid var(--border);vertical-align:top;padding:.35rem .55rem}.article-content .mw-parser-output .infobox th{background:var(--surface-hover);color:var(--text-primary);text-align:left;font-weight:700}.article-content .mw-parser-output .hatnote{color:var(--text-secondary);background:var(--surface);border:1px solid var(--border);border-radius:.25rem;margin:.75rem 0;padding:.65rem .8rem;font-size:.9rem}.article-content .mw-editsection,.article-content .reflist,.article-content .references,.article-content ol.references,.article-content .navbox,.article-content .navbox-styles,.article-content .navbox-canvas,.article-content .mw-empty-elt,.article-content .shortdescription,.article-content .sistertable,.article-content .mbox-small,.article-content .metadata,.article-content .noprint,.article-content .mw-jump-link,.article-content .mw-hidden-catlinks{display:none}.article-content .mw-content-ltr{direction:ltr}.lobby-content,.win-card,.results-card{text-align:left;max-width:44rem;padding:clamp(2rem,5vw,4rem)}.lobby-title,.win-title,.results-title{margin-top:var(--space-xs);margin-bottom:var(--space-lg);font-size:clamp(2rem,5vw,3.25rem)}.lobby-back{margin-bottom:var(--space-xl);padding-inline:.8rem}.lobby-name-input,.lobby-code-input{gap:var(--space-xs);margin-bottom:var(--space-md);flex-direction:column;display:flex}.lobby-label,.lobby-code-label,.win-path-heading,.rp-stat-label,.win-stat-label{color:var(--text-tertiary);letter-spacing:.08em;text-transform:uppercase;font-size:.75rem;font-weight:700}.lobby-input{width:100%;min-height:3rem;color:var(--text-primary);background:var(--paper-strong);border:1px solid var(--border);border-radius:.35rem;outline:none;padding:.75rem .9rem;font-size:1rem}.lobby-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in oklch, var(--accent) 18%, transparent)}.code-input,.lobby-code-value{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.code-input{letter-spacing:.28em;text-align:center;text-transform:uppercase;font-size:1.6rem;font-weight:700}.lobby-host-info,.waiting-player,.waiting-status,.win-path-label,.leaderboard-empty,.leaderboard-empty-sub{color:var(--text-secondary);margin:0;line-height:1.6}.lobby-cancel{color:var(--text-tertiary);cursor:pointer;background:0 0;border:0;align-self:flex-start;padding:.6rem 0;font-weight:700}.lobby-cancel:hover{color:var(--text-primary)}.waiting-content{gap:var(--space-md);flex-direction:column;display:flex}.waiting-title{margin:0;font-size:clamp(2rem,5vw,3rem)}.lobby-code-display{gap:var(--space-xs);width:fit-content;padding:var(--space-md) var(--space-lg);background:var(--accent-soft);border:1px solid color-mix(in oklch, var(--accent) 36%, var(--border));border-radius:.4rem;flex-direction:column;display:flex}.lobby-code-value{color:var(--accent-strong);letter-spacing:.22em;-webkit-user-select:all;user-select:all;font-size:clamp(2.2rem,8vw,4rem);font-weight:800}.waiting-spinner-section,.opponent-joined{align-items:center;gap:var(--space-sm);display:flex}.opponent-joined{width:fit-content;padding:var(--space-sm) var(--space-md);color:var(--success);background:var(--success-soft);border:1px solid color-mix(in oklch, var(--success) 38%, var(--border));border-radius:.35rem}.opponent-joined-icon,.waiting-icon,.lobby-icon,.leaderboard-icon,.win-icon,.results-icon{display:none}.win-stats,.results-comparison{gap:var(--space-sm);margin:var(--space-lg) 0;grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.win-stat,.results-player{padding:var(--space-md);background:var(--surface);border:1px solid var(--border);border-radius:.35rem}.win-stat{align-items:center;gap:var(--space-sm);display:flex}.win-stat-icon{display:none}.win-stat-info,.rp-stat{flex-direction:column;gap:.12rem;display:flex}.win-stat-value,.rp-stat-value{color:var(--text-primary);font-family:var(--font-display);font-variant-numeric:tabular-nums;font-size:1.4rem;font-weight:700}.win-path{margin:var(--space-xl) 0}.win-path-list{gap:var(--space-xs);max-height:16rem;padding-top:var(--space-sm);border-top:1px solid var(--border);flex-direction:column;display:flex;overflow-y:auto}.win-path-step{align-items:center;gap:var(--space-sm);display:flex}.win-path-dot{background:var(--accent);border-radius:999px;width:.5rem;height:.5rem}.win-path-name{color:var(--text-secondary)}.results-card{max-width:56rem}.results-winner-badge{margin-bottom:var(--space-lg);color:color-mix(in oklch, var(--warning) 55%, var(--text-primary));background:var(--warning-soft);border:1px solid color-mix(in oklch, var(--warning) 42%, var(--border));border-radius:999px;padding:.45rem .75rem;font-weight:800;display:inline-flex}.results-comparison{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:stretch}.results-player.winner{border-color:color-mix(in oklch, var(--warning) 55%, var(--border));background:var(--warning-soft)}.results-player.dnf{opacity:.72}.results-player-header{justify-content:space-between;align-items:center;gap:var(--space-md);margin-bottom:var(--space-md);display:flex}.results-player-name{color:var(--text-primary);font-size:1.2rem;font-weight:800}.results-player-stats{gap:var(--space-sm);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.results-vs{color:var(--text-tertiary);font-family:var(--font-mono);align-items:center;font-size:.8rem;font-weight:800;display:flex}.results-actions{align-items:flex-start}.leaderboard-empty{padding:var(--space-xl) 0}.leaderboard-empty-sub{margin-top:var(--space-xs);color:var(--text-tertiary)}.leaderboard-table-wrap{border:1px solid var(--border);border-radius:.35rem;overflow-x:auto}.leaderboard-table{border-collapse:collapse;width:100%;min-width:40rem;font-size:.95rem}.leaderboard-table th{color:var(--text-tertiary);background:var(--surface);border-bottom:1px solid var(--border);letter-spacing:.08em;text-align:left;text-transform:uppercase;padding:.8rem;font-size:.75rem;font-weight:800}.leaderboard-table td{color:var(--text-secondary);border-bottom:1px solid var(--border);padding:.8rem}.leaderboard-table tbody tr:last-child td{border-bottom:0}.lb-row:hover{background:var(--surface)}.lb-rank{width:4rem;color:var(--text-primary);font-weight:800}.lb-name{text-align:left;font-weight:800;color:var(--text-primary)!important}.lb-num{font-variant-numeric:tabular-nums;text-align:center!important}@media (width<=820px){.screen-toolbar{top:var(--space-sm);right:var(--space-sm)}.start-content{margin-top:1.5rem}.mode-options{gap:var(--space-xs);flex-direction:column}.lobby-content,.win-card,.results-card{padding-top:4.5rem}.game-header{flex-direction:column;align-items:flex-start}.header-left,.header-right{justify-content:space-between;width:100%}.current-page-title{display:none}.win-stats,.results-comparison,.results-player-stats{grid-template-columns:1fr}.results-vs{justify-content:center}}@media (width<=560px){.loading-screen,.start-screen,.lobby-screen,.win-overlay{padding:var(--space-sm)}.theme-toggle-label{display:none}.header-left{flex-wrap:wrap}.goal-title{max-width:11rem}.article-content{padding:var(--space-lg) var(--space-md)}.article-content .mw-parser-output table.infobox,.article-content .mw-parser-output .tright,.article-content .mw-parser-output .tleft{float:none;width:100%;margin:var(--space-md) 0}}
