:root{--ui-font: system-ui, -apple-system, "Segoe UI", Roboto, "Noto Sans", Ubuntu, Cantarell, "Helvetica Neue", Arial, sans-serif;--ui-mono: ui-monospace, "Cascadia Mono", Consolas, "Liberation Mono", Menlo, monospace;--ui-fg: #ece6d8;--ui-fg-dim: #b5ad9c;--ui-bg: rgba(22, 24, 30, .86);--ui-bg-solid: #1d2026;--ui-bg-raised: rgba(44, 48, 58, .9);--ui-border: rgba(255, 255, 255, .12);--ui-accent: #e3c13a;--ui-accent-fg: #1a1608;--ui-ok: #3ddc5a;--ui-bad: #e8402a;--ui-warn: #f0a030;--ui-shadow: 0 6px 24px rgba(0, 0, 0, .45);--ui-radius: 6px;--ui-topbar-h: 40px}html,body{margin:0;padding:0;height:100%;overflow:hidden;background:#0e1a2a;font-family:var(--ui-font);font-size:14px;color:var(--ui-fg);-webkit-font-smoothing:antialiased}#app{position:fixed;inset:0}#app>canvas,canvas.ui-world{position:absolute;inset:0;width:100%;height:100%;z-index:0;display:block;touch-action:none;outline:none}#ui{position:absolute;inset:0;z-index:10;pointer-events:none;user-select:none;overflow:hidden}#ui *{box-sizing:border-box}#ui .ui-widget{pointer-events:auto}.ui-hidden{display:none!important}.ui-btn{font:inherit;color:var(--ui-fg);background:var(--ui-bg-raised);border:1px solid var(--ui-border);border-radius:4px;padding:4px 10px;cursor:pointer;line-height:1.3;display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.ui-btn:hover:not(:disabled){background:#464c5af2;border-color:#ffffff40}.ui-btn:active:not(:disabled){transform:translateY(1px)}.ui-btn:disabled{opacity:.45;cursor:not-allowed}.ui-btn.ui-active{background:var(--ui-accent);color:var(--ui-accent-fg);border-color:transparent}.ui-btn-danger{border-color:#e8402a99}.ui-btn-danger:hover:not(:disabled){background:#e8402a59}.ui-btn-small{padding:2px 6px;font-size:12px}.ui-btn-icon{padding:3px 6px}input[type=text],input[type=number],select{font:inherit;color:var(--ui-fg);background:#00000059;border:1px solid var(--ui-border);border-radius:4px;padding:4px 8px}input[type=range]{accent-color:var(--ui-accent);width:100%}input[type=checkbox],input[type=radio]{accent-color:var(--ui-accent)}.ui-icon{display:inline-block;vertical-align:middle;flex:none;image-rendering:auto}.ui-icon-glyph{text-align:center;color:var(--ui-fg-dim);font-weight:600;overflow:hidden}.ui-topbar{position:absolute;top:0;left:0;right:0;height:var(--ui-topbar-h);display:flex;align-items:center;gap:8px;padding:0 10px;background:var(--ui-bg);border-bottom:1px solid var(--ui-border);backdrop-filter:blur(6px);white-space:nowrap;overflow:hidden}.ui-topbar-title{font-weight:700;letter-spacing:.02em;color:var(--ui-accent);margin-right:6px}.ui-chips{display:flex;gap:4px;flex:1 1 auto;min-width:0;overflow:hidden}.ui-chip{display:inline-flex;align-items:center;gap:4px;padding:2px 7px;border-radius:12px;background:#0000004d;font-variant-numeric:tabular-nums;font-size:13px}.ui-chip .ui-chip-value{font-weight:600;min-width:2ch;text-align:right}.ui-topbar-clock{font-family:var(--ui-mono);font-size:13px;color:var(--ui-fg-dim);padding:0 6px}.ui-topbar-speed,.ui-topbar-buttons{display:flex;gap:3px}.ui-topbar-fps{font-family:var(--ui-mono);font-size:12px;color:var(--ui-fg-dim)}@media(max-width:1640px){.ui-topbar-buttons .ui-btn-label{display:none}}.ui-strip{position:absolute;top:calc(var(--ui-topbar-h) + 8px);left:50%;transform:translate(-50%);background:var(--ui-bg);border:1px solid var(--ui-border);border-radius:var(--ui-radius);padding:6px 12px;display:flex;align-items:center;gap:10px;box-shadow:var(--ui-shadow)}.ui-window{position:absolute;min-width:260px;width:360px;max-width:calc(100vw - 16px);max-height:calc(100vh - 56px);display:flex;flex-direction:column;background:var(--ui-bg);border:1px solid var(--ui-border);border-radius:var(--ui-radius);box-shadow:var(--ui-shadow);backdrop-filter:blur(8px)}.ui-window-title{display:flex;align-items:center;gap:8px;padding:6px 8px 6px 10px;background:#00000059;border-bottom:1px solid var(--ui-border);border-radius:var(--ui-radius) var(--ui-radius) 0 0;cursor:move;font-weight:600}.ui-window-title-text{flex:1 1 auto;display:flex;align-items:center;gap:8px;overflow:hidden;text-overflow:ellipsis}.ui-window-close{font:inherit;font-size:18px;line-height:1;color:var(--ui-fg-dim);background:none;border:0;cursor:pointer;padding:0 4px}.ui-window-close:hover{color:var(--ui-fg)}.ui-window-body{padding:10px;overflow:auto;display:flex;flex-direction:column;gap:8px}.ui-window-wide{width:460px}.ui-section{display:flex;flex-direction:column;gap:4px}.ui-section-title{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--ui-fg-dim);margin-top:2px}.ui-row{display:flex;align-items:center;gap:8px}.ui-row-between{justify-content:space-between}.ui-row-wrap{flex-wrap:wrap}.ui-row-end{justify-content:flex-end;flex-wrap:wrap}.ui-grow{flex:1 1 auto}.ui-dim{color:var(--ui-fg-dim)}.ui-phase{font-weight:600}.ui-phase.ui-phase-bad{color:var(--ui-bad)}.ui-phase.ui-phase-warn{color:var(--ui-warn)}.ui-phase.ui-phase-ok{color:var(--ui-ok)}.ui-progress{height:6px;background:#ffffff1a;border-radius:3px;overflow:hidden}.ui-progress>div{height:100%;background:var(--ui-accent)}table.ui-table{border-collapse:collapse;width:100%;font-variant-numeric:tabular-nums}table.ui-table td,table.ui-table th{padding:2px 6px;text-align:left;border-bottom:1px solid rgba(255,255,255,.06)}table.ui-table td.ui-num,table.ui-table th.ui-num{text-align:right}table.ui-table tr:last-child td{border-bottom:0}.ui-pips{display:inline-flex;gap:2px;vertical-align:middle}.ui-pip{width:7px;height:7px;border-radius:50%;background:var(--ui-accent);display:inline-block}.ui-pip.ui-pip-off{background:#ffffff26}.ui-slider{display:grid;grid-template-columns:1fr 120px 3ch;align-items:center;gap:8px}.ui-mode-buttons{display:inline-flex;gap:2px}.ui-mode-buttons .ui-btn{padding:1px 6px;font-size:12px}.ui-tabs{display:flex;gap:2px;border-bottom:1px solid var(--ui-border)}.ui-tab{font:inherit;color:var(--ui-fg-dim);background:none;border:0;border-bottom:2px solid transparent;padding:4px 10px;cursor:pointer}.ui-tab.ui-active{color:var(--ui-fg);border-bottom-color:var(--ui-accent)}.ui-goods-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:3px 10px}.ui-good{display:flex;align-items:center;gap:5px;font-size:13px;padding:1px 0}.ui-good .ui-good-n{margin-left:auto;font-weight:600;font-variant-numeric:tabular-nums}.ui-list{display:flex;flex-direction:column;gap:1px}.ui-list-item{display:flex;align-items:center;gap:6px;padding:2px 4px;border-radius:4px}.ui-list-item:nth-child(odd){background:#ffffff0a}.ui-list-item .ui-order{width:2.5ch;text-align:right;color:var(--ui-fg-dim);font-variant-numeric:tabular-nums}.ui-hint{font-size:12px;color:var(--ui-fg-dim)}.ui-node-menu{position:absolute;min-width:180px;background:var(--ui-bg);border:1px solid var(--ui-border);border-radius:var(--ui-radius);box-shadow:var(--ui-shadow);padding:4px;transform:translate(-50%,12px);backdrop-filter:blur(8px)}.ui-node-menu:before{content:"";position:absolute;top:-6px;left:50%;margin-left:-6px;border:6px solid transparent;border-top:0;border-bottom-color:var(--ui-border)}.ui-node-menu-header{padding:4px 8px 6px;font-weight:600;display:flex;align-items:center;gap:6px;border-bottom:1px solid var(--ui-border);margin-bottom:4px}.ui-node-menu-header .ui-reason{font-weight:400;color:var(--ui-fg-dim);font-size:12px}.ui-menu-item{display:flex;align-items:center;gap:8px;width:100%;font:inherit;color:var(--ui-fg);background:none;border:0;border-radius:4px;padding:5px 8px;cursor:pointer;text-align:left}.ui-menu-item:hover:not(:disabled){background:#ffffff1a}.ui-menu-item:disabled{color:var(--ui-fg-dim);cursor:not-allowed}.ui-menu-item .ui-menu-arrow{margin-left:auto;color:var(--ui-fg-dim)}.ui-menu-item .ui-reason{margin-left:auto;font-size:11px;color:var(--ui-bad)}.ui-build-grid{display:grid;grid-template-columns:repeat(4,64px);gap:4px;padding:4px}.ui-build-cell{display:flex;flex-direction:column;align-items:center;gap:3px;width:64px;padding:5px 2px;font:inherit;font-size:11px;line-height:1.15;text-align:center;color:var(--ui-fg);background:#ffffff0a;border:1px solid var(--ui-border);border-radius:4px;cursor:pointer;overflow:hidden}.ui-build-cell:hover:not(:disabled){background:#ffffff1f;border-color:var(--ui-accent)}.ui-build-cell:disabled{opacity:.45;cursor:not-allowed}.ui-build-cell .ui-build-cost{color:var(--ui-fg-dim);font-size:10px}.ui-toasts{position:absolute;left:12px;bottom:12px;display:flex;flex-direction:column;gap:6px;max-width:380px}.ui-toast{background:var(--ui-bg);border:1px solid var(--ui-border);border-left:3px solid var(--ui-accent);border-radius:4px;padding:6px 10px;box-shadow:var(--ui-shadow);animation:ui-toast-in .16s ease-out}.ui-toast.ui-toast-error{border-left-color:var(--ui-bad)}.ui-toast.ui-toast-link{cursor:pointer}.ui-toast.ui-toast-link:hover{background:#323640f2}@keyframes ui-toast-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.ui-minimap{position:absolute;right:12px;bottom:12px;width:200px;height:200px;border:1px solid var(--ui-border);border-radius:4px;overflow:hidden;background:#101418;box-shadow:var(--ui-shadow);cursor:crosshair}.ui-minimap canvas{display:block;width:100%;height:100%;touch-action:none}.ui-debug{position:absolute;top:calc(var(--ui-topbar-h) + 8px);left:8px;font-family:var(--ui-mono);font-size:12px;line-height:1.35;background:#0009;border:1px solid var(--ui-border);border-radius:4px;padding:6px 8px;white-space:pre;color:#d8f0d8}.ui-modal{position:absolute;inset:0;background:#00000073;display:flex;align-items:center;justify-content:center}.ui-modal .ui-window{position:relative;max-height:calc(100vh - 32px)}.ui-dialog .ui-window-title{cursor:default}.ui-slot-confirm{font-size:12px}.ui-saveload .ui-list{gap:4px}@media(max-width:720px){.ui-chips .ui-chip:nth-child(n+7){display:none}.ui-topbar-clock{display:none}.ui-minimap{width:140px;height:140px}.ui-form{grid-template-columns:1fr}}.ui-form{display:grid;grid-template-columns:130px 1fr;gap:8px 10px;align-items:center}.ui-form label{color:var(--ui-fg-dim)}.ui-radio-group{display:flex;gap:10px}.ui-radio-group label{color:var(--ui-fg);display:inline-flex;align-items:center;gap:4px}.ui-slot{display:grid;grid-template-columns:1fr auto;gap:4px 8px;align-items:center;padding:6px 8px;border-radius:4px;background:#ffffff0a}.ui-slot.ui-slot-selected{outline:1px solid var(--ui-accent)}.ui-slot .ui-slot-name{font-weight:600}.ui-slot .ui-slot-meta{grid-column:1 / -1;font-size:12px;color:var(--ui-fg-dim);font-variant-numeric:tabular-nums}.ui-slot .ui-slot-actions{display:flex;gap:4px}.ui-confirm{position:absolute;left:50%;top:40%;transform:translate(-50%,-50%);background:var(--ui-bg-solid);border:1px solid var(--ui-border);border-radius:var(--ui-radius);box-shadow:var(--ui-shadow);padding:14px 16px;min-width:260px;pointer-events:auto;z-index:20}.ui-confirm-text{margin-bottom:12px}.ui-confirm-buttons{display:flex;gap:8px;justify-content:flex-end}.ui-help-list{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:3px}.ui-topbar,.ui-minimap,.ui-debug{z-index:90}.ui-node-menu,.ui-strip{z-index:1000000}.ui-toasts{z-index:1000001}.ui-modal{z-index:1000002}#ui .ui-confirm{z-index:1000003}:root{--story-font: "Palatino Linotype", "Book Antiqua", Palatino, Georgia, "Times New Roman", serif;--story-gold: #e8c766;--story-ink: #f4ead6}#ui .ui-mainmenu{position:absolute;inset:0;z-index:1000001;pointer-events:auto;display:flex;align-items:stretch;background:linear-gradient(90deg,#0a0c10eb,#0a0c10c7 34%,#0a0c1026 62%,#0a0c1000 80%),radial-gradient(ellipse at 70% 40%,#0000 40%,#00000059);animation:ui-fade-in .6s ease-out}#ui.ui-menu-open .ui-topbar,#ui.ui-menu-open .ui-minimap,#ui.ui-menu-open .ui-campaign-panel{visibility:hidden}.ui-mainmenu-panel{width:min(520px,100vw);padding:clamp(28px,7vh,72px) clamp(20px,5vw,56px);display:flex;flex-direction:column;gap:28px;overflow-y:auto}.ui-mainmenu-title{font-family:var(--story-font);font-size:clamp(40px,6vw,64px);font-weight:600;letter-spacing:.01em;margin:0;color:var(--story-gold);text-shadow:0 2px 18px rgba(0,0,0,.6)}.ui-mainmenu-subtitle{font-family:var(--story-font);font-style:italic;font-size:18px;color:var(--ui-fg-dim);margin-top:6px}.ui-mainmenu-list{display:flex;flex-direction:column;gap:10px}.ui-mainmenu-btn{font:inherit;font-size:18px;text-align:left;color:var(--story-ink);background:#ffffff0a;border:1px solid rgba(255,255,255,.1);border-radius:8px;padding:12px 18px;cursor:pointer;display:flex;flex-direction:column;gap:2px;transition:background .15s,border-color .15s,transform .15s}.ui-mainmenu-btn:hover,.ui-mainmenu-btn:focus-visible{background:#e8c7661f;border-color:#e8c7668c;transform:translate(3px);outline:none}.ui-mainmenu-primary{background:linear-gradient(180deg,#e8c76647,#e8c7661f);border-color:#e8c76699}.ui-mainmenu-btn-label{font-family:var(--story-font);font-size:20px}.ui-mainmenu-btn-hint{font-size:13px;color:var(--ui-fg-dim);font-style:italic}.ui-mainmenu-campaign{display:flex;flex-direction:column;gap:12px}.ui-mainmenu-campaign-title{font-family:var(--story-font);font-size:28px;margin:0;color:var(--story-ink)}.ui-mainmenu-blurb{font-family:var(--story-font);font-size:17px;line-height:1.55;margin:0;color:var(--story-ink)}.ui-mainmenu-label{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--story-gold);margin-top:6px}.ui-mainmenu-chapters{margin:0;padding-left:22px;display:flex;flex-direction:column;gap:6px}.ui-mainmenu-chapters li{font-family:var(--story-font);color:var(--story-ink)}.ui-mainmenu-chapter-title{font-size:16px;font-weight:600;margin-right:8px}.ui-mainmenu-chapter-teaser{font-size:14px;font-style:italic;color:var(--ui-fg-dim)}#ui .ui-mainmenu-name{font:inherit;font-size:16px;padding:8px 12px;border-radius:6px;border:1px solid rgba(255,255,255,.18);background:#00000059;color:var(--story-ink);user-select:text}.ui-mainmenu-row{display:flex;gap:10px;margin-top:8px}.ui-mainmenu-row .ui-mainmenu-btn{flex:1;align-items:center;text-align:center;font-family:var(--story-font)}#ui .ui-story{position:absolute;inset:0;z-index:1000001;pointer-events:auto;display:flex;align-items:flex-end;justify-content:center;padding:0 16px clamp(16px,5vh,48px);background:linear-gradient(180deg,#0000 40%,#08080a8c);cursor:pointer;animation:ui-fade-in .25s ease-out}.ui-story-box{width:min(880px,100%);display:flex;gap:22px;align-items:flex-start;padding:20px 24px 16px;border-radius:12px;border:1px solid rgba(232,199,102,.35);background:linear-gradient(180deg,#201b14f5,#14110df5);box-shadow:0 18px 60px #0000008c}.ui-story-portrait{flex:0 0 auto;width:132px;height:132px;border-radius:50%;border:2px solid rgba(232,199,102,.6);background:radial-gradient(circle at 50% 38%,#f6ead0,#d9c497 55%,#9c8556);display:flex;align-items:center;justify-content:center;overflow:hidden;box-shadow:inset 0 -10px 24px #3c280a59}.ui-story-portrait img{width:112px;height:112px;object-fit:contain;transform-origin:50% 24%;transform:translateY(14px) scale(2.05);image-rendering:auto}#ui .ui-story-portrait img.ui-story-face{width:100%;height:100%;object-fit:cover;transform:none}.ui-story-portrait-book{background:radial-gradient(circle at 50% 40%,#3a3022,#1f1a12)}.ui-story-book{font-family:var(--story-font);font-size:54px;color:var(--story-gold)}.ui-story-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:8px}.ui-story-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}.ui-story-name{font-family:var(--story-font);font-size:22px;font-weight:600;color:var(--story-gold)}.ui-story-role{font-family:var(--story-font);font-style:italic;font-size:15px;color:var(--ui-fg-dim)}.ui-story-text{font-family:var(--story-font);font-size:18px;line-height:1.6;color:var(--story-ink);min-height:5.2em;white-space:pre-wrap}.ui-story-foot{display:flex;align-items:center;justify-content:space-between;gap:12px}.ui-story-hint{font-size:12px;color:var(--ui-fg-dim);letter-spacing:.04em;animation:ui-story-blink 1.6s ease-in-out infinite}.ui-story-skip{font-size:12px}#ui .ui-story-card{position:absolute;inset:0;z-index:1000001;pointer-events:auto;display:flex;align-items:center;justify-content:center;padding:24px;background:radial-gradient(ellipse at 50% 45%,#12100cb8,#080706eb 70%);animation:ui-fade-in .6s ease-out}.ui-story-card-inner{max-width:720px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:14px}.ui-story-kicker{font-size:13px;letter-spacing:.32em;text-transform:uppercase;color:var(--story-gold)}.ui-story-title{font-family:var(--story-font);font-size:clamp(36px,6vw,58px);font-weight:600;margin:0;color:var(--story-ink);text-shadow:0 2px 22px rgba(0,0,0,.7)}.ui-story-teaser{font-family:var(--story-font);font-style:italic;font-size:19px;line-height:1.55;margin:0;color:var(--ui-fg-dim)}.ui-story-card-buttons{display:flex;gap:12px;margin-top:14px}.ui-story-card-buttons .ui-btn{font-family:var(--story-font);font-size:18px;padding:8px 26px}#ui .ui-campaign-panel{position:absolute;top:calc(var(--ui-topbar-h) + 10px);left:12px;width:290px;pointer-events:auto;background:var(--ui-bg);border:1px solid rgba(232,199,102,.3);border-radius:var(--ui-radius);box-shadow:var(--ui-shadow);overflow:hidden;z-index:5}.ui-campaign-head{font:inherit;width:100%;display:flex;align-items:baseline;gap:8px;padding:9px 12px;background:linear-gradient(180deg,#e8c76624,#e8c7660a);border:0;color:var(--ui-fg);cursor:pointer;text-align:left}.ui-campaign-kicker{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--story-gold);white-space:nowrap}.ui-campaign-title{font-family:var(--story-font);font-size:16px;font-weight:600;flex:1}.ui-campaign-toggle{color:var(--ui-fg-dim)}.ui-campaign-list{list-style:none;margin:0;padding:6px 12px 10px;display:flex;flex-direction:column;gap:5px}.ui-campaign-list li{display:flex;align-items:baseline;gap:8px;font-size:13px}.ui-campaign-mark{width:14px;color:var(--ui-fg-dim)}.ui-campaign-label{flex:1}.ui-campaign-count{font-variant-numeric:tabular-nums;color:var(--ui-fg-dim)}.ui-campaign-done .ui-campaign-mark{color:var(--ui-ok)}.ui-campaign-done .ui-campaign-label{color:var(--ui-fg-dim);text-decoration:line-through;text-decoration-color:#ffffff40}@keyframes ui-fade-in{0%{opacity:0}to{opacity:1}}@keyframes ui-story-blink{0%,to{opacity:.45}50%{opacity:1}}@media(max-width:640px){.ui-story-box{flex-direction:column;align-items:center;text-align:center}.ui-story-portrait{width:96px;height:96px}.ui-story-portrait img{width:84px;height:84px}#ui .ui-campaign-panel{width:calc(100vw - 24px)}}
