:root{--desk-a:#111722;--desk-b:#0b1018;--desk-c:#121117;--desk-stroke:#303846;--desk-shadow:0 30px 80px #00000052;--desk-grid:#526171;--desk-grid-opacity:.5;--desk-card-a:#101722eb;--desk-card-b:#101722b8;--desk-pool:.3;--desk-contact:.45;--desk-shine:#ffffff29;--drive-side:#151a21;--drive-end:#0b0e13;--drive-edge:#3a414c;--metal-top:#c9d0d9;--metal-side:#8a939f;--metal-end:#6b7480;--metal-edge:#5a626d;--metal-hole:#12161c;--mat-top:#3a4250;--mat-left:#1d232c;--mat-right:#141920;--mat-edge:#414b5b;--bezel:#0b0f15;--pcb-top:#0e2a20;--pcb-side:#0a1c16;--pcb-end:#06120e;--pcb-edge:#1d4a39;--pad:#c9a24a;--led-red:#ff6369;--led-red-off:#3a1a1d;--led-amber:#ffc53d;--led-amber-off:#3a2f14;--led-green:#46d89c;--led-green-off:#183a2e}:root[data-theme=light]{--desk-a:#fff;--desk-b:#f7f8fa;--desk-c:#f6f7fb;--desk-stroke:#cbd2dc;--desk-shadow:0 24px 60px #18202a1a;--desk-grid:#8795a3;--desk-grid-opacity:.42;--desk-card-a:#ffffffeb;--desk-card-b:#ffffffc2;--desk-pool:.18;--desk-contact:.16;--desk-shine:#f08a2c33;--drive-side:#dfe4eb;--drive-end:#c9d1dc;--drive-edge:#b9c2cd;--metal-top:#e3e8ee;--metal-side:#b4bcc7;--metal-end:#98a2af;--metal-edge:#8f99a6;--metal-hole:#3a414c;--mat-top:#f3f5f8;--mat-left:#dfe4eb;--mat-right:#c9d1dc;--mat-edge:#b9c2cd;--bezel:#1b2027;--pcb-top:#1f6b4d;--pcb-side:#175a40;--pcb-end:#104532;--pcb-edge:#2d8a64;--pad:#d8b25a;--led-red:#e5484d;--led-red-off:#f9dede;--led-amber:#f0a020;--led-amber-off:#fcefd0;--led-green:#1aa572;--led-green-off:#cfe9dc}@media (prefers-color-scheme:light){:root:not([data-theme]){--desk-a:#fff;--desk-b:#f7f8fa;--desk-c:#f6f7fb;--desk-stroke:#cbd2dc;--desk-shadow:0 24px 60px #18202a1a;--desk-grid:#8795a3;--desk-grid-opacity:.42;--desk-card-a:#ffffffeb;--desk-card-b:#ffffffc2;--desk-pool:.18;--desk-contact:.16;--desk-shine:#f08a2c33;--drive-side:#dfe4eb;--drive-end:#c9d1dc;--drive-edge:#b9c2cd;--metal-top:#e3e8ee;--metal-side:#b4bcc7;--metal-end:#98a2af;--metal-edge:#8f99a6;--metal-hole:#3a414c;--mat-top:#f3f5f8;--mat-left:#dfe4eb;--mat-right:#c9d1dc;--mat-edge:#b9c2cd;--bezel:#1b2027;--pcb-top:#1f6b4d;--pcb-side:#175a40;--pcb-end:#104532;--pcb-edge:#2d8a64;--pad:#d8b25a;--led-red:#e5484d;--led-red-off:#f9dede;--led-amber:#f0a020;--led-amber-off:#fcefd0;--led-green:#1aa572;--led-green-off:#cfe9dc}}.hero{width:min(calc(100% - 48px),var(--max));margin:0 auto;padding:104px 0 48px;position:relative;container-type:inline-size}.desk{--desk-pad:28px;--desk-gap:24px;isolation:isolate;padding:var(--desk-pad);border:1px solid var(--desk-stroke);background:linear-gradient(135deg,var(--desk-a),var(--desk-b) 60%,var(--desk-c));box-shadow:var(--desk-shadow);border-radius:20px;position:relative;overflow:hidden}.desk:after{content:"";z-index:2;border-radius:inherit;background:linear-gradient(90deg,rgba(var(--carry-rgb),.7),rgba(var(--carry-rgb),0) 30%,rgba(var(--touch-rgb),0) 72%,rgba(var(--touch-rgb),.5));opacity:.8;pointer-events:none;padding:1px;position:absolute;inset:0;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0)}.desk-floor{z-index:-1;width:100%;height:100%;position:absolute;inset:0;mask-image:radial-gradient(62% 62% at 50% 46%,#000000f2,#00000080 55%,#0000)}.desk-grid-line{fill:none;stroke:var(--desk-grid);stroke-width:.9px;opacity:var(--desk-grid-opacity)}.desk-title{justify-items:start;gap:8px;margin:0 0 18px;padding:16px 0 0 22px;display:grid}.desk-bars{gap:4px;display:flex}.desk-bars i{background:var(--carry);border-radius:2px;width:18px;height:4px}.desk-bars i:nth-child(2){background:var(--see)}.desk-bars i:nth-child(3){background:var(--touch)}.hero h1{letter-spacing:-.05em;margin:0;font-size:clamp(38px,4.4cqi,58px);font-weight:650;line-height:1}.desk-role{color:var(--muted);letter-spacing:.06em;margin:0;font-size:13px;line-height:1.3}.project-map{gap:var(--desk-gap);margin-top:calc((2 * var(--desk-gap) - 100%) * 11 / 108);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.project-entry{border-radius:14px;flex-direction:column;min-width:0;text-decoration:none;display:flex}.desk-object{pointer-events:none;flex:none;width:100%;height:auto;display:block;overflow:visible}.desk-object .entry-visual{pointer-events:auto}.entry-card{z-index:1;border:1px solid rgba(var(--lane-rgb),.3);background:linear-gradient(var(--desk-card-a),var(--desk-card-b));backdrop-filter:blur(10px);border-radius:14px;flex:1;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"code caption""name name""fact fact";align-content:start;gap:8px 12px;margin-top:-2.78%;padding:18px 20px;transition:border-color .25s,box-shadow .25s,transform .2s;display:grid;position:relative}.entry-card:before{content:"";background:var(--lane);border-radius:1px;width:56px;height:2px;position:absolute;top:-1px;left:20px}.entry-code{color:var(--lane-text);letter-spacing:.12em;grid-area:code;align-items:center;gap:9px;font:700 12px/1.4 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;display:flex}.entry-code:before{content:"";background:var(--lane);opacity:.55;border-radius:50%;flex:none;width:8px;height:8px;transition:opacity .25s,box-shadow .25s}.entry-caption{color:var(--muted);text-align:right;grid-area:caption;align-self:center;font-size:11px;line-height:1.4}.entry-name{flex-wrap:wrap;grid-area:name;align-items:center;gap:6px 10px;min-width:0;display:flex}.entry-name h2{color:var(--text);letter-spacing:-.04em;margin:0;font-size:clamp(22px,2.1vw,28px);font-weight:650;line-height:1.15}.entry-pill{border:1px solid rgba(var(--lane-rgb),.45);color:var(--lane-text);background:rgba(var(--lane-rgb),.08);white-space:nowrap;border-radius:99px;align-items:center;gap:6px;padding:3px 9px;font-size:11px;line-height:1.4;display:inline-flex}.entry-pill:before{content:"";background:var(--lane);border-radius:50%;width:6px;height:6px}.entry-arrow{color:var(--lane-text);margin-left:auto;font-size:18px;transition:transform .25s}.entry-fact{color:var(--soft);grid-area:fact;margin:0;font-size:13px;line-height:1.5}.entry-fact span{white-space:nowrap}.project-entry:is(:hover,:focus-visible,.is-preview) .entry-card{border-color:rgba(var(--lane-rgb),.65);box-shadow:0 12px 40px rgba(var(--lane-rgb),.12)}.project-entry:is(:hover,:focus-visible,.is-preview) .entry-code:before{opacity:1;box-shadow:0 0 0 4px rgba(var(--lane-rgb),.14),0 0 12px var(--lane)}.project-entry:is(:hover,:focus-visible) .entry-arrow{transform:translateY(3px)}.project-entry:active .entry-card{transform:translateY(1px)}@media (width<=1199px){.desk{--desk-pad:22px;--desk-gap:14px}.entry-card{padding:16px}.entry-card:before{left:16px}}.desk-object .f-left{fill:var(--p-side)}.desk-object .f-right{fill:var(--p-end)}.desk-object .f-top{fill:var(--p-top)}.desk-object :is(.f-left,.f-right,.f-top){stroke:var(--p-edge);stroke-width:.8px;stroke-linejoin:round}.part-drive{--p-top:var(--drive-face-a);--p-side:var(--drive-side);--p-end:var(--drive-end);--p-edge:var(--drive-edge)}.part-metal{--p-top:var(--metal-top);--p-side:var(--metal-side);--p-end:var(--metal-end);--p-edge:var(--metal-edge)}.part-mat{--p-top:var(--mat-top);--p-side:var(--mat-left);--p-end:var(--mat-right);--p-edge:var(--mat-edge)}.part-monitor{--p-top:var(--mat-top);--p-side:var(--bezel);--p-end:var(--mat-right);--p-edge:var(--mat-edge)}.part-pcb{--p-top:var(--pcb-top);--p-side:var(--pcb-side);--p-end:var(--pcb-end);--p-edge:var(--pcb-edge)}.part-chip{--p-top:#1b2027;--p-side:#111418;--p-end:#0a0c0f;--p-edge:#3a414c}.desk-slot{fill:var(--drive-slot);stroke:var(--drive-slot-stroke);stroke-width:.8px}.desk-port{fill:var(--metal-hole)}.desk-tongue{fill:var(--metal-top)}.desk-face-ring{fill:none;stroke:var(--carry-2);stroke-opacity:.32}.desk-face-edge{fill:none;stroke:var(--carry-2);stroke-opacity:.45;stroke-width:1.2px;stroke-linejoin:round}.desk-brand{fill:var(--text);letter-spacing:0;font-size:30px;font-weight:800}.desk-brand tspan{fill:var(--carry-text)}.desk-ticks{fill:var(--carry-2)}.desk-screen{fill:var(--shot-bg)}.desk-screen-line{fill:none;stroke:var(--see);stroke-opacity:.35}.desk-rim{fill:none;stroke:var(--see-2);stroke-width:2.2px}.desk-traces{fill:none;stroke:var(--touch);stroke-opacity:.5;stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round}.desk-pads{fill:var(--pad)}.desk-holes{fill:none;stroke:var(--pad);stroke-width:1.6px}.desk-chip-ink{fill:#c3cad4;font-size:17px;font-weight:800}.desk-photo-line{fill:none;stroke:var(--touch);stroke-opacity:.38}.led-red{--led:var(--led-red);--led-off:var(--led-red-off)}.led-amber{--led:var(--led-amber);--led-off:var(--led-amber-off)}.led-green{--led:var(--led-green);--led-off:var(--led-green-off)}.desk-led-carry{fill:var(--carry-2)}.desk-led-see{fill:var(--see-2)}.desk-led-base{fill:var(--led-off)}.desk-led-dome{fill:var(--led-off);stroke:var(--led);stroke-opacity:.5;stroke-width:.8px}.desk-led-core{fill:var(--led)}.stop-lane{stop-color:var(--lane)}.stop-lane.is-on{stop-opacity:var(--desk-pool)}.stop-off{stop-opacity:0}.stop-glow{stop-color:var(--glow)}.stop-glow.is-on{stop-opacity:.85}.stop-contact{stop-color:#000}.stop-contact.is-on{stop-opacity:var(--desk-contact)}.stop-drive-a{stop-color:var(--drive-face-a)}.stop-drive-b{stop-color:var(--drive-face-b)}.stop-shine{stop-color:var(--desk-shine)}.stop-shine.is-clear{stop-opacity:0}.stop-glare{stop-color:#fff;stop-opacity:.12}.stop-glare.is-clear{stop-opacity:0}.glow-carry{--glow:var(--carry-2)}.glow-red{--glow:var(--led-red)}.glow-amber{--glow:var(--led-amber)}.glow-green{--glow:var(--led-green)}.desk-drop{flood-color:#000;flood-opacity:var(--desk-contact)}.desk-light{opacity:.32;transition:opacity .35s}.project-entry:is(:hover,:focus-visible,.is-preview) .desk-light{opacity:1}.project-entry:is(:hover,:focus-visible,.is-preview) .led-amber .desk-light{transition-delay:.12s}.project-entry:is(:hover,:focus-visible,.is-preview) .led-green .desk-light{transition-delay:.24s}.desk-pool{opacity:.78;transition:opacity .45s}.project-entry:is(:hover,:focus-visible,.is-preview) .desk-pool{opacity:1}.desk-lift,.desk-contact{transform-box:fill-box;transform-origin:50%;transition:transform .45s cubic-bezier(.2,.8,.2,1),opacity .45s}.project-entry:is(:hover,:focus-visible,.is-preview) .desk-lift{transform:translateY(-7px)}.project-entry:is(:hover,:focus-visible,.is-preview) .desk-board .desk-lift{transform:translateY(-4px)}.project-entry:is(:hover,:focus-visible,.is-preview) .desk-contact{opacity:.7;transform:scale(.9)}.desk-shot{transition:transform 1.2s cubic-bezier(.4,0,.2,1)}.project-entry:is(:hover,:focus-visible,.is-preview) .desk-shot{transform:translateY(calc(-1px * var(--pan)))}.deck-photo{transform-box:fill-box;transform-origin:50%;transition:transform .5s cubic-bezier(.2,.8,.2,1)}.project-entry:is(:hover,:focus-visible,.is-preview) .deck-photo{transform:translate(var(--fx),var(--fy)) rotate(var(--fr))}@media (width<=760px){.hero{width:calc(100% - 32px);padding:140px 0 36px}.desk{--f:calc(100cqi / 360);padding:calc(312 * var(--f)) calc(20 * var(--f)) calc(20 * var(--f));border-radius:16px}.desk-title{top:calc(30 * var(--f));left:calc(28 * var(--f));gap:calc(8 * var(--f));margin:0;padding:0;position:absolute}.desk-bars i{width:14px}.hero h1{font-size:calc(34 * var(--f))}.desk-role{font-size:12px}.project-map{grid-template-columns:1fr;gap:9px;margin-top:0}.desk-object{width:calc(180 * var(--f));position:absolute}.entry-carry .desk-object{left:calc(1 * var(--f));top:calc(125 * var(--f))}.entry-see .desk-object{left:calc(193.4 * var(--f));top:calc(23.5 * var(--f))}.entry-touch .desk-object{left:calc(178.7 * var(--f));top:calc(161 * var(--f))}.entry-card{border-radius:12px;grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"code name caption""fact fact fact";gap:5px 9px;margin-top:0;padding:12px 14px}.entry-card:before{width:40px;left:14px}.entry-code{gap:0;font-size:0}.entry-name h2{font-size:19px}.entry-arrow{display:none}.entry-fact{font-size:12px}}.hw-evidence{z-index:2;min-height:44px;color:var(--muted);align-items:center;gap:7px;margin-top:8px;font-size:11px;text-decoration:none;display:flex;position:relative}.hw-evidence i{border:1px solid;border-radius:50%;flex:none;width:6px;height:6px}.hw-evidence.pass{color:var(--lane-text)}.hw-evidence.pass i{background:currentColor}.hw-evidence.failure{color:var(--danger-text)}.hw-evidence.failure i{background:linear-gradient(45deg,transparent 42%,var(--danger) 42% 58%,transparent 58%),linear-gradient(-45deg,transparent 42%,var(--danger) 42% 58%,transparent 58%);border:0;border-radius:0;width:9px;height:9px}.snapshot-warning{border:1px solid rgba(var(--warn-rgb),.4);color:var(--warn);border-radius:8px;padding:12px 14px;font-size:12px;line-height:1.7}.snapshot-warning[hidden]{display:none}.spotlight{border:1px solid rgba(var(--lane-rgb),.26);border-radius:var(--radius);background:linear-gradient(125deg,rgba(var(--lane-rgb),.08),var(--sheen) 52%,rgba(var(--lane-rgb),.03));box-shadow:inset 0 1px var(--sheen-inset);grid-template-columns:minmax(0,.82fr) minmax(0,1.18fr);align-items:center;gap:clamp(32px,5vw,72px);padding:clamp(28px,4vw,52px);display:grid}.spotlight h3{letter-spacing:-.05em;margin:0;font-size:clamp(48px,5.4vw,78px);font-weight:740;line-height:1}.spotlight h3 span{color:var(--lane-text)}.spotlight .project-summary{max-width:520px}.metric-strip{border:1px solid rgba(var(--lane-rgb),.22);background:var(--metric-bg);border-radius:12px;grid-template-columns:repeat(3,1fr);margin:28px 0 0;display:grid;overflow:hidden}.metric-strip>div{border-right:1px solid rgba(var(--lane-rgb),.16);padding:14px 16px}.metric-strip>div:last-child{border-right:0}.metric-strip dt{color:var(--dim);letter-spacing:.04em;font-size:11px}.metric-strip dd{color:var(--text);letter-spacing:-.02em;font-variant-numeric:tabular-nums;margin:8px 0 0;font-family:ui-monospace,SFMono-Regular,monospace;font-size:clamp(20px,2vw,26px);font-weight:600}.metric-strip dd small{color:var(--dim);letter-spacing:0;margin-left:4px;font-family:inherit;font-size:11px;font-weight:500}.metric-strip dd.is-unknown{color:var(--dim);font-size:16px}.signal-chip{min-height:44px;color:var(--muted);align-items:center;gap:8px;font-size:11px;text-decoration:none;display:inline-flex}.signal-chip i{border:1.5px solid var(--lane);border-radius:50%;flex:none;width:7px;height:7px}.signal-chip:is(.pass,.release) i{background:var(--lane);box-shadow:0 0 9px rgba(var(--lane-rgb),.5);border:0}.signal-chip.failure{color:var(--danger-text)}.signal-chip.stale i{border-color:var(--warn)}.signal-chip.neutral i{border-color:var(--dim)}.app-stack{position:relative}.app-window{z-index:1;--line:#ffffff1a;--dim:#7d8794;--muted:#9aa3b1;--text:#f1f4f8;--surface-hover:#ffffff0d;border:1px solid rgba(var(--lane-rgb),.3);box-shadow:var(--shadow-window),0 0 0 1px #0000004d,0 0 60px rgba(var(--lane-rgb),.08);background:#0b0e14;border-radius:14px;margin:0;position:relative;overflow:hidden}.app-chrome{border-bottom:1px solid var(--line);min-height:46px;color:var(--dim);align-items:center;gap:7px;padding:0 6px 0 13px;display:flex}.app-chrome i{background:#ffffff24;border-radius:50%;width:8px;height:8px}.app-chrome i:first-child{background:rgba(var(--lane-rgb),.75)}.app-chrome>span{letter-spacing:.04em;margin-left:8px;font-size:11px}.shot-tabs{gap:2px;margin-left:auto;display:none}.js .shot-tabs{display:flex}.shot-tabs button{min-height:36px;color:var(--muted);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:7px;padding:0 10px;font-size:12px;transition:color .2s,background .2s;position:relative}.shot-tabs button:hover{color:var(--text);background:var(--surface-hover)}.shot-tabs button[aria-pressed=true]{color:var(--text)}.shot-rotate{width:36px;height:36px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:7px;place-items:center;padding:0;display:none}.js .shot-rotate{display:grid}.js .shot-rotate[hidden]{display:none}.shot-rotate:hover{color:var(--text);background:var(--surface-hover)}.shot-rotate svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;width:14px;height:14px}.shot-rotate .icon-play{fill:currentColor;display:none}.shot-rotate[aria-pressed=true] .icon-pause{display:none}.shot-rotate[aria-pressed=true] .icon-play{display:inline}.app-shot{background:#161a21;display:grid;position:relative;overflow:hidden}.shot-slide{grid-area:1/1;transition:opacity .6s,visibility}.shot-slide[aria-hidden=true]{opacity:0;visibility:hidden;transition:opacity .6s,visibility 0s .6s}.shot-slide img{width:100%;height:auto;display:block}.app-window figcaption{border-top:1px solid var(--line);color:var(--dim);padding:11px 14px;font-size:11px;line-height:1.5}.tool-groups{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:20px;margin-top:20px;display:grid}.tool-group{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel-glass-soft);overflow:hidden}.tool-group-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:16px;min-height:50px;padding:0 20px;display:flex}.tool-group-head h3{color:var(--lane-text);letter-spacing:.02em;margin:0;font-size:12px;font-weight:600}.tool-list{margin:0;padding:0;list-style:none}.tool-row{border-bottom:1px solid var(--line);grid-template-columns:minmax(0,1fr) 44px;align-items:start;gap:14px;padding:20px 20px 18px;display:grid;position:relative}.tool-row:last-child{border-bottom:0}.tool-row:before{content:"";background:linear-gradient(90deg,rgba(var(--lane-rgb),.09),transparent 70%);opacity:0;pointer-events:none;transition:opacity .25s;position:absolute;inset:0}.tool-row:after{content:"";background:var(--lane);pointer-events:none;border-radius:2px;width:2px;transition:transform .3s cubic-bezier(.2,.8,.2,1);position:absolute;top:16px;bottom:16px;left:0;transform:scaleY(0)}.tool-row:hover:before,.tool-row:focus-within:before{opacity:1}.tool-row:hover:after,.tool-row:focus-within:after{transform:scaleY(1)}.tool-copy h4{letter-spacing:-.03em;margin:0;font-size:21px;font-weight:650}.tool-copy h4 a{text-decoration:none}.tool-copy h4 a:after{content:"";z-index:1;position:absolute;inset:0}.tool-copy>p{color:var(--muted);margin:8px 0 0;font-size:13px;line-height:1.7}.tool-meta{flex-wrap:wrap;align-items:center;gap:6px 12px;margin-top:12px;display:flex}.tool-meta .tags span{padding:4px 7px;font-size:11px}.tool-meta .signal-chip{min-height:24px;font-size:11px}.tool-copy .caveat{margin-top:8px;font-size:11px}.recent-dot{background:var(--lane);vertical-align:4px;border-radius:50%;width:6px;height:6px;margin-left:8px;animation:2s ease-out 3 ring;display:inline-block}.tool-arrow{border:1px solid var(--line);width:44px;height:44px;color:var(--muted);border-radius:10px;place-items:center;transition:color .2s,border-color .2s,transform .2s;display:grid}.tool-row:hover .tool-arrow,.tool-row:focus-within .tool-arrow{color:var(--lane);border-color:rgba(var(--lane-rgb),.5);transform:translate(2px,-2px)}.tool-row.has-shot{grid-template-columns:minmax(0,1fr) 160px 44px}.tool-shot{width:160px;margin:2px 0 0}.tool-shot-frame{aspect-ratio:16/10;border:1px solid rgba(var(--lane-rgb),.22);background:var(--shot-bg);border-radius:8px;display:block;position:relative;overflow:hidden}.tool-shot img{object-fit:cover;filter:saturate(.82)brightness(.86);width:100%;height:100%;transition:transform .6s cubic-bezier(.2,.8,.2,1),filter .4s;position:absolute;inset:0}.tool-shot img.is-contain{object-fit:contain}.tool-row:hover .tool-shot img,.tool-row:focus-within .tool-shot img{filter:saturate(.95)brightness(.96);transform:scale(1.045)}.tool-shot figcaption{color:var(--dim);letter-spacing:.02em;margin-top:6px;font-size:11px;line-height:1.35}.pcb-strip{border:1px solid rgba(var(--lane-rgb),.22);background:radial-gradient(rgba(var(--lane-rgb),.13) 1px,transparent 1.6px) 0 0/16px 16px,linear-gradient(160deg,rgba(var(--lane-rgb),.06),var(--pcb-bg));border-radius:14px;height:120px;margin:0 0 22px;position:relative;overflow:hidden}.pcb-strip svg{width:100%;height:100%;display:block}.pcb-silk{color:rgba(var(--lane-rgb),.6);letter-spacing:.12em;font-family:ui-monospace,monospace;font-size:11px;position:absolute;bottom:9px;left:14px}.pcb-trace{fill:none;stroke:rgba(var(--lane-rgb),.34);stroke-width:1.6px;stroke-linejoin:round;stroke-dasharray:100;stroke-dashoffset:0;transition:stroke-dashoffset 1.6s cubic-bezier(.2,.8,.2,1) var(--td,0s)}.js .pcb-strip:not(.is-in) .pcb-trace{stroke-dashoffset:100px}.pcb-pulse{fill:none;stroke:var(--touch-2);stroke-width:2.2px;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:6 194;stroke-dashoffset:6px;animation:3.4s ease-in-out infinite pcbPulse;animation-delay:var(--pd,0s)}.js .pcb-strip:not(.is-in) .pcb-pulse{opacity:0}.pcb-pad{fill:var(--hole);stroke:rgba(var(--lane-rgb),.6)}.pcb-via{fill:var(--hole);stroke:rgba(var(--lane-rgb),.45)}.pcb-chip{fill:var(--chip-bg);stroke:rgba(var(--lane-rgb),.6)}.pcb-legs{fill:none;stroke:rgba(var(--lane-rgb),.5);stroke-width:2px}.pcb-label{fill:var(--pcb-label);letter-spacing:.14em;text-anchor:middle;font:600 14px ui-monospace,monospace}.pcb-sub{fill:var(--lane-text);letter-spacing:.1em;text-anchor:middle;font:500 11px ui-monospace,monospace}.pcb-led{fill:rgba(var(--lane-rgb),.2);stroke:rgba(var(--lane-rgb),.6);animation:3.4s linear infinite led;animation-delay:var(--pd,0s)}.hw-filters{flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 18px;display:none}.js .hw-filters{display:flex}.hw-filters button{border:1px solid var(--line);min-height:44px;color:var(--muted);background:var(--surface-2);font:inherit;cursor:pointer;border-radius:999px;align-items:center;gap:8px;padding:0 15px;font-size:12px;transition:color .2s,border-color .2s,background .2s;display:inline-flex}.hw-filters button b{color:var(--dim);font-family:ui-monospace,monospace;font-size:11px;font-weight:500}.hw-filters button:hover{color:var(--text);border-color:rgba(var(--lane-rgb),.45)}.hw-filters button[aria-pressed=true]{color:#06110c;border-color:var(--lane);background:var(--lane)}.hw-filters button[aria-pressed=true] b{color:#06110cb3}.hw-filter-status{color:var(--dim);margin-left:auto;font-size:11px}.hw-grid{grid-template-columns:repeat(auto-fill,minmax(min(232px,100%),1fr));grid-auto-flow:dense;gap:12px;margin:0;padding:0;list-style:none;display:grid}.hw-item[hidden],.hw-item.is-folded{display:none}.hw-more{border:1px dashed rgba(var(--lane-rgb),.45);width:100%;min-height:48px;color:var(--lane-text);background:rgba(var(--lane-rgb),.04);font:inherit;cursor:pointer;border-radius:12px;justify-content:center;align-items:center;margin-top:12px;font-size:13px;transition:background .2s;display:flex}.hw-more:hover{background:rgba(var(--lane-rgb),.09)}.hw-more[hidden]{display:none}.hw-item.is-wide{grid-column:span 2}.hw-card{border:1px solid var(--line);background:linear-gradient(170deg,rgba(var(--lane-rgb),.045),var(--card-base) 55%);border-radius:12px;flex-direction:column;height:100%;transition:border-color .25s,transform .25s,box-shadow .25s;display:flex;position:relative;overflow:hidden}.hw-card:after{content:"";z-index:2;background:linear-gradient(90deg,var(--lane),var(--lane-2));transform-origin:0;height:1px;transition:transform .45s cubic-bezier(.2,.8,.2,1);position:absolute;bottom:0;left:16px;right:16px;transform:scaleX(0)}.hw-media{aspect-ratio:16/10;border-bottom:1px solid rgba(var(--lane-rgb),.18);background:var(--media-bg);flex:1 0 auto;position:relative;overflow:hidden}.hw-media img{object-fit:cover;filter:saturate(.82)brightness(.86);width:100%;height:100%;transition:transform .6s cubic-bezier(.2,.8,.2,1),filter .4s;position:absolute;inset:0}.hw-media:after{content:"";pointer-events:none;background:linear-gradient(#0000 50%,#06080ccc);position:absolute;inset:0}.hw-card:not(.has-photo) .hw-media:after{display:none}.hw-card:hover .hw-media img,.hw-card:focus-within .hw-media img{filter:saturate(.95)brightness(.96);transform:scale(1.045)}.hw-media-empty{background:radial-gradient(rgba(var(--lane-rgb),.2) 1px,transparent 1.6px) 0 0/14px 14px,linear-gradient(160deg,rgba(var(--lane-rgb),.07),var(--media-empty));position:absolute;inset:0}.hw-media-empty:before{content:"";border:1px solid rgba(var(--lane-rgb),.45);background:var(--chip-bg);width:40px;height:40px;box-shadow:0 0 0 7px rgba(var(--lane-rgb),.05);border-radius:6px;position:absolute;top:44%;left:50%;transform:translate(-50%,-50%)}.hw-media-tag{z-index:1;color:#d7dce3;letter-spacing:.03em;text-shadow:0 1px 6px #000000b3;font-size:11px;line-height:1.35;position:absolute;bottom:9px;left:12px;right:12px}.hw-media-tag span+span:before{content:" · "}.hw-card:not(.has-photo) .hw-media-tag{color:var(--dim);text-align:center;text-shadow:none}.hw-body{flex-direction:column;flex:none;padding:14px 16px 12px;display:flex;position:relative}.hw-card:hover,.hw-card:focus-within{border-color:rgba(var(--lane-rgb),.45);box-shadow:var(--shadow-card),0 0 0 1px rgba(var(--lane-rgb),.08);transform:translateY(-3px)}.hw-card:hover:after,.hw-card:focus-within:after{transform:scaleX(1)}.hw-top{justify-content:space-between;align-items:center;gap:10px;display:flex}.hw-chip{border:1px solid rgba(var(--lane-rgb),.35);color:var(--lane-text);background:rgba(var(--lane-rgb),.07);letter-spacing:.04em;white-space:nowrap;border-radius:5px;padding:4px 8px;font-family:ui-monospace,monospace;font-size:11px}.hw-led{border:1px solid rgba(var(--lane-rgb),.6);background:rgba(var(--lane-rgb),.15);border-radius:50%;flex:none;width:8px;height:8px;transition:background .25s,box-shadow .25s}.hw-card:hover .hw-led,.hw-card:focus-within .hw-led{background:var(--lane);box-shadow:0 0 12px var(--lane),inset 0 0 3px #fff}.hw-card h3{letter-spacing:-.02em;margin:12px 0 0;font-size:17px;font-weight:650;line-height:30px}.hw-card h3 a{text-decoration:none}.hw-card h3 a:after{content:"";z-index:1;position:absolute;inset:0}.hw-card p{color:var(--muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;min-height:42px;margin:8px 0 0;font-size:12px;line-height:21px;display:-webkit-box;overflow:hidden}.hw-stack{color:var(--dim);letter-spacing:.02em;white-space:nowrap;text-overflow:ellipsis;margin-top:auto;padding-top:14px;font-family:ui-monospace,monospace;font-size:11px;line-height:16px;overflow:hidden}.hw-item.is-wide .hw-card{background:radial-gradient(260px 160px at 100% 0,rgba(var(--lane-rgb),.12),transparent 70%),linear-gradient(170deg,rgba(var(--lane-rgb),.06),var(--card-base) 55%)}.hw-item.is-wide .hw-card h3{font-size:22px}.hw-item.is-wide .hw-media{aspect-ratio:21/10}.hw-item.is-wide .hw-card p{font-size:13px}.hw-note{color:var(--dim);margin:20px 0 0;font-size:11px;line-height:1.7}.hw-note a{color:var(--soft)}.hw-empty{border:1px dashed var(--line-strong);color:var(--muted);border-radius:12px;padding:28px;font-size:13px}.timeline{margin:0;padding:0;list-style:none;position:relative}.timeline:before{content:"";background:linear-gradient(var(--carry),var(--see) 50%,var(--touch));opacity:.4;transform-origin:50% 0;width:1px;transition:transform 1.4s cubic-bezier(.2,.8,.2,1);position:absolute;top:8px;bottom:8px;left:143px}.js .timeline:not(.is-in):before{transform:scaleY(0)}.tl-item a{border-bottom:1px solid var(--line);grid-template-columns:120px 46px minmax(0,1fr) 30px;align-items:start;padding:22px 0;text-decoration:none;transition:background .2s;display:grid}.tl-item a:hover{background:linear-gradient(90deg,transparent 150px,rgba(var(--lane-rgb),.05) 260px,transparent)}.tl-item time{color:var(--muted);letter-spacing:.06em;padding-top:3px;font-family:ui-monospace,monospace;font-size:11px}.tl-dot{border:2px solid var(--bg);background:var(--lane);width:11px;height:11px;box-shadow:0 0 0 1px rgba(var(--lane-rgb),.6),0 0 12px rgba(var(--lane-rgb),.5);border-radius:50%;justify-self:center;margin-top:4px;transition:transform .25s;position:relative}.tl-body{min-width:0}.tl-tags{color:var(--lane-text);letter-spacing:.1em;align-items:center;gap:8px;font-family:ui-monospace,monospace;font-size:11px;display:flex}.tl-tags em{color:var(--dim);letter-spacing:0;font-family:Geist Variable,PingFang SC,Microsoft YaHei,system-ui,sans-serif;font-style:normal}.tl-body h3{letter-spacing:-.025em;margin:10px 0 6px;font-size:20px;font-weight:640;line-height:1.35}.tl-body p{color:var(--muted);margin:0;font-size:13px;line-height:1.7}.tl-arrow{color:var(--dim);justify-self:end;padding-top:2px;transition:color .2s,transform .2s}.tl-item a:hover .tl-dot,.tl-item a:focus-visible .tl-dot{transform:scale(1.35)}.tl-item a:hover .tl-arrow,.tl-item a:focus-visible .tl-arrow{color:var(--lane-text);transform:translate(2px,-2px)}.feed-note{color:var(--dim);margin:22px 0 0;font-size:11px;line-height:1.7}.feed-note b{color:var(--warn);font-weight:600}@keyframes pcbPulse{0%{stroke-dashoffset:6px}60%,to{stroke-dashoffset:-100px}}@media (width<=1200px){.spotlight{grid-template-columns:1fr}.app-stack{max-width:760px}.tool-groups{grid-template-columns:1fr}}@media (width<=760px){.spotlight{padding:26px 18px}.spotlight h3{font-size:52px}.metric-strip>div{padding:12px 10px}.metric-strip dd{font-size:19px}.js .app-chrome>span,.pcb-silk,.pcb-sub{display:none}.tool-group-head{flex-direction:column;justify-content:center;align-items:flex-start;gap:4px;padding:12px 16px}.tool-row{grid-template-columns:minmax(0,1fr) 44px;gap:10px;padding:18px 14px 16px}.tool-row.has-shot{grid-template-columns:minmax(0,1fr) 44px}.tool-shot{grid-area:2/1/auto/-1;width:100%;margin:4px 0 0}.tool-shot-frame{aspect-ratio:16/7}.tool-copy h4{font-size:19px}.pcb-strip{height:96px}.hw-filter-status{width:100%;margin-left:0}.timeline:before{left:7px}.tl-item a{grid-template-columns:15px minmax(0,1fr) 24px;column-gap:14px;padding:18px 0}.tl-item a:hover{background:0 0}.tl-dot{grid-area:1/1/span 2;margin-top:3px}.tl-item time{grid-area:1/2;padding:0}.tl-body{grid-area:2/2;margin-top:8px}.tl-arrow{grid-area:1/3}.tl-body h3{font-size:18px}}@media (width<=540px){.hw-item.is-wide{grid-column:auto}.hw-card{flex-direction:row}.hw-media,.hw-item.is-wide .hw-media{aspect-ratio:auto;border-bottom:0;border-right:1px solid rgba(var(--lane-rgb),.18);flex:0 0 104px}.hw-media-tag{text-align:center;bottom:7px;left:6px;right:6px}.hw-media-tag span{display:block}.hw-media-tag span+span:before{content:none}.hw-body{flex:1;min-width:0;padding:12px 14px 10px}.hw-card h3,.hw-item.is-wide .hw-card h3{font-size:17px;line-height:1.4}.hw-item.is-wide .hw-card p{font-size:12px}}@media (prefers-reduced-motion:reduce){.js .pcb-strip:not(.is-in) .pcb-trace{stroke-dashoffset:0}.js .timeline:not(.is-in):before{transform:none}.pcb-pulse{display:none}}.header-sentinel{pointer-events:none;width:1px;height:1px;position:absolute;top:40px;left:0}.reveal{transition-duration:.55s}.project-entry:is(:hover,:focus-visible,.is-preview) .desk-shine{animation:.85s cubic-bezier(.25,1,.5,1) deskShine}[data-loop=paused],[data-loop=paused] *,[data-loop=paused]:before,[data-loop=paused]:after,[data-loop=paused] :before,[data-loop=paused] :after{animation-play-state:paused!important}.hw-grid[data-filtered] .hw-item{transition:none}.hw-grid{overflow-anchor:none}.yipan-flow :is(.n1,.n2,.n3,.flow-cloud,.flow-rail,.flow-step i,.flow-link i){animation-duration:8s;animation-timing-function:ease-in-out;animation-iteration-count:infinite}.yipan-flow .n1{animation-name:flowNode;animation-delay:-7.6s}.yipan-flow .n2{animation-name:flowNodeTwice}.yipan-flow .n3{animation-name:flowNode;animation-delay:-3.36s}.yipan-flow .flow-cloud{animation-name:flowCloud}.yipan-flow .flow-rail{animation-name:flowRail}.yipan-flow .s1 i{animation-name:flowDown;animation-timing-function:linear}.yipan-flow .s2 i{animation-name:flowDown;animation-timing-function:linear;animation-delay:-3.68s}.yipan-flow .out i{animation-name:flowOut;animation-timing-function:linear}.yipan-flow .back i{animation-name:flowBack;animation-timing-function:linear}.shot-tabs button:after{content:"";background:var(--lane);transform-origin:0;border-radius:2px;height:2px;position:absolute;bottom:3px;left:10px;right:10px;transform:scaleX(0)}.shot-tabs button[aria-pressed=true]:after{transform:none}[data-shots].is-rotating .shot-tabs button[aria-pressed=true]:after{animation:6s linear both shotTimer}[data-shots].is-rotating:is(:has(.app-shot:hover),:has(.shot-tabs:focus-within)) .shot-tabs button:after{animation-play-state:paused}.scroll-progress{display:none}@supports (animation-timeline:scroll()){.scroll-progress{animation:linear both readingProgress;animation-duration:auto;animation-timeline:scroll(root);display:block}}@keyframes flowNode{0%,9%,19%,to{border-color:rgba(var(--carry-rgb),.28);box-shadow:none}12%,15%{border-color:var(--carry);box-shadow:0 0 0 3px rgba(var(--carry-rgb),.1),0 0 18px rgba(var(--carry-rgb),.22)}}@keyframes flowNodeTwice{0%,14%,26%,49%,61%,to{border-color:rgba(var(--carry-rgb),.28);box-shadow:none}17%,22%,52%,57%{border-color:var(--carry);box-shadow:0 0 0 3px rgba(var(--carry-rgb),.1),0 0 18px rgba(var(--carry-rgb),.22)}}@keyframes flowCloud{0%,32%,44%,to{border-color:var(--line-strong);box-shadow:none}35%,40%{border-color:var(--text);box-shadow:0 0 18px var(--glow-soft)}}@keyframes flowRail{0%,79%,97%,to{border-color:rgba(var(--carry-rgb),.35)}84%,92%{border-color:var(--carry-2)}}@keyframes flowDown{0%,4%{opacity:0;transform:translateY(0)}5%{opacity:1;transform:translateY(0)}13%{opacity:1;transform:translateY(28px)}14%,to{opacity:0;transform:translateY(28px)}}@keyframes flowOut{0%,23%{opacity:0;left:0}24%{opacity:1;left:0}32%{opacity:1;left:calc(100% - 10px)}33%,to{opacity:0;left:calc(100% - 10px)}}@keyframes flowBack{0%,40%{opacity:0;right:0}41%{opacity:1;right:0}49%{opacity:1;right:calc(100% - 10px)}50%,to{opacity:0;right:calc(100% - 10px)}}@keyframes shotTimer{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes deskShine{0%{transform:translate(0)}to{transform:translate(300px)}}@keyframes readingProgress{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@media (prefers-reduced-motion:reduce){*,:before,:after{animation-delay:0s!important}.scroll-progress{display:none}.hero-enter{opacity:1;transform:none;animation:none!important}.entry-card,.entry-arrow,.desk-lift,.desk-contact,.desk-shot,.deck-photo{transition:none;transform:none!important}.desk-shine,.yipan-flow *{animation:none!important}}::view-transition-old(root),::view-transition-new(root){mix-blend-mode:normal;animation:none}::view-transition-new(root){clip-path:circle(0 at var(--theme-x,50%) var(--theme-y,0%));animation:.64s cubic-bezier(.16,1,.3,1) both theme-reveal}@keyframes theme-reveal{to{clip-path:circle(var(--theme-r,150vmax) at var(--theme-x,50%) var(--theme-y,0%))}}@media (prefers-reduced-motion:reduce){::view-transition-new(root){animation:none}}
