* { box-sizing:border-box; }
[hidden] { display:none!important; }
html, body { margin:0; height:100%; background:var(--bg); color:var(--tx); }
body { font:400 16px/1.6 Geist, ui-sans-serif, system-ui, sans-serif; -webkit-font-smoothing:antialiased; transition:background .45s, color .45s; }
button, input, textarea { font:inherit; color:inherit; }
button { cursor:pointer; }
a { color:inherit; }
:focus-visible { outline:2px solid var(--ac); outline-offset:2px; }
svg { flex:none; }
.sr-only { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }
.skip-link { position:absolute; left:12px; top:-60px; z-index:30; padding:8px 14px; border-radius:8px; background:var(--tx); color:var(--bg); text-decoration:none; }
.skip-link:focus { top:12px; }
.noscript { max-width:640px; margin:12vh auto; padding:0 20px; }

.site { position:relative; isolation:isolate; display:flex; flex-direction:column; height:100vh; height:100dvh; overflow:hidden;
  --fade:linear-gradient(rgba(0,0,0,.28), rgba(0,0,0,.28)); }
.site::before { content:""; position:absolute; inset:0; z-index:0; pointer-events:none; background:var(--tx); opacity:var(--tex);
  -webkit-mask-image:url('assets/textures/token-watermark.svg'), var(--fade); mask-image:url('assets/textures/token-watermark.svg'), var(--fade);
  -webkit-mask-size:360px 132px, 100% 100%; mask-size:360px 132px, 100% 100%;
  -webkit-mask-composite:source-in; mask-composite:intersect; transition:opacity .45s; }

