:root{--nv-bg: #f6f4ee;--nv-panel: #ffffff;--nv-ink: #1f1d2b;--nv-muted: #6b6880;--nv-line: #d9d5c7;--nv-accent: #3d7a5a;--nv-accent-ink: #ffffff;--nv-err: #b33a3a}@media (prefers-color-scheme: dark){:root{--nv-bg: #12121c;--nv-panel: #1c1c2a;--nv-ink: #ecebf5;--nv-muted: #9a97b0;--nv-line: #33334a;--nv-accent: #6fcf9d;--nv-accent-ink: #0d1a13;--nv-err: #ff8a80}}.nv-center{min-height:100vh;min-height:100dvh;display:grid;grid-template-columns:minmax(0,1fr);place-items:center;padding:16px}.nv-card{background:var(--nv-panel);color:var(--nv-ink);border:1px solid var(--nv-line);border-radius:10px;padding:24px}.nv-muted{color:var(--nv-muted)}.nv-err{color:var(--nv-err)}.nv-primary{background:var(--nv-accent);color:var(--nv-accent-ink);border:0;border-radius:6px;padding:9px 16px;font:inherit;cursor:pointer}.nv-primary:disabled{opacity:.5;cursor:default}.nv-auth{width:min(100%,380px);display:flex;flex-direction:column;gap:12px}.nv-auth-head{display:flex;align-items:center;gap:12px}.nv-auth h1{margin:0;font-size:22px}.nv-auth p{margin:0}.nv-auth label{display:flex;flex-direction:column;gap:4px;font-size:14px}.nv-auth input{font:inherit;padding:8px 10px;border:1px solid var(--nv-line);border-radius:6px;background:transparent;color:inherit}.nv-tabs{display:flex;gap:6px}.nv-tabs button{flex:1;font:inherit;padding:6px;border:1px solid var(--nv-line);border-radius:6px;background:transparent;color:inherit;cursor:pointer}.nv-tabs button.on{border-color:var(--nv-accent);color:var(--nv-accent)}.nv-modal{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:grid;place-items:center;padding:16px;z-index:100}.nv-modal>.nv-auth{max-height:calc(100vh - 32px);max-height:calc(100dvh - 32px);overflow-y:auto;overscroll-behavior:contain}.nv-admin-gate{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:4px 12px;padding:10px 16px;background:var(--nv-panel);color:var(--nv-ink);border-bottom:1px solid var(--nv-line);font-size:14px}.nv-admin{max-width:1100px;margin:0 auto;padding:16px;color:var(--nv-ink)}.nv-admin header{display:flex;justify-content:space-between;align-items:center}.nv-admin section{margin:24px 0;overflow-x:auto}.nv-admin table{border-collapse:collapse;width:100%;font-size:13px}.nv-admin th,.nv-admin td{text-align:left;padding:6px 8px;border-bottom:1px solid var(--nv-line);white-space:nowrap}.nv-admin tr.off{opacity:.45}.nv-admin button{font:inherit;font-size:12px;cursor:pointer}.nv-stats{display:flex;flex-wrap:wrap;gap:12px}.nv-stats div{background:var(--nv-panel);border:1px solid var(--nv-line);border-radius:8px;padding:10px 14px;display:flex;flex-direction:column}.nv-stats b{font-size:22px}.nv-stats span{color:var(--nv-muted);font-size:12px}.nv-stats small{color:var(--nv-muted);font-size:11px}.nv-daily .nv-bar{display:inline-block;height:8px;margin-right:6px;border-radius:4px;background:var(--nv-accent);opacity:.6;vertical-align:middle}.nv-pages{display:flex;gap:6px;flex-wrap:wrap;margin-top:24px;border-bottom:1px solid var(--nv-line)}.nv-pages button{display:flex;align-items:baseline;gap:6px;padding:8px 14px;border:1px solid var(--nv-line);border-bottom:0;border-radius:8px 8px 0 0;background:transparent;color:var(--nv-muted);font-size:14px;margin-bottom:-1px}.nv-pages button.on{background:var(--nv-panel);color:var(--nv-ink);font-weight:700}.nv-pages small{font-size:12px;font-weight:400;color:var(--nv-muted)}.nv-pages+section{margin-top:12px}.nv-row{display:flex;flex-wrap:wrap;gap:10px;align-items:end;margin-bottom:12px}.nv-row label{display:flex;flex-direction:column;font-size:12px;gap:2px}.nv-row input{font:inherit;width:120px;padding:5px 7px}.nv-codes{width:100%;font-family:ui-monospace,Menlo,monospace;margin-bottom:12px}.nv-actions{display:flex;gap:4px}.nv-note{background:var(--nv-panel);border:1px solid var(--nv-accent);border-radius:6px;padding:8px 12px;margin-bottom:10px}.nv-spam{margin-bottom:0;font-size:13px;line-height:1.6;text-align:left}.nv-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--nv-accent);margin-right:6px}.nv-codex{display:flex;flex-direction:column;gap:10px}.nv-codex h2{margin:0;font-size:18px}.nv-codex p{margin:0}.nv-codex .nv-tabs{flex-wrap:wrap}.nv-codex .nv-tabs button{flex:0 1 auto;padding:4px 10px}.nv-entities{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px}.nv-entity{background:var(--nv-panel);border:1px solid var(--nv-line);border-radius:8px;padding:8px 10px;display:flex;flex-direction:column;gap:4px}.nv-entity-head{display:flex;align-items:center;gap:6px}.nv-entity-icon{font-size:20px}.nv-entity p{font-size:14px}.nv-chronicle{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px;font-size:14px;max-height:420px;overflow:auto}.nv-chronicle small{margin-right:6px}.nv-wish input{flex:1;width:auto;min-width:0;font:inherit;padding:8px 10px;border:1px solid var(--nv-line);border-radius:6px;background:transparent;color:inherit}.nv-wish ul{margin:8px 0 0;padding-left:18px;font-size:14px}.nv-code{display:flex;gap:6px}.nv-code input{flex:1;min-width:0;letter-spacing:2px}.nv-code button{font:inherit;font-size:13px;white-space:nowrap;padding:6px 10px;border:1px solid var(--nv-line);border-radius:6px;background:transparent;color:inherit;cursor:pointer}.nv-code button:disabled{opacity:.5;cursor:default}.nv-link{align-self:center;border:0;background:none;color:var(--nv-muted);font:inherit;font-size:13px;text-decoration:underline;cursor:pointer}.nv-soon-tag{margin:4px 0 0;font-size:22px;font-weight:700;letter-spacing:.12em;text-transform:uppercase}.nv-soon .nv-link{margin-top:8px;font-size:12px;opacity:.7}.nv-entity-img{border-radius:6px;object-fit:cover;display:block}.nv-entity-icon{line-height:1}.nv-adopt-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px}.nv-adopt-list button{display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px;text-align:center}.nv-adopt-list small{color:var(--nv-muted);font-size:12px}.nv-decisions{display:flex;flex-direction:column;gap:8px}.nv-decision{border:1px solid var(--nv-line);border-left:3px solid var(--nv-accent, #4a7);border-radius:6px;padding:8px 10px}.nv-decision .nv-row{margin:6px 0 0}.nv-agent-settings{display:flex;flex-wrap:wrap;gap:14px;align-items:center;font-size:13px}.nv-agent-settings label{min-width:0;max-width:100%}.nv-agent-settings select{max-width:100%}.nv-recaps{list-style:none;margin:0;padding:0;font-size:13px;display:flex;flex-direction:column;gap:4px}.nv-changelog{display:flex;flex-direction:column;gap:10px}.nv-changelog h3{margin:0 0 4px;font-size:12px;color:var(--nv-muted);font-variant-numeric:tabular-nums}.nv-changelog ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.nv-changelog li{display:flex;gap:8px;align-items:baseline;font-size:13px;line-height:1.5}.nv-cl-tag{flex:none;font-size:10.5px;font-weight:700;padding:1px 7px;border-radius:999px}.nv-cl-new{background:#dcfce7;color:#15803d}.nv-cl-fix{background:#e0f2fe;color:#0369a1}.nv-changelog-btn{position:relative;font:inherit;padding:4px 10px;border:1px solid var(--nv-line);border-radius:6px;background:var(--nv-panel);color:inherit;cursor:pointer;white-space:nowrap}.nv-changelog-btn:hover{border-color:var(--nv-accent)}.nv-more{display:inline-flex;align-items:center;gap:4px;font:inherit;font-size:13px;line-height:1.2;padding:4px 10px;min-height:30px;box-sizing:border-box;border:1px solid var(--nv-line);border-radius:6px;background:var(--nv-panel);color:inherit;text-decoration:none;white-space:nowrap;cursor:pointer;flex-shrink:0}.nv-more:hover{border-color:var(--nv-accent)}.nv-more-short{display:none}@media (max-width: 480px){.nv-more-long{display:none}.nv-more-short{display:inline}.nv-more{padding:4px 8px}}@media (max-width: 380px){.nv-more:not(.nv-group) .nv-more-short{display:none}}.nv-changelog-btn.dot:after{content:"";position:absolute;top:-3px;right:-3px;width:9px;height:9px;border-radius:50%;background:#ef4444;box-shadow:0 0 0 2px var(--nv-panel)}.nv-changelog-card{width:min(520px,100%);max-height:calc(100vh - 32px);max-height:calc(100dvh - 32px);display:flex;flex-direction:column;padding:0;overflow:hidden}.nv-changelog-card>header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--nv-line)}.nv-changelog-card>header b{font-size:16px}.nv-changelog-card>header button{width:28px;height:28px;border:0;border-radius:50%;background:transparent;color:var(--nv-muted);font-size:18px;line-height:1;cursor:pointer}.nv-changelog-card>header button:hover{background:var(--nv-line);color:var(--nv-ink)}.nv-changelog-body{overflow-y:auto;padding:12px 16px 16px}@media (pointer: coarse){input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]),textarea,select{font-size:max(16px,1em)!important}button,a,[role=button]{touch-action:manipulation}.nv-link{padding:8px 4px}.nv-code button{min-height:40px}.nv-changelog-card>header button{width:36px;height:36px}.nv-changelog-btn{min-height:32px}}@media (max-width: 640px){.nv-center{padding:max(12px,env(safe-area-inset-top)) max(12px,env(safe-area-inset-right)) max(12px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left))}.nv-modal{padding:max(10px,env(safe-area-inset-top)) 10px max(10px,env(safe-area-inset-bottom))}.nv-card{padding:18px 16px}.nv-admin{padding:10px}.nv-admin header{flex-wrap:wrap;gap:8px}.nv-pages{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}.nv-pages button{flex:none}.nv-row input{width:100%}.nv-row label{flex:1 1 140px}.nv-entities{grid-template-columns:1fr}.nv-adopt-list{grid-template-columns:repeat(auto-fill,minmax(120px,1fr))}.nv-cl-tag{font-size:11px}}@media (max-height: 500px){.nv-modal{padding:max(6px,env(safe-area-inset-top)) max(10px,env(safe-area-inset-right)) max(6px,env(safe-area-inset-bottom)) max(10px,env(safe-area-inset-left))}.nv-modal>.nv-auth{gap:8px;padding:12px 18px}.nv-modal>.nv-auth h1{font-size:18px}.nv-modal>.nv-auth label{gap:2px}.nv-modal>.nv-auth input{padding-top:6px;padding-bottom:6px}.nv-modal>.nv-auth .nv-link{padding:6px 12px}}:root{--bg: #12102b;--bg2: #1c1940;--panel: #231f4d;--panel2: #2d2860;--line: #4a4488;--ink: #f4efe0;--muted: #b5b0d6;--amber: #f2b544;--amber-d: #b97e1d;--brick: #b3432f;--teal: #3fb8a8;--paper: #f8e9a6;--red: #ff8f85;--nv-bg: var(--bg);--nv-panel: var(--panel);--nv-ink: var(--ink);--nv-muted: var(--muted);--nv-line: var(--line);--nv-accent: var(--amber);--nv-accent-ink: #231a06;--nv-err: var(--red);color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.6 -apple-system,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif}body{overflow-x:hidden}button,select,input{font:inherit;color:inherit}button{cursor:pointer;touch-action:manipulation}img{max-width:100%}h2,h3,h4,p{margin:0}em{color:var(--amber);font-style:normal;font-weight:700}.grow{flex:1;min-width:0}.muted{color:var(--muted);font-size:14px}.err{color:var(--red)}.warn{color:var(--amber)}.good{color:var(--teal)}.row{display:flex;gap:8px;flex-wrap:wrap}.btn-main,.btn-sub,.btn-small,.top-btn{border-radius:2px;border:2px solid #171230;transition:transform .06s,box-shadow .06s,filter .1s}.btn-main{display:inline-flex;justify-content:center;align-items:center;min-height:48px;padding:10px 22px;background:var(--amber);color:#2a1d05;font-weight:800;font-size:16px;box-shadow:inset 0 2px #ffe08a,0 4px 0 var(--amber-d),0 4px 0 2px #171230}.btn-main:active{transform:translateY(4px);box-shadow:inset 0 2px #ffe08a,0 0 0 var(--amber-d)}.btn-main:disabled{filter:grayscale(.7);opacity:.7;cursor:default}.btn-main.big{min-height:56px;font-size:19px;padding:12px 40px}.btn-main.is-static{cursor:default;filter:saturate(.7)}.btn-sub{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:44px;padding:8px 14px;background:var(--panel2);color:var(--ink);box-shadow:inset 0 2px #4b4592,0 3px #171230;font-size:14px}.btn-sub:active{transform:translateY(3px);box-shadow:inset 0 2px #4b4592}.btn-sub:disabled{opacity:.55;cursor:default}.btn-small{min-height:36px;min-width:44px;padding:4px 10px;background:var(--panel2);box-shadow:0 2px #171230;font-size:14px}.btn-small:active{transform:translateY(2px);box-shadow:none}.btn-small:disabled{opacity:.4;cursor:default}.btn-ghost{min-height:40px;min-width:44px;padding:4px 10px;background:none;border:1px solid var(--line);border-radius:2px}.btn-link{background:none;border:0;color:var(--muted);text-decoration:underline;font-size:14px;padding:8px;min-height:36px}.pulse{animation:pulse 1.4s ease-in-out infinite}@keyframes pulse{50%{filter:brightness(1.2);transform:translateY(-1px)}}.mini-badge{width:20px;height:20px;object-fit:contain;vertical-align:-4px;image-rendering:pixelated}.top-bar{display:flex;align-items:center;flex-wrap:wrap;gap:6px;padding:6px 10px;background:#0c0a20;border-bottom:2px solid #000;position:relative;z-index:20}.logo-mini{width:32px;height:32px;object-fit:contain;flex:none}.brand{font-weight:800;font-size:16px;color:var(--amber);white-space:nowrap}.brand-block{display:flex;flex-direction:column;line-height:1.15;min-width:0}.brand-block small{color:var(--muted);font-size:11px;white-space:nowrap}.top-btn{min-height:34px;min-width:34px;padding:3px 8px;background:var(--panel);color:var(--ink);font-size:13px;display:inline-flex;align-items:center;justify-content:center;gap:4px;text-decoration:none}.top-btn:active{transform:translateY(1px)}.off-tag{color:var(--red);font-size:12px;white-space:nowrap}.menu-wrap{position:relative}.menu-pop{position:absolute;right:0;top:calc(100% + 6px);z-index:60;width:150px;display:flex;flex-direction:column;background:var(--panel2);border:2px solid #171230;box-shadow:0 6px #0006}.menu-pop>*{min-height:44px;padding:10px 12px;background:none;border:0;border-bottom:1px solid var(--line);text-align:left;color:var(--ink);text-decoration:none;font-size:14px}.menu-who{color:var(--muted);font-size:12px;min-height:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.game{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column}.game-body{flex:1;display:grid;grid-template-columns:96px minmax(0,1fr);min-height:0}.nav{display:flex;flex-direction:column;gap:4px;padding:10px 6px;background:#17143a;border-right:2px solid #000}.nav button{display:flex;flex-direction:column;align-items:center;gap:2px;min-height:60px;padding:6px 2px;background:none;border:2px solid transparent;color:var(--muted);font-size:13px}.nav button.on{color:#2a1d05;background:var(--amber);border-color:#171230;font-weight:800}.nav-ic{width:24px;height:24px;background:currentColor;-webkit-mask:var(--ic) center/contain no-repeat;mask:var(--ic) center/contain no-repeat}.ic-tower{--ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' shape-rendering='crispEdges'%3E%3Cpath d='M5 0h2v1h1v1h1v1h1v1H2V3h1V2h1V1h1zM3 5h6v7H7V9H5v3H3zm1 1v1h1V6zm3 0v1h1V6z'/%3E%3C/svg%3E")}.ic-hammer{--ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' shape-rendering='crispEdges'%3E%3Cpath d='M2 1h7v1h2v3H9V4H7v1H6v1H5v1H4v1H3v1H2v1H1v-1H0V9h1V8h1V7h1V6h1V5h1V4H2z'/%3E%3C/svg%3E")}.ic-chat{--ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' shape-rendering='crispEdges'%3E%3Cpath d='M1 1h10v1h1v6h-1v1H5v1H4v1H2V9H1V8H0V2h1zm2 3v2h1V4zm3 0v2h1V4zm3 0v2h1V4z' fill-rule='evenodd'/%3E%3C/svg%3E")}.ic-rank{--ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' shape-rendering='crispEdges'%3E%3Cpath d='M4 2h4v9H4zM0 6h3v5H0zM9 4h3v7H9z'/%3E%3C/svg%3E")}.ic-inn{--ic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' shape-rendering='crispEdges'%3E%3Cpath d='M2 1h7v2h2v5H9v2H8v1H3v-1H2zm7 3v3h1V4z' fill-rule='evenodd'/%3E%3C/svg%3E")}.page{min-width:0;padding:14px;overflow-x:hidden}.card{background:var(--panel);border:2px solid #171230;box-shadow:inset 0 0 0 1px var(--line);padding:12px 14px}.card h3{font-size:15px;color:var(--amber);margin-bottom:8px}.seg-tabs{display:flex;gap:4px;margin-bottom:10px}.seg-tabs button{flex:1;min-height:44px;padding:6px;background:var(--bg2);border:2px solid #171230;color:var(--muted)}.seg-tabs button.on{background:var(--panel2);color:var(--amber);font-weight:800;box-shadow:inset 0 -3px 0 var(--amber)}.tower-page{display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,400px);gap:16px;align-items:start;max-width:1180px;margin:0 auto}.tp-scene{position:relative;background:#0d1038 center/cover no-repeat;border:2px solid #000}.tp-scroll{height:calc(100vh - 110px);height:calc(100dvh - 110px);overflow-y:auto;overscroll-behavior:contain;padding:10px 0 0;display:flex;justify-content:center}.tower-canvas{display:block;width:min(100%,528px);height:auto;flex:none;align-self:flex-start;image-rendering:pixelated;cursor:pointer}.lights-tag{position:absolute;top:10px;left:10px;padding:4px 10px;background:#0c0a20e6;border:2px solid var(--red);color:var(--red);font-weight:800;animation:pop .3s}@keyframes pop{0%{transform:scale(.7)}}.tp-side{display:flex;flex-direction:column;gap:12px;min-width:0}.countdown{display:flex;flex-direction:column}.countdown small{color:var(--muted)}.countdown b{font-size:34px;line-height:1.15;color:var(--amber);font-variant-numeric:tabular-nums}.tp-nums{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin:10px 0 6px}.tp-nums div{display:flex;flex-direction:column;min-width:0;background:var(--bg2);padding:6px 8px}.tp-nums b{font-size:20px}.tp-nums small{color:var(--muted);font-size:12px;line-height:1.3}.tp-status>small{display:block}.green-line{color:#8df0a8;font-size:14px}.tp-goals ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px;font-size:14px}.tp-goals li{padding-left:16px;position:relative}.tp-goals li:before{content:"";position:absolute;left:0;top:7px;width:9px;height:9px;border:2px solid var(--amber)}.tp-goals li.done{color:var(--muted)}.tp-goals li.done:before{background:var(--teal);border-color:var(--teal)}.tp-note{padding:2px 8px}.tp-actions{display:flex;flex-direction:column;gap:10px}.sticky{margin:0;padding:12px 14px 10px;background:var(--paper);color:#33280c;box-shadow:2px 3px #00000073;position:relative;font-size:14px;line-height:1.5}.sticky:before{content:"";position:absolute;top:-6px;left:50%;width:34px;height:12px;margin-left:-17px;background:#ffffff73}.sticky blockquote{margin:0}.sticky figcaption{margin-top:4px;text-align:right;font-size:12px;color:#6d5a1f}.s-died{background:#f9d0c0}.s-clear{background:#d5f0c4}.s-stuck{background:var(--paper)}.s-crack{background:#cfe0ff}.s-visitor{background:#c8efe9}.lock-pill{padding:8px 12px;margin-bottom:10px;font-size:14px;border-left:4px solid;background:var(--bg2)}.lock-pill.good{border-color:var(--teal);color:#a6ece1}.lock-pill.bad{border-color:var(--red);color:var(--red)}.group{max-width:760px;margin:0 auto}.chat{background:#ece5d8;color:#26231a;border:2px solid #000;padding-bottom:10px;min-height:340px}.chat-head{display:flex;align-items:center;gap:8px;padding:8px 12px;background:#d9d2c2;border-bottom:1px solid #b9b19e}.chat-head small{color:#666;margin-left:auto;font-size:12px}.bubble-row{display:flex;gap:8px;padding:8px 10px 0;align-items:flex-start}.bubble-row>div{min-width:0;flex:1}.bubble-row small{display:block;color:#736c5c;font-size:12px}.bubble{display:inline-block;max-width:100%;padding:8px 11px;background:#fff;border-radius:3px;font-size:15px;word-break:break-word}.tone-good .bubble{background:#cdf5b8}.tone-bad .bubble{background:#ffd9d2}.chat .empty p{color:#4d4737}.note-wall{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(220px,100%),1fr));gap:16px 12px;padding:12px 6px;background:linear-gradient(#5b3a26,#4c2f1f);border:2px solid #000;min-height:280px}.empty{display:flex;flex-direction:column;align-items:center;gap:8px;padding:24px 16px;text-align:center;color:var(--muted)}.note-wall .empty{color:#e7d3b6;grid-column:1 / -1}.boards{max-width:820px;margin:0 auto}.board-rule{margin-bottom:10px}.board-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.board-list li{display:flex;align-items:center;gap:10px;padding:8px 10px;background:var(--panel);border:2px solid #171230}.board-list li.mine{box-shadow:inset 0 0 0 2px var(--teal)}.rank{flex:none;width:30px;height:30px;display:grid;place-items:center;background:var(--bg2);font-weight:800}.top1 .rank{background:var(--amber);color:#2a1d05}.top2 .rank{background:#cfd3e6;color:#22263d}.top3 .rank{background:#c98a5b;color:#2a1505}.b-name{flex:1;min-width:0;display:flex;flex-direction:column}.b-name b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.b-name small,.b-score small{color:var(--muted);font-size:12px;line-height:1.3}.b-score{flex:none;display:flex;flex-direction:column;align-items:flex-end;text-align:right}.b-score b{font-size:18px;color:var(--amber)}.inn{max-width:1120px;margin:0 auto}.inn-banner{position:relative;height:180px;overflow:hidden;border:2px solid #000;margin-bottom:12px}.inn-banner img{width:100%;height:100%;object-fit:cover;object-position:center 58%;display:block;image-rendering:pixelated}.inn-banner>div{position:absolute;left:0;right:0;bottom:0;padding:18px 14px 10px;background:linear-gradient(transparent,#0c0a20eb)}.inn-banner b{font-size:20px;color:var(--amber)}.inn-banner p{font-size:14px}.inn-cols{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;align-items:start}.tip-list,.tower-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px;font-size:14px}.tip-list li{display:flex;gap:8px;align-items:baseline}.tip-tag{flex:none;padding:0 6px;font-size:12px;color:#171230}.tip-tag.danger{background:var(--red)}.tip-tag.route{background:var(--teal)}.visitor-card{border-color:#0f5a52}.visitor-row{display:flex;gap:10px;align-items:center;margin-bottom:6px}.visitor-row small{display:block;color:var(--teal)}.visitor-row p{font-size:14px}.tower-list li{display:flex;gap:8px;align-items:center;justify-content:space-between}.tower-list li>div{min-width:0;display:flex;flex-direction:column}.tower-list small{color:var(--muted);font-size:12px}.persona-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px}.persona-card{display:flex;flex-direction:column;align-items:center;text-align:center;padding:6px;background:var(--bg2)}.persona-card small{color:var(--muted);font-size:12px;line-height:1.35}.persona-card b{font-size:14px}.spr{display:block;width:100%;height:100%;object-fit:contain;image-rendering:pixelated}.spr-wait{background:#ffffff12;animation:blink 1s steps(2) infinite}@keyframes blink{50%{opacity:.35}}.fgrid{position:relative;display:grid;width:100%;aspect-ratio:1;background:#171230;border:3px solid #0a0820;box-shadow:0 4px #000;-webkit-user-select:none;user-select:none}.fgrid.shake{animation:shake .16s linear}@keyframes shake{25%{transform:translate(-3px,1px)}50%{transform:translate(3px,-1px)}75%{transform:translate(-2px)}}.cell{position:relative;min-width:0;aspect-ratio:1;padding:0;border:0;background-size:100% 100%;image-rendering:pixelated;cursor:pointer;overflow:hidden}.cell-ic{position:absolute;top:6%;right:6%;bottom:6%;left:6%;width:88%;height:88%;image-rendering:pixelated;pointer-events:none}.cell-spr{position:absolute;top:3%;right:3%;bottom:3%;left:3%;width:94%;height:94%;pointer-events:none;filter:drop-shadow(0 1px 0 rgba(0,0,0,.6))}.cell-spr.boss{top:-6%;right:-6%;bottom:-6%;left:-6%;width:112%;height:112%}.cell.dim{filter:brightness(.45)}.cell.hl{outline:3px solid #fff3b0;outline-offset:-3px;animation:hl 1s steps(2) infinite;z-index:2}@keyframes hl{50%{outline-color:var(--amber);filter:brightness(1.35)}}.hero-pin{position:absolute;transition:left .07s linear,top .07s linear;pointer-events:none;z-index:3}.float-num{position:absolute;z-index:5;padding:0 4px;font-weight:800;color:#b6ffd0;text-shadow:1px 1px 0 #000,-1px -1px 0 #000;pointer-events:none;white-space:nowrap;animation:floatUp .8s ease-out forwards}.float-num.bad{color:var(--red);font-size:18px}@keyframes floatUp{to{transform:translateY(-34px);opacity:0}}.editor{max-width:1120px;margin:0 auto;display:flex;flex-direction:column;gap:10px}.ed-head{display:flex;flex-direction:column;gap:6px}.ed-floor{display:flex;align-items:center;justify-content:space-between;gap:8px}.ed-floor>div{display:flex;flex-direction:column;align-items:center;min-width:0;text-align:center;line-height:1.25}.ed-floor b{font-size:17px;color:var(--amber)}.ed-floor small{color:var(--muted);font-size:12px}.ed-lock{padding:6px 10px;background:var(--bg2);font-size:14px;border-left:4px solid var(--amber)}.ed-main{display:grid;grid-template-columns:minmax(0,min(62vh,620px)) minmax(0,1fr);gap:14px;align-items:start}.ed-board{min-width:0;display:flex;flex-direction:column;gap:8px}.ed-info{display:flex;flex-direction:column;gap:6px;font-size:14px}.ed-side{min-width:0;display:flex;flex-direction:column;gap:10px}.meter label{display:block;font-size:13px;color:var(--muted)}.meter label b{color:var(--ink);font-size:16px}.meter label b.bad{color:var(--red)}.bar{height:10px;background:#0c0a20;border:2px solid #171230}.bar i{display:block;height:100%;transition:width .2s}.bar i.teal{background:var(--teal)}.bar i.amber{background:var(--amber)}.bar i.bad{background:var(--red)}.price .row{margin-top:4px}.palette{display:grid;grid-template-columns:repeat(auto-fill,minmax(68px,1fr));gap:4px;max-height:340px;overflow-y:auto}.tool{display:flex;flex-direction:column;align-items:center;gap:1px;min-height:58px;padding:3px 1px;background:var(--bg2);border:2px solid #171230}.tool small{font-size:12px;line-height:1.2;text-align:center;color:var(--muted)}.tool.on{background:var(--panel2);border-color:var(--amber)}.tool.on small{color:var(--amber)}.tool-ic{width:32px;height:32px;display:block;position:relative}.tool-ic img{width:100%;height:100%;image-rendering:pixelated;display:block}.ic-look,.ic-wall,.ic-clear{display:block;width:100%;height:100%}.ic-look{background:radial-gradient(circle at 40% 40%,transparent 30%,var(--amber) 31% 44%,transparent 45%),linear-gradient(135deg,transparent 62%,var(--amber) 63% 76%,transparent 77%)}.ic-wall{background:repeating-linear-gradient(0deg,#6f3c3a 0,#6f3c3a 6px,#1b1838 6px,#1b1838 8px)}.ic-clear{background:#35326a;border:2px dashed var(--muted)}.peek-card{display:flex;gap:10px;align-items:flex-start;padding:8px 10px;background:var(--panel);border:2px solid #171230;font-size:14px}.peek-card>div{min-width:0}.peek-card .spr{flex:none}.peek-card small{display:block;color:var(--muted);font-size:12px;line-height:1.35}.check-card{padding:10px 12px;background:var(--bg2);border-left:5px solid;animation:pop .25s;font-size:14px}.check-card.good{border-color:var(--teal);color:var(--ink)}.check-card.bad{border-color:var(--red)}.check-card b{font-size:16px}.ed-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.ed-actions .btn-main{flex:1 1 100%}.ed-foot{color:var(--muted);font-size:13px}.tl-modal{width:min(560px,100%);max-height:calc(100vh - 32px);max-height:calc(100dvh - 32px);display:flex;flex-direction:column;background:var(--panel);border:3px solid #0a0820;box-shadow:0 6px #000;animation:pop .15s}.tl-modal>header{display:flex;justify-content:space-between;align-items:center;padding:8px 14px;background:var(--panel2)}.tl-modal>header b{color:var(--amber);font-size:16px}.tl-modal-body{overflow-y:auto;padding:12px 14px 16px;display:flex;flex-direction:column;gap:10px}.tl-modal-body h4{color:var(--amber);margin-top:4px}.hint-row{display:flex;gap:12px;align-items:center}.hint-row .spr{flex:none}.persona-pick{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:6px}.persona-pick button,.boss-pick button{display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 6px;background:var(--bg2);border:2px solid #171230;text-align:center}.persona-pick button:disabled{opacity:.5}.persona-pick small,.boss-pick small{color:var(--muted);font-size:12px;line-height:1.35}.boss-pick{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.notice-list{display:flex;flex-direction:column;gap:4px}.notice-list button{min-height:44px;padding:6px 10px;text-align:left;background:var(--bg2);border:2px solid #171230}.notice-list button.on{border-color:var(--amber);color:var(--amber)}.form-col{display:flex;flex-direction:column;gap:10px}.form-col label{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:14px}.form-col select{min-height:40px;padding:4px 8px;background:var(--bg2);border:2px solid #171230}.chip-row{display:flex;flex-wrap:wrap;gap:6px}.chip{display:inline-flex;align-items:center;gap:4px;min-height:40px;padding:2px 8px;background:var(--bg2);border:2px solid #171230;font-size:13px}.chip img{width:22px;height:22px;image-rendering:pixelated}.chip:disabled{opacity:.4}.loading{display:flex;flex-direction:column;align-items:center;gap:10px;padding:40px 16px;color:var(--muted)}.loading .spr{animation:bob .7s steps(2) infinite}@keyframes bob{50%{transform:translateY(-4px)}}.run-screen{position:fixed;top:0;right:0;bottom:0;left:0;z-index:70;display:flex;flex-direction:column;background:var(--bg);overflow-y:auto}.run-top{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 10px;background:#0c0a20}.run-title{display:flex;flex-direction:column;align-items:center;min-width:0;line-height:1.2;text-align:center}.run-title small{color:var(--amber);font-size:13px}.run-notice{padding:3px 12px;background:var(--paper);color:#33280c;font-size:13px;text-align:center}.run-body{flex:1;display:grid;grid-template-columns:minmax(0,min(78vh,700px)) minmax(280px,360px);justify-content:center;gap:16px;padding:12px;align-items:start}.run-board{position:relative;min-width:0}.run-toast{position:absolute;left:50%;bottom:10px;transform:translate(-50%);z-index:6;max-width:90%;padding:5px 12px;background:#0c0a20f0;border:2px solid var(--red);color:var(--red);font-size:14px;text-align:center}.run-side{display:flex;flex-direction:column;gap:10px;min-width:0}.run-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px}.run-stats>div{display:flex;align-items:center;justify-content:center;gap:4px;min-height:36px;background:var(--panel);font-size:13px}.run-stats b{font-size:16px}.run-stats img{width:20px;height:20px;image-rendering:pixelated}.run-stats .stat-hp{grid-column:1 / -1;min-height:44px}.stat-hp b{font-size:26px;color:#ff9b8f}.shop-card{padding:8px 10px;background:var(--panel);border:2px solid var(--amber)}.shop-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin-top:6px}.shop-row button{min-height:44px;background:var(--amber);color:#2a1d05;font-weight:800;border:2px solid #171230}.dpad{position:relative;display:grid;grid-template-columns:repeat(3,60px);grid-template-rows:repeat(3,56px);gap:4px;justify-content:center}.dp{background:var(--panel2);border:2px solid #171230;box-shadow:0 3px #000;font-size:18px;color:var(--amber)}.dp:active{transform:translateY(3px);box-shadow:none}.dp.up{grid-area:1 / 2}.dp.left{grid-area:2 / 1}.dp.right{grid-area:2 / 3}.dp.down{grid-area:3 / 2}.dpad-stair{grid-area:2 / 2;background:var(--amber);color:#2a1d05;font-weight:800;border:2px solid #171230;font-size:14px}.run-tip{color:var(--muted);font-size:13px}.end-modal{z-index:90}.end-card{width:min(460px,100%);max-height:calc(100dvh - 32px);overflow-y:auto;display:flex;flex-direction:column;gap:10px;padding:12px 12px 16px;background:var(--panel);border:3px solid #0a0820;box-shadow:0 6px #000;text-align:center;animation:pop .25s}.end-card img{width:100%;aspect-ratio:3 / 2;object-fit:cover;image-rendering:pixelated;display:block}.end-card h2{color:var(--amber);font-size:20px}.tut{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;background:url(/bg-sky.webp) center/cover fixed #0d1038}.tut-body{flex:1;display:flex;gap:20px;align-items:center;justify-content:center;padding:14px;flex-wrap:wrap}.tut-tower{width:min(100%,460px)}.tut-tower .tower-canvas{width:100%}.tut-board{width:min(100%,560px)}.tut-card{width:min(100%,420px);display:flex;gap:10px;align-items:flex-start;padding:12px;background:var(--panel);border:3px solid #0a0820;box-shadow:0 5px #000;animation:pop .2s}.tut-avatar{flex:none;width:64px;height:64px}.tut-text{min-width:0;flex:1;display:flex;flex-direction:column;gap:8px}.tut-text>b{font-size:17px;color:var(--amber)}.tut-note{display:flex;gap:8px;align-items:center}.tut-note .sticky{flex:1;min-width:0}.tut-note .spr{flex:none}.landing{position:relative;min-height:100vh;min-height:100dvh;overflow:hidden;display:flex;flex-direction:column;background:#0d1038}.land-art{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;object-position:58% center;image-rendering:pixelated;animation:slowPan 26s ease-in-out infinite alternate}@keyframes slowPan{to{transform:scale(1.06) translateY(-1.5%)}}.land-shade{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,rgba(12,10,32,.92) 0,rgba(12,10,32,.72) 34%,transparent 62%)}.land-top{background:transparent;border:0}.land-main{position:relative;z-index:2;flex:1;width:min(100%,520px);display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:12px;padding:16px 48px 40px}.land-logo{width:120px;height:120px;object-fit:contain}.land-main h1{margin:0;font-size:52px;line-height:1.1;color:var(--amber);font-weight:900;letter-spacing:3px;text-shadow:3px 3px 0 var(--brick),6px 6px 0 #0a0820}.land-pitch{font-size:17px;text-shadow:0 1px 2px #000}.land-chips{display:flex;flex-wrap:wrap;gap:6px}.land-chips span{padding:3px 10px;background:#0c0a20cc;border:1px solid var(--line);font-size:14px}.land-chips b{color:var(--amber);font-size:17px}.land-note{margin:0;padding:8px 12px;max-width:100%;background:var(--paper);color:#33280c;transform:rotate(-1deg);font-size:14px;box-shadow:2px 3px #00000080}.land-note cite{display:block;font-style:normal;text-align:right;font-size:12px;color:#6d5a1f}.auth-page{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;background:linear-gradient(#0c0a20b3,#0c0a20e0),url(/key-tower-night.webp) center/cover}.auth-page .nv-center{min-height:0;width:100%}.auth-logo{width:56px;height:56px;object-fit:contain;flex:none}.auth-back{color:#dcd8f2}.nv-card{border-radius:2px;border:3px solid #0a0820;box-shadow:0 5px #000}.nv-primary{border-radius:2px;font-weight:800;min-height:44px}.nv-auth input,.nv-code button{border-radius:2px;min-height:44px}.admin-extra{margin-top:0}.admin-extra h2{color:var(--amber)}.admin-extra p{margin:8px 0}@media (max-width: 860px){.game-body{display:block;padding-bottom:calc(64px + env(safe-area-inset-bottom))}.nav{position:fixed;left:0;right:0;bottom:0;z-index:40;flex-direction:row;gap:0;padding:2px 2px calc(2px + env(safe-area-inset-bottom));border-right:0;border-top:2px solid #000}.nav button{flex:1;min-width:0;min-height:58px;font-size:13px}.page{padding:10px}.tower-page{grid-template-columns:minmax(0,1fr);gap:10px}.tp-scroll{height:46vh;height:46dvh}.tower-canvas{width:min(100%,352px)}.tp-side{order:0}.tp-actions{position:sticky;bottom:calc(68px + env(safe-area-inset-bottom));z-index:5;flex-direction:row}.tp-actions .btn-main{flex:2;padding:8px}.tp-actions .btn-sub{flex:1}.countdown b{font-size:28px}.inn-cols{grid-template-columns:minmax(0,1fr)}.inn-banner{height:140px}.ed-main{grid-template-columns:minmax(0,1fr)}.palette{display:flex;overflow-x:auto;overflow-y:hidden;max-height:none;padding-bottom:4px;overscroll-behavior-x:contain}.tool{flex:0 0 68px}.ed-side{gap:8px}.run-body{grid-template-columns:minmax(0,1fr);padding:8px;gap:8px}.run-stats{grid-template-columns:repeat(7,minmax(0,1fr))}.run-stats .stat-hp{grid-column:span 2;min-height:36px}.run-stats .stat-hp span{display:none}.stat-hp b{font-size:18px}.run-stats>div{flex-direction:column;gap:0;font-size:12px;line-height:1.1}.run-stats b{font-size:14px}.run-stats img{width:16px;height:16px}.dpad{grid-template-columns:repeat(3,64px);grid-template-rows:repeat(3,52px)}.run-tip{display:none}.tut-body{flex-direction:column;justify-content:flex-start;gap:10px;padding:10px}.tut-tower{width:min(100%,352px)}.tut-card{order:2}.land-art{object-position:50% center}.land-shade{background:linear-gradient(transparent 22%,#0c0a20d1 56%,#0c0a20f5)}.land-main{width:100%;justify-content:flex-end;align-items:center;text-align:center;padding:16px 20px max(28px,env(safe-area-inset-bottom))}.land-logo{width:84px;height:84px}.land-main h1{font-size:40px}.land-pitch{font-size:15px}.land-chips{justify-content:center}.btn-main.big{width:100%;max-width:340px}}@media (max-width: 430px){.game .top-bar .nv-more:not(.nv-group) .nv-more-short{display:none}.game .brand{font-size:14px}}@media (max-width: 380px){.brand-block small{font-size:10px}.logo-mini{width:26px;height:26px}.top-bar{gap:4px;padding:5px 6px}.tp-nums b{font-size:17px}.land-main h1{font-size:34px}.b-score b{font-size:16px}.board-list li{gap:6px;padding:6px}.nav button{font-size:12px}.dpad{grid-template-rows:repeat(3,46px)}}@media (prefers-reduced-motion: reduce){.pulse,.land-art,.cell.hl,.spr-wait,.loading .spr{animation:none}}
