:root{--bg:#a8987c;--surface:#d4ccb8;--surface-hover:#c9bea6;--surface-raised:#dcd5c3;--text:#2e2a23;--text-h:#1c1812;--text-strong:#241f18;--text-muted:#4f483c;--text-faint:#6b6353;--border:#857760;--border-subtle:#ada085;--track:#bcb097;--map-bg:#c6bea6;--shadow:#281e0f47;--focus:#7a4e1e;--accent-bg:#605443;--accent-fg:#fff;--danger:#a1170f;--danger-bg:#f0cbc2;--warning:#7a4a06;--warning-bg:#eedfa8;--info:#2a5d8a;--info-bg:#cfdbe0;--success:#2f6b1f;--good:#3d8a2a;--gold:#8a5d00;--gold-border:#b8860b;--gold-bg:#efe1b0;--splat-hit:#a1170f;--splat-block:#2a5d8a;--splat-miss:#7b7364;--splat-bleed:#8b1a3a;--spec:#8a4b08;--icon-outline:none;--equipped:#2f7a1f;--stack-count:#7a5c00;--surface-top:#ddd6c4;--frame:#5a4a33;--bevel-hi:#fffaeb8c;--bevel-lo:#3c2d1940;--wood:#6b5235;--wood-hi:#8a6c47;--wood-lo:#4a3822;--hover-bg:#6b5235;--hover-fg:#fff3d0;--sans:system-ui, "Segoe UI", Roboto, sans-serif;--display:"Palatino Linotype", "Book Antiqua", Palatino, Georgia, serif;--mono:ui-monospace, Consolas, monospace;font:14px/1.45 var(--sans);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}:root[data-theme=dark]{--bg:#1f1d1a;--surface:#2e2c29;--surface-hover:#3a3732;--surface-raised:#46433a;--text:#d8cfb8;--text-h:#ffcf3f;--text-strong:#ece4cf;--text-muted:#b3a98f;--text-faint:#8d8571;--border:#4d4a43;--border-subtle:#3a3833;--track:#3a3833;--map-bg:#23261f;--shadow:#0009;--focus:#ffcf3f;--accent-bg:#694d23;--accent-fg:#fff3d0;--danger:#ff6b5b;--danger-bg:#3d1a15;--warning:#e6a519;--warning-bg:#3a2f17;--info:#4aa8ff;--info-bg:#142636;--success:#4fdc4f;--good:#4fdc4f;--gold:#e6a519;--gold-border:#b8860b;--gold-bg:#3a2f17;--splat-hit:#ff5a4a;--splat-block:#4aa8ff;--splat-miss:#8d8571;--splat-bleed:#ff6f8f;--spec:#ffb02e;--icon-outline:drop-shadow(0 0 1px #fff0c880);--equipped:#3fdc3f;--stack-count:#ff0;--surface-top:#36332f;--frame:#0f0e0c;--bevel-hi:#fff0d214;--bevel-lo:#00000073;--wood:#5a4126;--wood-hi:#7a5a34;--wood-lo:#3a2a17;--hover-bg:#e6a519;--hover-fg:#1c1812;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}body{background:var(--bg);color:var(--text);margin:0}h1,h2,h3{color:var(--text-h);font-family:var(--display);margin:0}p{margin:0}select,input[type=number]{font:inherit;color:var(--text-strong);background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:3px 6px;font-size:13px}input[type=checkbox]{accent-color:var(--accent-bg)}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.app{box-sizing:border-box;max-width:560px;margin:0 auto;padding:16px 16px 48px}.shell{--nav-w:200px;--side-w:270px;box-sizing:border-box;max-width:560px;margin:0 auto;padding:16px 16px 48px}.shell-brand{align-items:baseline;gap:8px;margin:4px 0 12px;display:flex}.app-title{margin:4px 0 12px;font-size:24px;font-weight:700}.shell-brand .app-title{margin:0}.shell-main{flex-direction:column;gap:16px;min-width:0;display:flex}.shell-side{display:none}.player-strip{gap:6px}.tabs{border-bottom:1px solid var(--border-subtle);flex-wrap:wrap;gap:4px;margin-bottom:16px;padding-bottom:10px;display:flex}.tab{font:inherit;color:var(--text-muted);cursor:pointer;text-align:left;background:0 0;border:1px solid #0000;border-radius:6px;padding:4px 10px;font-size:13px}.tab:hover{background:var(--surface-hover);color:var(--text-strong)}.tab[aria-current=page]{background:var(--hover-bg);border-color:var(--frame);color:var(--hover-fg);font-weight:700}.tab.has-alert{border-color:var(--gold-border);animation:1.5s infinite tab-alert-pulse}@keyframes tab-alert-pulse{0%,to{box-shadow:0 0 #d4af3799}50%{box-shadow:0 0 0 4px #d4af3700}}@media (width>=1024px){.shell{grid-template-columns:var(--nav-w) minmax(0, 1fr) var(--side-w);max-width:none;min-height:100vh;padding:0;display:grid}.shell.is-sidebar-collapsed{grid-template-columns:var(--nav-w) minmax(0, 1fr) 44px}.shell-nav,.shell-side{box-sizing:border-box;background:var(--surface);height:100vh;position:sticky;top:0;overflow-y:auto}.shell-nav{border-right:3px solid var(--wood);flex-direction:column;padding:20px 12px;display:flex}.shell-brand{border-bottom:1px solid var(--border-subtle);flex-direction:column;align-items:flex-start;gap:2px;margin:0 0 12px;padding:0 8px 16px}.shell-brand .app-title{font-size:20px}.shell-nav .tabs{border:none;flex-flow:column;flex:1;gap:2px;margin:0;padding:0}.shell-nav .tab{padding:8px 12px;font-size:15px}.shell-nav .tab:last-child{margin-top:auto}.shell-main{box-sizing:border-box;width:100%;max-width:880px;margin:0 auto;padding:24px 32px 64px}.shell:not(.is-sidebar-collapsed) .player-strip{display:none}.shell-side{border-left:3px solid var(--wood);padding:12px 16px 24px;display:block}.is-sidebar-collapsed .shell-side{padding:12px 4px}}.sidebar-toggle{color:var(--text-muted);margin-left:auto;font-size:13px;display:block}.is-sidebar-collapsed .sidebar-toggle{border-color:var(--border);margin:0 auto;font-size:18px}.sidebar-body{flex-direction:column;gap:16px;margin-top:4px;display:flex}.sidebar-identity{align-items:center;gap:12px;display:flex}.sidebar-name{color:var(--text-h);font-weight:600}.avatar{box-sizing:border-box;background:var(--surface-hover);border:1px solid var(--border);width:56px;height:56px;fill:var(--text-faint);border-radius:10px;flex-shrink:0;padding:6px;display:inline-flex}.sidebar-gold{font:inherit;border:1px solid var(--gold-border);background:var(--gold-bg);width:100%;color:inherit;font-variant-numeric:tabular-nums;cursor:pointer;border-radius:8px;justify-content:space-between;align-items:baseline;padding:8px 10px;font-weight:600;display:flex}.sidebar-breakdown{border:1px solid var(--gold-border);border-radius:4px;padding:4px 10px}.sidebar-skills{flex-direction:column;gap:2px;display:flex}.sidebar-skill{font:inherit;color:var(--text-strong);text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;flex-direction:column;gap:3px;padding:5px 8px;font-size:13px;display:flex}.skill-card{font:inherit;color:inherit;text-align:left;cursor:pointer}.skill-card:hover{border-color:var(--border);background:var(--surface-hover)}.sidebar-skill:hover{background:var(--surface-hover);border-color:var(--border-subtle)}.sidebar-skill-level{color:var(--text-h);font-variant-numeric:tabular-nums;font-weight:600}.sidebar-skill .progress-track{height:4px;display:block}.sidebar-skill .progress-fill{display:block}.page,.section,.stack{flex-direction:column;display:flex}.page{gap:20px}.section,.stack{gap:8px}.stack-sm{flex-direction:column;gap:4px;display:flex}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px;display:flex}.page-title{font-size:20px;font-weight:600}.section-title{text-transform:uppercase;letter-spacing:.06em;color:var(--text-h);font-size:12px;font-weight:600}.row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.row-between{justify-content:space-between}.card{border:1px solid var(--frame);background:linear-gradient(180deg, var(--surface-top), var(--surface) 48px);box-shadow:inset 1px 1px 0 var(--bevel-hi), inset -1px -1px 0 var(--bevel-lo), 0 1px 3px var(--shadow);border-radius:4px;flex-direction:column;gap:8px;min-width:0;padding:10px 12px;display:flex}.card.is-locked{box-shadow:none;background:0 0;border-style:dashed}.card.is-highlight{border-color:var(--gold-border);background:var(--gold-bg)}.card.is-active{border-color:var(--accent-bg)}.card-header{justify-content:space-between;align-items:center;gap:8px;width:100%;min-width:0;display:flex}.card-toggle{font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:none;margin:0;padding:0}.card-title{font-family:var(--display);color:var(--text-strong);align-items:center;gap:8px;min-width:0;font-weight:600;display:inline-flex}.card-meta{color:var(--text-muted);text-align:right;flex-shrink:0;font-size:12px}.sidebar-fold{font:inherit;box-sizing:content-box;cursor:pointer;background:0 0;border:none;border-radius:4px;justify-content:space-between;align-items:center;width:100%;margin:0 -4px;padding:2px 4px;display:flex}.sidebar-fold:hover{background:var(--surface-hover)}.card-quick{justify-content:flex-end;margin-top:-4px;display:flex}.btn{font:inherit;border:1px solid var(--frame);background:linear-gradient(180deg, var(--surface-raised), var(--surface-hover));box-shadow:inset 1px 1px 0 var(--bevel-hi), inset -1px -1px 0 var(--bevel-lo);color:var(--text-strong);cursor:pointer;border-radius:3px;padding:4px 10px;font-size:13px;line-height:1.3}.btn:hover:not(:disabled){background:var(--hover-bg);border-color:var(--frame);color:var(--hover-fg)}.btn:active:not(:disabled){box-shadow:inset 1px 1px 0 var(--bevel-lo), inset -1px -1px 0 var(--bevel-hi)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:linear-gradient(180deg, var(--wood-hi), var(--wood-lo));border-color:var(--frame);color:#fff3d0;text-shadow:0 1px #00000080}.btn-primary:hover:not(:disabled){background:linear-gradient(180deg, var(--wood-hi), var(--wood-lo));border-color:var(--gold-border);color:#fff3d0;filter:brightness(1.25)}.btn-danger{color:var(--danger);border-color:var(--danger);background:var(--danger-bg);font-weight:600}.btn-danger:hover:not(:disabled){background:var(--danger);color:#fff}.btn-ghost{box-shadow:none;background:0 0;border-color:#0000}.btn-row{flex-wrap:wrap;gap:6px;display:flex}.game-icon{flex-shrink:0;align-items:center;display:inline-flex}.item-chip{white-space:nowrap;align-items:center;gap:4px;display:inline-flex}.recipe-yield{color:var(--text-strong);flex-direction:column;gap:4px;display:flex}.cycle-track{height:4px}.progress-fill.cycle-fill{background:var(--gold);width:0;animation-name:cycle-fill;animation-timing-function:linear;animation-fill-mode:forwards}@keyframes cycle-fill{0%{width:0}to{width:100%}}@media (prefers-reduced-motion:reduce){.progress-fill.cycle-fill{opacity:.4;width:100%;animation:none}}.quick-menu{z-index:1000;border:1px solid var(--border);background:var(--surface-raised);min-width:150px;box-shadow:0 6px 16px var(--shadow);border-radius:8px;flex-direction:column;gap:2px;padding:4px;display:flex;position:fixed}.quick-menu .btn{text-align:left;box-shadow:none;background:0 0;border-color:#0000}.quick-menu .btn:hover:not(:disabled),.quick-menu .btn:focus-visible{background:var(--hover-bg);border-color:var(--hover-bg);color:var(--hover-fg);filter:none;outline:none;font-weight:600}.text-muted{color:var(--text-muted);font-size:13px}.text-small{font-size:12px}.text-faint{color:var(--text-faint)}.text-danger{color:var(--danger)}.text-success{color:var(--success)}.text-warning{color:var(--warning)}.text-info{color:var(--info)}.text-gold{color:var(--gold)}.empty-state{color:var(--text-faint);font-size:13px}.locked-note{color:var(--text-faint);font-size:12px}.tag{border:1px solid var(--border);color:var(--text-muted);white-space:nowrap;border-radius:999px;padding:1px 7px;font-size:11px;font-weight:600}.tag-gold{border-color:var(--gold-border);color:var(--gold)}.tag-success{border-color:var(--success);color:var(--success)}.data-row{border-bottom:1px solid var(--border-subtle);justify-content:space-between;gap:12px;padding:4px 0;font-size:13px;display:flex}.data-row:last-child{border-bottom:none}.data-row>:last-child{color:var(--text-strong);font-variant-numeric:tabular-nums;text-align:right;font-weight:600}.progress-track{background:var(--track);border-radius:4px;height:6px;overflow:hidden}.progress-fill{background:var(--good);height:100%}.toast-zone{z-index:9999;pointer-events:none;width:320px;max-width:calc(100vw - 32px);max-height:70vh;position:fixed;overflow-y:auto}.toast-zone-status{bottom:16px;right:16px}.toast-zone-status .toast-list{flex-direction:column-reverse}.toast-zone-achievement{width:360px;top:16px;left:50%;transform:translate(-50%)}@media (width>=1024px){:root[data-sidebar=open] .toast-zone-status{right:286px}:root[data-sidebar=collapsed] .toast-zone-status{right:60px}}.toast-list{pointer-events:auto;flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.toast{color:var(--text-strong);background:var(--info-bg);box-shadow:0 2px 8px var(--shadow);cursor:pointer;border:1px solid #0000;border-radius:8px;justify-content:space-between;align-items:flex-start;gap:8px;padding:8px 10px;font-size:13px;display:flex}.toast-warning{background:var(--warning-bg)}.toast-error{background:var(--danger-bg)}.toast-achievement{background:var(--gold-bg);border-color:var(--gold-border)}.toast .btn{padding:0 6px;line-height:1.2}.combat-portrait{justify-content:center;display:flex}.combat-portrait-fallback{justify-content:center;align-items:center;width:96px;height:96px;font-size:40px;display:flex}.splat-anchor{position:relative}.combat-log{border:1px solid var(--border-subtle);max-height:140px;font:11px/1.5 var(--mono);border-radius:6px;flex-direction:column-reverse;padding:4px 8px;display:flex;overflow-y:auto}.combat-log-row{gap:8px;display:flex}.combat-log-row>:first-child{width:28px;font-weight:700}@keyframes hitsplatFloat{0%{opacity:1;transform:translate(-50%)}to{opacity:0;transform:translate(-50%,-24px)}}.history-log{gap:0;max-height:260px;overflow-y:auto}.history-log .data-row>:last-child{white-space:nowrap;font-weight:400}.map-layout{position:relative}.map-frame{border:2px solid var(--frame);background:#35a2ee;border-radius:6px;height:clamp(340px,100dvh - 215px,860px);position:relative;overflow:hidden}@media (width>=1024px){.shell-main.is-map{max-width:none;height:100vh;padding:16px 20px;overflow:hidden}.shell-main.is-map .map-page{flex:1;gap:12px;min-height:0}.shell-main.is-map .map-layout{flex:auto;min-height:0;display:flex}.shell-main.is-map .map-frame{flex:1;height:auto;min-height:360px}}.map-viewport{touch-action:none;-webkit-user-select:none;user-select:none;cursor:grab;position:absolute;inset:0;overflow:hidden}.map-viewport:active{cursor:grabbing}.map-viewport:focus-visible{outline:2px solid var(--focus);outline-offset:-3px}.map-art{transform-origin:0 0;pointer-events:none;max-width:none;position:absolute;top:0;left:0}.map-routes{pointer-events:none;position:absolute;inset:0;overflow:visible}.map-route,.map-route-casing{fill:none;stroke-linecap:round;stroke-linejoin:round}.map-route-casing{stroke:#1e1405bf;stroke-width:7px}.map-route.is-preview{stroke:#ffe58a;stroke-width:3.5px;stroke-dasharray:9 7;animation:.9s linear infinite map-route-march}.map-route.is-travel{stroke:#fffffff2;stroke-width:3px;stroke-dasharray:2 6}@keyframes map-route-march{to{stroke-dashoffset:-16px}}.map-pin{font:inherit;cursor:pointer;background:0 0;border:none;flex-direction:column;align-items:center;gap:2px;padding:0;display:flex;position:absolute;transform:translate(-50%,-15px)}.map-pin-icon{justify-content:center;align-items:center;width:30px;height:30px;display:flex;position:relative}.map-pin-icon:before{content:"";box-sizing:border-box;background:radial-gradient(circle at 35% 30%,#fff6d8,#d9c08a);border:2px solid #2a1f10;border-radius:50%;position:absolute;inset:0;box-shadow:0 2px 4px #00000073}.map-pin-art{display:flex;position:relative}.map-pin,.map-pin *{cursor:pointer}.map-pin:hover .map-pin-icon:before{border-color:#fff3d0;box-shadow:0 0 0 2px #fff3d0b3,0 2px 4px #00000073}.map-pin.is-selected .map-pin-icon:before{border-color:#ffd34d;box-shadow:0 0 0 3px #ffd34d99,0 2px 4px #00000073}.map-pin.is-locked .map-pin-icon:before{background:radial-gradient(circle at 35% 30%,#d8d4cc,#8f897c)}.map-pin.is-locked .map-pin-art{filter:grayscale();opacity:.7}.map-pin.is-current .map-pin-icon:before{background:radial-gradient(circle at 35% 30%,#9cf28a,#2f8a1f);border:2px solid #fff;border-radius:3px;inset:3px;transform:rotate(45deg);box-shadow:0 0 0 2px #163d0e,0 0 10px 3px #78ff5a80}.map-pin.is-current .map-pin-icon:after{content:"";pointer-events:none;border:2px solid #9cf28ae6;border-radius:3px;animation:1.8s ease-out infinite map-here-pulse;position:absolute;inset:3px;transform:rotate(45deg)}@keyframes map-here-pulse{0%{opacity:.9;transform:rotate(45deg)scale(1)}to{opacity:0;transform:rotate(45deg)scale(1.9)}}.map-pin.is-current .map-pin-dot{background:#fff}.map-pin.is-current .map-pin-label{background:#1f5e14;box-shadow:0 0 0 1px #9cf28a}.map-pin-badges{gap:1px;display:flex;position:absolute;top:-7px;right:-10px}.map-pin-icons{background:#fff6d8e0;border-radius:4px;gap:1px;padding:0 3px;font-size:11px;line-height:1.4;display:flex}.map-pin:focus-visible{outline:none}.map-pin:focus-visible .map-pin-icon:before{outline-offset:2px;outline:2px solid #fff}.map-pin-dot{background:#6b5235;border-radius:50%;width:10px;height:10px;display:block}.map-pin.is-locked .map-pin-dot{background:#5a5650}.map-pin-lock{font-size:12px;line-height:1;position:absolute;bottom:-5px;right:-7px}.map-pin-label{color:#fff3d0;font-family:var(--display);white-space:nowrap;text-shadow:0 1px #000;background:#140e06cc;border-radius:4px;padding:1px 6px;font-size:12px;font-weight:700;line-height:1.35}.map-pin.is-locked .map-pin-label{color:#cfc8b8}.map-pin-eta{color:#2a1f10;white-space:nowrap;background:#ffe58a;border:1px solid #2a1f10;border-radius:999px;padding:1px 7px;font-size:11px;font-weight:700;position:absolute;bottom:calc(100% + 4px);left:50%;transform:translate(-50%)}.map-badge{color:#fff;border:1px solid #1c140a;border-radius:50%;flex:none;justify-content:center;align-items:center;width:15px;height:15px;font-size:10px;font-weight:800;line-height:1;display:inline-flex}.map-badge.is-ready{background:#2f8a1f}.map-player{pointer-events:none;filter:drop-shadow(0 2px 2px #00000080);position:absolute;transform:translate(-50%,-100%)}.map-player:not(.is-moving){margin-top:-14px}.map-player-dot{background:#d62f2f;border:2px solid #fff;border-radius:50% 50% 50% 0;width:16px;height:16px;margin-bottom:5px;display:block;transform:rotate(-45deg)}.map-player.is-moving .map-player-dot{animation:.6s ease-in-out infinite alternate map-player-bob}@keyframes map-player-bob{to{translate:0 -3px}}.map-status{border:1px solid var(--frame);color:#fff3d0;background:#140e06d9;border-radius:999px;align-items:center;gap:6px;max-width:calc(100% - 100px);padding:3px;font-size:12px;display:flex;position:absolute;top:8px;left:50%;transform:translate(-50%);box-shadow:0 1px 4px #0006}.map-status:empty{display:none}.map-status-text{min-width:0;color:inherit;font:inherit;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;background:0 0;border:none;padding:2px 8px;overflow:hidden}.map-status-text strong{color:#ffe58a}.map-status-stop{color:#ffd9d4;font:inherit;cursor:pointer;background:#5c140f;border:1px solid #a1170f;border-radius:999px;flex:none;padding:2px 8px;font-weight:700}.map-status-stop:hover{filter:brightness(1.25)}.map-shortcut,.map-shortcut-casing{fill:none;stroke-linecap:round}.map-shortcut-casing{stroke:#140e068c;stroke-width:6px}.map-shortcut{stroke:#9cf28a;stroke-width:3px;stroke-dasharray:1 7}.map-shortcut.is-locked{stroke:#e8e2d2}.map-shortcut-marker{box-sizing:border-box;background:#3f9a2c;border:2px solid #163d0e;border-radius:50%;justify-content:center;align-items:center;width:22px;height:22px;font-size:12px;display:flex;position:absolute;transform:translate(-50%,-50%);box-shadow:0 1px 3px #00000073}.map-shortcut-marker.is-locked{filter:grayscale();background:#8f897c;border-color:#3a3630}.map-controls{flex-direction:column;gap:4px;display:flex;position:absolute;top:8px;right:8px}.map-ctrl{border:1px solid var(--frame);background:linear-gradient(180deg, var(--wood-hi), var(--wood-lo));color:#fff3d0;min-width:34px;height:34px;font:inherit;cursor:pointer;border-radius:4px;padding:0 8px;font-size:17px;font-weight:700;line-height:1;box-shadow:0 1px 3px #0006}.map-ctrl:hover{filter:brightness(1.2)}.map-panel{border:2px solid var(--frame);background:var(--surface);border-radius:6px;flex-direction:column;min-height:0;max-height:58%;display:flex;position:absolute;bottom:8px;left:8px;overflow:hidden;box-shadow:0 -2px 12px #00000059}.map-layout.is-wide .map-panel.is-open{width:320px;max-height:calc(100% - 60px)}.map-layout:not(.is-wide) .map-panel.is-open{right:8px}.map-panel:not(.is-open) .map-place-list{display:none}.map-panel-handle{background:linear-gradient(180deg, var(--wood-hi), var(--wood-lo));color:#fff3d0;font:inherit;font-family:var(--display);cursor:pointer;border:none;justify-content:space-between;align-items:center;gap:12px;padding:8px 12px;font-size:14px;font-weight:700;display:flex}.map-place-list{margin:0;padding:4px;list-style:none;overflow-y:auto}.map-place{width:100%;color:var(--text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:4px;align-items:center;gap:8px;padding:8px;display:flex}.map-place:hover{background:var(--surface-hover)}.map-place-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-weight:600;overflow:hidden}.map-place.is-locked .map-place-name{color:var(--text-faint)}.map-place-status{color:var(--text-muted);white-space:nowrap;font-size:12px}.map-place-details{flex-direction:column;gap:8px;padding:10px 12px 12px;display:flex;overflow-y:auto}.map-place-head{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.map-place-title{font-family:var(--display);color:var(--text-h);margin:0;font-size:18px;font-weight:700}.map-close{width:30px;height:30px;color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:4px;flex:none;margin:-4px -6px 0 0;font-size:22px;line-height:1}.map-close:hover{background:var(--surface-hover);color:var(--text-strong)}.map-place-tags{flex-wrap:wrap;gap:4px;display:flex}.map-place-tags:empty{display:none}.map-place-details p{margin:0}.map-place-details .locked-note{color:var(--text);font-size:13px}.map-amenities{grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:4px;margin:0;padding:0;font-size:12px;list-style:none;display:grid}.map-amenities li{border:1px solid var(--border-subtle);background:var(--surface-raised);border-radius:4px;align-items:center;gap:5px;min-width:0;padding:3px 6px;display:flex}.map-amenity-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.map-quests{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.map-quest{background:#2c5f9e26;border:1px solid #2c5f9e;border-radius:4px;align-items:center;gap:6px;padding:4px 6px;font-size:13px;display:flex}.map-quest-name{flex:1;min-width:0;font-weight:600}.map-quest-giver{border:1px solid var(--border);background:var(--surface-raised);white-space:nowrap;border-radius:999px;flex:none;padding:1px 7px;font-size:12px}.map-place.is-current .map-place-name{color:var(--success)}.map-badge.is-quest{font-family:var(--display);background:#2c5f9e;border-color:#0d2340}.map-badge.is-quest-ready{color:#2a1a00;font-family:var(--display);background:#f2c230;border-color:#5c3d00}.map-quest-giver.is-ready{color:#3d2a00;background:#f6e3a0;border-color:#b8860b;font-weight:700}.map-toll{border:1px solid var(--gold-border);background:var(--gold-bg);color:var(--text-strong);border-radius:4px;margin:0;padding:4px 8px;font-size:13px}.map-travel{width:100%;margin-top:2px}@media (prefers-reduced-motion:reduce){.map-route.is-preview,.map-player.is-moving .map-player-dot,.map-pin.is-current .map-pin-icon:after{animation:none}}.dialog-backdrop{z-index:10000;background:#00000080;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.dialog{border:2px solid var(--wood);width:100%;max-width:420px;box-shadow:0 10px 30px var(--shadow)}.dialog-text{box-sizing:border-box;width:100%;min-height:140px;font:12px/1.4 var(--mono);color:var(--text-strong);background:var(--bg);border:1px solid var(--border);resize:vertical;border-radius:6px;padding:6px}.dialog.convo-dialog{border:2px solid var(--frame);background:var(--paper);max-width:460px;padding:0;overflow:hidden}.convo{max-height:min(78vh,620px);color:var(--paper-ink);flex-direction:column;display:flex}.convo-head{background:linear-gradient(180deg, var(--wood-hi), var(--wood-lo));border-bottom:2px solid var(--frame);align-items:center;gap:12px;padding:10px 14px;display:flex}.chat-head{box-sizing:border-box;border:2px solid var(--frame);background:radial-gradient(circle at 35% 30%,#fff6d8,#cdb88a);border-radius:50%;flex:none;justify-content:center;align-items:center;line-height:1;display:inline-flex;overflow:hidden;box-shadow:inset 0 0 0 2px #fffaeb80}.convo-who{flex-direction:column;min-width:0;display:flex}.convo-name{font-family:var(--display);color:#ffe58a;text-shadow:0 1px #000;font-size:19px}.convo-title{color:#f3e3bd;font-size:12px}.convo-log{flex-direction:column;gap:8px;min-height:84px;padding:12px 16px 8px;display:flex;overflow-y:auto}.convo-msg{margin:0;font-size:15px;line-height:1.5}.convo-msg.is-npc:not(.is-past){cursor:pointer}.convo-msg.is-past{opacity:.6;font-size:13px}.convo-msg.is-you{text-align:right;color:#1d3f78;align-self:flex-end;max-width:85%;font-style:italic}.convo-you{font-style:normal;font-weight:700}.convo-caret{vertical-align:text-bottom;background:currentColor;width:7px;height:1em;margin-left:2px;animation:.8s step-end infinite convo-blink;display:inline-block}@keyframes convo-blink{50%{opacity:0}}.convo-options{border-top:1px solid var(--paper-edge);flex-direction:column;gap:4px;margin:0;padding:8px 12px 12px;list-style:none;transition:opacity .15s;display:flex}.convo-options.is-waiting{visibility:hidden;opacity:0}.convo-option{color:#0b3d91;width:100%;font:inherit;text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:4px;align-items:center;gap:8px;padding:7px 10px;font-size:14px;font-weight:600;display:flex}.convo-option:hover,.convo-option:focus-visible{border-color:var(--paper-edge);background:#ffffff73;outline:none}.convo-option.is-leave{color:#6b5a3e;font-weight:500}.convo-key{border:1px solid var(--paper-edge);width:20px;height:20px;color:var(--paper-ink);background:#ffffff80;border-radius:4px;flex:none;justify-content:center;align-items:center;font-size:11px;font-weight:700;display:inline-flex}.convo-skip{color:#0b3d91;font:inherit;cursor:pointer;background:0 0;border:none;align-self:center;margin:0 0 10px;padding:2px 10px;font-size:12px}.npc-intro{align-items:center;gap:12px;display:flex}.npc-intro-text{flex-direction:column;gap:4px;min-width:0;display:flex}.npc-intro-text p{margin:0}.npc-greeting{font-family:var(--display);color:var(--text-strong);font-size:15px;font-style:italic}.npc-quests{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.quest-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:18px 14px;padding:8px 4px 4px;display:grid}.quest-scroll{border-left:1px solid var(--paper-edge);border-right:1px solid var(--paper-edge);background:linear-gradient(90deg, #0000000d, transparent 8%, transparent 92%, #0000000d), var(--paper);min-width:0;color:var(--paper-ink);flex-direction:column;gap:8px;margin:6px;padding:16px 14px 14px;display:flex;position:relative;box-shadow:0 4px 10px #0003}.quest-scroll:before,.quest-scroll:after{content:"";background:linear-gradient(#e0cd9f,#b89a64 55%,#8f7346);border:1px solid #6b5235;border-radius:6px;height:11px;position:absolute;left:-7px;right:-7px;box-shadow:0 1px 2px #0004}.quest-scroll:before{top:-6px}.quest-scroll:after{bottom:-6px}.quest-scroll.is-ready{box-shadow:0 0 0 2px #f2c230,0 0 14px 2px #f2c23088,0 4px 10px #0003}.quest-scroll.is-completed{opacity:.75}.quest-scroll.is-locked{filter:grayscale(.4)}.quest-scroll-head{align-items:center;gap:8px;display:flex}.quest-scroll-head .map-badge{width:20px;height:20px;font-size:12px}.quest-scroll-title{min-width:0;font-family:var(--display);color:#3b2410;flex:1;margin:0;font-size:16px;font-weight:700}.quest-scroll-tag{border:1px solid var(--paper-edge);color:#6b5235;white-space:nowrap;border-radius:999px;flex:none;padding:1px 8px;font-size:11px;font-weight:700}.quest-scroll.is-ready .quest-scroll-tag{color:#3d2a00;background:#f6e3a0;border-color:#b8860b}.quest-scroll.is-in-progress .quest-scroll-tag{color:#1d3f78;border-color:#2c5f9e}.quest-scroll.is-completed .quest-scroll-tag{color:#2f6b1f;border-color:#2f6b1f}.quest-scroll-desc{color:#4f3f2a;margin:0;font-size:13px;font-style:italic}.quest-giver{align-items:center;gap:8px;font-size:13px;display:flex}.quest-giver-place{color:#6b5a3e}.quest-steps{border:1px dashed var(--paper-edge);border-radius:4px;flex-direction:column;gap:6px;margin:0;padding:8px 10px;font-size:13px;list-style:none;display:flex}.quest-steps li.is-done{color:#7a6a52;text-decoration:line-through}.quest-steps li.is-done:before{content:"✓ ";color:#2f6b1f;margin-right:2px;text-decoration:none;display:inline-block}.quest-steps li.is-current{color:#1d3f78;font-weight:700}.quest-steps li.is-current:before{content:"➜ "}.quest-step-progress{color:var(--paper-ink);flex-direction:column;gap:3px;margin-top:4px;font-weight:400;display:flex}.quest-step-progress .progress-track{background:#0000001a;height:6px}.quest-callout{background:#fff6;border-radius:4px;margin:0;padding:6px 10px;font-size:13px;font-weight:600}.quest-callout.is-ready{color:#3d2a00;background:#f6e3a0;border:1px solid #b8860b}.quest-callout-lock{color:#6b5a3e;font-weight:400}.quest-rewards{border-top:1px solid var(--paper-edge);flex-wrap:wrap;align-items:center;gap:6px;padding-top:8px;font-size:12px;display:flex}.quest-rewards-label{letter-spacing:.06em;text-transform:uppercase;color:#6b5a3e;font-size:10px;font-weight:700}.quest-reward{border:1px solid var(--paper-edge);background:#fff5;border-radius:999px;align-items:center;gap:4px;padding:1px 7px;display:inline-flex}.dialog.quest-done-dialog{border:2px solid var(--frame);background:var(--paper);max-width:360px;color:var(--paper-ink)}.quest-done{text-align:center;flex-direction:column;align-items:center;gap:6px;padding:8px 6px 4px;animation:.35s ease-out quest-done-in;display:flex}.quest-done-badge{color:#fff;width:46px;height:46px;font-family:var(--display);background:#2c5f9e;border:2px solid #0d2340;border-radius:50%;justify-content:center;align-items:center;font-size:24px;font-weight:700;display:inline-flex;box-shadow:0 0 0 4px #f2c23099}.quest-done-kicker{letter-spacing:.08em;text-transform:uppercase;color:#8a5d00;margin:4px 0 0;font-size:12px;font-weight:700}.quest-done-name{font-family:var(--display);color:#3b2410;margin:0;font-size:22px}.quest-done-label{color:#6b5a3e;margin:6px 0 0;font-size:13px}.quest-done-rewards{margin:0 0 8px;padding:0;font-size:14px;font-weight:600;list-style:none}.dialog.away-dialog{border:2px solid var(--frame);background:var(--paper);max-width:400px;max-height:calc(100dvh - 32px);color:var(--paper-ink);overflow-y:auto}.away{flex-direction:column;align-items:center;gap:4px;padding:6px 4px 2px;animation:.35s ease-out quest-done-in;display:flex}.away-kicker{letter-spacing:.08em;text-transform:uppercase;color:#8a5d00;margin:0;font-size:12px;font-weight:700}.away-time{font-family:var(--display);color:#3b2410;margin:0;font-size:26px}.away-note{color:#6b5a3e;margin:0;font-size:12px}.away-body{flex-direction:column;align-self:stretch;gap:10px;margin:8px 0 10px;display:flex}.away-section h4{border-bottom:1px dashed var(--paper-edge);letter-spacing:.06em;text-transform:uppercase;color:#6b5a3e;margin:0 0 4px;padding-bottom:2px;font-size:11px;font-weight:700}.away-skills{flex-direction:column;gap:4px;margin:0;padding:0;font-size:14px;list-style:none;display:flex}.away-skills li{align-items:center;gap:6px;display:flex}.away-skill-name{font-weight:600}.away-level{color:#fff;background:#1a7a3a;border-radius:999px;padding:0 6px;font-size:11px;font-weight:700;line-height:16px}.away-xp{color:#1a5a9e;margin-left:auto;font-weight:700}.away-chips{flex-wrap:wrap;gap:4px 12px;font-size:13px;font-weight:600;display:flex}.away-section.is-spent .away-chips{opacity:.7}.away-kills{margin:0;font-size:13px;font-weight:600}.away-warn{color:#8a2a1a;background:#b0302014;border-radius:6px;margin:0;padding:6px 8px;font-size:13px;font-weight:600}@media (prefers-reduced-motion:reduce){.away{animation:none}}@keyframes quest-done-in{0%{opacity:0;transform:scale(.85)}}@media (prefers-reduced-motion:reduce){.quest-done,.convo-caret{animation:none}}.segmented{flex-wrap:wrap;gap:6px;display:flex}.segmented .btn[aria-pressed=true]{background:var(--accent-bg);border-color:var(--accent-bg);color:var(--accent-fg)}.spec-bar .progress-fill{background:var(--spec)}.spec-bar.is-armed{outline:2px solid var(--spec);outline-offset:2px;border-radius:4px}.stat-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:2px 16px;display:grid}.spell-select{max-width:100%}.input{font:inherit;color:var(--text-strong);background:var(--surface);border:1px solid var(--border);box-sizing:border-box;border-radius:6px;min-width:0;padding:6px 8px;font-size:14px}.chip-row{flex-wrap:wrap;gap:4px;display:flex}.chip{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text-muted);cursor:pointer;border-radius:999px;padding:3px 10px;font-size:12px}.chip[aria-pressed=true]{background:var(--accent-bg);border-color:var(--accent-bg);color:var(--accent-fg)}.tag-info{border-color:var(--info);color:var(--info)}.tag-danger{border-color:var(--danger);color:var(--danger)}.inv-toolbar{flex-wrap:nowrap}.inv-search{flex:1}.inv-grid{grid-template-columns:repeat(auto-fill,minmax(76px,1fr));gap:6px;display:grid}.inv-tile{font:inherit;aspect-ratio:1;border:1px solid var(--border-subtle);background:var(--surface);min-width:0;color:var(--text-strong);cursor:pointer;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:2px;padding:6px 4px 4px;display:flex;position:relative}.inv-tile:hover:not(:disabled){background:var(--surface-hover);border-color:var(--border)}.inv-tile:disabled{opacity:.4;cursor:not-allowed}.inv-tile.is-equipped{border-color:var(--equipped);box-shadow:inset 0 0 0 1px var(--equipped)}.inv-tile.is-selected{border-color:var(--accent-bg);box-shadow:inset 0 0 0 2px var(--accent-bg)}.inv-icon{height:38px;filter:var(--icon-outline);justify-content:center;align-items:center;display:flex}.inv-name{text-align:center;-webkit-line-clamp:2;overflow-wrap:anywhere;-webkit-box-orient:vertical;font-size:10.5px;line-height:1.15;display:-webkit-box;overflow:hidden}.inv-qty{color:var(--stack-count);font-variant-numeric:tabular-nums;font-size:11px;font-weight:700;position:absolute;top:3px;left:5px}.inv-badge{background:var(--accent-bg);width:16px;height:16px;color:var(--accent-fg);border-radius:50%;justify-content:center;align-items:center;font-size:10px;font-weight:700;display:flex;position:absolute;top:3px;right:3px}.setting-row{flex-wrap:nowrap}.inv-detail-icon{border:1px solid var(--border-subtle);background:var(--bg);width:44px;height:44px;filter:var(--icon-outline);border-radius:8px;justify-content:center;align-items:center;display:inline-flex}.loadout-chip{border:1px solid var(--border-subtle);border-radius:999px;padding:2px 8px 2px 4px}.modal{flex-direction:column;gap:12px;max-height:calc(100dvh - 32px);display:flex}.modal.is-wide{max-width:560px}.modal-body{min-height:0;overflow-y:auto}.modal-footer{border-top:1px solid var(--border-subtle);padding-top:10px}.modal-close{padding:2px 8px;font-size:16px}.combat-alert{background:var(--warning-bg);color:var(--warning);border-radius:6px;padding:6px 10px}.card.is-gear-locked{opacity:.5;filter:grayscale(.8);background:var(--bg)}.progress-track.is-enemy-hp .progress-fill{background:var(--splat-hit)}.dungeon-plan{margin:6px 0 0;padding-left:20px}.dungeon-next{flex-direction:column;gap:2px;display:flex}:root{--cork:#c79a64;--cork-dot:#b0844f;--paper:#e2d8c0;--paper-edge:#c4b597;--paper-ink:#2d2a24;--pin:#d64545}:root[data-theme=dark]{--cork:#4a3826;--cork-dot:#3d2e1f;--paper:#e2d6b8;--paper-edge:#b8a282;--paper-ink:#2d2a24;--pin:#e06666}.job-board{background-color:var(--cork);background-image:radial-gradient(var(--cork-dot) 1.2px, transparent 1.3px);background-size:9px 9px;border:3px solid #6b4423;border-radius:12px;flex-direction:column;gap:14px;padding:12px;display:flex;box-shadow:inset 0 2px 6px #0004}.job-board-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px;display:flex}.job-board-stat,.job-board-timer{background:var(--paper);color:var(--paper-ink);border-radius:999px;padding:3px 10px;font-size:12px;font-weight:600;box-shadow:0 1px 2px #0003}.job-board-ready{color:var(--success)}.job-group{flex-direction:column;gap:8px;display:flex}.job-group-title{color:#fff4e0;text-transform:uppercase;letter-spacing:.06em;background:#6b4423;border-radius:4px;align-self:flex-start;align-items:center;gap:6px;margin:0;padding:2px 10px 2px 8px;font-size:11px;font-weight:700;display:inline-flex}.job-count{background:#fff4e033;border-radius:999px;padding:0 6px;font-size:10px}.job-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;display:grid}.job-note{border:1px solid var(--paper-edge);background:var(--paper);min-width:0;color:var(--paper-ink);box-shadow:0 2px 0 var(--paper-edge), 0 4px 10px #0003;border-radius:3px;flex-direction:column;gap:6px;padding:14px 12px 10px;display:flex;position:relative;transform:rotate(-.6deg)}.job-grid>.job-note:nth-child(2n){transform:rotate(.5deg)}.job-pin{background:radial-gradient(circle at 35% 35%, #fff9 0 2px, var(--pin) 3px);border-radius:50%;width:12px;height:12px;margin-left:-6px;position:absolute;top:-6px;left:50%;box-shadow:0 2px 2px #0005}.job-note.is-accepted{border-color:var(--accent-bg);box-shadow:0 2px 0 var(--accent-bg), 0 4px 10px #0003}.job-note.is-accepted .job-pin{--pin:var(--accent-bg)}.job-note.is-ready{border-color:var(--success);box-shadow:0 2px 0 var(--success), 0 0 0 3px #1a7a3a33, 0 4px 12px #0003}.job-note.is-ready .job-pin{--pin:var(--success)}.job-note.is-locked{opacity:.7}.job-head{justify-content:space-between;align-items:flex-start;gap:6px;display:flex}.job-freq{text-transform:uppercase;letter-spacing:.04em;border:1px solid;border-radius:999px;flex-shrink:0;margin-top:1px;padding:0 5px;font-size:9px;font-weight:700;line-height:14px}.job-freq.is-daily{color:var(--info)}.job-freq.is-once{color:var(--gold)}.job-freq.is-repeat{color:var(--success)}.job-title{color:var(--paper-ink);margin:0;font-size:15px;font-weight:700;line-height:1.25}.job-desc{opacity:.8;margin:0;font-size:13px}.job-board-name{opacity:.7;margin-top:-4px;font-size:11px}.job-progress{flex-direction:column;gap:6px;display:flex}.job-objective{color:var(--paper-ink);flex-direction:column;gap:3px;font-size:12px;font-weight:600;display:flex}.job-objective .progress-track{height:5px}.job-objective .progress-fill{background:var(--info)}.job-objective.is-done{color:#1a7a3a}.job-objective.is-done .progress-fill{background:var(--success)}.job-foot{border-top:1px dashed var(--paper-edge);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px 10px;margin-top:auto;padding-top:8px;display:flex}.job-reward{flex-wrap:wrap;align-items:center;gap:4px 10px;font-size:12px;font-weight:700;display:inline-flex}.job-reward-gp{color:var(--gold)}.job-status{color:var(--text-muted);font-size:12px;font-weight:600}.job-status.is-ready{color:#1a7a3a}.job-foot .btn{padding:4px 12px;font-size:13px}.job-status.is-locked{color:var(--text-faint);font-weight:500}.job-done{background:var(--paper);color:var(--paper-ink);opacity:.85;border-radius:6px;margin:0;padding:6px 10px;font-size:12px}@media (width<=480px){.job-board{padding:8px}.job-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 8px}.job-note{gap:5px;padding:10px 8px 8px}.job-title{font-size:13px}.job-desc{font-size:12px}.job-foot{padding-top:6px}.job-foot .btn{flex:1}}.bottom-nav,.drawer-root,.compact-action{display:none}.player-strip.is-button{font:inherit;color:inherit;text-align:left;cursor:pointer;width:100%}.has-dot{position:relative}.has-dot:after{content:"";background:var(--gold-border);border-radius:50%;width:8px;height:8px;position:absolute;top:2px;right:0}@media (width<=1023px){.shell{padding-bottom:calc(80px + env(safe-area-inset-bottom))}.shell-nav{display:none}.shell-top{z-index:50;background:var(--bg);border-bottom:1px solid var(--border-subtle);flex-direction:column;gap:6px;margin:-16px -16px 0;padding:10px 16px 8px;display:flex;position:sticky;top:0}.shell-top .player-strip{padding:6px 10px}.activity-card{display:none}.compact-action{border:1px solid var(--accent-bg);background:var(--surface);border-radius:8px;flex-direction:column;gap:4px;padding:6px 10px;display:flex}.compact-action .progress-track{height:4px}.compact-action-toggle{font:inherit;color:var(--text-strong);cursor:pointer;text-align:left;background:0 0;border:none;justify-content:space-between;align-items:center;gap:8px;padding:0;display:flex}.compact-action-label{white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:600;overflow:hidden}.compact-action-details{flex-direction:column;gap:6px;padding-top:4px;display:flex}.bottom-nav{z-index:60;padding:4px 2px calc(4px + env(safe-area-inset-bottom));background:var(--surface);border-top:3px solid var(--wood);box-shadow:0 -2px 10px var(--shadow);grid-template-columns:repeat(7,minmax(0,1fr));display:grid;position:fixed;bottom:0;left:0;right:0}.bottom-tab{font:inherit;min-width:0;color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:6px;flex-direction:column;align-items:center;gap:1px;padding:4px 0;display:flex}.bottom-tab[aria-current=page]{color:var(--text-h);background:var(--gold-bg);box-shadow:inset 0 0 0 1px var(--gold-border)}.bottom-tab-icon{font-size:18px;line-height:1.2}.bottom-tab-label{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:9.5px;overflow:hidden}.bottom-tab[aria-current=page] .bottom-tab-label{font-weight:600}.drawer-root{z-index:200;pointer-events:none;display:block;position:fixed;inset:0}.drawer-root.is-open{pointer-events:auto}.drawer-backdrop{opacity:0;background:#00000080;transition:opacity .2s;position:absolute;inset:0}.drawer-root.is-open .drawer-backdrop{opacity:1}.drawer{box-sizing:border-box;width:min(320px,86vw);padding:12px 14px calc(24px + env(safe-area-inset-bottom));background:var(--surface);border-right:1px solid var(--border);transition:transform .2s ease-out;position:absolute;top:0;bottom:0;left:0;overflow-y:auto;transform:translate(-100%)}.drawer-root.is-open .drawer{transform:none}.drawer-header{border-bottom:1px solid var(--border-subtle);justify-content:space-between;align-items:center;gap:8px;margin-bottom:4px;padding-bottom:10px;display:flex}.drawer-title{margin:0;font-size:17px}.drawer-icon{padding:4px 7px;font-size:18px}.toast-zone-status{bottom:calc(76px + env(safe-area-inset-bottom));right:12px}.modal-backdrop{align-items:flex-end;padding:0}.modal-backdrop .modal{max-width:none;padding-bottom:calc(14px + env(safe-area-inset-bottom));border-radius:14px 14px 0 0;max-height:88dvh}}@media (prefers-reduced-motion:reduce){.drawer,.drawer-backdrop{transition:none}}html.is-modal-open,html.is-modal-open body{overflow:hidden}.modal-body{overscroll-behavior:contain}.modal{transition:transform .16s ease-out}.modal-grabber{display:none}@media (width<=1023px){.modal-grabber{background:var(--border);border-radius:2px;flex-shrink:0;width:40px;height:4px;margin:-4px auto;display:block}.modal-backdrop .modal .card-header{touch-action:none}}.card-panel{flex-direction:column;gap:8px;min-width:0;display:flex}.card-panel>.card-meta{text-align:left}.card-panel-locked{margin:0}.inv-price{text-overflow:ellipsis;white-space:nowrap;border:1px solid var(--gold-border);background:var(--gold-bg);max-width:calc(100% - 22px);color:var(--gold);font-variant-numeric:tabular-nums;border-radius:999px;padding:0 5px;font-size:10px;font-weight:700;line-height:15px;position:absolute;top:3px;right:3px;overflow:hidden}.inv-price.is-short{border-color:var(--danger);background:var(--danger-bg);color:var(--danger)}.inv-tile.has-price{padding-top:14px}.shop-greeting{align-items:flex-start;gap:10px;display:flex}.shop-keeper{border:2px solid var(--gold-border);background:var(--gold-bg);width:38px;height:38px;color:var(--gold);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:17px;font-weight:800;display:flex;overflow:hidden}.shop-bubble{border:1px solid var(--border-subtle);background:var(--surface-hover);color:var(--text-strong);border-radius:10px;flex-direction:column;gap:1px;padding:6px 10px;font-size:13px;display:flex;position:relative}.shop-bubble:before{content:"";background:var(--surface-hover);border-left:1px solid var(--border-subtle);border-bottom:1px solid var(--border-subtle);width:10px;height:10px;position:absolute;top:13px;left:-6px;transform:rotate(45deg)}.shop-bubble span{color:var(--text);font-style:italic}.shop-bar{flex-wrap:nowrap}.shop-gp{border:1px solid var(--gold-border);background:var(--gold-bg);color:var(--gold);white-space:nowrap;font-variant-numeric:tabular-nums;border-radius:999px;padding:2px 10px;font-size:13px;font-weight:700}.scene{aspect-ratio:4/3;width:100%;box-shadow:0 3px 0 #3b241433, 0 6px 18px var(--shadow);-webkit-user-select:none;user-select:none;background:#7cb84f;border:2px solid #3b2414;border-radius:12px;position:relative;overflow:hidden}.scene.is-tall{aspect-ratio:4/5}.scene-bg{width:100%;height:100%;display:block;position:absolute;inset:0}:root[data-theme=dark] .scene-bg{filter:brightness(.86)saturate(.92)}.scene-sign{z-index:2;color:#fffaf0;letter-spacing:.01em;text-shadow:0 1px #3b2414,0 0 2px #3b2414;pointer-events:none;background:linear-gradient(#c58a4f,#a86b35);border:2px solid #3b2414;border-radius:8px;margin:0;padding:4px 14px;font-size:clamp(14px,2.4vw,20px);font-weight:800;position:absolute;top:10px;left:10px;box-shadow:0 2px #00000040}.scene-spot{aspect-ratio:120/112;width:15%;font:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;border-radius:10px;margin:0;padding:0;position:absolute}.scene-spot>svg{filter:drop-shadow(0 2px #0000002e);transform-origin:50% 90%;width:100%;height:100%;transition:transform .15s,filter .15s;display:block;overflow:visible}.scene-spot:hover>svg,.scene-spot:focus-visible>svg{filter:drop-shadow(0 5px 5px #0005)brightness(1.06);transform:translateY(-5%)scale(1.07)}.scene-spot:focus-visible{outline:none}.scene-label{color:#1d1d1f;text-align:center;pointer-events:none;background:#fffef6;border:2px solid #2a2118;border-radius:999px;justify-content:center;align-items:center;gap:4px;width:max-content;max-width:9.5em;padding:2px 9px;font-size:clamp(10px,1.5vw,13px);font-weight:700;line-height:1.15;transition:background .15s,transform .15s;display:inline-flex;position:absolute;bottom:86%;left:50%;transform:translate(-50%);box-shadow:0 2px #00000045}.scene-spot:hover .scene-label,.scene-spot:focus-visible .scene-label{background:#ffe680;transform:translate(-50%)translateY(-3px)}.scene-spot:focus-visible .scene-label{outline:2px solid var(--focus);outline-offset:2px}.scene-spot.is-locked>svg{filter:grayscale()brightness(.9);opacity:.7}.scene-spot.is-locked .scene-label{color:#555;background:#e4e4e4;border-color:#666}.scene-spot.is-active .scene-label{background:#d6f8cf;border-color:#1a7a3a}.scene-live{background:#1fa34a;border-radius:50%;flex-shrink:0;width:7px;height:7px;animation:1.2s ease-in-out infinite scene-blink}.scene-spot.is-active:after{content:"";pointer-events:none;border:3px solid #fffc;border-radius:50%;width:90%;height:24%;animation:1.8s ease-out infinite scene-pulse;position:absolute;bottom:2%;left:50%;transform:translate(-50%)}@keyframes scene-pulse{0%{opacity:.95;transform:translate(-50%)scale(.55)}to{opacity:0;transform:translate(-50%)scale(1.35)}}@keyframes scene-blink{50%{opacity:.35}}.scene .sc-smoke{transform-box:fill-box;transform-origin:50% 100%;animation:3.2s ease-in-out infinite sc-smoke}@keyframes sc-smoke{0%,to{opacity:.9;transform:translateY(0)}50%{opacity:.55;transform:translateY(-6px)}}.scene .sc-firefly{animation:3s ease-in-out infinite sc-fly}@keyframes sc-fly{0%,to{opacity:.15}50%{opacity:1}}@media (prefers-reduced-motion:reduce){.scene .sc-smoke,.scene .sc-firefly,.scene-live,.scene-spot.is-active:after{animation:none}.scene-spot>svg,.scene-label{transition:none}}@media (width<=600px){.scene{border-radius:10px}.scene-spot{width:19%}.scene-label{border-width:1.5px;max-width:7.5em;padding:1px 6px;font-size:10px}.scene-sign{padding:3px 10px;top:8px;left:8px}}.scene-editor{gap:6px}.scene.is-editing .scene-spot{cursor:grab;touch-action:none;outline:1px dashed #fffa}.scene-handle{z-index:3;cursor:grab;touch-action:none;border:2px solid #fff;width:14px;height:14px;margin:-7px 0 0 -7px;position:absolute;box-shadow:0 0 0 1px #0008}.scene-handle.is-decor{background:#2fa84a;border-radius:50%}.scene-handle.is-selected{background:#ffd84d;transform:scale(1.4)}.scene-handle.is-path{background:#8a5530;width:10px;height:10px;margin:-5px 0 0 -5px}.scene-handle.is-plaza{background:0 0;border-width:3px;border-radius:50%;width:26px;height:26px;margin:-13px 0 0 -13px}.switch-dialog{border-top:4px solid var(--accent-bg);max-width:460px;padding:18px}.switch-title{font-size:18px}.switch-flow{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:stretch;gap:8px;display:grid}.switch-arrow{color:var(--accent-bg);align-self:center;font-size:20px}.switch-tile{border:1px solid var(--border-subtle);background:var(--bg);text-align:center;border-radius:10px;flex-direction:column;align-items:center;gap:2px;min-width:0;padding:18px 10px 12px;display:flex;position:relative}.switch-tile.is-now{opacity:.8}.switch-tile.is-next{border-color:var(--accent-bg);background:var(--info-bg)}.switch-tile-tag{background:var(--surface);border:1px solid var(--border);color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;border-radius:999px;padding:0 8px;font-size:10px;font-weight:700;line-height:16px;position:absolute;top:-9px;left:50%;transform:translate(-50%)}.switch-tile.is-next .switch-tile-tag{border-color:var(--accent-bg);background:var(--accent-bg);color:var(--accent-fg)}.switch-tile-icon{justify-content:center;align-items:center;height:32px;font-size:24px;display:flex}.switch-tile-verb{color:var(--text-faint);text-transform:uppercase;letter-spacing:.04em;font-size:11px;font-weight:600}.switch-tile-title{color:var(--text-h);overflow-wrap:anywhere;font-size:15px}.switch-tile-detail{color:var(--text-muted);font-size:12px}.switch-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.switch-actions .btn{padding:7px 14px;font-size:14px}@media (width<=420px){.switch-flow{grid-template-columns:1fr}.switch-arrow{justify-self:center;transform:rotate(90deg)}.switch-actions .btn{flex:1}}.train-card{gap:6px}.train-main{grid-template-columns:auto minmax(0,1fr) auto;align-items:start;gap:10px;display:grid}.train-icon{background:var(--bg);border:1px solid var(--border-subtle);border-radius:8px;justify-content:center;align-items:center;width:32px;height:32px;display:flex}.train-body{flex-direction:column;gap:4px;min-width:0;padding-top:1px;display:flex}.train-title{color:var(--text-strong);align-items:center;gap:8px;font-weight:600;display:inline-flex}.train-side{flex-direction:column;align-items:flex-end;gap:6px;padding-top:2px;display:flex}.train-side .btn{white-space:nowrap}.train-info{color:var(--text-muted);font-size:12px}.train-info.is-faint{color:var(--text-faint)}.train-info.is-warning{color:var(--warning)}.train-status{color:var(--success);font-variant-numeric:tabular-nums;font-size:12px;font-weight:600}.train-lock{color:var(--text-faint);font-size:12px}.train-more{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:flex}.train-card.is-locked .train-icon,.train-card.is-locked .train-title,.train-card.is-locked .recipe-yield{opacity:.55}@media (width<=480px){.train-main{grid-template-columns:auto minmax(0,1fr)}.train-side{flex-direction:row;grid-column:1/-1;justify-content:space-between;align-items:center;padding-top:0}.train-side .card-meta{text-align:left}}.train-req{border:1px solid;border-radius:999px;align-self:flex-start;align-items:center;gap:4px;padding:1px 8px;font-size:11.5px;font-weight:600;display:inline-flex}.train-req.is-met{color:var(--success);background:color-mix(in srgb, var(--success) 10%, transparent)}.train-req.is-missing{color:var(--danger);background:var(--danger-bg)}.train-req-using{opacity:.8;font-weight:400}.gp-amount{white-space:nowrap;font-variant-numeric:tabular-nums;align-items:center;gap:3px;display:inline-flex}.gp-icon{filter:none}.gp-coin{box-sizing:border-box;background:radial-gradient(circle at 35% 30%,#fff3a6 0 18%,#f2c230 45%,#c8930a 100%);border:1.5px solid #9a6b00;border-radius:50%;display:inline-block}.modal-body{overflow-x:hidden}@keyframes backdrop-in{0%{opacity:0}}@keyframes pop-in{0%{opacity:0;transform:translateY(6px)scale(.97)}}@keyframes sheet-up{0%{transform:translateY(100%)}}.dialog-backdrop{animation:.15s ease-out backdrop-in}.dialog-backdrop>.dialog{animation:.16s ease-out pop-in}@media (width<=1023px){.modal-backdrop>.modal{animation:.22s cubic-bezier(.2,.8,.2,1) sheet-up}}@media (prefers-reduced-motion:reduce){.dialog-backdrop,.dialog-backdrop>.dialog,.modal-backdrop>.modal{animation:none}}.house{gap:10px}.house-header{flex-wrap:wrap;align-items:center;gap:6px 10px;display:flex}.house-title{flex:auto;min-width:0;margin:0}.house-modes{gap:4px;display:flex}.house-stats{width:100%;color:var(--text-muted);flex-wrap:wrap;gap:4px 14px;display:flex}.house-build{gap:6px;display:grid}.house-build-actions{justify-content:flex-end}.house-stage{border:3px solid var(--wood);background:radial-gradient(at 50% 60%,#4a3a2a,#2a1f15 75%);border-radius:8px;position:relative;overflow:hidden}.house-scroll{scrollbar-width:thin;overflow:auto hidden}.house-room{-webkit-user-select:none;user-select:none;min-width:100%;position:relative;container-type:inline-size}@media (width<=1023px){.house-stage{border-width:3px 0;border-radius:0;margin:0 -16px}}.house-corners{justify-content:space-between;gap:8px;margin-top:-4px;display:flex}.house-corner{min-height:36px;padding:6px 12px;font-size:14px}.house-zoom{z-index:6000;opacity:.9;min-height:30px;padding:3px 8px;font-size:12px;position:absolute;top:8px;right:8px;box-shadow:0 2px 6px #0007}.house-piece.is-inert:focus-visible{outline:none}.house-count{background:var(--gold-border);color:#1c1812;text-align:center;border-radius:999px;min-width:18px;margin-left:4px;padding:0 5px;font-size:11px;font-weight:700;line-height:18px;display:inline-block}.house-room-bg,.house-room-layer,.house-targets{width:100%;height:100%;position:absolute;inset:0}.house-room-bg{display:block}.house-targets{z-index:5000}.house-cell{fill:#0000;stroke:#fff6;stroke-width:1.5px;stroke-dasharray:4 4;pointer-events:none}.house-target{fill:#ffffff10;stroke:#0000;cursor:pointer}.house-target:hover{fill:#ffffff30}.house-footprint{pointer-events:none;stroke-width:3px}.house-footprint.is-selected{fill:#ffd84d33;stroke:#ffd84d}.house-footprint.is-ok{fill:#5fd05f55;stroke:#5fd05f}.house-footprint.is-bad{fill:#e0505055;stroke:#e05050}.house-piece{cursor:pointer;background:0 0;border:0;justify-content:center;align-items:flex-end;padding:0;line-height:1;display:flex;position:absolute}.house-piece:focus-visible{outline:2px solid var(--focus)}.house-piece.is-selected{filter:drop-shadow(0 0 4px #ffd84d)drop-shadow(0 0 2px #ffd84d);cursor:grab;touch-action:none}.house-room.is-dragging,.house-room.is-dragging .house-piece{cursor:grabbing}.house-piece.is-inert{pointer-events:none;cursor:default}.house-piece.is-moving{opacity:.4}.house-piece.is-usable:hover{filter:drop-shadow(0 0 5px #fff8c0)}.house-room.is-placing .house-piece{cursor:default}.house-emoji{filter:drop-shadow(0 3px 2px #0006);line-height:1;display:block}.house-facing{color:#fff;background:#000a;border-radius:6px;min-width:14px;padding:0 2px;font-size:10px;line-height:14px;position:absolute;top:-4px;right:-4px}.house-slot{color:#fff;cursor:pointer;background:#5fd05f88;border:2px dashed #fff;border-radius:50%;place-items:center;padding:0;font-size:16px;font-weight:700;display:grid;position:absolute}.house-bar{gap:8px;margin-top:10px;display:grid}.house-bar p{margin:0}.house-actions .btn{flex:1 1 0;min-width:0}.house-hint{margin-top:8px}.house-storage{grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:6px;margin:8px 0 0;padding:0;list-style:none;display:grid}.house-stored{border:1px solid var(--border);background:var(--surface-raised);width:100%;color:var(--text);cursor:pointer;border-radius:6px;justify-items:center;gap:2px;padding:8px 4px;display:grid}.house-stored:hover:not(:disabled){background:var(--surface-hover)}.house-stored-emoji{font-size:28px;line-height:1.1}.house-stored-name{text-align:center;font-size:12px;line-height:1.2}.house-build-list{gap:6px;margin:0;padding:0;list-style:none;display:grid}.house-build-row{border:1px solid var(--border-subtle);background:var(--surface-raised);border-radius:6px;grid-template-columns:36px minmax(0,1fr) auto;align-items:start;gap:4px 10px;padding:8px;display:grid}.house-build-row.is-locked{opacity:.6}.house-build-emoji{text-align:center;font-size:26px;line-height:1}.house-build-info{gap:3px;min-width:0;display:grid}.house-build-name{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.house-build-cost{flex-wrap:wrap;gap:4px 10px;display:flex}.house-build-why{grid-column:2/-1}.house-drawing{filter:drop-shadow(0 3px 2px #0005);width:100%;height:100%;display:block;overflow:visible}.house-drawing.is-skinned{filter:drop-shadow(0 3px 2px #0005)sepia(.6)saturate(2.2)hue-rotate(-12deg)brightness(1.15)}.house-flicker{transform-origin:50%;animation:1.4s ease-in-out infinite alternate house-flicker}@keyframes house-flicker{0%{opacity:.85}to{opacity:1}}@media (prefers-reduced-motion:reduce){.house-flicker{animation:none}}.house-inline-icon{vertical-align:middle;display:inline-flex}.house-build-emoji{justify-content:center;display:flex}.house-art{width:100%;height:100%;image-rendering:pixelated;filter:drop-shadow(0 3px 2px #0005);pointer-events:none;display:block}.house-corners{flex-wrap:wrap}.servant-row{align-items:flex-start;gap:10px;display:flex}.servant-portrait{flex:none;font-size:30px;line-height:1}.servant-row-text{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.servant-row-action{flex-direction:column;flex:none;align-items:flex-end;gap:4px;display:flex}.servant-section{flex-direction:column;gap:8px;display:flex}.servant-field{flex-direction:column;gap:4px;display:flex}.servant-deposits{flex-wrap:wrap}.servant-custom{gap:8px}.servant-custom input{flex:1;min-width:0}@media (width<=480px){.servant-row{flex-wrap:wrap}.servant-row-action{flex-direction:row;justify-content:space-between;align-items:center;width:100%}}.house-door{z-index:5;cursor:pointer;background:0 0;border:0;border-radius:4px;justify-content:center;align-items:flex-start;padding:0;display:flex;position:absolute}.house-door:hover,.house-door:focus-visible{outline:3px solid var(--gold-border);outline-offset:2px}.house-door-label{background:var(--gold-border);color:#1c1812;white-space:nowrap;opacity:.9;border-radius:999px;margin-top:-1.6em;padding:1px 8px;font-size:12px;font-weight:700}.share-code{box-sizing:border-box;word-break:break-all;resize:vertical;width:100%;min-height:72px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px}.house-list{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.house-list-row{align-items:center;gap:8px;display:flex}.house-list-rank{width:1.6em;color:var(--text-muted,inherit);text-align:right;flex:none;font-weight:700}.house-list-name{text-overflow:ellipsis;white-space:nowrap;flex:1;align-items:center;gap:6px;min-width:0;display:flex;overflow:hidden}@media (width<=480px){.house-corners{grid-template-columns:1fr 1fr;display:grid}}
