:root{--bg:#02040a;--ink:#dbe7ff;--ink-dim:#8796b8;--accent:#ffb454;--on-accent:#02040a;--line:#dbe7ff29;--glass:#02040ab8;--panel-bg:#02040adb;--chat-bg:#02040af0;--train-bg:#02040abf;--rule:#dbe7ff47;--err:#ff8f8f;--sel:#ffb4544d;--scroll:#dbe7ff40;--mono:"IBM Plex Mono", ui-monospace, monospace;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root[data-theme=night]{--line:#c8d7ff29}:root[data-theme=halloween]{--bg:#07040b;--ink:#f2ecd8;--ink-dim:#a08fb8;--accent:#ff8a1f;--on-accent:#07040b;--line:#a078d247;--glass:#120a1ac7;--panel-bg:#120a1ae0;--chat-bg:#0e0814f2;--train-bg:#120a1acc;--rule:#a078d266;--sel:#7dff8a47;--scroll:#a078d273}:root[data-tone=light]{--bg:#f4ecd8;--ink:#1a2138;--ink-dim:#4d5163;--accent:#a8420f;--on-accent:#fbf6ea;--line:#1a21384d;--glass:#fbf6eaeb;--panel-bg:#fbf6eaf0;--chat-bg:#fbf6eaf7;--train-bg:#fbf6ead9;--rule:#1a213859;--err:#a31515;--sel:#c8531c40;--scroll:#1a213859;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}::selection{background:var(--sel);color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}html{scrollbar-color:var(--scroll) transparent}.chat-log{scrollbar-color:var(--scroll) transparent;scrollbar-width:thin}*{box-sizing:border-box}html,body{margin:0}body{background:var(--bg);color:var(--ink);font:15px/1.65 var(--mono);-webkit-font-smoothing:antialiased;overflow-x:hidden}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.accent{color:var(--accent)}.dim{color:var(--ink-dim)}#scene{opacity:0;width:100%;height:100%;transition:opacity .6s;position:fixed;inset:0}#scene.ready{opacity:1}header.top{z-index:10;padding:14px 16px;padding-top:calc(14px + env(safe-area-inset-top));pointer-events:none;justify-content:space-between;align-items:center;font-size:13px;display:flex;position:fixed;top:0;left:0;right:0}header.top>*{pointer-events:auto}header.top nav{gap:18px;display:flex}header.top a{color:var(--ink-dim);text-decoration:none}header.top a:before{content:"[";color:var(--line)}header.top a:after{content:"]";color:var(--line)}header.top a:hover{color:var(--accent)}@media (width<=420px){header.top nav{gap:8px}}@media (width<=370px){header.top{font-size:12px}}main{pointer-events:none;max-width:760px;margin:0 auto;padding:0 16px 140px;position:relative}main>*{pointer-events:auto}.hero{pointer-events:none;height:100svh}.panel{background:var(--panel-bg);border:1px solid var(--line);margin:0 0 22px;padding:22px;position:relative}.panel:before,.panel:after{content:"+";color:var(--accent);line-height:1;position:absolute}.panel:before{top:-8px;left:-5px}.panel:after{bottom:-8px;right:-5px}h2{font:500 18px/1.2 var(--mono);margin:0 0 14px}.panel p{color:var(--ink-dim);margin:0 0 10px}.todo{color:var(--ink-dim);opacity:.7}code{color:var(--accent)}.facts{margin:0;padding:0;list-style:none}.facts li{border-top:1px dashed var(--line);color:var(--ink-dim);padding:12px 0}.facts li:first-child{border-top:0;padding-top:0}.facts span{color:var(--accent);margin-bottom:2px;display:block}.facts span:before{content:"$ ";color:var(--ink-dim)}.panel a{color:var(--accent);-webkit-text-decoration-color:color-mix(in srgb, var(--accent) 45%, transparent);text-decoration-color:color-mix(in srgb, var(--accent) 45%, transparent);text-underline-offset:3px}.panel a:hover{-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent)}footer{color:var(--ink-dim);opacity:.7;text-align:center;padding-top:20px;font-size:12px}.castaway-say{z-index:12;max-width:min(34ch,100vw - 16px);font:12px/1.45 var(--mono);text-align:left;color:var(--ink);background:var(--chat-bg);border:1px solid var(--accent);cursor:pointer;opacity:0;visibility:hidden;pointer-events:none;border-radius:10px;margin-top:-4px;padding:7px 10px;transition:opacity .35s,margin .35s,visibility 0s linear .35s;position:fixed}.castaway-say.on{opacity:1;visibility:visible;pointer-events:auto;margin-top:0;transition-delay:0s}.castaway-say .say-rest{color:#0000}.castaway-say:before,.castaway-say:after{content:"";left:var(--tail,50%);border:7px solid #0000;position:absolute;top:100%;transform:translate(-50%)}.castaway-say:before{border-top-color:var(--accent)}.castaway-say:after{border-top-color:var(--chat-bg);margin-top:-1.5px}.castaway-say:hover{border-color:var(--ink)}.castaway-say:focus-visible{outline:1px solid var(--accent);outline-offset:3px}@media (prefers-reduced-motion:reduce){.castaway-say{margin-top:0;transition:opacity .2s,visibility 0s linear .2s}}.bottle-tag{z-index:12;min-width:32px;min-height:32px;font:12px var(--mono);color:var(--accent);white-space:nowrap;opacity:0;background:0 0;border:1px solid #0000;justify-content:center;align-items:center;padding:0 8px;text-decoration:none;display:inline-flex;position:fixed}.bottle-tag[hidden]{display:none}.bt-mark{font-size:14px;line-height:1}.bt-label{max-width:0;overflow:hidden}.bottle-tag:focus-visible{opacity:1;margin-left:var(--shift,0px);background:var(--glass);border-color:var(--accent);outline:1px solid var(--accent);outline-offset:2px}.bottle-tag:focus-visible .bt-label{max-width:40ch;margin-left:6px}.chat{z-index:30;right:16px;bottom:calc(16px + env(safe-area-inset-bottom));background:var(--chat-bg);border:1px solid var(--accent);opacity:0;visibility:hidden;pointer-events:none;flex-direction:column;width:min(420px,100vw - 32px);height:min(560px,100svh - 32px);transition:opacity .2s,transform .2s,visibility 0s linear .2s;display:flex;position:fixed;transform:translateY(12px)}.chat.open{opacity:1;visibility:visible;pointer-events:auto;transition-delay:0s;transform:none}.chat header{color:var(--accent);justify-content:space-between;align-items:center;padding:10px 14px;font-size:13px;display:flex}.chat header span:before{content:"┤ ";color:var(--ink-dim)}.chat header span:after{content:" ├";color:var(--ink-dim)}.chat header.flicker span{animation:.18s step-end flick}@keyframes flick{0%{opacity:.2}30%{opacity:1}50%{opacity:.4}70%{opacity:1}}.rule{white-space:nowrap;height:1em;color:var(--rule);-webkit-user-select:none;user-select:none;flex:none;font-size:13px;line-height:1;overflow:hidden}.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.chat.booting{animation:.2s linear both scan}@keyframes scan{0%{clip-path:inset(0 100% 98% 0)}50%{clip-path:inset(0 0 98%)}to{clip-path:inset(0)}}.chat-ctl{align-items:center;gap:10px;display:flex}.chat-close,.chat-voice{color:var(--ink-dim);font:13px var(--mono);cursor:pointer;background:0 0;border:0}.chat-close:hover,.chat-voice:hover,.chat-voice[aria-pressed=true]{color:var(--accent)}.chat-voice[hidden]{display:none}.chat-log{flex-direction:column;flex:1;gap:12px;padding:14px;font-size:14px;display:flex;overflow-y:auto}.msg{white-space:pre-wrap;word-wrap:break-word}.msg.user{color:var(--accent)}.msg.user:before{content:"> "}.msg.assistant{color:var(--ink)}.msg.error{color:var(--err)}.msg.tool{color:var(--ink-dim);margin-bottom:-6px;font-size:11px}.rate{color:var(--ink-dim);align-items:center;gap:6px;margin-top:-8px;font-size:11px;display:flex}.rate button{font:11px var(--mono);color:var(--ink-dim);cursor:pointer;background:0 0;border:0;padding:0 2px}.rate button:hover:not(:disabled),.rate button.on{color:var(--accent)}.rate button:disabled{cursor:default}a.msg.tool.bottle-link{color:var(--accent);font-size:12px;text-decoration:none;display:block}a.msg.tool.bottle-link:hover,a.msg.tool.bottle-link:focus-visible{text-decoration:underline}.msg.pending:after{content:"he's thinking. the rain picks up…";color:var(--ink-dim);animation:1.4s ease-in-out infinite breathe}@keyframes breathe{50%{opacity:.35}}.msg.typing:after{content:"▌";color:var(--accent);animation:.9s step-end infinite caret}@keyframes caret{50%{opacity:0}}.chips[hidden]{display:none}.chips{flex-wrap:wrap;gap:8px;padding:0 14px 12px;display:flex}.chips button{font:12px var(--mono);color:var(--ink-dim);cursor:pointer;text-align:left;background:0 0;border:0;padding:3px 0}.chips button:before{content:"[ "}.chips button:after{content:" ]"}.chips button:hover,.chips button:focus-visible{color:var(--on-accent);background:var(--accent);outline:none}.chat form{align-items:center;gap:8px;padding:8px 12px 10px;display:flex}.chat textarea{resize:none;font:16px var(--mono);color:var(--ink);background:0 0;border:0;flex:1;padding:6px 0}.chat textarea:focus{outline:none}.chat form button{border:1px solid var(--line);color:var(--accent);font:16px var(--mono);cursor:pointer;background:0 0;padding:4px 10px}.chat form button:disabled{opacity:.4}@media (width<=560px){.chat{width:100vw;height:82svh;padding-bottom:env(safe-area-inset-bottom);border-width:1px 0 0;bottom:0;right:0}}body,.panel,.chat,.train,.chat textarea{transition-property:color,background-color,border-color;transition-duration:.6s;transition-timing-function:ease}.chat{transition-property:opacity,transform,visibility,background-color,border-color;transition-duration:.2s,.2s,0s,.6s,.6s;transition-delay:0s,0s,.2s,0s,0s}.chat.open{transition-delay:0s}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.train{left:16px;bottom:calc(16px + env(safe-area-inset-bottom));z-index:15;font:12px/1.35 var(--mono);color:var(--ink-dim);background:var(--train-bg);border:1px solid var(--line);white-space:pre;pointer-events:none;margin:0;padding:10px 12px;transition:opacity .8s;position:fixed}.train.gone{opacity:0}header.top .top-r{align-items:center;gap:16px;display:flex}.theme-pick{font:inherit;color:var(--ink-dim);white-space:nowrap;align-items:center;display:inline-flex}.theme-pick:before{content:"[";color:var(--line);margin-right:2px}.theme-pick:after{content:"]";color:var(--line);margin-left:2px}.theme-pick button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;border-radius:2px;min-width:1.9em;margin:0;padding:1px 4px;line-height:1.4;position:relative}.theme-pick button:not([data-pref=auto]){font-size:1.15em;line-height:1.2}.theme-pick button[data-pref=halloween]{filter:grayscale()opacity(.7)}.theme-pick button:hover{color:var(--accent);filter:none}.theme-pick button[aria-pressed=true]{color:var(--on-accent);background:var(--accent);filter:none}.theme-pick button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.theme-pick button.live:not([aria-pressed=true]):after{content:"";background:var(--accent);border-radius:50%;width:3px;height:3px;margin-left:-1.5px;position:absolute;bottom:-3px;left:50%}@media (width<=640px){header.top{align-items:flex-start}header.top .top-r{flex-direction:column;align-items:flex-end;gap:6px}}
