:root{--ground:#f4f7f2;--ink:#1c2620;--green:#55ba47;--plum:#6e3f93;--green-strong:#2f7a2a;--on-green:#12200f;--surface:#fff;--line:color-mix(in srgb,var(--ink) 12%,transparent);--muted:color-mix(in srgb,var(--ink) 68%,var(--ground));--green-wash:color-mix(in srgb,var(--green) 14%,var(--ground));--plum-wash:color-mix(in srgb,var(--plum) 9%,var(--ground));--font-display:"Bricolage Grotesque","Avenir Next","Segoe UI",sans-serif;--font-body:"Figtree","Segoe UI",system-ui,sans-serif;--font-mono:"JetBrains Mono",ui-monospace,"SF Mono",Menlo,monospace;--step--1:.85rem;--step-0:1rem;--step-1:1.2rem;--step-2:1.55rem;--step-3:2.2rem;--step-4:clamp(2.6rem,6.4vw,4.6rem);--radius:14px}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--ground:#18221c;--ink:#e4ebe2;--green:#6ccb5f;--plum:#bba2e3;--green-strong:#6ccb5f;--on-green:#12200f;--surface:#1f2b24;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--ground:#18221c;--ink:#e4ebe2;--green:#6ccb5f;--plum:#bba2e3;--green-strong:#6ccb5f;--on-green:#12200f;--surface:#1f2b24;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}[hidden]{display:none!important}html{scroll-behavior:smooth}html,body{overflow-x:clip}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important;animation:none!important}.card:hover{transform:none}}body{background:var(--ground);color:var(--ink);font-family:var(--font-body);font-size:var(--step-0);line-height:1.6;transition:background .25s,color .25s}a{color:inherit}:focus-visible{outline:2px solid var(--plum);outline-offset:3px;border-radius:6px}.wrap{max-width:1120px;margin:0 auto;padding-inline:clamp(16px,4vw,40px)}h1,h2,h3{font-family:var(--font-display);text-wrap:balance;margin:0;line-height:1.08}.eyebrow{font-family:var(--font-mono);font-size:var(--step--1);letter-spacing:.06em;color:var(--plum);margin:0 0 .6rem}section{border-top:1px solid var(--line);padding-block:clamp(56px,9vw,104px)}section h2{font-size:var(--step-3);max-width:22ch;margin-bottom:1.6rem}header.top{z-index:10;background:color-mix(in srgb,var(--ground) 86%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);position:relative}.nav{align-items:center;gap:.8rem;height:64px;display:flex}.nav-spacer{margin-left:auto}.jump-hint{border:1px solid var(--line);background:var(--surface);height:40px;color:var(--muted);font:500 .88rem var(--font-body);cursor:pointer;border-radius:999px;align-items:center;gap:.6rem;padding:0 .5rem 0 .9rem;transition:border-color .2s,color .2s;display:inline-flex}.jump-hint:hover{border-color:var(--green);color:var(--ink)}.jump-hint kbd,.pal kbd{font:500 .72rem var(--font-mono);background:var(--green-wash);color:var(--ink);border:1px solid var(--line);border-radius:6px;padding:.15rem .4rem}@media (max-width:520px){.jump-hint span{display:none}}.brand{font-family:var(--font-display);align-items:center;gap:.6rem;font-weight:700;text-decoration:none;display:flex}.brand img{width:auto;height:30px}.nav-links{gap:1.4rem;margin-left:auto;font-size:.95rem;display:flex}.nav-links a{color:var(--muted);text-decoration:none}.nav-links a:hover{color:var(--ink)}.theme{border:1px solid var(--line);background:var(--surface);width:40px;height:40px;color:var(--ink);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;display:inline-flex}.theme svg{width:18px;height:18px}.theme .sun,.dock-theme .sun{display:none}:root[data-theme=dark] .theme .sun,:root[data-theme=dark] .dock-theme .sun{display:block}:root[data-theme=dark] .theme .moon,:root[data-theme=dark] .dock-theme .moon{display:none}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .theme .sun,:root:not([data-theme=light]) .dock-theme .sun{display:block}:root:not([data-theme=light]) .theme .moon,:root:not([data-theme=light]) .dock-theme .moon{display:none}}@media (max-width:720px){.nav-links{display:none}.nav .btn-sm{margin-left:auto}}.btn{cursor:pointer;font-weight:600;font:600 .98rem var(--font-body);border:1px solid #0000;border-radius:999px;align-items:center;gap:.5rem;padding:.8rem 1.25rem;text-decoration:none;transition:transform .15s,background .2s;display:inline-flex}.btn:hover{transform:translateY(-1px)}.btn-primary{background:var(--green);color:var(--on-green)}.btn-ghost{border-color:var(--line);background:var(--surface);color:var(--ink)}.btn-sm{padding:.5rem .95rem;font-size:.9rem}.btn svg{width:16px;height:16px}.hero{grid-template-columns:1.35fr 1fr;align-items:center;gap:clamp(28px,5vw,64px);padding-block:clamp(48px,8vw,96px) clamp(56px,8vw,88px);display:grid}.hero>*{min-width:0}.hero h1{font-size:var(--step-4);letter-spacing:-.025em;font-weight:800}.hero h1 .last{color:var(--green-strong)}.role{font-family:var(--font-mono);font-size:var(--step--1);color:var(--muted);flex-wrap:wrap;gap:.4rem .9rem;margin:1.1rem 0 1.2rem;display:flex}.role span:before{content:"▸ ";color:var(--green)}.lede{font-size:var(--step-1);max-width:46ch;color:var(--muted);margin:0 0 1.8rem}.lede strong{color:var(--ink);font-weight:600}.ctas{flex-wrap:wrap;gap:.75rem;display:flex}.status{color:var(--muted);align-items:center;gap:.5rem;margin-bottom:1.2rem;font-size:.9rem;display:inline-flex}.status i{background:var(--green);width:8px;height:8px;box-shadow:0 0 0 4px var(--green-wash);border-radius:50%}.side{justify-items:center;gap:1.1rem;display:grid}.portrait{aspect-ratio:4/5;width:min(100%,340px);position:relative;transform:rotate(2deg)}.portrait .frame{background:var(--green-wash);border:1px solid var(--line);border-radius:24px;place-items:center;display:grid;position:absolute;inset:0;overflow:hidden}.portrait .frame img{object-fit:cover;width:100%;height:100%}.photo-slot{text-align:center;font-family:var(--font-mono);color:var(--muted);justify-items:center;gap:.7rem;padding:1rem;font-size:.78rem;display:grid}.photo-slot img{object-fit:contain;opacity:.55;width:96px;height:auto}.sticker{font-family:var(--font-display);box-shadow:0 6px 18px color-mix(in srgb,var(--ink) 14%,transparent);white-space:nowrap;border-radius:999px;padding:.45rem .8rem;font-size:.9rem;font-weight:700;position:absolute}.sticker.s1{background:var(--plum);color:var(--ground);top:18%;left:-14px;transform:rotate(-8deg)}.sticker.s2{background:var(--green);color:var(--on-green);bottom:12%;right:-10px;transform:rotate(6deg)}@media (prefers-reduced-motion:no-preference){.sticker{animation:4s ease-in-out infinite bob}.sticker.s2{animation-delay:-2s}}@keyframes bob{0%,to{transform:translateY(-1px)}50%{transform:translateY(2px)}}.panel{background:var(--surface);border:1px solid var(--line);border-radius:22px;width:min(100%,400px);padding:1.4rem;position:relative;overflow:hidden}.panel h3{font-family:var(--font-mono);font-weight:500;font-size:var(--step--1);color:var(--muted);margin-bottom:1rem}.stats{grid-template-columns:1fr 1fr;gap:1.2rem 1rem;display:grid;position:relative}.stat b{font-family:var(--font-display);font-variant-numeric:tabular-nums;font-size:2.2rem;font-weight:800;line-height:1;display:block}.stat>span{color:var(--muted);font-size:.88rem}.clients{border-top:1px dashed var(--line);color:var(--muted);margin-top:1.4rem;padding-top:1.1rem;font-size:.9rem;position:relative}.clients b{color:var(--ink);font-weight:600}@media (max-width:860px){.hero{grid-template-columns:1fr}}.about{grid-template-columns:1fr 1fr;gap:clamp(24px,5vw,64px);display:grid}.about>*{min-width:0}.about p{max-width:60ch;margin:0 0 1rem}.facts{align-content:start;gap:.9rem;display:grid}.fact{border-bottom:1px solid var(--line);grid-template-columns:120px 1fr;gap:1rem;padding-bottom:.9rem;display:grid}.fact dt{font-family:var(--font-mono);font-size:var(--step--1);color:var(--muted)}.fact dd{margin:0}@media (max-width:760px){.about{grid-template-columns:1fr}.fact{grid-template-columns:96px 1fr}}.releases{margin:0;padding:0;list-style:none;display:grid}.release{border-top:1px solid var(--line);grid-template-columns:170px 1fr;gap:clamp(16px,4vw,48px);padding-block:1.6rem;display:grid}.release:first-child{border-top:0;padding-top:0}.release>*{min-width:0}.when{font-family:var(--font-mono);font-size:var(--step--1);color:var(--muted)}.when .loc{opacity:.85;margin-top:.2rem;font-size:.76rem;display:block}.when .tag{background:var(--green-wash);color:var(--green-strong);border-radius:6px;margin-top:.4rem;padding:.12rem .55rem;font-size:.78rem;display:inline-block}.release h3{font-size:var(--step-2);font-weight:700}.release .co{color:var(--muted);margin:.25rem 0 .8rem}.release .co b{color:var(--ink);font-weight:600}.release ul{gap:.35rem;max-width:68ch;margin:0;padding-left:1.1rem;display:grid}.release li::marker{color:var(--green)}.todo{font-family:var(--font-mono);border:1px dashed var(--plum);color:var(--plum);border-radius:6px;padding:.2rem .55rem;font-size:.8rem;display:inline-block}@media (max-width:700px){.release{grid-template-columns:1fr;gap:.5rem}}.early{color:var(--muted);margin-top:1rem;font-size:.95rem}.skills{grid-template-columns:1fr 1.1fr;align-items:start;gap:clamp(24px,5vw,56px);display:grid}.skills>*{min-width:0}.gradle{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow-x:auto}.gradle .tab{font-family:var(--font-mono);color:var(--muted);border-bottom:1px solid var(--line);align-items:center;gap:.5rem;padding:.65rem 1rem;font-size:.8rem;display:flex}.gradle .tab i{background:var(--green);border-radius:50%;width:9px;height:9px}.gradle pre{font-family:var(--font-mono);margin:0;padding:1.1rem 1.2rem;font-size:.86rem;line-height:1.75}.k{color:var(--plum)}.s{color:var(--green-strong)}.c{color:var(--muted)}.chips{flex-wrap:wrap;gap:.5rem;margin-top:1rem;display:flex}.chip{border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:.35rem .8rem;font-size:.9rem}.skillgroups{gap:1.4rem;display:grid}.skillgroups h3{font-family:var(--font-mono);font-size:var(--step--1);color:var(--muted);font-weight:500}@media (max-width:820px){.skills{grid-template-columns:1fr}}.work{grid-template-columns:repeat(2,1fr);gap:1.2rem;display:grid}.card{--mx:50%;--my:0%;isolation:isolate;background:var(--surface);border:1px solid var(--line);box-shadow:0 1px 0 var(--line),0 6px 18px color-mix(in srgb,var(--ink) 6%,transparent);border-radius:20px;flex-direction:column;gap:.7rem;padding:1.5rem;transition:transform .35s cubic-bezier(.2,.8,.2,1),box-shadow .35s,border-color .35s;display:flex;position:relative;overflow:hidden}.card:before{content:"";background:linear-gradient(90deg,var(--green),var(--plum));transform-origin:0;width:100%;height:4px;transition:transform .5s cubic-bezier(.65,0,.35,1);position:absolute;top:0;left:0;transform:scaleX(0)}.card:after{content:"";z-index:-1;background:radial-gradient(320px circle at var(--mx) var(--my),color-mix(in srgb,var(--green) 14%,transparent),transparent 70%);opacity:0;transition:opacity .35s;position:absolute;inset:0}.card:hover{border-color:color-mix(in srgb,var(--green) 45%,var(--line));box-shadow:0 1px 0 var(--line),0 22px 44px color-mix(in srgb,var(--ink) 14%,transparent);transform:translateY(-6px)}.card:hover:before{transform:scaleX(1)}.card:hover:after{opacity:1}.card-top{align-items:center;gap:.8rem;display:flex}.tile{width:46px;height:46px;font:800 1.05rem var(--font-display);letter-spacing:-.02em;border-radius:13px;flex:none;place-items:center;transition:transform .45s cubic-bezier(.34,1.56,.64,1);display:grid}.tile.g{background:var(--green);color:var(--on-green)}.tile.p{background:var(--plum);color:var(--ground)}.card:hover .tile{transform:rotate(-10deg)scale(1.1)}.meta{min-width:0;line-height:1.3;display:grid}.card .domain{font-family:var(--font-mono);color:var(--plum);font-size:.76rem}.card .period{font-family:var(--font-mono);color:var(--muted);font-size:.76rem}.card h3{font-size:var(--step-2);font-weight:700}.card p{color:var(--muted);margin:0}.card .stack{flex-wrap:wrap;gap:.35rem;margin-top:auto;padding-top:.4rem;display:flex}.card .stack span{font-family:var(--font-mono);background:var(--green-wash);color:var(--ink);border-radius:6px;padding:.2rem .55rem;font-size:.72rem;transition:transform .3s}.card:hover .stack span{transform:translateY(-2px)}.card:hover .stack span:nth-child(2){transition-delay:40ms}.card:hover .stack span:nth-child(3){transition-delay:80ms}.card:hover .stack span:nth-child(4){transition-delay:.12s}.card .links{border-top:1px dashed var(--line);flex-wrap:wrap;gap:.2rem 1.2rem;padding-top:.6rem;display:flex}.card .store{color:var(--green-strong);align-items:center;gap:.3rem;font-weight:600;text-decoration:none;display:inline-flex}.card .store .arr{transition:transform .3s;display:inline-block}.card .store:hover .arr,.card:hover .store .arr{transform:translate(4px)}.card .store:hover{text-decoration:underline}.card.featured{background:linear-gradient(160deg,var(--green-wash),var(--surface) 60%)}@media (max-width:700px){.work{grid-template-columns:1fr}}.venture{background:var(--plum-wash);border:1px solid var(--line);border-radius:24px;grid-template-columns:1.2fr 1fr;align-items:center;gap:clamp(24px,5vw,56px);padding:clamp(24px,5vw,48px);display:grid}.venture>*{min-width:0}.venture h2{margin-bottom:1rem}.venture p{max-width:52ch;color:var(--muted);margin:0 0 1.2rem}.reel{--t-bg:#141b17;--t-fg:#f4f7f2;--t-plum:#7a4aa3;--t-green:#55ba47;aspect-ratio:9/14;background:var(--t-bg);border:1px solid var(--line);width:100%;max-width:280px;color:var(--t-fg);box-shadow:0 18px 40px color-mix(in srgb,var(--ink) 22%,transparent);border-radius:22px;justify-self:center;text-decoration:none;transition:transform .3s;display:block;position:relative;overflow:hidden;transform:rotate(-2deg)}.reel:hover{transform:rotate(0)scale(1.02)}.reel .thumb-img{transition:transform .6s}.reel:hover .thumb-img{transform:scale(1.05)}.thumb-art,.thumb-img{object-position:top;object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.thumb-art{background:radial-gradient(120% 80% at 80% 10%,color-mix(in srgb,var(--t-plum) 80%,var(--t-bg)),transparent 60%),radial-gradient(90% 70% at 0% 100%,color-mix(in srgb,var(--t-green) 45%,var(--t-bg)),transparent 65%),var(--t-bg);overflow:hidden}.thumb-art .big{font:800 clamp(9rem,26vw,12.5rem)/1 var(--font-display);letter-spacing:-.06em;color:#0000;-webkit-text-stroke:2px color-mix(in srgb,var(--t-fg) 70%,transparent);position:absolute;top:-.12em;left:-.06em}.thumb-art .laws{font:800 1.5rem/1 var(--font-display);text-align:right;color:var(--t-fg);letter-spacing:.02em;position:absolute;top:42%;right:1rem}.reel .ep-tag{font:500 .72rem var(--font-mono);background:var(--t-green);color:#12200f;border-radius:6px;padding:.25rem .5rem;position:absolute;top:1rem;left:1rem}.reel .play{background:var(--t-fg);border-radius:50%;place-items:center;width:52px;height:52px;transition:transform .25s;display:grid;position:absolute;top:63%;left:50%;translate:-50% -50%}.reel:hover .play{transform:scale(1.12)}.reel .play svg{width:20px;height:20px;fill:var(--t-bg);margin-left:3px}.reel .cap{background:linear-gradient(#0000,#000000b3);gap:.25rem;padding:2.4rem 1.1rem 1.1rem;display:grid;position:absolute;bottom:0;left:0;right:0}.reel small{font-family:var(--font-mono);opacity:.8;color:#fff;font-size:.7rem}.reel strong{font-family:var(--font-display);color:#fff;font-size:1.12rem;line-height:1.2}.social-ctas{gap:.6rem}.sbtn{--brand:var(--plum);--on-brand:#fff;isolation:isolate;border:1.5px solid color-mix(in srgb,var(--brand) 60%,var(--line));background:var(--surface);color:var(--ink);font:600 .95rem var(--font-body);white-space:nowrap;border-radius:999px;align-items:center;padding:.75rem 1.15rem;text-decoration:none;transition:color .35s,border-color .35s,transform .2s;display:inline-flex;position:relative;overflow:hidden}.sbtn:before{content:"";z-index:-1;background:var(--brand);transform-origin:0;transition:transform .4s cubic-bezier(.65,0,.35,1);position:absolute;inset:0;transform:scaleX(0)}.sbtn svg{fill:currentColor;flex:none;width:18px;height:18px;margin-right:.5rem;transition:transform .35s}.sbtn .roll{line-height:1.3;display:inline-grid;overflow:hidden}.sbtn .roll>span{text-align:center;grid-area:1/1;transition:transform .4s cubic-bezier(.65,0,.35,1),opacity .3s}.sbtn .r2{opacity:0;transform:translateY(105%)}.sbtn:hover,.sbtn:focus-visible{color:var(--on-brand);border-color:var(--brand);transform:translateY(-2px)}.sbtn:hover:before,.sbtn:focus-visible:before{transform:scaleX(1)}.sbtn:hover .r1,.sbtn:focus-visible .r1{opacity:0;transform:translateY(-105%)}.sbtn:hover .r2,.sbtn:focus-visible .r2{opacity:1;transform:none}.sbtn:hover svg,.sbtn:focus-visible svg{transform:rotate(-8deg)scale(1.1)}.sbtn.yt{--brand:#e62117}.sbtn.tt{--brand:#111418;--on-brand:#fff}.sbtn.fb{--brand:#1877f2}:root[data-theme=dark] .sbtn.tt{--brand:#25f4ee;--on-brand:#111418}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .sbtn.tt{--brand:#25f4ee;--on-brand:#111418}}@media (hover:none){.sbtn .r1{opacity:0;transform:translateY(-105%)}.sbtn .r2{opacity:1;transform:none}}.soon{font-family:var(--font-mono);color:var(--muted);font-size:.8rem}@media (max-width:760px){.venture{grid-template-columns:1fr}.reel{max-width:240px}}.contact{grid-template-columns:1.1fr 1fr;align-items:start;gap:clamp(24px,5vw,56px);display:grid}.contact>*{min-width:0}.email{font-family:var(--font-display);word-break:break-all;flex-wrap:wrap;align-items:center;gap:.6rem;font-size:clamp(1.3rem,3.4vw,2rem);font-weight:700;display:flex}.copy{font:500 .82rem var(--font-mono);border:1px solid var(--line);background:var(--surface);color:var(--ink);cursor:pointer;border-radius:8px;padding:.35rem .7rem}.socials{margin:0;padding:0;list-style:none;display:grid}.socials a{--brand:var(--green-strong);--tint:var(--green-wash);isolation:isolate;border-bottom:1px solid var(--line);border-radius:12px;align-items:center;gap:.9rem;padding:1rem .8rem;text-decoration:none;transition:color .3s;display:flex;position:relative}.socials a:before{content:"";z-index:-1;background:var(--tint);transform-origin:0;border-radius:12px;transition:transform .4s cubic-bezier(.65,0,.35,1);position:absolute;inset:2px 0;transform:scaleX(0)}.socials a:hover:before,.socials a:focus-visible:before{transform:scaleX(1)}.socials a svg,.socials a .name{transition:color .3s,transform .35s cubic-bezier(.34,1.56,.64,1)}.socials a:hover svg,.socials a:focus-visible svg{color:var(--brand);transform:scale(1.2)rotate(-6deg)}.socials a:hover .name,.socials a:focus-visible .name{color:var(--brand)}.socials a:hover .handle{color:var(--ink)}.socials .s-li{--brand:#0a66c2;--tint:#0a66c21f}.socials .s-gh{--brand:#24292f;--tint:#24292f1a}.socials .s-x{--brand:#0f1419;--tint:#0f141917}.socials .s-fb{--brand:#1877f2;--tint:#1877f21f}.socials .s-ig{--brand:#e1306c;--tint:linear-gradient(90deg,#f5852924,#dd2a7b24,#8134af24)}:root[data-theme=dark] .socials .s-li{--brand:#70b5f9}:root[data-theme=dark] .socials .s-gh{--brand:#f0f6fc;--tint:#f0f6fc17}:root[data-theme=dark] .socials .s-x{--brand:#fff;--tint:#ffffff17}:root[data-theme=dark] .socials .s-fb{--brand:#4599ff}:root[data-theme=dark] .socials .s-ig{--brand:#ff5c93}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .socials .s-li{--brand:#70b5f9}:root:not([data-theme=light]) .socials .s-gh{--brand:#f0f6fc;--tint:#f0f6fc17}:root:not([data-theme=light]) .socials .s-x{--brand:#fff;--tint:#ffffff17}:root:not([data-theme=light]) .socials .s-fb{--brand:#4599ff}:root:not([data-theme=light]) .socials .s-ig{--brand:#ff5c93}}.socials svg{fill:currentColor;flex:none;width:20px;height:20px}.socials .name{font-weight:600}.socials .handle{font-family:var(--font-mono);color:var(--muted);text-align:right;overflow-wrap:anywhere;margin-left:auto;font-size:.8rem}@media (max-width:760px){.contact{grid-template-columns:minmax(0,1fr);gap:1.5rem}.socials .handle{white-space:nowrap;overflow-wrap:normal}}.foot-build .ok{font-family:var(--font-mono);color:var(--green-strong);font-size:.8rem}footer{border-top:1px solid var(--line);color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:.6rem 1.4rem;padding-block:2rem 2.6rem;font-size:.88rem;display:flex}.snaps{grid-template-columns:repeat(4,1fr);gap:clamp(14px,3vw,28px);margin-top:.6rem;display:grid}.snap{background:var(--surface);border:1px solid var(--line);box-shadow:0 10px 24px color-mix(in srgb,var(--ink) 8%,transparent);border-radius:16px;margin:0;padding:.7rem .7rem 1rem;transition:transform .25s}.snap:first-child{transform:rotate(-2.5deg)}.snap:nth-child(2){transform:rotate(1.5deg)translateY(10px)}.snap:nth-child(3){transform:rotate(-1deg)}.snap:nth-child(4){transform:rotate(2deg)translateY(6px)}.snap:hover{transform:rotate(0)scale(1.02)}.snap .ph{aspect-ratio:1;background:var(--green-wash);border-radius:10px;place-items:center;display:grid;overflow:hidden}.snap .ph img{object-fit:cover;width:100%;height:100%}.snap figcaption{font-family:var(--font-display);margin-top:.7rem;font-size:1.02rem;font-weight:700}.snap figcaption small{font:400 .82rem var(--font-body);color:var(--muted);margin-top:.15rem;display:block}@media (max-width:860px){.snaps{grid-template-columns:1fr 1fr}}.release .store{color:var(--green-strong);margin-top:.9rem;font-weight:600;display:inline-block}.quotes{grid-template-columns:repeat(3,1fr);gap:1.2rem;display:grid}.quote{background:var(--surface);border:1px solid var(--line);border-radius:20px;flex-direction:column;gap:.8rem;margin:0;padding:1.5rem 1.5rem 1.3rem;transition:transform .35s cubic-bezier(.2,.8,.2,1),box-shadow .35s,border-color .35s;display:flex;position:relative;overflow:hidden}.quote:nth-child(2){transform:translateY(14px)}.quote:hover{border-color:color-mix(in srgb,var(--plum) 40%,var(--line));box-shadow:0 22px 44px color-mix(in srgb,var(--ink) 12%,transparent);transform:translateY(-6px)rotate(-.6deg)}.qmark{font:800 7rem/1 var(--font-display);color:var(--plum);opacity:.14;transition:transform .45s cubic-bezier(.34,1.56,.64,1),opacity .35s;position:absolute;top:-1.6rem;right:.9rem}.quote:hover .qmark{opacity:.3;transform:translateY(8px)rotate(-8deg)}.pull{font:700 var(--step-1)/1.25 var(--font-display);color:var(--ink);text-wrap:balance;margin:0}.quote blockquote{color:var(--muted);margin:0;font-size:.95rem}.quote figcaption{border-top:1px dashed var(--line);align-items:center;gap:.75rem;margin-top:auto;padding-top:.9rem;display:flex}.quote figcaption b{font-weight:600;display:block}.quote figcaption small{color:var(--muted);font-size:.8rem;line-height:1.35;display:block}.quote figcaption .rel{font-family:var(--font-mono);color:var(--plum);margin-top:.15rem;font-size:.72rem}.avatar{width:42px;height:42px;font:700 .85rem var(--font-display);border-radius:50%;flex:none;place-items:center;display:grid}.avatar.g{background:var(--green);color:var(--on-green)}.avatar.p{background:var(--plum);color:var(--ground)}.more-recs{color:var(--green-strong);gap:.35rem;margin-top:2.2rem;font-weight:600;text-decoration:none;display:inline-flex}.more-recs .arr{transition:transform .3s}.more-recs:hover .arr{transform:translate(4px)}@media (max-width:900px){.quotes{grid-template-columns:1fr}.quote:nth-child(2){transform:none}}.about-side{align-content:start;gap:2rem;min-width:0;display:grid}.then{justify-self:center;width:100%;max-width:440px;height:290px;position:relative}.pol{width:62%;box-shadow:0 12px 28px color-mix(in srgb,var(--ink) 18%,transparent);background:#fff;border-radius:6px;margin:0;padding:.55rem .55rem .4rem;transition:transform .45s cubic-bezier(.34,1.56,.64,1);position:absolute}.pol img{aspect-ratio:4/3;object-fit:cover;border-radius:3px;width:100%;height:auto;display:block}.pol figcaption{font:500 .74rem var(--font-mono);color:#3a453e;white-space:nowrap;text-overflow:ellipsis;padding-top:.4rem;overflow:hidden}.pol.p1{z-index:1;top:10px;left:0;transform:rotate(-6deg)}.pol.p2{z-index:2;top:44px;right:0;transform:rotate(5deg)}.then:hover .p1{transform:rotate(-9deg)translate(-14px,-8px)}.then:hover .p2{transform:rotate(8deg)translate(14px,6px)}.then-tag{z-index:3;font:700 .85rem var(--font-display);background:var(--plum);color:var(--ground);border-radius:999px;padding:.3rem .7rem;position:absolute;top:-.4rem;right:-.2rem;transform:rotate(8deg)}.portrait .frame img{object-position:center 20%}.snap .ph img,.portrait .frame img{height:100%}@media (max-width:480px){.then{height:240px}.pol figcaption{font-size:.66rem}}.chip{cursor:default;transition:transform .25s cubic-bezier(.34,1.56,.64,1),border-color .25s,background .25s,color .25s}.chip:hover{border-color:var(--green);background:var(--green-wash);transform:translateY(-3px)rotate(-2deg)}@keyframes chipPop{0%{opacity:0;transform:translateY(12px)scale(.7)}to{opacity:1;transform:none}}.skills.play .chip{animation:.55s cubic-bezier(.34,1.56,.64,1) both chipPop;animation-delay:calc(var(--i,0) * 45ms)}.gradle pre .ln{display:block}@keyframes lineIn{0%{opacity:0;transform:translate(-10px)}to{opacity:1;transform:none}}.skills.play .gradle pre .ln{animation:.35s ease-out both lineIn;animation-delay:calc(var(--l,0) * 40ms)}.build{border-top:1px solid var(--line);font-family:var(--font-mono);gap:.5rem;padding:.8rem 1.2rem 1rem;font-size:.8rem;display:grid}.build .prompt{color:var(--plum);margin-right:.4rem}.build .bar{background:var(--green-wash);border-radius:999px;height:6px;overflow:hidden}.build .bar i{border-radius:inherit;background:linear-gradient(90deg,var(--green),var(--plum));width:100%;height:100%;display:block}.build .ok{color:var(--green-strong);font-weight:500}.cursor{vertical-align:-2px;background:var(--green-strong);width:.55em;height:1em;animation:1s step-end infinite blink;display:inline-block}@keyframes blink{50%{opacity:0}}@keyframes fillBar{0%{width:0}to{width:100%}}@keyframes okIn{0%{opacity:0}to{opacity:1}}.skills.play .build .bar i{animation:1.8s cubic-bezier(.4,0,.2,1) .9s both fillBar}.skills.play .build .ok{animation:.3s ease-out 2.75s both okIn}.travel{margin-top:clamp(48px,7vw,80px)}.travel-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.5rem 1.5rem;margin-bottom:1.2rem;display:flex}.travel-head h3{font-size:var(--step-2);font-weight:700}.travel-dream{font:500 1rem var(--font-body);color:var(--muted);margin:.35rem 0 0}.travel-dream:before{content:"✈ ";color:var(--green-strong)}.travel-count{font-family:var(--font-mono);color:var(--muted);margin:0;font-size:.85rem}.travel-count b{font:800 1.3rem var(--font-display);color:var(--green-strong);font-variant-numeric:tabular-nums}.travel-count span{color:var(--line);margin:0 .2rem}.maps{grid-template-columns:2.1fr 1fr;align-items:start;gap:1.2rem;display:grid}.map-card{background:var(--surface);border:1px solid var(--line);border-radius:20px;min-width:0;margin:0;padding:1rem 1rem .8rem}.map-card figcaption{font-family:var(--font-mono);color:var(--plum);margin-bottom:.4rem;font-size:.78rem}.map-box{position:relative}.map-box svg{width:100%;height:auto;display:block;overflow:visible}.st{fill:color-mix(in srgb,var(--ink) 9%,var(--surface));stroke:var(--surface);stroke-width:1px;transition:fill .25s}.st.v{fill:color-mix(in srgb,var(--green) 34%,var(--surface))}.st.v:hover{fill:color-mix(in srgb,var(--green) 52%,var(--surface))}.pin{cursor:pointer;outline:none}.pin .dot{transform-box:fill-box;transform-origin:50%;fill:var(--plum);stroke:var(--surface);stroke-width:1.5px;transition:transform .2s}.pin.home .dot{fill:var(--green-strong)}.pin .halo{transform-box:fill-box;transform-origin:50%;fill:none;stroke:var(--plum);stroke-width:1.5px;opacity:0}.pin.home .halo{stroke:var(--green-strong);opacity:.6;animation:2.4s ease-out infinite pulse}.pin:hover .dot,.pin:focus-visible .dot{transform:scale(1.5)}.pin:focus-visible .halo{opacity:1}@keyframes pulse{0%{opacity:.7;transform:scale(.6)}to{opacity:0;transform:scale(2.2)}}@keyframes pinDrop{0%{opacity:0;transform:translateY(-26px)}60%{opacity:1;transform:translateY(2px)}to{opacity:1;transform:none}}.travel.play .pin .dot{animation:.5s cubic-bezier(.34,1.56,.64,1) both pinDrop;animation-delay:calc(var(--d) * 70ms)}.map-tip{background:var(--ink);color:var(--ground);white-space:nowrap;pointer-events:none;z-index:2;border-radius:8px;padding:.35rem .6rem;font-size:.8rem;font-weight:600;position:absolute;transform:translate(-50%,calc(-100% - 12px))}.map-legend{color:var(--muted);flex-wrap:wrap;align-items:center;gap:.4rem 1rem;margin:.9rem 0 0;font-size:.82rem;display:flex}.lg{vertical-align:middle;border-radius:3px;width:12px;height:12px;margin-right:-.6rem;display:inline-block}.lg.v{background:color-mix(in srgb,var(--green) 34%,var(--surface))}.lg.home{background:var(--green-strong);border-radius:50%}.lg.pin{background:var(--plum);border-radius:50%;width:9px;height:9px}@media (max-width:860px){.maps{grid-template-columns:1fr}.maps .map-card:last-child{justify-self:center;width:100%;max-width:420px}}.hero-ctas{gap:.85rem}.cta{isolation:isolate;font:700 1.05rem var(--font-body);border-radius:999px;align-items:center;gap:.6rem;padding:1rem 1.5rem;text-decoration:none;transition:transform .25s cubic-bezier(.34,1.56,.64,1),box-shadow .3s,color .35s,border-color .35s;display:inline-flex;position:relative;overflow:hidden}.cta svg{flex:none;width:20px;height:20px}.cta small{font:600 .7rem var(--font-mono);background:color-mix(in srgb,var(--on-green) 14%,transparent);border-radius:5px;padding:.15rem .4rem}.cta-resume{background:var(--green);color:var(--on-green);box-shadow:0 8px 24px color-mix(in srgb,var(--green) 45%,transparent)}.cta-resume:after{content:"";z-index:-1;border-radius:inherit;pointer-events:none;background:linear-gradient(110deg,#0000 30%,#fff6 50%,#0000 70%);position:absolute;inset:0;transform:translate(-100%)}.cta-resume:hover:after{animation:.8s ease-out shimmer}.cta-resume .arrow{animation:2.4s ease-in-out infinite bob}.cta-wrap{display:inline-flex;position:relative}.cta-wrap:after{content:"";background:linear-gradient(90deg,var(--green),var(--plum));opacity:.75;border-radius:3px;height:3px;animation:2.8s ease-in-out infinite breathe;position:absolute;bottom:-9px;left:22%;right:22%}@keyframes breathe{0%,to{opacity:.45;transform:scaleX(.55)}50%{opacity:.85;transform:scaleX(1)}}.cta-resume:hover{box-shadow:0 14px 34px color-mix(in srgb,var(--green) 60%,transparent);transform:translateY(-3px)scale(1.03)}.cta-resume:hover .arrow{animation:.6s ease-in-out infinite drop}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}@keyframes drop{0%{opacity:0;transform:translateY(-6px)}40%{opacity:1}to{opacity:1;transform:translateY(3px)}}.cta-li{--li:#0a66c2;border:2px solid var(--li);color:var(--li);background:var(--surface)}.cta-li:before{content:"";z-index:-1;background:var(--li);transform-origin:0;transition:transform .45s cubic-bezier(.65,0,.35,1);position:absolute;inset:0;transform:scaleX(0)}.cta-li:hover,.cta-li:focus-visible{color:#fff;transform:translateY(-3px);box-shadow:0 12px 28px #0a66c259}.cta-li:hover:before,.cta-li:focus-visible:before{transform:scaleX(1)}.cta-li:hover svg{animation:.5s ease-in-out wave}@keyframes wave{25%{transform:rotate(-12deg)}75%{transform:rotate(10deg)}}:root[data-theme=dark] .cta-li{--li:#70b5f9}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .cta-li{--li:#70b5f9}}:root[data-theme=dark] .cta-li:hover{color:#0b1a2b}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .cta-li:hover{color:#0b1a2b}}@keyframes ctaIn{0%{opacity:0;transform:translateY(14px)scale(.92)}to{opacity:1;transform:none}}.hero-ctas .cta{animation:.6s cubic-bezier(.34,1.56,.64,1) both ctaIn}.hero-ctas .cta-li{animation-delay:.12s}.cta-hint{color:var(--muted);margin:.8rem 0 0 .4rem;font-size:.85rem}@media (max-width:480px){.hero-ctas .cta,.hero-ctas .cta-wrap{justify-content:center;width:100%}}@media (prefers-reduced-motion:reduce){.cta-wrap:after,.cta-resume:after,.cta-resume:before,.cta-resume .arrow,.fc-resume .arrow{animation:none}}main{padding-bottom:96px}.dock{left:50%;bottom:calc(16px + env(safe-area-inset-bottom,0px));z-index:30;background:color-mix(in srgb,var(--surface) 72%,transparent);-webkit-backdrop-filter:blur(18px)saturate(1.6);border:1px solid color-mix(in srgb,var(--ink) 10%,transparent);box-shadow:0 1px 0 #fff6 inset,0 18px 40px color-mix(in srgb,var(--ink) 18%,transparent);border-radius:22px;align-items:center;gap:.35rem;padding:.45rem;transition:transform .45s cubic-bezier(.34,1.3,.64,1),opacity .3s;animation:.7s cubic-bezier(.34,1.56,.64,1) .5s backwards dockIn;display:flex;position:fixed;transform:translate(-50%)}@media (min-width:761px){.dock.tucked{opacity:0;pointer-events:none;transform:translate(-50%,calc(100% + 28px))}}@keyframes dockIn{0%{opacity:0;transform:translate(-50%,140%)}to{opacity:1;transform:translate(-50%)}}.dock-progress{pointer-events:none;border-radius:2px;height:2px;position:absolute;top:-1px;left:18px;right:18px;overflow:hidden}.dock-progress i{transform-origin:0;width:100%;height:100%;transform:scaleX(var(--p,0));background:linear-gradient(90deg,var(--green),var(--plum));display:block}.dock-items{align-items:flex-end;gap:.2rem;display:flex;position:relative}.dock-item{z-index:1;width:42px;height:42px;color:var(--muted);transform-origin:bottom;border-radius:13px;place-items:center;transition:scale .25s cubic-bezier(.34,1.56,.64,1),translate .25s cubic-bezier(.34,1.56,.64,1),color .25s;display:grid;position:relative}.dock-item svg{width:21px;height:21px}.dock-item:hover{color:var(--ink);translate:0 -6px;scale:1.38}.dock-item:hover+.dock-item{translate:0 -3px;scale:1.16}.dock-item:has(+.dock-item:hover){translate:0 -3px;scale:1.16}.dock-item.active{color:var(--on-green)}.dock-item:after{content:attr(data-label);white-space:nowrap;font:600 .75rem var(--font-body);background:var(--ink);color:var(--ground);opacity:0;pointer-events:none;border-radius:8px;padding:.3rem .55rem;transition:opacity .15s,translate .2s;position:absolute;bottom:calc(100% + 12px);left:50%;translate:-50% 4px;scale:.724638}.dock-item:hover:after,.dock-item:focus-visible:after{opacity:1;translate:-50%}.dock-blob{background:var(--green);width:42px;height:42px;box-shadow:0 6px 16px color-mix(in srgb,var(--green) 45%,transparent);opacity:0;border-radius:13px;transition:transform .45s cubic-bezier(.34,1.56,.64,1),opacity .3s;position:absolute;bottom:0;left:0}.dock-blob.on{opacity:1}.dock-sep{background:var(--line);width:1px;height:26px;margin:0 .2rem}.dock-btn{width:42px;height:42px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:13px;place-items:center;transition:background .2s,color .2s;display:grid}.dock-btn:hover{background:var(--green-wash);color:var(--ink)}.dock-btn svg{width:20px;height:20px}.dock-resume{background:var(--green);height:42px;color:var(--on-green);font:700 .9rem var(--font-body);border-radius:13px;align-items:center;gap:.4rem;padding:0 1rem;text-decoration:none;transition:transform .2s;display:inline-flex}.dock-resume svg{width:17px;height:17px}.dock-resume .arrow{animation:2.4s ease-in-out infinite bob}.dock-resume:hover{transform:translateY(-2px)}.dock-now{display:none}@media (max-width:760px){.dock{justify-content:space-between;animation-name:dockInM;left:16px;right:16px;transform:none}@keyframes dockInM{0%{opacity:0;transform:translateY(140%)}to{opacity:1;transform:none}}.dock-items,.dock-sep,.dock-k{display:none}.dock-now{min-width:0;height:42px;color:var(--ink);cursor:pointer;text-align:left;background:0 0;border:0;border-radius:13px;flex:1;align-items:center;gap:.6rem;padding:0 .6rem 0 .3rem;display:flex}.dock-now .halo{flex:none;width:32px;height:32px;rotate:-90deg}.dock-now .halo circle{fill:none;stroke:var(--line);stroke-width:3.5px}.dock-now .halo .ring-fg{stroke:var(--green);stroke-linecap:round;stroke-dasharray:94.25;stroke-dashoffset:calc(94.25 * (1 - var(--p,0)))}.now-txt{min-width:0;line-height:1.15;display:grid}.now-txt small{font:500 .66rem var(--font-mono);color:var(--muted)}.now-txt b{font:700 .95rem var(--font-display);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.dock-now .chev{width:18px;height:18px;color:var(--muted);margin-left:auto}}.pal-overlay{z-index:40;background:color-mix(in srgb,var(--ink) 35%,transparent);-webkit-backdrop-filter:blur(6px);place-items:center;padding:16px;animation:.2s ease-out fadeIn;display:grid;position:fixed;inset:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.pal{background:var(--surface);border:1px solid var(--line);width:min(560px,100%);max-height:min(640px,100% - 32px);box-shadow:0 30px 80px color-mix(in srgb,var(--ink) 35%,transparent);border-radius:22px;flex-direction:column;animation:.35s cubic-bezier(.34,1.56,.64,1) palIn;display:flex;overflow:hidden}@keyframes palIn{0%{opacity:0;transform:translateY(16px)scale(.97)}to{opacity:1;transform:none}}.pal-search{border-bottom:1px solid var(--line);align-items:center;gap:.7rem;padding:1rem 1.1rem;display:flex}.pal-search svg{width:20px;height:20px;color:var(--muted);flex:none}.pal-search input{min-width:0;color:var(--ink);font:500 1.05rem var(--font-body);background:0 0;border:0;outline:0;flex:1}.pal-list{margin:0;padding:.5rem;list-style:none;overflow-y:auto}.pal-item{color:var(--ink);animation:.4s cubic-bezier(.2,.8,.2,1) both itemIn;animation-delay:calc(var(--n,0) * 30ms);border-radius:14px;align-items:center;gap:.9rem;padding:.7rem .8rem;text-decoration:none;display:flex}@keyframes itemIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.pal-item.sel{background:var(--green-wash)}.pal-item.sel .pal-ico{background:var(--green);color:var(--on-green)}.pal-item.here .pal-no:before{content:"you're here · ";color:var(--green-strong)}.pal-ico{background:color-mix(in srgb,var(--ink) 6%,transparent);width:38px;height:38px;color:var(--ink);border-radius:11px;flex:none;place-items:center;transition:background .2s,color .2s;display:grid}.pal-ico svg{width:19px;height:19px}.pal-txt{min-width:0;display:grid}.pal-txt b{font-weight:600}.pal-txt small{color:var(--muted);font-size:.84rem}.pal-no{font:500 .75rem var(--font-mono);color:var(--muted);white-space:nowrap;margin-left:auto}.pal-foot{border-top:1px solid var(--line);color:var(--muted);flex-wrap:wrap;gap:.5rem 1.2rem;padding:.7rem 1.1rem;font-size:.78rem;display:flex}.pal-foot kbd{margin-right:.2rem}@media (max-width:760px){.pal-overlay{place-items:end center;padding:0}.pal{width:100%;max-height:85%;padding-bottom:env(safe-area-inset-bottom,0px);border-radius:22px 22px 0 0;animation-name:sheetIn}.pal-foot{display:none}}@keyframes sheetIn{0%{transform:translateY(100%)}to{transform:none}}@media (prefers-reduced-motion:reduce){.dock,.pal,.pal-item,.pal-overlay{animation:none}.dock-item{transition:none}}.run-again{border:1px solid var(--line);background:var(--surface);color:var(--green-strong);font:500 .78rem var(--font-mono);cursor:pointer;border-radius:7px;align-items:center;gap:.35rem;margin-left:.6rem;padding:.25rem .65rem;transition:background .2s,border-color .2s;display:inline-flex}.run-again svg{fill:currentColor;width:11px;height:11px}.run-again:hover{border-color:var(--green);background:var(--green-wash)}.ide-toast{--it-bg:#2b2d30;--it-line:#43454a;--it-fg:#dfe1e5;--it-dim:#9da0a8;--it-green:#5fb865;--it-blue:#548af7;right:clamp(12px,2.5vw,28px);bottom:calc(clamp(12px,2.5vw,28px) + env(safe-area-inset-bottom,0px));z-index:35;background:var(--it-bg);width:min(360px,100vw - 32px);color:var(--it-fg);border:1px solid var(--it-line);font:500 .86rem var(--font-body);border-radius:12px;animation:.55s cubic-bezier(.34,1.56,.64,1) both itIn;position:fixed;overflow:hidden;box-shadow:0 20px 50px #00000059,inset 0 0 0 1px #ffffff08}.ide-toast.out{animation:.35s ease-in both itOut}@keyframes itIn{0%{opacity:0;transform:translateY(24px)scale(.96)}to{opacity:1;transform:none}}@keyframes itOut{to{opacity:0;transform:translateY(16px)scale(.97)}}.it-head{align-items:center;gap:.65rem;padding:.8rem .8rem .35rem 1rem;display:flex}.it-ico{flex:none;place-items:center;width:22px;height:22px;display:grid;position:relative}.it-spin{border:2.5px solid #ffffff26;border-top-color:var(--it-blue);border-radius:50%;animation:.8s linear infinite spin;position:absolute;inset:2px}.it-check{background:var(--it-green);fill:none;stroke:#1e1f22;stroke-width:3px;stroke-linecap:round;stroke-linejoin:round;opacity:0;border-radius:50%;width:22px;height:22px;padding:4px;transform:scale(.4)}.it-check path{stroke-dasharray:24;stroke-dashoffset:24px}@keyframes spin{to{transform:rotate(360deg)}}.it-title{flex:1;font-size:.92rem;font-weight:600}.it-x{width:26px;height:26px;color:var(--it-dim);cursor:pointer;background:0 0;border:0;border-radius:6px;font-size:1.1rem;line-height:1}.it-x:hover{color:var(--it-fg);background:#ffffff14}.it-body{gap:.15rem;padding:.2rem 1rem .6rem 2.95rem;display:grid}.it-body code{font:400 .76rem/1.55 var(--font-mono);color:var(--it-dim);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.it-body .ok{color:var(--it-green);font-weight:500}.it-body .l2,.it-body .l3{opacity:0;transition:opacity .3s,transform .3s;transform:translateY(4px)}.it-body .l3{color:var(--it-fg)}.it-meta{border-top:1px solid var(--it-line);font:400 .7rem var(--font-mono);color:var(--it-dim);justify-content:space-between;padding:.45rem 1rem .6rem 2.95rem;display:flex}.it-tab{color:var(--it-green)}.it-bar{background:var(--it-green);transform-origin:0;width:100%;height:2px;position:absolute;bottom:0;left:0;transform:scaleX(0)}.ide-toast.done .it-spin{display:none}.ide-toast.done .it-check{opacity:1;transition:opacity .2s,transform .45s cubic-bezier(.34,1.56,.64,1);transform:none}.ide-toast.done .it-check path{stroke-dashoffset:0;transition:stroke-dashoffset .4s ease-out .15s}.ide-toast.done .l2{opacity:1;transform:none}.ide-toast.done .l3{opacity:1;transition-delay:.35s;transform:none}.ide-toast.done .it-bar{animation:4s linear .4s both itBar}@keyframes itBar{0%{transform:scaleX(1)}to{transform:scaleX(0)}}@media (max-width:760px){.ide-toast{bottom:calc(86px + env(safe-area-inset-bottom,0px));width:auto;left:16px;right:16px}}@media (prefers-reduced-motion:reduce){.ide-toast,.ide-toast.out,.it-spin{animation:none}}.toast{left:50%;bottom:calc(84px + env(safe-area-inset-bottom,0px));opacity:0;background:var(--ink);color:var(--ground);pointer-events:none;z-index:20;border-radius:10px;max-width:calc(100% - 32px);padding:.7rem 1.1rem;font-size:.9rem;transition:all .25s;position:fixed;transform:translate(-50%,20px)}.toast.show{opacity:1;transform:translate(-50%)}.map-svg{aspect-ratio:960/600}.maps .map-card:last-child .map-svg{aspect-ratio:420/560}.rq-overlay{z-index:45;background:color-mix(in srgb, var(--ink) 40%, transparent);-webkit-backdrop-filter:blur(6px);place-items:center;padding:16px;animation:.25s ease-out both rqFadeIn;display:grid;position:fixed;inset:0}.rq{background:var(--surface);border:1px solid var(--line);width:min(480px,100%);max-height:calc(100% - 32px);box-shadow:0 30px 80px color-mix(in srgb, var(--ink) 35%, transparent);border-radius:22px;padding:1.6rem 1.6rem 1.3rem;animation:.42s cubic-bezier(.34,1.56,.64,1) both rqIn;position:relative;overflow-y:auto}.rq-overlay.is-closing{animation:.22s ease-in both rqFadeOut}.rq-overlay.is-closing .rq{animation:.22s ease-in both rqOut}.rq-done{animation:.35s ease-out both rqDoneIn}@keyframes rqFadeIn{0%{opacity:0}}@keyframes rqFadeOut{to{opacity:0}}@keyframes rqIn{0%{opacity:0;transform:translateY(28px)scale(.92)}to{opacity:1;transform:none}}@keyframes rqOut{0%{opacity:1;transform:none}to{opacity:0;transform:translateY(18px)scale(.95)}}@keyframes rqSheetIn{0%{transform:translateY(100%)}to{transform:none}}@keyframes rqSheetOut{0%{transform:none}to{transform:translateY(100%)}}@keyframes rqDoneIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.rq:before{content:"";background:linear-gradient(90deg, var(--green), var(--plum));height:5px;position:absolute;top:0;left:0;right:0}.rq-x{width:34px;height:34px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:10px;font-size:1.4rem;line-height:1;position:absolute;top:.8rem;right:.8rem}.rq-x:hover{background:var(--green-wash);color:var(--ink)}.rq-head{align-items:flex-start;gap:.9rem;margin:.2rem 2rem 1.2rem 0;display:flex}.rq-head h2{font-size:var(--step-2);margin:0 0 .3rem;font-weight:700}.rq-head p{color:var(--muted);margin:0;font-size:.95rem}.rq-ico{background:var(--green);width:46px;height:46px;color:var(--on-green);border-radius:13px;flex:none;place-items:center;display:grid}.rq-ico svg{width:22px;height:22px}.rq-form{gap:.45rem;display:grid}.rq-label{margin-top:.45rem;font-size:.88rem;font-weight:600;display:block}.rq-req,.rq-opt{font:500 .7rem var(--font-mono);color:var(--muted);margin-left:.3rem}.rq-req{color:var(--plum)}.rq-input{border:1.5px solid var(--line);background:var(--ground);width:100%;color:var(--ink);font:500 1rem var(--font-body);border-radius:12px;padding:.75rem .9rem;transition:border-color .2s,box-shadow .2s}.rq-input::placeholder{color:color-mix(in srgb, var(--muted) 70%, transparent)}.rq-input:focus{border-color:var(--green);box-shadow:0 0 0 4px var(--green-wash);outline:none}.rq-input[aria-invalid=true]{border-color:#d64545;box-shadow:0 0 0 4px #d6454526}.rq-row{grid-template-columns:1fr 1fr;gap:.8rem;display:grid}.rq-row>*{min-width:0}.rq-hp{width:1px;height:1px;position:absolute;left:-9999px;overflow:hidden}.rq-error{color:#b42318;background:color-mix(in srgb, #d64545 10%, var(--surface));border-radius:10px;margin:.4rem 0 0;padding:.55rem .75rem;font-size:.88rem}:root[data-theme=dark] .rq-error{color:#ff9c94}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .rq-error{color:#ff9c94}}.rq-submit{cursor:pointer;border:0;justify-content:center;width:100%;margin-top:.9rem}.rq-submit:disabled{cursor:progress;opacity:.85}.rq-spin{border:2.5px solid color-mix(in srgb, var(--on-green) 25%, transparent);border-top-color:var(--on-green);border-radius:50%;width:18px;height:18px;animation:.8s linear infinite spin;display:none}.rq-submit.busy .rq-spin{display:inline-block}.rq-submit.busy .rq-send:after{content:"…"}.rq-note{text-align:center;color:var(--muted);margin:.5rem 0 0;font-size:.8rem}.rq-done{text-align:center;padding:.8rem .4rem .4rem}.rq-done h2{font-size:var(--step-2);margin:.9rem 0 .4rem}.rq-done p{color:var(--muted);margin:0 0 1.2rem}.rq-done b{color:var(--ink);word-break:break-all}.rq-done-btn{isolation:isolate;position:relative;overflow:hidden}.rq-done-btn:before{content:"";z-index:-1;background:color-mix(in srgb, var(--green) 32%, transparent);transform-origin:0;position:absolute;inset:0;transform:scaleX(0)}.rq-done-btn.is-counting:before{animation:8s linear forwards rqFill}@keyframes rqFill{to{transform:scaleX(1)}}.rq-progress{background:color-mix(in srgb, var(--ink) 8%, transparent);height:4px;margin:1.3rem -1.6rem -1.3rem;display:block;position:relative}.rq-progress[hidden]{display:none}.rq-progress span{background:linear-gradient(90deg, var(--green), var(--plum));transform-origin:0;height:100%;display:block;transform:scaleX(0)}.rq-progress.is-counting span{animation:8s linear forwards rqFill}.rq-check{width:64px;height:64px}.rq-check circle{fill:var(--green-wash);stroke:var(--green);stroke-width:2.5px}.rq-check path{fill:none;stroke:var(--green-strong);stroke-width:4px;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:40;stroke-dashoffset:40px;animation:.5s ease-out .15s forwards rqDraw}@keyframes rqDraw{to{stroke-dashoffset:0}}@media (max-width:520px){.rq-overlay{place-items:end center;padding:0}.rq{width:100%;max-height:92%;padding-bottom:calc(1.3rem + env(safe-area-inset-bottom,0px));border-radius:22px 22px 0 0;animation:.38s cubic-bezier(.22,1,.36,1) both rqSheetIn}.rq-overlay.is-closing .rq{animation:.22s ease-in both rqSheetOut}.rq-row{grid-template-columns:1fr;gap:0}}@media (prefers-reduced-motion:reduce){.rq,.rq-overlay,.rq-done,.rq-overlay.is-closing,.rq-overlay.is-closing .rq{animation:none}.rq-check path{stroke-dashoffset:0;animation:none}}
