:root{--bg: #120a10;--surface: #1d1119;--surface-2: #2a1822;--border: #3a2230;--text: #f5e9f0;--text-dim: #a98b9c;--accent: #ec4899;--accent-soft: rgba(236, 72, 153, .15);--danger: #f87171;--radius: 14px;--tabbar-h: 62px}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;overflow-wrap:anywhere}button{font:inherit;color:inherit;background:none;border:none;padding:0;cursor:pointer}button:disabled{cursor:default}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}input,textarea{font:inherit;color:var(--text);background:var(--surface-2);border:1px solid var(--border);border-radius:10px;padding:11px 12px;width:100%}input:focus-visible,textarea:focus-visible,button:focus-visible,a:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:2px}textarea{resize:vertical}code{background:var(--surface-2);border-radius:6px;padding:1px 6px;font-size:.85em}.app{min-height:100%;display:flex;flex-direction:column;max-width:640px;margin:0 auto}.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;padding:14px 16px 10px;background:color-mix(in srgb,var(--bg) 88%,transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.topbar-title{margin:0;font-size:22px;letter-spacing:.3px}.content{flex:1;padding:0 14px calc(var(--tabbar-h) + env(safe-area-inset-bottom) + 96px)}.loading{color:var(--text-dim);text-align:center;padding:40px 0}.icon-btn{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;border-radius:12px;color:var(--text-dim)}.icon-btn:not(:disabled):active{background:var(--surface-2)}.icon-btn:disabled{opacity:.35}.tabbar{position:fixed;bottom:0;left:50%;transform:translate(-50%);width:100%;max-width:640px;z-index:30;display:flex;background:color-mix(in srgb,var(--surface) 92%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-top:1px solid var(--border);padding-bottom:env(safe-area-inset-bottom)}.tab{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:9px 0 7px;color:var(--text-dim);font-size:11px;min-height:var(--tabbar-h)}.tab:hover{text-decoration:none}.tab.active{color:var(--accent)}.splash{height:100%;display:flex;align-items:center;justify-content:center;font-size:34px;font-weight:700}.accent-dot{color:var(--accent)}.auth-screen{min-height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px;gap:6px}.auth-brand{font-size:40px;margin:0}.auth-sub{color:var(--text-dim);margin:0 0 22px}.auth-form{width:100%;max-width:340px;display:flex;flex-direction:column;gap:14px}.field{display:flex;flex-direction:column;gap:6px}.field>span{font-size:13px;color:var(--text-dim)}.form-error{color:var(--danger);font-size:14px;margin:8px 0 0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;background:var(--surface-2);border:1px solid var(--border);border-radius:12px;padding:12px 16px;min-height:46px;font-weight:600;font-size:15px}.btn:hover{text-decoration:none}.btn:not(:disabled):active{filter:brightness(1.15)}.btn:disabled{opacity:.55}.btn-primary{background:var(--accent);border-color:var(--accent);color:#1b0511}.btn-danger{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 40%,var(--border))}.btn-block{width:100%}.btn-row{display:flex;gap:10px;flex-wrap:wrap}.btn-row .btn{flex:1;min-width:130px}.btn-link{color:var(--accent);padding:12px;font-size:14px}.map-toolbar{position:sticky;top:58px;z-index:15;display:flex;align-items:stretch;gap:8px;margin-bottom:14px}.search-bar{flex:1;min-width:0;display:flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:2px 4px 2px 12px;color:var(--text-dim)}.orbit-toggle{background:var(--surface);border:1px solid var(--border);border-radius:12px;min-width:48px}.orbit-toggle:not(:disabled):active{color:var(--accent)}.search-bar input{background:none;border:none;padding:10px 0;flex:1}.search-bar input:focus-visible{outline:none}.search-bar input::-webkit-search-cancel-button{display:none}.level-row{margin-bottom:10px}.level-head{width:100%;display:flex;align-items:center;gap:10px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:12px 14px;min-height:48px;text-align:left}.level-head:disabled{color:inherit}.level-head.targetable{border-color:color-mix(in srgb,var(--level-color, var(--accent)) 65%,var(--border));animation:target-pulse 1.6s ease-in-out infinite}@keyframes target-pulse{50%{box-shadow:0 0 0 4px color-mix(in srgb,var(--level-color, var(--accent)) 22%,transparent)}}.level-dot{width:12px;height:12px;border-radius:50%;flex:none}.level-name{font-weight:700;font-size:15px}.level-count{color:var(--text-dim);font-size:13px;font-variant-numeric:tabular-nums;background:var(--surface-2);border-radius:999px;padding:2px 9px;min-width:28px;text-align:center}.level-target{margin-left:auto;font-size:12px;color:var(--level-color, var(--accent));font-weight:600}.tile-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(76px,1fr));gap:8px 2px;padding:10px 2px 4px}.tile{display:flex;flex-direction:column;align-items:center;gap:5px;padding:6px 2px;border-radius:12px;min-width:44px}.tile:active{background:var(--surface)}.tile.dimmed{opacity:.55}.tile-user{font-size:11px;color:var(--text-dim);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tile.selected .tile-user{color:var(--accent);font-weight:700}.tile.selected .avatar{outline:3px solid var(--accent);outline-offset:2px}.avatar{border-radius:50%;object-fit:cover;background:var(--surface-2);flex:none}.avatar-fallback{display:flex;align-items:center;justify-content:center;font-weight:800;letter-spacing:.5px;border:1px solid}.avatar-fallback.pending{animation:pending-pulse 1.4s ease-in-out infinite}@keyframes pending-pulse{50%{opacity:.45}}.archived-block{margin-top:18px;border-top:1px solid var(--border);padding-top:8px}.archived-block summary{color:var(--text-dim);font-size:14px;font-weight:600;padding:12px 4px;cursor:pointer;list-style-position:inside}.empty-state{color:var(--text-dim);text-align:center;padding:36px 16px;line-height:1.6}.hint-bar{position:fixed;z-index:25;bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom) + 10px);left:50%;transform:translate(-50%);width:calc(100% - 20px);max-width:620px;display:flex;align-items:center;gap:8px;background:var(--surface-2);border:1px solid var(--accent);border-radius:12px;padding:8px 6px 8px 14px;font-size:13px;line-height:1.35;box-shadow:0 6px 24px #00000073}.hint-bar .btn-link{flex:none;padding:8px 10px}.sheet-backdrop{position:fixed;inset:0;z-index:40;background:#0000008c}.sheet{position:fixed;z-index:41;bottom:0;left:50%;transform:translate(-50%);width:100%;max-width:640px;max-height:88dvh;overflow-y:auto;background:var(--surface);border:1px solid var(--border);border-bottom:none;border-radius:20px 20px 0 0;padding:18px 16px calc(env(safe-area-inset-bottom) + 18px);display:flex;flex-direction:column;gap:16px;animation:sheet-up .18s ease-out}@keyframes sheet-up{0%{transform:translate(-50%,40px);opacity:.6}}.sheet-close{position:absolute;top:8px;right:8px}.sheet-head{display:flex;align-items:center;gap:14px;padding-right:40px}.sheet-id{display:flex;flex-direction:column;gap:2px;min-width:0}.sheet-id strong{font-size:18px}.sheet-id span{color:var(--text-dim);font-size:14px}.badge-archived{align-self:flex-start;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--danger)}.sheet-section{display:flex;flex-direction:column;gap:10px}.sheet-label{font-size:13px;color:var(--text-dim)}.chip-row{display:flex;flex-wrap:wrap;gap:8px}.chip{border:1px solid color-mix(in srgb,var(--chip-color, var(--accent)) 45%,var(--border));color:var(--text);border-radius:999px;padding:10px 14px;font-size:13px;font-weight:600;min-height:44px}.chip.active{background:color-mix(in srgb,var(--chip-color, var(--accent)) 24%,var(--surface));border-color:var(--chip-color, var(--accent))}.chip:disabled:not(.active){opacity:.5}.orbits-view{padding-top:6px}.orbits-canvas{position:relative;width:100%;max-width:560px;aspect-ratio:1;margin:0 auto}.orbits-canvas svg{position:absolute;inset:0;width:100%;height:100%}.orbit-sweep{position:absolute;inset:0;border-radius:50%;background:conic-gradient(from 0deg,rgba(236,72,153,.15),transparent 75deg);animation:orbit-spin 7s linear infinite;pointer-events:none}@keyframes orbit-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.orbit-sweep{animation:none}}.orbit-center{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:34px;height:34px;border-radius:50%;z-index:1;display:flex;align-items:center;justify-content:center;background:var(--accent-soft);border:1px solid var(--accent);color:var(--accent);font-size:11px;font-weight:700}.orbit-item{position:absolute;transform:translate(-50%,-50%);z-index:2;border-radius:50%;line-height:0}.orbit-item .avatar{box-shadow:0 0 0 2px var(--bg)}.orbit-plus{position:absolute;transform:translate(-50%,-50%);z-index:2;min-width:26px;height:26px;padding:0 4px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;background:var(--surface-2);border:1px solid var(--border);color:var(--text-dim);font-size:11px;font-weight:700}.orbits-hint{color:var(--text-dim);font-size:13px;text-align:center;margin:14px 12px 0}.add-view,.levels-view{display:flex;flex-direction:column;gap:14px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px;display:flex;flex-direction:column;gap:12px}.card h2{margin:0;font-size:17px}.card-help{margin:0;color:var(--text-dim);font-size:13px;line-height:1.5}.add-result,.result-block{display:flex;flex-direction:column;gap:6px}.result-summary{margin:0;font-size:14px;line-height:1.5}.result-block>span{font-size:12px;color:var(--text-dim);text-transform:uppercase;letter-spacing:.5px}.result-chips{display:flex;flex-wrap:wrap;gap:6px}.result-block.ok code{border:1px solid color-mix(in srgb,var(--accent) 45%,var(--border))}.result-block.bad code{color:var(--danger)}.level-edit{display:flex;align-items:center;gap:8px}.level-swatch{width:44px;height:44px;padding:4px;flex:none;background:var(--surface-2);border:1px solid var(--border);border-radius:10px;cursor:pointer}.level-swatch:disabled{opacity:.5;cursor:default}.level-name-input{flex:1;min-width:0}.level-name-input:disabled{opacity:.7}@media(min-width:480px){.tile-grid{grid-template-columns:repeat(auto-fill,minmax(84px,1fr))}}
