:root{--bg:#f5f4f0;--panel:#fff;--panel-alt:#faf9f6;--ink:#2a2d31;--muted:#8b8f97;--faint:#c3c6cc;--line:#e6e4de;--accent:#6b7a8f;--good:#7f9b7a;--warn:#c9a24b;--bad:#b6615a;--gold:#c2a35a;--gold-soft:#fbf4e3;--r:12px;--r-sm:8px;--shadow:0 2px 10px rgba(30,30,25,.07);--orb:255,214,140;--orbCore:255,246,222;--ease:cubic-bezier(.22,.8,.24,1);--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;height:100%;background:var(--bg);color:var(--ink);font:15px/1.45 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Arial,sans-serif;-webkit-font-smoothing:antialiased;overscroll-behavior:none}body.size-small{font-size:13px}body.size-large{font-size:17px}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer}.hidden{display:none!important}.muted{color:var(--muted)}#app{min-height:100%;display:flex;flex-direction:column}.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:calc(8px + var(--safe-top)) 12px 8px;background:#f5f4f0eb;backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:8px;font-weight:700}.brand img{width:28px;height:28px;border-radius:8px}.iconBtn{border:1px solid var(--line);background:var(--panel);border-radius:999px;min-width:34px;height:34px;padding:0 10px;display:inline-flex;align-items:center;justify-content:center;gap:6px;color:var(--muted);position:relative}.iconBtn.sos{background:var(--bad);color:#fff;border-color:var(--bad);font-weight:800;letter-spacing:.04em}.badge{position:absolute;top:-6px;right:-6px;min-width:18px;height:18px;border-radius:999px;background:var(--accent);color:#fff;font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;padding:0 5px}.badge.gold{background:var(--gold);box-shadow:0 0 0 4px #c2a35a40}.view{flex:1;padding:14px 14px calc(110px + var(--safe-bottom));max-width:720px;width:100%;margin:0 auto}.view h1{font-size:22px;margin:4px 0 6px;letter-spacing:-.02em}.view h2{font-size:16px;margin:18px 0 8px}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:12px 14px;box-shadow:var(--shadow);margin:10px 0}.card.gold{border-color:#e6cf9f;background:var(--gold-soft)}.card.danger{border-color:#e8bcbc;background:#fff4f2}.row{display:flex;gap:8px;align-items:center}.row>input,.row>textarea{flex:1;min-width:0}input,textarea,select{border:1px solid var(--line);background:var(--panel);border-radius:var(--r-sm);padding:10px 12px;width:100%}textarea{min-height:80px;resize:vertical}.btn{border:1px solid var(--accent);background:var(--accent);color:#fff;border-radius:999px;padding:9px 16px;font-weight:700}.btn.ghost{background:var(--panel);color:var(--accent)}.btn.danger{background:var(--bad);border-color:var(--bad)}.btn.gold{background:var(--gold);border-color:var(--gold)}.btn.small{padding:5px 11px;font-size:13px}.list{list-style:none;margin:8px 0;padding:0}.list li{display:flex;gap:10px;align-items:center;padding:10px 4px;border-bottom:1px solid var(--line)}.list li.done span{text-decoration:line-through;color:var(--muted)}.list .tick{border:1px solid var(--line);background:var(--panel);border-radius:999px;width:28px;height:28px;flex:none}.pill{display:inline-block;border-radius:999px;padding:2px 9px;font-size:12px;font-weight:700;background:var(--panel-alt);border:1px solid var(--line);color:var(--muted)}.pill.on{background:#eaf2ea;color:var(--good);border-color:#cfe0cf}.pill.gold{background:var(--gold-soft);color:#7a5a22;border-color:#e6cf9f}.tabs{display:flex;gap:6px;overflow-x:auto;padding:4px 0}.tabs button{border:1px solid var(--line);background:var(--panel);border-radius:999px;padding:6px 12px;white-space:nowrap;color:var(--muted)}.tabs button.on{background:var(--ink);color:#fff;border-color:var(--ink)}.toast{position:fixed;left:50%;bottom:calc(96px + var(--safe-bottom));transform:translate(-50%);background:var(--ink);color:#fff;padding:10px 16px;border-radius:999px;font-size:13px;z-index:60;box-shadow:var(--shadow);max-width:92vw}.house{position:relative;margin:6px auto 0;max-width:420px}.roof{position:relative;height:74px;display:flex;align-items:flex-end;justify-content:center}.roof .shape{width:0;height:0;border-left:140px solid transparent;border-right:140px solid transparent;border-bottom:54px solid #d9d5cc}.roof .resident{position:absolute;top:0;left:50%;transform:translate(-50%);width:34px;height:34px;border-radius:50%;background:radial-gradient(circle at 40% 35%,rgba(var(--orbCore),1),rgba(var(--orb),.95) 55%,rgba(var(--orb),0) 72%);box-shadow:0 0 14px 5px rgba(var(--orb),.5);animation:breathe 5.5s ease-in-out infinite}@keyframes breathe{0%,to{transform:translate(-50%) scale(.94)}50%{transform:translate(-50%) scale(1.05)}}.rooms{display:grid;grid-template-columns:1fr 1fr;gap:8px;background:#efece4;border:1px solid var(--line);border-top:0;padding:10px;border-radius:0 0 14px 14px}.room{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:8px;min-height:84px;text-align:left}.room b{display:block;font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:6px}.room .slots{display:grid;grid-template-columns:repeat(4,1fr);gap:4px}.room .slot{aspect-ratio:1;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:15px;background:var(--panel-alt);border:1px dashed var(--line);color:var(--faint)}.room .slot.filled{border-style:solid;color:#fff;font-size:10px;font-weight:800}.room.lit{box-shadow:inset 0 0 0 2px #f1e3b8}.sideways{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px;max-width:420px;margin-left:auto;margin-right:auto}.mailbox{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:10px;text-align:left}.mailbox b{display:block;font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:8px}.circles{display:flex;gap:8px;justify-content:space-between}.circle{position:relative;width:44px;height:44px;border-radius:50%;background:var(--panel-alt);border:1px solid var(--line);display:flex;align-items:center;justify-content:center;font-size:18px}.circle.soft{box-shadow:0 0 0 3px #6b7a8f2e}.circle.gold{box-shadow:0 0 0 3px #c2a35a73,0 0 14px #c2a35a80;border-color:var(--gold)}.circle.quiet{opacity:.45}.circle .n{position:absolute;top:-5px;right:-5px;min-width:17px;height:17px;border-radius:999px;background:var(--accent);color:#fff;font-size:10px;font-weight:800;display:flex;align-items:center;justify-content:center;padding:0 4px}.circle.gold .n{background:var(--gold)}.garden{background:#eef3ea;border:1px solid #d9e3d4;border-radius:var(--r);padding:10px;text-align:left}.garden b{display:block;font-size:12px;color:#5f7a5b;text-transform:uppercase;letter-spacing:.06em;margin-bottom:6px}.garden .stones{display:flex;flex-wrap:wrap;gap:4px}.garden .stone{width:14px;height:10px;border-radius:50%;background:#b9b1a4}.garden .milestone{width:14px;height:14px;border-radius:3px;background:var(--gold)}.wiring{margin:10px auto 0;max-width:420px}.wiring summary{cursor:pointer;font-weight:700;padding:8px 12px;background:var(--panel);border:1px solid var(--line);border-radius:var(--r)}.factory{margin:10px auto 0;max-width:420px;background:#f0efed;border:1px solid var(--line);border-radius:var(--r);padding:10px 12px;display:flex;justify-content:space-between;align-items:center;text-align:left}.factory b{display:block;font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}.orbbar{position:fixed;left:0;right:0;bottom:0;z-index:30;display:flex;justify-content:center;gap:18px;padding:10px 12px calc(10px + var(--safe-bottom));background:linear-gradient(180deg,#f5f4f000,#f5f4f0f2 40%)}.orb{width:58px;height:58px;border-radius:50%;border:0;background:radial-gradient(circle at 42% 36%,rgba(var(--orbCore),1),rgba(var(--orb),.95) 46%,rgba(var(--orb),.55) 72%,rgba(var(--orb),0));box-shadow:0 0 22px 6px rgba(var(--orb),.4);animation:orbbreathe 5.5s ease-in-out infinite;position:relative;color:#5a4a1e;font-size:11px;font-weight:800}.orb.role-harbor{--orb:150,196,214;--orbCore:226,242,248;color:#2d4a56}.orb.role-forge{--orb:222,150,110;--orbCore:250,230,215;color:#5a2e18}.orb.role-recorder{--orb:190,190,200;--orbCore:245,245,250;color:#444}.orb.role-support{--orb:230,160,170;--orbCore:252,235,238;color:#5a2630}.orb.active{outline:3px solid rgba(255,255,255,.9);outline-offset:2px}.orb .heart{position:absolute;right:-2px;top:-2px;width:14px;height:14px;border-radius:50%;background:#d9777f;animation:pulse 1.4s ease-in-out infinite}@keyframes orbbreathe{0%,to{transform:scale(.94)}50%{transform:scale(1.05)}}@keyframes pulse{0%,to{transform:scale(.85);opacity:.7}50%{transform:scale(1.1);opacity:1}}.sheet{position:fixed;top:0;bottom:0;right:0;width:min(86vw,360px);background:var(--panel);box-shadow:-6px 0 24px #0000001f;z-index:40;transform:translate(100%);transition:transform .3s var(--ease);display:flex;flex-direction:column;padding-top:var(--safe-top)}.sheet.open{transform:none}.sheet .head{display:flex;justify-content:space-between;align-items:center;padding:12px 14px;border-bottom:1px solid var(--line)}.sheet .body{flex:1;overflow:auto;padding:8px 10px}.sheet .foot{padding:10px;border-top:1px solid var(--line);padding-bottom:calc(10px + var(--safe-bottom))}.flag{display:flex;align-items:center;gap:10px;width:100%;border:0;background:transparent;padding:10px 8px;border-radius:10px;text-align:left}.flag:hover{background:var(--panel-alt)}.flag .sw{width:10px;height:26px;border-radius:3px;flex:none}.flag .code{font-size:11px;color:var(--muted);font-weight:800;width:44px}.flag.locked{opacity:.45}.flag.off{opacity:.6}.flag.inbox{background:var(--gold-soft);border:1px solid #e6cf9f;margin-bottom:6px}.overlay{position:fixed;inset:0;background:#1e1e1940;z-index:39}.widgets{display:grid;grid-template-columns:1fr 1fr;gap:10px}.widget{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:10px 12px;min-height:84px}.widget.large{grid-column:1/-1}.widget b{display:block;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:6px}.widget .value{font-size:16px;font-weight:700}.widget ul{margin:0;padding-left:18px;font-size:14px}.zoom{display:grid;grid-template-columns:1fr 1fr;gap:10px}.zoom .widget.large{grid-column:auto}@media(max-width:420px){.zoom{grid-template-columns:1fr}}.chat{display:flex;flex-direction:column;gap:8px}.msg{max-width:88%;padding:10px 12px;border-radius:14px;background:var(--panel);border:1px solid var(--line);white-space:pre-wrap}.msg.me{align-self:flex-end;background:#e9eef3;border-color:#d6dee6}.msg.ga{align-self:flex-start}.msg .who{display:block;font-size:11px;color:var(--muted);margin-bottom:3px}.chatbar{position:fixed;left:0;right:0;bottom:calc(84px + var(--safe-bottom));padding:8px 12px;display:flex;gap:8px;max-width:720px;margin:0 auto;z-index:31}.chatbar input{flex:1}.strip{position:fixed;left:50%;top:calc(58px + var(--safe-top));transform:translate(-50%);z-index:50;display:flex;flex-direction:column;gap:6px;width:min(92vw,380px);pointer-events:none}.strip .fj{pointer-events:auto;background:#1c1e24f0;color:#f4f1ea;border-radius:14px;padding:9px 12px;display:flex;align-items:center;gap:9px;font-size:13px}.strip .dot{width:9px;height:9px;border-radius:50%;background:var(--gold)}.strip .forging .dot{animation:pulse 1.2s ease-in-out infinite}.strip .ready .dot{background:var(--good)}.strip .failed .dot{background:#c77a6b}.strip .cancelled .dot{background:#8b8f97}.strip .txt{flex:1}.strip button{border:0;border-radius:9px;padding:5px 9px;background:#f4f1ea;color:#1c1e24}.sos-routes{display:grid;gap:10px}.sos-routes .btn{padding:16px;font-size:16px;text-align:left;border-radius:var(--r)}.sos-112{display:block;text-align:center;font-size:20px;font-weight:900;color:#fff;background:var(--bad);border-radius:var(--r);padding:16px;text-decoration:none}.bar{height:6px;border-radius:3px;background:var(--line, #ddd);overflow:hidden;margin:6px 0}.bar .fill{height:100%;background:var(--gold, #c9a227);border-radius:3px;transition:width .3s}.highway{list-style:none;padding:0;margin:8px 0;border-left:3px solid var(--line)}.highway li{padding:6px 0 6px 12px;position:relative}.highway li:before{content:"";position:absolute;left:-8px;top:14px;width:10px;height:10px;border-radius:50%;background:var(--faint)}.highway li.current:before{background:var(--gold);box-shadow:0 0 0 4px var(--gold-soft)}.highway li.done:before{background:var(--good)}.table{width:100%;border-collapse:collapse;font-size:13px}.table th,.table td{text-align:left;padding:6px 4px;border-bottom:1px solid var(--line);vertical-align:top}.table tr.gold td{background:var(--gold-soft)}.table input,.table select{font-size:12px;padding:4px}.card.private{border:1px dashed var(--gold)}
