:root{--ink: #eaf0f7;--muted: #93a2b5;--panel: rgba(18, 24, 32, .72);--panel-border: rgba(255, 255, 255, .09);--accent: #6cf0ff;--accent-warm: #ffca6b;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden;background:#11161d;color:var(--ink)}#app{position:fixed;inset:0}#bg,#scene{position:absolute;inset:0;display:block;width:100vw;height:100vh}#bg{z-index:0}#scene{z-index:1;cursor:pointer;touch-action:none;-webkit-user-select:none;user-select:none}.topbar{position:fixed;top:0;left:0;right:0;z-index:6;display:flex;align-items:center;gap:24px;padding:10px 20px;background:var(--panel);border-bottom:2px solid var(--panel-border);backdrop-filter:blur(8px);user-select:none}.bar-left,.bar-right{flex:1 1 0;min-width:0}.bar-right{text-align:right}body.veiled #bg,body.veiled #scene{filter:blur(26px) brightness(.4)}.label{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.category{font-size:22px;font-weight:700;margin-top:2px}.tier-line{margin-top:6px;color:var(--muted);font-size:13px}.cat-label-row{display:flex;align-items:center;gap:7px}.cat-icon{display:inline-flex;color:var(--muted)}.cat-icon svg{display:block}.cat-icon.hidden{display:none}.category-row{display:flex;align-items:center;gap:8px;cursor:pointer;margin-top:2px}.cat-arrow{font-size:10px;color:var(--muted);transition:color .15s ease}.category-row:hover .cat-arrow{color:var(--accent)}.cat-menu{display:none;position:absolute;top:calc(100% + 8px);left:20px;flex-direction:column;background:#0a0e14f5;border:2px solid var(--panel-border);border-radius:10px;overflow:hidden;box-shadow:0 14px 34px #00000073}.cat-menu.open{display:flex}.cat-item{padding:7px 12px;font-size:13px;color:var(--ink);cursor:pointer;white-space:nowrap}.cat-item.hidden{display:none}.cat-item:hover{background:#ffffff14}.cat-item.selected{color:var(--accent);font-weight:600}.stat-row{display:flex;gap:22px;justify-content:flex-end}.stat .value{font-size:26px;font-weight:700;font-variant-numeric:tabular-nums}.controls{position:fixed;bottom:20px;left:50%;transform:translate(-50%);display:flex;gap:10px;align-items:center;background:var(--panel);border:2px solid var(--panel-border);border-radius:14px;padding:10px 12px;backdrop-filter:blur(8px)}button,select{font:inherit;font-size:14px;color:var(--ink);background:#ffffff0f;border:2px solid var(--panel-border);border-radius:9px;padding:9px 14px;cursor:pointer;transition:background .14s ease,border-color .14s ease,opacity .14s ease}button:hover:not(:disabled),select:hover{background:#ffffff1f;border-color:#ffffff38}button.primary{background:#6cf0ff29;border-color:#6cf0ff66;color:#d6fbff}button:disabled{opacity:.4;cursor:default}.toggles{display:flex;flex-direction:column;gap:5px}.toggle{display:flex;align-items:center;gap:7px;font-size:14px;color:var(--ink);user-select:none;cursor:pointer;padding-left:4px}.toggle input{width:16px;height:16px;accent-color:var(--accent);cursor:pointer}.hint{position:fixed;top:104px;left:50%;transform:translate(-50%);color:var(--muted);font-size:13px;white-space:nowrap;text-align:center;line-height:1.5;user-select:none;pointer-events:auto;opacity:0;transition:opacity 2s ease}.hint.show{opacity:1;transition:opacity .25s ease}@media (max-width: 520px){.controls{left:0;right:0;bottom:0;transform:none;flex-wrap:wrap;justify-content:center;padding:10px 20px;border:none;border-top:2px solid var(--panel-border);border-radius:0}.toggles{flex-direction:row;gap:14px}.hint{left:0;right:0;transform:none;padding:0 16px;white-space:normal}.category{font-size:16px}}.overlay{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:#06090db8;backdrop-filter:blur(4px);z-index:10;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .6s ease,visibility 0s linear .6s}.overlay.show{opacity:1;visibility:visible;pointer-events:auto;transition:opacity .6s ease}.card{background:#171d26;border:2px solid var(--panel-border);border-radius:18px;padding:34px 40px;max-width:560px;text-align:center;box-shadow:0 30px 80px #00000080;transform:translateY(14px) scale(.98);transition:transform .6s cubic-bezier(.2,.9,.3,1)}.overlay.show .card{transform:translateY(0) scale(1)}.card .kicker{color:var(--accent-warm);letter-spacing:.18em;text-transform:uppercase;font-size:12px;font-weight:700}.card .phrase{font-size:30px;font-weight:700;line-height:1.25;margin:14px 0 6px}.card .attribution{color:var(--muted);font-style:italic;margin-bottom:18px}.card .summary{display:flex;gap:30px;justify-content:center;margin:18px 0 26px}.card .summary .value{font-size:26px;font-weight:700;font-variant-numeric:tabular-nums}.card .summary .value.score{color:var(--accent)}.solve-local-note{margin:-12px 0 20px;font-size:12px;color:var(--muted);font-style:italic}.solve-board{margin:0 0 24px;text-align:left}.solve-board-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;font-size:12px;color:var(--muted)}.solve-rank{color:var(--accent-warm);font-weight:700;font-variant-numeric:tabular-nums}.solve-leaderboard{display:block;margin:10px auto 0;background:transparent;border-color:transparent;color:var(--muted);font-size:13px}.solve-leaderboard:hover:not(:disabled){background:#ffffff0d;border-color:var(--panel-border);color:var(--ink)}.solve-name-row{display:flex;align-items:stretch;gap:8px;margin-top:7px}.solve-name-save{flex:0 0 auto;font-size:14px;padding:9px 16px}.solve-name-save:disabled{opacity:.4;cursor:default}.solve-name-status{min-height:1.2em;margin-top:7px;font-size:12px;color:var(--muted)}.solve-name-status.ok{color:var(--accent)}.solve-name-status.bad{color:var(--accent-warm)}.solve-name{width:100%;font:inherit;font-size:15px;color:var(--ink);background:#ffffff0f;border:2px solid var(--panel-border);border-radius:9px;padding:9px 12px}.solve-name::placeholder{color:var(--muted)}.solve-name:focus{outline:none;border-color:#6cf0ff66}.about-overlay{z-index:11;transition:opacity .18s ease,visibility 0s linear .18s}.about-overlay.show{transition:opacity .18s ease}.about-overlay .card{transition:transform .18s cubic-bezier(.2,.9,.3,1)}.about-card{max-width:520px;text-align:left;padding:30px 34px;max-height:82vh;overflow-y:auto}.about-title{font-size:22px;font-weight:700;letter-spacing:.01em}.about-lede{margin:8px 0 0;font-size:15px;line-height:1.5}.about-notice{margin:14px 0 0;padding:12px 14px;font-size:13px;line-height:1.55;color:var(--muted);background:#ffffff0a;border-left:2px solid var(--accent-warm);border-radius:0 8px 8px 0}.about-section{border-top:1px solid var(--panel-border);margin-top:14px}.about-section[open]{padding-bottom:4px}.about-heading{margin-top:22px;color:var(--accent);letter-spacing:.18em;text-transform:uppercase;font-size:11px;font-weight:700}.about-section>.about-heading{cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;margin-top:0;padding:8px 0}.about-section>.about-heading::-webkit-details-marker{display:none}.about-section>.about-heading:before{content:"▶";display:inline-block;font-size:10px;color:var(--muted);letter-spacing:normal;transition:color .15s ease,transform .14s}.about-section[open]>.about-heading:before{transform:rotate(90deg)}.about-section>.about-heading:hover:before{color:var(--accent)}.about-section>.about-heading:hover{color:var(--ink)}.about-credit{margin:12px 0 0;font-size:13px;line-height:1.5;color:var(--muted)}.about-links{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:6px;font-size:13px}.about-links a{color:var(--accent);text-decoration:none;border-bottom:1px solid rgba(108,240,255,.3)}.about-links a:hover{border-bottom-color:var(--accent)}.about-license{margin:20px 0 0;font-size:12px;color:var(--muted)}.about-card button.primary{margin-top:22px;width:100%}.about-contact-link{margin-top:10px;width:100%;background:transparent;border-color:transparent;color:var(--muted);font-size:13px}.about-contact-link:hover:not(:disabled){background:#ffffff0d;border-color:var(--panel-border);color:var(--ink)}.lb-card{width:min(520px,92vw);max-width:min(520px,92vw);text-align:left;padding:30px 34px;max-height:82vh;overflow-y:auto}.lb-tabs{display:flex;gap:8px;margin-top:18px}.lb-tab{flex:1;padding:8px 10px;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);background:transparent;border:1px solid var(--panel-border);border-radius:6px;cursor:pointer;transition:none}.lb-tab:hover{color:var(--ink)}.lb-tab.on{color:var(--accent);border-color:var(--accent);background:#6cf0ff14}.lb-row{display:grid;grid-template-columns:2.2em 8.5em 1fr auto;align-items:baseline;gap:10px;padding:7px 0;border-bottom:1px solid rgba(255,255,255,.05);font-size:14px}.lb-head{margin-top:18px;border-bottom-color:var(--panel-border);color:var(--muted);font-size:11px;letter-spacing:.14em;text-transform:uppercase}.lb-row:last-child{border-bottom:none}.lb-row.mine{color:var(--accent);font-weight:600}.lb-col-rank,.lb-col-stamp{color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}.lb-head .lb-col-rank,.lb-head .lb-col-stamp,.lb-row.mine .lb-col-rank,.lb-row.mine .lb-col-stamp{color:inherit}.lb-col-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lb-col-score{text-align:right;font-weight:700;font-variant-numeric:tabular-nums}.lb-head .lb-col-score{font-weight:inherit}.lb-empty{margin:22px 0 0;color:var(--muted);font-size:14px}.lb-card button.primary{margin-top:22px;width:100%}.contact-card{width:min(520px,92vw);max-width:min(520px,92vw)}.contact-field{display:block;margin-top:16px;text-align:left}.contact-field-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.contact-label{display:block;margin-bottom:6px;font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--accent)}.contact-counter{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}.contact-counter--full{color:var(--accent-warm)}.contact-input{width:100%;font:inherit;font-size:15px;color:var(--ink);background:#ffffff0d;border:2px solid var(--panel-border);border-radius:9px;padding:9px 12px;transition:background .14s ease,border-color .14s ease}.contact-input::placeholder{color:var(--muted);opacity:.7}.contact-input:focus{outline:none;background:#ffffff14;border-color:#6cf0ff80}.contact-input:disabled{opacity:.5}.contact-textarea{resize:none;overflow:hidden;line-height:1.45}.contact-status{min-height:18px;margin-top:14px;font-size:13px;text-align:left}.contact-status--error{color:#ff9a8a}.contact-status--ok{color:var(--accent)}.contact-card button.primary{margin-top:18px}