.head { position:relative; z-index:3; background:var(--hd); padding:max(16px, env(safe-area-inset-top)) max(14px, env(safe-area-inset-right)) 8px max(14px, env(safe-area-inset-left)); display:grid; gap:6px; transition:background .45s; }
.hrow { display:flex; align-items:center; gap:8px; min-width:0; }
.brand { display:flex; align-items:center; gap:9px; border:0; background:none; padding:0; min-width:0; border-radius:10px; }
.mark { width:30px; height:30px; display:block; }
.mk-bg { fill:var(--mk); }
.mk-ln { fill:none; stroke:var(--mkx); stroke-width:2.2; stroke-linecap:round; stroke-linejoin:round; }
.mk-track { fill:var(--mkx); opacity:.25; }
.mk-fill { fill:var(--mkx); transform-box:fill-box; transform-origin:left; transform:scaleX(.05); transition:transform .35s; }
.name { font-weight:600; font-size:15px; white-space:nowrap; }
.role { display:none; font-size:13px; color:var(--mu); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.nav { display:none; position:relative; gap:2px; margin-left:auto; }
.nav button { position:relative; border:0; background:none; color:var(--mu); font-size:14px; padding:8px 11px; border-radius:8px; }
.lt { position:relative; display:inline-block; text-align:center; }
.lt::after { content:attr(data-c); display:block; height:0; overflow:hidden; visibility:hidden; font-weight:600; }
.lt i { position:absolute; left:.5px; right:.5px; bottom:-5px; height:3px; background:var(--ac); transform-origin:bottom; transform:scaleY(0); }
.links { margin-left:auto; display:flex; gap:5px; align-items:center; flex:none; }
.ib { width:36px; height:36px; border-radius:50%; border:1px solid var(--ln); background:var(--pn); color:var(--tx); display:grid; place-items:center; text-decoration:none; transition:border-color .2s, transform .3s cubic-bezier(.3,1.6,.5,1); }
.ib:hover { border-color:var(--ac); }
.ib:active { transform:scale(.9); }
.ib svg { width:16px; height:16px; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
.ib svg.social-logo { fill:currentColor; stroke:none; width:15px; height:15px; }

.band { display:flex; align-items:center; gap:14px; height:60px; }
.spiral { height:100%; width:auto; overflow:visible; }
.spiral circle, .spiral path { fill:none; stroke-linecap:round; }
.sp-track { stroke:var(--pn2); stroke-width:5; }
.sp-out { stroke:var(--ac); stroke-width:5; }
.sp-fold { stroke:var(--warn); stroke-width:3; }
.sp-mem path { stroke:var(--warn); stroke-width:3; }
.sp-head { fill:var(--tx); stroke:none; }
.ctx { display:grid; gap:0; font:500 11px/1.3 'Geist Mono', ui-monospace, monospace; color:var(--dim); min-width:0; }
.ctx b { font-weight:500; font-size:11px; letter-spacing:.1em; text-transform:uppercase; color:var(--tx); }
.ctx em { font-style:normal; color:var(--ac); }
.hline { position:absolute; left:0; right:0; bottom:0; height:2px; background:var(--ln); overflow:hidden; }
.hline b { position:absolute; inset:0; background:var(--ac); transform-origin:left; transform:scaleX(0); transition:transform .45s cubic-bezier(.22,1,.36,1), background .4s; }
.site.warn .hline b { background:var(--warn); }

.tabs { position:relative; z-index:3; display:flex; background:var(--hd); padding:0 max(8px, env(safe-area-inset-right)) 0 max(8px, env(safe-area-inset-left)); overflow-x:auto; scrollbar-width:none; border-bottom:1px solid var(--ln); transition:background .45s; }
.tabs::-webkit-scrollbar { display:none; }
.tabs button { flex:none; position:relative; border:0; background:none; color:var(--mu); font:500 13.5px Geist, system-ui, sans-serif; padding:11px 10px 12px; white-space:nowrap; }

.main { position:relative; z-index:1; flex:1; min-height:0; overflow:auto; overscroll-behavior:contain; scrollbar-width:thin; scrollbar-color:var(--ln) transparent; }
.log { max-width:720px; margin:0 auto; padding:16px max(16px, env(safe-area-inset-right)) 24px max(16px, env(safe-area-inset-left)); display:flex; flex-direction:column; gap:18px; outline:none; }
.turn { display:grid; gap:6px; min-width:0; animation:rise .45s cubic-bezier(.2,.8,.2,1) both; transition:opacity .4s, transform .4s cubic-bezier(.22,1,.36,1); }
.turn.leaving { opacity:0; transform:translateY(-8px) scale(.98); }
@keyframes rise { from { opacity:0; transform:translateY(10px); } }
.turn.gone { display:none; }
.log.open .turn.gone { display:grid; opacity:.5; transform:none; }
.r-sys { --rc:var(--r-sys); } .r-usr { --rc:var(--r-usr); } .r-ast { --rc:var(--r-ast); } .r-tool { --rc:var(--r-tool); }
.rl { display:flex; align-items:center; gap:8px; font:500 11px/1 'Geist Mono', ui-monospace, monospace; letter-spacing:.12em; text-transform:uppercase; color:var(--dim); }
.rl::before { content:""; width:6px; height:6px; border-radius:2px; background:var(--rc); }
.rl b { font-weight:500; color:var(--tx); }
.rl-tc { letter-spacing:.02em; text-transform:none; font-variant-numeric:tabular-nums; }
.r-usr { justify-items:end; }
.r-usr .rl { flex-direction:row-reverse; }
.sys { margin:6px 0 0; font:400 12.5px/1.55 'Geist Mono', ui-monospace, monospace; color:var(--mu); }
.r-sys { grid-template-columns:minmax(0, 1fr); }
.sys-box { min-width:0; }
.sys-box summary { display:flex; align-items:center; gap:10px; min-height:28px; min-width:0; list-style:none; cursor:pointer; border-radius:6px; }
.sys-box summary::-webkit-details-marker { display:none; }
.sys-box .rl { flex:none; }
.sys-box .rl::before { width:7px; height:9px; border-radius:0; background:var(--dim); clip-path:polygon(0 0, 100% 50%, 0 100%); transition:transform .18s; }
.sys-box[open] .rl::before { transform:rotate(90deg); }
.sys-box summary:hover .rl::before { background:var(--ac); }
.sys-hint { flex:1; min-width:0; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; font:400 12.5px/1.55 'Geist Mono', ui-monospace, monospace; color:var(--mu); }
.sys-box[open] .sys-hint { display:none; }
.hello { margin:2px 0 0; font:400 44px/1.04 Newsreader, Georgia, serif; letter-spacing:-.02em; }
.hello.tokens { display:flex; flex-wrap:wrap; align-items:flex-start; gap:4px; line-height:1.14; }
.hello.tokens + .tagline { margin-top:10px; }
.tok { position:relative; display:inline-grid; }
.k0 { --k:var(--k0); } .k1 { --k:var(--k1); } .k2 { --k:var(--k2); } .k3 { --k:var(--k3); } .k4 { --k:var(--k4); }
.tok .tok-tx { position:relative; padding:0 3px; border-radius:7px; background:var(--k); white-space:pre; text-align:center; transition:filter .18s, background-color .9s; }
.tok:hover .tok-tx { filter:brightness(1.18) saturate(1.15); }
.tok .tok-id { justify-self:center; margin-top:7px; padding:0 6px; border-radius:999px; background:color-mix(in srgb, var(--k) 50%, transparent); color:var(--tx); font:400 11px/1.5 'Geist Mono', ui-monospace, monospace; letter-spacing:0; font-variant-numeric:tabular-nums; }
.tok .caret { position:absolute; left:100%; top:.14em; width:.13em; height:.9em; margin-left:3px; }
.tagline { margin:4px 0 0; font-size:15.5px; line-height:1.5; color:var(--mu); }
.bub { background:var(--pn); border:1px solid var(--ln); border-radius:16px 16px 4px 16px; padding:9px 13px; font-size:15px; max-width:88%; }
.ans { font:400 18px/1.55 Newsreader, Georgia, serif; display:grid; gap:12px; }
.ans p, .abt-bio p { margin:0; }
.turn span { border-radius:3px; transition:background-color .9s; }
.nw { background-color:color-mix(in srgb, var(--rc, var(--ac)) 26%, transparent); }
.caret { display:inline-block; width:9px; height:1em; background:var(--ac); border-radius:2px; vertical-align:-.12em; margin-left:2px; animation:blink .9s steps(2) infinite; }
@keyframes blink { 50% { opacity:0; } }
.think { display:inline-flex; gap:4px; padding:6px 0; }
.think i { width:7px; height:7px; border-radius:2px; background:var(--ac); animation:hop 1.1s ease-in-out infinite; }
.think i:nth-child(2) { animation-delay:.15s; } .think i:nth-child(3) { animation-delay:.3s; }
@keyframes hop { 50% { transform:translateY(-4px) scaleY(1.3); opacity:.45; } }
.tool { display:inline-flex; align-items:center; gap:6px; font:500 12px 'Geist Mono', ui-monospace, monospace; background:var(--pn2); border:1px solid var(--ln); border-radius:8px; padding:5px 9px; color:var(--mu); width:max-content; max-width:100%; }
.tool .fn { color:var(--r-tool); font-weight:500; }
.tool .arg { color:var(--tx); }
.tool .arg:not(:empty)::before, .tool .arg:not(:empty)::after { content:'"'; }
.tool .st { margin-left:6px; font-size:11px; color:var(--dim); }
.tool .st.ok { color:var(--r-usr); }
.card { border:1px solid var(--ln); border-radius:12px; background:var(--pn); overflow:hidden; }
.card-intro { margin:0; padding:12px 14px; font:400 16px/1.5 Newsreader, Georgia, serif; border-bottom:1px solid var(--ln); }
.row-i { padding:11px 14px; border-top:1px solid var(--ln); display:grid; gap:2px; animation:rise .4s ease both; }
.row-i:first-child, .card-intro + .row-i { border-top:0; }
.row-i b { font-size:14.5px; font-weight:600; }
.row-i small { font:500 11px 'Geist Mono', ui-monospace, monospace; color:var(--dim); }
.row-i small:empty { display:none; }
.row-i p { margin:2px 0 0; font-size:14px; line-height:1.5; color:var(--mu); }

.about { display:grid; gap:16px; padding:14px; }
.pf { margin:0; display:grid; gap:6px; justify-items:start; }
.pf-c { width:100%; max-width:200px; aspect-ratio:1; border-radius:14px; display:block; background:var(--pn2); }
.pf-cap { font:500 11px 'Geist Mono', ui-monospace, monospace; color:var(--dim); }
.abt h3 { margin:0; font:400 30px/1.1 Newsreader, Georgia, serif; }
.abt-meta { margin:6px 0 10px; font:500 11.5px 'Geist Mono', ui-monospace, monospace; color:var(--dim); }
.abt-bio { font:400 16.5px/1.55 Newsreader, Georgia, serif; display:grid; gap:10px; }
.abt-rows { margin-top:12px; border:1px solid var(--ln); border-radius:10px; overflow:hidden; }
.abt-rows:empty { display:none; }
.abt-rows .row-i { background:var(--bg); }
.abt-lang { margin:10px 0 0; font-size:13px; color:var(--mu); }

.pj { padding:12px 14px; border-top:1px solid var(--ln); display:grid; gap:6px; animation:rise .4s ease both; }
.pj:first-of-type { border-top:0; }
.pj.planned { border:1.5px dashed var(--ln); border-radius:10px; margin:10px; }
.pj-h { display:flex; justify-content:space-between; align-items:baseline; gap:10px; }
.pj-h b { font-size:15px; }
.pj-st { font:500 11px 'Geist Mono', ui-monospace, monospace; letter-spacing:.06em; text-transform:uppercase; padding:3px 7px; border-radius:999px; border:1px solid currentColor; white-space:nowrap; }
.pj-st.in-progress { color:var(--r-usr); } .pj-st.learning { color:var(--r-tool); } .pj-st.planned { color:var(--dim); }
.pj p { margin:0; font-size:14px; line-height:1.5; color:var(--mu); }
.pj a { color:var(--ac); font-weight:600; font-size:13px; }
.tags { display:flex; gap:5px; flex-wrap:wrap; }
.tags span { font:500 11px 'Geist Mono', ui-monospace, monospace; padding:2px 7px; border-radius:5px; background:var(--pn2); color:var(--mu); }
.pj-foot { display:flex; flex-wrap:wrap; justify-content:space-between; align-items:center; gap:10px; padding:10px 14px; border-top:1px solid var(--ln); font:500 11px 'Geist Mono', ui-monospace, monospace; color:var(--dim); }
.pj-foot a, .soon { border:1px solid var(--ln); background:var(--pn2); color:var(--tx); border-radius:999px; padding:6px 12px; font:500 12.5px Geist, system-ui, sans-serif; text-decoration:none; white-space:nowrap; }
.soon { color:var(--dim); cursor:not-allowed; }

.form { display:grid; gap:12px; padding:14px; }
.two { display:grid; gap:12px; }
.form label { display:grid; gap:4px; font:500 12.5px Geist, system-ui, sans-serif; color:var(--mu); }
.form input, .form textarea { font:400 15px Geist, system-ui, sans-serif; color:var(--tx); background:var(--bg); border:1px solid var(--ln); border-radius:10px; padding:10px 12px; width:100%; transition:border-color .2s, box-shadow .2s; }
.form textarea { resize:vertical; min-height:110px; }
.form input:focus, .form textarea:focus { outline:none; border-color:var(--ac); box-shadow:0 0 0 3px color-mix(in srgb, var(--ac) 22%, transparent); }
.form [aria-invalid=true] { border-color:var(--err); }
.err { font:500 11.5px Geist, system-ui, sans-serif; color:var(--err); }
.err:empty { display:none; }
.hp { position:absolute!important; left:-9999px; width:1px; height:1px; overflow:hidden; }
.cap { display:grid; gap:6px; }
.cap-frame { width:100%; height:72px; border:0; border-radius:10px; background:transparent; color-scheme:normal; }
.cap-state { display:flex; align-items:center; gap:10px; border:1px dashed var(--ln); border-radius:10px; padding:9px 12px; font:500 13px Geist, system-ui, sans-serif; color:var(--mu); }
.cap-box { width:20px; height:20px; flex:none; border-radius:5px; border:1.5px solid var(--ln); display:grid; place-items:center; transition:all .3s; }
.cap.run .cap-box { border-color:var(--ac); border-right-color:transparent; border-radius:50%; animation:spin .7s linear infinite; }
.cap.ok .cap-state { border-color:var(--ok); color:var(--tx); }
.cap.ok .cap-box { background:var(--ok); border-color:var(--ok); }
.cap.ok .cap-box::after { content:"✓"; color:var(--okx); font-size:12px; font-weight:700; }
.cap.bad .cap-state { border-color:var(--err); color:var(--err); }
@keyframes spin { to { transform:rotate(360deg); } }
.frow { display:flex; justify-content:space-between; align-items:center; gap:10px; flex-wrap:wrap; }
.cnt { font:500 11px 'Geist Mono', ui-monospace, monospace; color:var(--dim); font-variant-numeric:tabular-nums; }
.sendb { display:inline-flex; align-items:center; gap:8px; border:0; background:var(--ac); color:var(--acx); border-radius:999px; padding:11px 19px; font:600 14px Geist, system-ui, sans-serif; overflow:hidden; transition:transform .2s, background .3s, opacity .3s; }
.sendb:active { transform:scale(.96); }
.sendb:disabled { opacity:.8; cursor:default; }
.sendb.ok { background:var(--ok); color:var(--okx); }
.sendb svg { width:16px; height:16px; fill:none; stroke:currentColor; stroke-width:2; stroke-linejoin:round; stroke-linecap:round; }
.sendb.fly svg { animation:fly .8s cubic-bezier(.5,0,.6,1) forwards; }
@keyframes fly { to { transform:translate(70px,-44px) rotate(-20deg); opacity:0; } }
.fst { margin:0; font:500 13px/1.45 Geist, system-ui, sans-serif; color:var(--mu); }
.fst.ok { color:var(--ok); } .fst.bad { color:var(--err); }
.priv { margin:0; font:400 12px/1.5 Geist, system-ui, sans-serif; color:var(--mu); }

.sum { align-self:center; display:inline-flex; align-items:center; gap:8px; border:1px dashed var(--warn); background:color-mix(in srgb, var(--warn) 10%, var(--bg)); color:var(--tx); border-radius:999px; padding:7px 13px; font:500 11.5px 'Geist Mono', ui-monospace, monospace; animation:pop .6s cubic-bezier(.3,1.6,.5,1) both; }
.sum.bump { animation:bump .5s cubic-bezier(.3,1.8,.5,1); }
@keyframes pop { from { transform:scale(.6); opacity:0; } }
@keyframes bump { 40% { transform:scale(1.08); } }

.foot { position:relative; z-index:2; padding:8px max(14px, env(safe-area-inset-right)) max(14px, env(safe-area-inset-bottom)) max(14px, env(safe-area-inset-left)); display:grid; gap:8px; background:linear-gradient(transparent, color-mix(in srgb, var(--bg) 92%, transparent) 26%); }
.chips { display:flex; gap:7px; overflow-x:auto; scrollbar-width:none; max-width:720px; width:100%; margin:0 auto; }
.chips::-webkit-scrollbar { display:none; }
.chips.pulse .chip { animation:bump .45s cubic-bezier(.3,1.8,.5,1); }
.chip { flex:none; border:1px solid var(--ln); background:var(--pn); border-radius:999px; padding:8px 13px; font-size:13.5px; transition:transform .15s, border-color .2s; }
.chip:hover { border-color:var(--ac); }
.chip:active { transform:scale(.95); }
.chip .long { display:none; }
.comp { display:flex; align-items:center; gap:10px; border:1px solid var(--ln); background-color:var(--pn); border-radius:20px; padding:7px 7px 7px 15px; color:var(--dim); font-size:15px; max-width:720px; width:100%; margin:0 auto;
  background-image:linear-gradient(90deg, transparent, var(--ac), transparent); background-size:30% 2px; background-repeat:no-repeat; background-position:-40% 100%; }
.site.busy .comp { animation:sweep 1.4s linear infinite; }
@keyframes sweep { to { background-position:140% 100%; } }
.ph { flex:1; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.send { flex:none; width:36px; height:36px; border-radius:50%; border:0; background:var(--ac); color:var(--acx); display:grid; place-items:center; transition:border-radius .25s; }
.send svg { width:17px; height:17px; fill:none; stroke:currentColor; stroke-width:2.2; stroke-linecap:round; stroke-linejoin:round; }
.site.busy .send { border-radius:10px; }
.fnote { display:flex; justify-content:space-between; gap:10px; font:500 11px 'Geist Mono', ui-monospace, monospace; color:var(--dim); max-width:720px; width:100%; margin:0 auto; }
#fctx { font-variant-numeric:tabular-nums; }

@media (min-width:900px) {
  .site { --fade:linear-gradient(90deg, #000 0, rgba(0,0,0,.28) 30%, rgba(0,0,0,.28) 70%, #000 100%); }
  .head { padding:16px 32px 10px; }
  .role { display:block; }
  .nav { display:flex; }
  .nav + .links { margin-left:12px; }
  .tabs { display:none; }
  .band { height:82px; }
  .log { padding:28px 32px 44px; }
  .hello { font-size:62px; }
  .tagline { font-size:17px; }
  .ans { font-size:19.5px; }
  .about { grid-template-columns:200px 1fr; align-items:start; }
  .two { grid-template-columns:1fr 1fr; }
  .foot { padding:10px 32px 18px; }
  .chips { flex-wrap:wrap; overflow:visible; justify-content:center; }
  .chip .long { display:inline; }
  .chip .short { display:none; }
}

@media (prefers-reduced-motion:reduce) {
  *, *::before, *::after { animation-duration:.001ms!important; animation-iteration-count:1!important; transition-duration:.001ms!important; scroll-behavior:auto!important; }
}
