:root{--bg: #0F1A24;--bg-2: #142230;--surface: #1B2D3C;--surface-2: #233A4C;--sky-top: #0F1A24;--sky-bottom: #1D3346;--text: #F3EBDC;--muted: #BDB3A3;--dim: #7F8A93;--accent: #FFB454;--accent-ink: #21160A;--warm: #F6DEAC;--agent: #9BE0F0;--agent-ink: #0F2A30;--sim: #C1BCCB;--sim-ink: #1F1A28;--line: rgba(243, 235, 220, .12);--danger: #EE7A5A;--ok: #E3A853;--font-display: "Gloock", Georgia, serif;--font-body: "Nunito", "Segoe UI", sans-serif;--font-hand: "Caveat", cursive;--font-mono: "Nunito", "Segoe UI", sans-serif;--font-code: ui-monospace, "Cascadia Mono", Consolas, monospace;--radius: 8px;--radius-sm: 6px;--shadow: 0 10px 30px rgba(0, 0, 0, .5);--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-soft: cubic-bezier(.4, 0, .2, 1);--d-fast: .14s;--d-med: .28s;--topbar: 54px;--rail: 400px}*{box-sizing:border-box}html,body{margin:0;padding:0}html{background:var(--bg)}body{background:var(--bg);color:var(--text);font-family:var(--font-body);font-size:15px;line-height:1.5;min-height:100vh}button{font-family:var(--font-body);cursor:pointer}a{color:var(--accent)}code{font-family:var(--font-code);font-size:.9em}.logo-lockup{display:inline-flex;align-items:center;gap:calc(var(--logo, 40px) * .26);color:var(--text);line-height:0}.logo-word{font-family:var(--font-display);font-size:calc(var(--logo, 40px) * .72);color:var(--text);line-height:1}.logo-btn{background:none;border:none;padding:0;display:inline-flex;align-items:center;transition:opacity var(--d-fast)}.logo-btn:hover{opacity:.82}.btn{border:none;background:var(--surface-2);color:var(--text);border-radius:0;clip-path:polygon(0 0,calc(100% - 9px) 0,100% 9px,100% 100%,9px 100%,0 calc(100% - 9px));padding:9px 16px;font-size:.92rem;font-weight:700;transition:background var(--d-fast) var(--ease-soft),transform var(--d-fast) var(--ease-soft);white-space:nowrap}.btn:hover{background:#2c4760;transform:translateY(-1px)}.btn:active{transform:translateY(0)}.btn:disabled{opacity:.45;cursor:default}.btn-primary{background:var(--accent);color:var(--accent-ink)}.btn-primary:hover{background:#ffc470}.btn-ghost{background:transparent;clip-path:none;color:var(--muted);padding:8px 2px;font-weight:600;text-decoration:underline;text-decoration-color:#ffb45480;text-underline-offset:4px}.btn-ghost:hover{color:var(--text);background:transparent;text-decoration-color:var(--accent)}.btn-small{padding:5px 10px;font-size:.82rem}.btn-big{padding:14px 22px;font-size:1.05rem}.btn-claim{background:transparent;box-shadow:inset 0 0 0 1.5px var(--accent);color:var(--accent)}.btn-claim:hover{background:#ffb4541f}.btn-undo{background:var(--text);color:var(--bg)}.btn-undo:hover{background:#fffbf2}.tiny{background:none;border:none;color:var(--muted);font-size:.74rem;text-decoration:underline;padding:2px 4px;font-family:var(--font-mono)}.tiny:hover{color:var(--text)}.tiny.danger:hover{color:var(--danger)}.field,select.field,textarea.field{background:var(--bg);border:1px solid var(--line);color:var(--text);border-radius:0;border-bottom-color:#f3ebdc59;padding:9px 12px;font-size:.92rem;font-family:var(--font-body);min-width:0}.field::placeholder{color:var(--dim)}.field:focus{outline:2px solid rgba(255,180,84,.45);outline-offset:1px}.field.short{width:90px}input[type=date].field{color-scheme:dark}.via{display:inline-flex;align-items:center;gap:5px;font-family:Caveat,cursive;font-weight:600;font-size:.98rem;line-height:1;white-space:nowrap}.via-person{color:var(--accent)}.via-agent{color:var(--agent)}.via-sim{color:var(--sim)}.glyph{flex:none}.glyph-moth .wing{transform-box:fill-box;transform-origin:50% 50%}.via-agent .glyph-moth .wing:first-child,.agent-note .glyph-moth .wing:first-child{transform-origin:100% 50%;animation:flapL .2s ease-in-out infinite alternate}.via-agent .glyph-moth .wing:nth-child(2),.agent-note .glyph-moth .wing:nth-child(2){transform-origin:0% 50%;animation:flapR .2s ease-in-out infinite alternate}.ann{font-family:var(--font-mono);font-size:.64rem;letter-spacing:.06em;padding:1px 6px;border-radius:3px;border:1px solid var(--line);color:var(--muted)}.ann.read{color:var(--muted)}.ann.write{color:var(--accent);border-color:#ffb45466}.ann.consequential{color:var(--danger);border-color:#ee7a5a80}.shell{height:100vh;height:100dvh;display:flex;flex-direction:column;overflow:hidden}.topbar{height:var(--topbar);display:flex;align-items:center;gap:14px;padding:0 16px;border-bottom:1px solid var(--line);background:var(--bg);flex:none}.house-name{font-family:Caveat,cursive;font-weight:600;font-size:1.55rem;color:var(--accent);margin-left:6px;background:none;border:none;padding:4px 8px;border-radius:var(--radius-sm);max-width:26vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.house-name:hover{background:var(--surface)}.rename-form{display:flex;gap:6px;align-items:center}.rename-form.idle{gap:0}.field.offscreen{position:absolute;width:1px;height:1px;padding:0;margin:0;border:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.rename-form .field{width:240px}.topbar-right{margin-left:auto;display:flex;align-items:center;gap:10px}.lantern-wrap{display:flex;align-items:center;gap:7px;color:#c4a06a}.lantern-wrap b{font-family:Caveat,cursive;font-weight:600;font-size:1.02rem;color:var(--warm)}.lantern-wrap.lost b,.lantern-wrap.connecting b{color:var(--danger)}.lantern-wrap .glyph-lantern{transform-origin:50% 0;animation:tagSwing 4.2s ease-in-out infinite}.lantern-wrap .flame{animation:candle 1.1s ease-in-out infinite alternate}.live-dot{width:8px;height:8px;border-radius:50%;background:var(--ok);box-shadow:0 0 8px var(--ok);animation:livePulse 2.4s var(--ease-soft) infinite}.live-dot.lost,.live-dot.connecting{background:var(--danger);box-shadow:0 0 8px var(--danger);animation:none}@keyframes livePulse{50%{opacity:.45}}.main{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1fr) var(--rail)}.stage{position:relative;min-width:0;min-height:0;display:flex;flex-direction:column;background:linear-gradient(var(--sky-top) 0%,var(--sky-bottom) 68%,var(--bg) 100%)}.stage-top{display:flex;align-items:center;gap:10px;padding:10px 16px 0;flex:none;z-index:3}.hooks{display:flex;align-items:flex-start;gap:14px;padding:0 0 0 4px;min-height:34px;position:relative}.hooks:before{content:"";position:absolute;left:0;right:auto;top:3px;width:100%;max-width:420px;height:3px;background:linear-gradient(90deg,#6b4e33,#8a6238 40%,#5a4230);border-radius:2px}.key-tag,.hook-empty{position:relative;display:flex;flex-direction:column;align-items:center;padding-top:6px}.key-tag i,.hook-empty i{width:6px;height:6px;border:1.5px solid #C4A06A;border-radius:50%;background:transparent;display:block;margin-bottom:-1px}.key-tag b{font-family:Caveat,cursive;font-weight:600;font-size:1.05rem;line-height:1;color:var(--accent-ink);background:var(--warm);padding:5px 9px 4px;clip-path:polygon(0 0,100% 0,100% 100%,8px 100%,0 calc(100% - 8px));transform-origin:50% 0;animation:tagSwing 5s ease-in-out infinite}.key-tag.you b{background:var(--accent)}.key-tag.agent b{background:var(--agent);color:var(--agent-ink);animation-duration:3.6s}.key-tag:nth-child(2n) b{animation-delay:-2.2s}@keyframes tagSwing{0%,to{transform:rotate(-2.5deg)}50%{transform:rotate(2.5deg)}}.here-note{font-family:var(--font-mono);font-size:.7rem;color:var(--dim)}.stage-house{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;padding:0}.house-svg{width:100%;height:100%;max-height:100%;display:block;transition:transform .64s var(--ease-out);transform-origin:var(--zx, 50%) var(--zy, 60%)}.stage-house{overflow:hidden}.stage-house .house-svg.has-sel{transform:scale(1.32)}.house-svg[data-selected=attic]{--zx: 49%;--zy: 38%}.house-svg[data-selected=bedroom]{--zx: 37%;--zy: 56%}.house-svg[data-selected=bathroom]{--zx: 60%;--zy: 56%}.house-svg[data-selected=living]{--zx: 37%;--zy: 73%}.house-svg[data-selected=kitchen]{--zx: 60%;--zy: 73%}.house-svg[data-selected=basement]{--zx: 49%;--zy: 88%}.house-svg[data-selected=garage]{--zx: 79%;--zy: 76%}.house-svg[data-selected=yard]{--zx: 16%;--zy: 75%}.sky-anns{position:absolute;left:16px;top:48px;display:flex;flex-direction:column;gap:6px;max-width:min(60%,520px);pointer-events:none;z-index:4}.sky-ann{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:600;color:var(--text);background:none;padding:2px 0;text-shadow:0 1px 2px #000,0 0 14px rgba(6,12,20,.95),0 0 30px rgba(6,12,20,.9);animation:tickIn .16s var(--ease-out)}@keyframes tickIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.receipt{position:absolute;left:16px;right:16px;bottom:12px;display:flex;align-items:center;gap:10px;background:var(--bg-2);border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:var(--radius-sm);padding:8px 10px 8px 12px;z-index:5;box-shadow:var(--shadow);animation:tickIn .2s var(--ease-out)}.receipt.agent{border-left-color:var(--agent)}.receipt.sim{border-left-color:var(--sim)}.receipt-text{flex:1;min-width:0;font-size:.9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.receipt-time{font-family:var(--font-mono);font-size:.68rem;color:var(--dim);white-space:nowrap}.door-note{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:min(340px,86vw);background:var(--bg-2);border:1px solid var(--line);padding:22px 22px 18px;border-radius:var(--radius);box-shadow:var(--shadow);z-index:6;display:flex;flex-direction:column;gap:10px;animation:noteUp .32s var(--ease-out)}.door-note h3{font-family:var(--font-display);margin:0;font-size:1.5rem;font-weight:400}.door-greet{font-family:var(--font-hand);font-weight:600;font-size:1.15rem;color:var(--accent);margin-bottom:-6px}@keyframes noteUp{0%{opacity:0;transform:translate(-50%,-46%)}to{opacity:1;transform:translate(-50%,-50%)}}.rail{min-width:0;border-left:1px solid var(--line);background:var(--bg-2);display:flex;flex-direction:column;min-height:0}.tabs{display:flex;border-bottom:1px solid var(--line);flex:none}.tabs>button{flex:1;background:none;border:none;color:var(--muted);font-size:.92rem;font-weight:700;padding:12px 6px;border-bottom:2px solid transparent;display:inline-flex;align-items:center;justify-content:center;gap:6px}.tabs>button.on{color:var(--accent);border-bottom-color:var(--accent)}.tabs>button:hover:not(.on){color:var(--text)}.tab-note{font-family:Caveat,cursive;font-weight:600;font-size:.95rem;color:var(--danger);margin-left:6px;transform:rotate(-4deg);display:inline-block;white-space:nowrap}.tab-dot{width:7px;height:7px;border-radius:50%;background:var(--sim);animation:livePulse 1s infinite}.rail-body{flex:1;min-height:0;overflow:auto;padding:14px 16px 24px}.rail-head{display:flex;gap:8px;margin-bottom:12px}.rail-head .search{flex:1}.rail-title{display:flex;align-items:baseline;gap:10px;margin:6px 0 4px}.rail-h{font-family:var(--font-display);font-weight:400;font-size:1.3rem;margin:0}.rail-count{font-family:var(--font-hand);font-weight:600;font-size:1.05rem;color:var(--accent)}.rail-title .tiny{margin-left:auto}.rail-p{color:var(--muted);font-size:.88rem;margin:2px 0 12px}.rail-label{font-family:var(--font-hand);font-weight:600;font-size:1.12rem;color:var(--accent);margin:14px 0 4px}.rail-section{padding:8px 0}.empty{color:var(--muted);padding:22px 8px;font-size:.9rem;text-align:center}.mem{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);padding:12px 14px 10px;margin:8px 0}.mem.flash{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.mem:hover{border-color:#ffb45459}.mem-top{display:flex;align-items:baseline;gap:8px}.mem-top h4{margin:0;font-size:.98rem;flex:1}.mem-top .tiny{opacity:0}.mem:hover .mem-top .tiny{opacity:1}.mem p{font-size:.86rem;margin:6px 0 8px;color:var(--muted);white-space:pre-wrap;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.mem:hover p,.mem.flash p{-webkit-line-clamp:unset;color:var(--text)}.mem-meta{font-size:.78rem;color:var(--dim);display:flex;flex-wrap:wrap;gap:6px}.mem-room:before{content:"·";margin-right:6px;color:var(--dim)}.mem-kind{color:var(--accent)}.mem-room{color:var(--warm)}.taped{display:inline-flex;gap:6px;align-items:center;color:var(--accent);font-family:var(--font-hand);font-weight:600;font-size:1.08rem;margin-bottom:6px}.taped .glyph-bell{transform-origin:50% 0;animation:tagSwing 3s ease-in-out infinite}.inline-form{display:flex;flex-direction:column;gap:8px;margin:8px 0 14px;padding:12px;background:var(--surface);border-radius:var(--radius-sm);border:1px solid var(--line)}.form-row{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.form-row .field{flex:1}.form-row .field.short{flex:0 0 90px}.inline-form .field{width:100%}.person{padding:8px 0 14px;border-bottom:1px solid var(--line)}.person-head{display:flex;align-items:center;gap:12px}.person-avatar{flex:none;width:40px;height:40px;border-radius:50%;background:radial-gradient(circle at 32% 28%,#e8b96a,#b97f3a);color:var(--accent-ink);font-weight:800;font-size:.9rem;display:flex;align-items:center;justify-content:center}.person-head h3{font-family:var(--font-display);margin:0;font-size:1.15rem;font-weight:400}.person-notes{color:var(--muted);font-size:.82rem;margin:2px 0 0}.mini-empty{color:var(--dim);font-size:.82rem;font-family:var(--font-mono)}.care-task{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:8px 10px;margin-bottom:6px;border-left:2px solid var(--line);background:var(--surface);border-radius:0 var(--radius-sm) var(--radius-sm) 0}.care-task.unclaimed{border-left-color:var(--danger)}.ct-main b{font-size:.9rem}.ct-kind{font-family:var(--font-hand);font-weight:600;font-size:1rem;color:var(--accent);margin-right:6px}.ct-sub{font-size:.78rem;color:var(--muted)}.ct-side{display:flex;flex-direction:column;align-items:flex-end;gap:2px}.stamp{font-family:var(--font-hand);font-weight:600;font-size:1rem;color:var(--ok);white-space:nowrap}@keyframes stampIn{0%{opacity:0;transform:translateY(3px)}to{opacity:1;transform:none}}.med-line{display:flex;justify-content:space-between;gap:8px;font-family:var(--font-mono);font-size:.76rem;padding:5px 0;border-bottom:1px dashed var(--line);color:var(--muted)}.med-refill{white-space:nowrap}.med-line.soon{color:var(--danger)}.care-actions{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0 6px}.care-actions .inline-form{width:100%}.journal{margin-top:16px}.journal h4{font-family:var(--font-display);margin:0 0 8px;font-size:1.1rem;font-weight:400}.journal-sub{font-family:var(--font-mono);font-size:.7rem;color:var(--dim);margin-left:6px}.journal-write{display:flex;gap:8px;margin-bottom:10px}.journal-write .field{flex:1}.journal-entry{padding:8px 0;border-top:1px solid var(--line)}.journal-entry p{margin:2px 0 0;font-size:.88rem}.je-head{font-family:var(--font-mono);font-size:.68rem;color:var(--dim)}.up{display:grid;grid-template-columns:72px 1fr;gap:12px;padding:10px 0;border-bottom:1px solid var(--line)}.up-when{font-family:var(--font-mono);font-size:.8rem;color:var(--muted)}.up-when small{display:block;font-size:.66rem;color:var(--dim)}.up-when.soon{color:var(--accent)}.up-when.overdue{color:var(--danger);font-weight:700}.up-type{font-family:var(--font-hand);font-weight:600;font-size:1rem;color:var(--accent);margin-right:6px}.up-person,.up-detail{color:var(--muted);font-size:.82rem}.up-detail{margin-top:2px}.up-main .stamp,.up-main .btn{margin-top:6px;display:inline-block}.agent-note{position:relative;display:flex;gap:12px;align-items:flex-start;font-size:.88rem;color:#3a2a1e;background:#f6efdc;padding:14px 14px 12px;margin:8px 0 18px;transform:rotate(-.8deg);box-shadow:2px 3px #00000059;clip-path:polygon(0 0,100% 0,100% calc(100% - 10px),calc(100% - 10px) 100%,0 100%)}.agent-note p{margin:0;line-height:1.4}.agent-note b{color:#21160a;display:block;font-family:Caveat,cursive;font-weight:600;font-size:1.25rem}.agent-note .glyph-moth{color:#5b7f8c;margin-top:4px}.agent-note.ok .glyph-moth{color:#2e7a8c}.agent-note .pin{position:absolute;top:-6px;left:50%;width:10px;height:10px;border-radius:50%;background:var(--danger);box-shadow:0 2px 2px #0006,inset -2px -2px #00000040}.agent-dot{flex:none;margin-top:6px;width:8px;height:8px;border-radius:50%;background:var(--dim)}.agent-line.ok .agent-dot{background:var(--agent);box-shadow:0 0 10px var(--agent);animation:livePulse 2.4s infinite}.sim-box{padding:4px 0 12px;margin-bottom:14px;border-bottom:1px solid var(--line)}.sim-box .rail-p{margin-bottom:10px}.sim-steps{list-style:none;padding:0;margin:12px 0 0;display:flex;flex-direction:column;gap:10px}.sim-step{min-width:0;overflow:hidden;border-left:2px solid var(--sim);padding-left:10px;animation:tickIn .2s var(--ease-out)}.sim-step.error{border-left-color:var(--danger)}.sim-step.pending-step{border-left-color:var(--line);color:var(--dim);font-family:var(--font-mono);font-size:.74rem}.sim-say{font-size:.84rem;color:var(--text)}.sim-call{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:4px 0}.sim-call code{color:var(--sim);font-size:.78rem}.sim-input{font-family:var(--font-code);font-size:.66rem;color:var(--dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.sim-out{margin:0;font-family:var(--font-code);font-size:.7rem;color:var(--muted);white-space:pre-wrap;background:var(--bg);padding:6px 8px;border-radius:4px;max-height:120px;overflow:hidden}.sim-out.pending{color:var(--dim)}.rcpt{border-bottom:1px solid var(--line);border-left:2px solid transparent;padding:8px 0 8px 8px;margin-left:-8px}.rcpt.agent{border-left-color:#9be0f080}.rcpt.sim{border-left-color:#c1bccb80}.rcpt.ui{border-left-color:#ffb45466}.rcpt.undone{opacity:.55}.rcpt.undone .rcpt-text{text-decoration:line-through}.rcpt-row{display:flex;align-items:center;gap:8px}.rcpt-time{margin-left:auto;font-family:var(--font-mono);font-size:.66rem;color:var(--dim)}.rcpt-text{font-size:.88rem;margin:3px 0}.rcpt-foot{display:flex;align-items:center;gap:10px}.rcpt-foot code{font-size:.68rem;color:var(--agent);opacity:.75}.rcpt-undone{font-family:var(--font-mono);font-size:.68rem;color:var(--dim)}.tools-toggle{margin:16px 0 6px;background:none;border:none;color:var(--muted);font-size:.86rem;text-decoration:underline;text-underline-offset:4px;padding:0}.tools-toggle:hover{color:var(--text)}.tool-group{margin:10px 0}.tool-group h5{font-family:var(--font-code);font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;color:var(--dim);margin:0 0 6px}.tool-row{display:grid;grid-template-columns:auto auto 1fr;align-items:baseline;gap:8px;padding:4px 0}.tool-row code{color:var(--agent);font-size:.76rem}.tool-desc{color:var(--muted);font-size:.78rem}.hand-name{font-family:Caveat,cursive;font-weight:600;font-size:11px;fill:#3a2a1e;opacity:.85}.hand-name.you{fill:#7a3a1c}.hand-room{font-family:Caveat,cursive;font-weight:600;font-size:18px;fill:#2a1a12;stroke:#fbf3e0;stroke-width:3.5px;paint-order:stroke;stroke-linejoin:round}.room-note path{stroke:#2a1a12!important;opacity:.55}.box-label{font-family:Caveat,cursive;font-size:7px;fill:#3a2a1e}.person .p-torso{transform-box:fill-box;transform-origin:50% 100%;animation:breathe var(--breath, 4.5s) ease-in-out var(--idle-delay, 0s) infinite}@keyframes breathe{50%{transform:scaleY(1.025) translateY(.2px)}}.person .p-head{transform-box:fill-box;transform-origin:50% 90%;animation:headTilt calc(var(--breath, 4.5s) * 2.3) ease-in-out var(--idle-delay, 0s) infinite}@keyframes headTilt{0%,to{transform:rotate(-2deg)}40%{transform:rotate(3deg)}70%{transform:rotate(0)}}.person.pose-mug .p-arm-front{transform-box:fill-box;transform-origin:20% 0%;animation:sip 7s ease-in-out var(--idle-delay, 0s) infinite}@keyframes sip{0%,60%,to{transform:rotate(0)}72%,84%{transform:rotate(-38deg) translate(1px,1px)}}.person.pose-mug .steam{animation:wisp 2.4s ease-out infinite}.person.pose-read .p-book .page{transform-box:fill-box;transform-origin:0% 50%;animation:pageTurn 6.5s ease-in-out var(--idle-delay, 0s) infinite}@keyframes pageTurn{0%,78%,to{transform:scaleX(1)}86%{transform:scaleX(-.6)}94%{transform:scaleX(1)}}.person.pose-read .p-head-read{animation-name:readNod}@keyframes readNod{0%,to{transform:rotate(6deg)}50%{transform:rotate(9deg)}}.person.pose-table .p-arm-write{transform-box:fill-box;transform-origin:10% 20%;animation:scribble 1.4s ease-in-out infinite}@keyframes scribble{50%{transform:translate(1.2px,.3px) rotate(3deg)}}.person.pose-table .p-head-down{animation-name:writeNod}@keyframes writeNod{0%,to{transform:rotate(10deg)}50%{transform:rotate(13deg)}}.person.pose-cook .p-arm-front{transform-box:fill-box;transform-origin:20% 0%;animation:stir 2.2s ease-in-out infinite}@keyframes stir{50%{transform:rotate(8deg) translate(1px)}}.person.pose-stand{animation:sway calc(var(--breath, 4.5s) * 1.8) ease-in-out var(--idle-delay, 0s) infinite;transform-box:fill-box;transform-origin:50% 100%}@keyframes sway{0%,to{rotate:-1deg}50%{rotate:1deg}}.person.arriving{animation:walkIn 1.5s var(--ease-out) both}@keyframes walkIn{0%{opacity:0;translate:-60px 0}30%{opacity:1}to{translate:0 0}}.person.arriving .p-legs path:first-child{transform-box:fill-box;transform-origin:50% 0%;animation:step .36s ease-in-out 4 alternate}.person.arriving .p-legs path:nth-child(2){transform-box:fill-box;transform-origin:50% 0%;animation:step .36s ease-in-out 4 alternate-reverse}@keyframes step{0%{transform:rotate(-14deg)}to{transform:rotate(14deg)}}.dog .dog-tail{transform-box:fill-box;transform-origin:100% 100%;animation:wag .55s ease-in-out infinite alternate}@keyframes wag{0%{transform:rotate(-16deg)}to{transform:rotate(18deg)}}.dog .dog-head{transform-box:fill-box;transform-origin:10% 90%;animation:sniff 5s ease-in-out infinite}@keyframes sniff{0%,to{transform:rotate(0)}30%{transform:rotate(-8deg)}45%{transform:rotate(-6deg)}60%{transform:rotate(4deg)}}.dog .dog-ear{transform-box:fill-box;transform-origin:50% 0;animation:earFlick 5s ease-in-out infinite}@keyframes earFlick{0%,to{transform:rotate(0)}62%{transform:rotate(-20deg)}66%{transform:rotate(0)}}.cat .cat-tail{transform-box:fill-box;transform-origin:100% 100%;animation:flick 3.2s ease-in-out infinite}@keyframes flick{0%,to{transform:rotate(0)}50%{transform:rotate(-22deg)}65%{transform:rotate(6deg)}}.fire .flame{transform-box:fill-box;transform-origin:50% 100%}.fire .f1{animation:flame .9s ease-in-out infinite alternate}.fire .f2{animation:flame .7s ease-in-out -.3s infinite alternate}.fire .f3{animation:flame .5s ease-in-out -.1s infinite alternate}@keyframes flame{0%{transform:scaleY(.86) scaleX(1.06) translate(-.6px);opacity:.9}to{transform:scaleY(1.1) scaleX(.94) translate(.6px);opacity:1}}.room:not(.is-lit) .fire .flame,.room:not(.is-lit) .candle{opacity:.15}.candle{animation:candle 1.3s ease-in-out infinite alternate}@keyframes candle{0%{opacity:.7;r:1.2px}to{opacity:1;r:1.6px}}.steam-wisps .wisp{opacity:0;animation:wisp 2.6s ease-out infinite}.steam-wisps .w2{animation-delay:-1.3s}@keyframes wisp{0%{opacity:0;transform:translateY(2px)}25%{opacity:.7}to{opacity:0;transform:translateY(-9px)}}.room:not(.is-lit) .steam-wisps{display:none}.swing{transform-box:fill-box;transform-origin:50% 0;animation:swingRock 4.6s ease-in-out infinite}@keyframes swingRock{0%,to{transform:rotate(-4deg)}50%{transform:rotate(4deg)}}.string-lights .bulb{animation:twinkle 3.4s ease-in-out infinite}.string-lights g:nth-child(2n) .bulb{animation-delay:-1.1s}.string-lights g:nth-child(3n) .bulb{animation-delay:-2.3s}.clock,.moth{pointer-events:none}.moth .wing{transform-box:fill-box}.moth .wing-l{transform-origin:100% 50%;animation:flapL .16s ease-in-out infinite alternate}.moth .wing-r{transform-origin:0% 50%;animation:flapR .16s ease-in-out infinite alternate}@keyframes flapL{0%{transform:scaleX(1)}to{transform:scaleX(.35)}}@keyframes flapR{0%{transform:scaleX(1)}to{transform:scaleX(.35)}}.moth .moth-body{animation:hover 1.6s ease-in-out infinite}@keyframes hover{50%{transform:translateY(-2.5px)}}.room{transition:opacity var(--d-med) var(--ease-soft),transform var(--d-med) var(--ease-soft)}.house-svg.has-sel .room:not(.sel){opacity:.45}.house-svg .room.sel{transform:scale(1.03);transform-box:fill-box;transform-origin:center}.room-hit{fill:transparent;cursor:pointer}.room-hit:hover{fill:#ffffff0a}.mem-dot{cursor:pointer}.mem-dot .lamp-halo{transition:r var(--d-fast) var(--ease-soft)}.mem-dot:hover .lamp-halo{r:15}.mem-dot:hover path{filter:brightness(1.12)}.mem-dot.arriving{opacity:0}.mem-ring{fill:none;stroke:var(--accent);stroke-width:2;animation:ring 1.6s var(--ease-out) infinite}@keyframes ring{0%{opacity:1}to{opacity:0;stroke-width:.4}}.smoke circle{animation:drift 12s var(--ease-soft) infinite}.star{animation:twinkle 5s ease-in-out infinite}.star:nth-child(3n){animation-delay:-1.7s}.star:nth-child(3n+1){animation-delay:-3.4s}@keyframes twinkle{50%{opacity:.25}}@keyframes drift{50%{transform:translate(6px,-10px)}}.house-svg.phase-dark .reveal,.house-svg.phase-dark .ambient,.house-svg.phase-dark .smoke,.house-svg.phase-dark .always-glow{opacity:0}.house-svg.phase-dark .door-lamp{opacity:.35}.house-svg.phase-ignite .reveal,.house-svg.phase-ignite .ambient{opacity:0;animation:revealIn .32s var(--ease-out) var(--ignite-delay, 0ms) both}.house-svg.phase-ignite .always-glow{opacity:0;animation:revealIn .32s var(--ease-out) 1.15s both}.house-svg.phase-ignite .smoke{opacity:0;animation:revealIn .4s 1.3s both}.house-svg.phase-ignite .door-lamp{animation:revealIn .2s .1s both}.house-svg.phase-fast .reveal,.house-svg.phase-fast .ambient{opacity:0;animation:revealIn .2s var(--ease-out) calc(var(--ignite-delay, 0ms) * .35) both}.house-svg.phase-fast .always-glow{animation:revealIn .2s .28s both}.house-svg.phase-fast .smoke{animation:revealIn .2s .4s both}.house-svg.phase-lit .reveal,.house-svg.phase-lit .ambient{opacity:1}.room:not(.is-lit) .fixture .reveal{opacity:0}.room.is-lit .unlit-bulb{opacity:0}@keyframes revealIn{0%{opacity:0}to{opacity:1}}.house-svg.door-flicker .door-lamp{animation:flicker 80ms 2}@keyframes flicker{50%{opacity:.2}}.lamp-tip{position:fixed;transform:translate(-50%,calc(-100% - 10px));background:var(--text);color:var(--bg);padding:7px 11px 6px;border-radius:4px;pointer-events:none;z-index:30;min-width:120px;animation:tipIn .12s var(--ease-out)}.lamp-tip b{display:block;font-size:.8rem}.lamp-tip span{display:block;font-family:var(--font-mono);font-size:10px;opacity:.65;margin-top:2px}@keyframes tipIn{0%{opacity:0}to{opacity:1}}.landing{position:relative;overflow-x:hidden;--p: 0;--rx: 0deg;--ry: 0deg;background:linear-gradient(var(--sky-top) 0%,var(--sky-bottom) 42%,var(--bg) 74%)}.landing-stage{position:sticky;top:0;display:grid;grid-template-columns:minmax(300px,520px) 1fr;height:100vh;align-items:center;padding:0 0 0 7vw;gap:12px;overflow:hidden;perspective:1400px}.landing-walk{height:90vh}.scroll-hint{font-family:Caveat,cursive;font-weight:600;font-size:1.1rem;color:var(--warm);opacity:calc(.85 - var(--p) * 2);margin-top:26px}.scroll-hint span{display:inline-block;animation:nudge 1.8s ease-in-out infinite}@keyframes nudge{50%{transform:translateY(4px)}}.landing-copy{position:relative;z-index:2;padding:6vh 0 40px;opacity:calc(1 - var(--p) * 1.6);transform:translateY(calc(var(--p) * -80px));transition:opacity .12s linear}.hero-lockup{display:flex;align-items:center;gap:18px;margin:0 0 6px}.hero-word{font-family:var(--font-display);font-weight:400;font-size:clamp(4rem,8vw,6.4rem);line-height:.9;margin:0;letter-spacing:-.02em;text-shadow:0 0 40px rgba(255,180,84,.28)}.hero-tag{font-family:var(--font-display);font-size:1.35rem;color:var(--accent);margin:0 0 18px}.hero-pitch{color:var(--muted);font-size:1rem;margin:0 0 26px;max-width:46ch}.ink-agent{color:var(--agent)}.cta-col{display:flex;flex-direction:column;gap:6px;margin-bottom:18px;align-items:flex-start}.cta-note{font-family:var(--font-mono);font-size:.7rem;color:var(--dim)}.cta-row{display:flex;gap:8px;margin:0 0 22px;flex-wrap:wrap;align-items:center}.cta-row .field{flex:1;min-width:200px}.agent-line{display:flex;align-items:center;gap:8px;font-family:var(--font-hand);font-weight:600;font-size:1.1rem;color:var(--muted)}.agent-line a{color:var(--agent);text-underline-offset:3px}.agent-line .agent-dot{margin:0}.agent-line.ok{color:var(--agent)}.landing-house{position:relative;width:52vw;min-width:460px;justify-self:end;margin-right:2vw;background:none;transform:rotateY(var(--ry)) rotateX(var(--rx)) scale(calc(1 + var(--p) * 1.6)) translate(calc(var(--p) * -4%),calc(var(--p) * -12%));transform-origin:40% 74%;transform-style:preserve-3d;transition:transform .22s var(--ease-soft);will-change:transform;filter:drop-shadow(calc(var(--ry) * -.6) 24px 28px rgba(0,0,0,.55))}.landing-house .moon,.landing-house .star{transform:translate(var(--mx, 0px),var(--my, 0px));transition:transform .26s var(--ease-soft)}.landing-house .star:nth-child(2n){transform:translate(calc(var(--mx, 0px) * .5),calc(var(--my, 0px) * .5))}.torch{position:absolute;top:0;right:0;bottom:0;left:0;z-index:3;pointer-events:none;background:radial-gradient(220px 220px at var(--tx, 50%) var(--ty, 50%),rgba(255,212,140,.34),rgba(255,190,100,.12) 45%,transparent 72%);mix-blend-mode:screen;opacity:calc(1 - var(--p) * 1.5)}.landing-house .house-svg{transform:none}.landing-house{-webkit-mask-image:linear-gradient(to right,transparent,#000 10%,#000 90%,transparent);mask-image:linear-gradient(to right,transparent,#000 10%,#000 90%,transparent)}.landing-house .house-svg{width:100%;height:auto}.landing-house .sky-anns{top:24px;bottom:auto;opacity:calc(1 - var(--p) * 2)}.landing-foot{position:fixed;left:0;right:0;bottom:0;z-index:4;text-align:center;color:var(--dim);font-size:.78rem;padding:10px 24px 12px;pointer-events:none;background:linear-gradient(transparent,#0f1a24bf 55%)}.landing-foot a{color:var(--muted);pointer-events:auto;text-underline-offset:3px}.landing-foot a:hover{color:var(--accent)}.toasts{position:fixed;right:20px;bottom:20px;display:flex;flex-direction:column;gap:10px;z-index:50}.toast{background:var(--bg-2);border:1px solid var(--danger);color:var(--text);border-radius:var(--radius-sm);padding:12px 18px;max-width:380px;font-size:.86rem;font-family:var(--font-mono)}.loading{display:flex;align-items:center;justify-content:center;min-height:60vh;color:var(--muted);font-size:1.2rem;font-family:var(--font-display);gap:12px}@media(max-width:900px){.shell{height:auto;overflow:visible}.topbar{position:sticky;top:0;z-index:20;gap:8px;padding:0 12px}.topbar .btn-ghost{display:none}.house-name{font-size:1.05rem;padding:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:46vw}.main{grid-template-columns:minmax(0,1fr)}.stage{min-height:0}.stage-house{padding:0}.house-svg{height:auto}.stage-top{padding:8px 12px 0;flex-wrap:wrap}.sky-anns{position:static;padding:0 12px 8px;max-width:100%}.receipt{position:static;margin:0 12px 10px;flex-wrap:wrap}.receipt-text{white-space:normal;flex-basis:100%;order:3}.rail{border-left:none;border-top:1px solid var(--line);min-height:60vh}.tabs{position:sticky;top:var(--topbar);background:var(--bg-2);z-index:19}.rail-body{overflow:visible;padding:12px 12px 40px}.landing-stage{grid-template-columns:1fr;padding:0 20px;min-height:auto}.landing-stage{position:static;height:auto;overflow:visible;perspective:none}.landing-walk{display:none}.landing-house{transform:none!important}.landing-copy{opacity:1!important;transform:none!important}.scroll-hint,.torch{display:none}.landing-copy{padding:24px 0 8px}.hero-word{font-size:3.4rem}.landing-house{width:auto;min-width:0;margin:0 -20px;justify-self:stretch}.door-note{top:auto;bottom:8px;transform:translate(-50%)}@keyframes noteUp{0%{opacity:0}to{opacity:1}}}@media(prefers-reduced-motion:reduce){.house-svg.phase-ignite .reveal,.house-svg.phase-ignite .ambient,.house-svg.phase-ignite .always-glow,.house-svg.phase-ignite .smoke,.house-svg.phase-fast .reveal,.house-svg.phase-fast .ambient{animation:none;opacity:1}.smoke circle,.star,.live-dot,.mem-ring,.agent-dot,.tab-dot,.key-tag b,.lantern-wrap *,.glyph-moth .wing,.scroll-hint span,.taped .glyph-bell,.person,.person *,.dog *,.cat *,.fire *,.candle,.steam-wisps *,.swing,.string-lights .bulb,.moth *{animation:none}.sky-ann,.door-note,.lamp-tip,.receipt,.sim-step{animation:none}.house-svg .room{transition:none}}.ink-mcp{color:var(--agent)}.landing-err{margin:4px 0 10px;padding:9px 12px;border:1px solid var(--danger);border-radius:var(--radius-sm);background:#ee7a5a17;color:var(--text);font-size:.84rem;max-width:46ch}.mcp-badge{display:inline-flex;align-items:center;gap:7px;padding:4px 10px 4px 8px;border:1px solid var(--line);border-radius:999px;background:#9be0f00f;color:var(--dim);cursor:pointer;transition:border-color var(--d-fast),color var(--d-fast),background var(--d-fast)}.mcp-badge b{font-family:var(--font-body);font-weight:800;font-size:.74rem;letter-spacing:.06em;color:var(--muted)}.mcp-badge span{font-family:var(--font-hand);font-weight:600;font-size:.98rem;color:var(--dim)}.mcp-badge .glyph-moth{color:var(--dim)}.mcp-badge:hover{border-color:var(--agent);background:#9be0f01f}.mcp-badge.on{border-color:#9be0f073;background:#9be0f01c}.mcp-badge.on b,.mcp-badge.on span,.mcp-badge.on .glyph-moth{color:var(--agent)}.mcp-badge.on:after{content:"";width:6px;height:6px;border-radius:50%;background:var(--agent);box-shadow:0 0 8px var(--agent);animation:livePulse 2.4s infinite}.lantern-wrap.as-btn{background:none;border:none;padding:0;cursor:pointer;font:inherit}.lantern-wrap.as-btn:hover b{color:var(--accent)}.mcp-proof{padding:4px 0 14px;margin-bottom:14px;border-bottom:1px solid var(--line)}.mcp-proof-head{font-family:var(--font-hand);font-weight:600;font-size:1.12rem;color:var(--agent);margin-bottom:8px}.mcp-code{margin:0 0 10px;padding:12px 14px;border:1px solid rgba(155,224,240,.22);border-left:3px solid var(--agent);border-radius:var(--radius-sm);background:#0c1720;overflow-x:auto}.mcp-code code{font-family:var(--font-code);font-size:.7rem;line-height:1.65;color:#cfe7ee;white-space:pre}.mcp-proof .rail-p code{color:var(--agent);background:#9be0f01a;border-radius:3px;padding:1px 4px}@media(max-width:900px){.mcp-badge{padding:3px 8px}.mcp-badge span,.lantern-wrap b{display:none}.mcp-code{padding:10px 11px}.mcp-code code{font-size:.63rem;white-space:pre-wrap;word-break:break-word}.landing-foot{position:static;background:none;padding:0 24px 34px}}
