:root{--bg: #f4f1ea;--fg: #1f1c19;--card: #faf8f4;--border: #3a3530;--muted: #6b6560;--spacing: 82vh;color:var(--fg);background:var(--bg);font-family:Rubik,sans-serif;font-optical-sizing:auto;font-weight:400}*,*:before,*:after{box-sizing:border-box}html,body,#root{margin:0;padding:0;width:100%;min-height:100%;min-height:100dvh;overflow:hidden;overscroll-behavior:none;touch-action:none;background:var(--bg)}canvas.scene-canvas,.scene-canvas{position:fixed!important;top:0;right:0;bottom:0;left:0;width:100%!important;height:100%!important;touch-action:none;outline:none}a{color:var(--fg);transition:color .2s}a:hover{color:#a9a9a9}.seo-copy{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}html.document-flow,html.document-flow body,html.document-flow #root{overflow:auto;touch-action:auto;height:auto;min-height:100dvh;overscroll-behavior:auto}.fallback-copy{max-width:720px}.fallback-copy article{margin-bottom:2rem}.webgl-fallback{padding:48px 24px;max-width:720px;margin:0 auto;overflow:auto;height:100dvh;touch-action:auto;position:relative;z-index:40;background:var(--bg)}.fallback-text-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;padding:0;font:inherit;color:inherit;text-decoration:underline;cursor:pointer}.fallback-text-btn:hover{color:#a9a9a9}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.overview-chrome{position:fixed;top:max(24px,env(safe-area-inset-top));left:max(24px,env(safe-area-inset-left));z-index:20;max-width:min(720px,calc(100vw - 36px));pointer-events:none;display:flex;align-items:flex-start;gap:22px}.overview-copy{min-width:0}.overview-chrome h1{font-size:clamp(2.2rem,6vw,4rem);margin:0 0 .4rem;letter-spacing:-1px}.overview-chrome p{font-size:clamp(1rem,2.4vw,1.45rem);margin:0 0 .75rem;max-width:36ch}.overview-chrome .hint{font-size:.95rem;color:var(--muted);font-style:italic}.overview-actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px}.overview-actions .hint,.overview-actions .overview-resume-card{margin:0}.overview-resume-card{pointer-events:auto;display:inline-block;margin:0 0 .9rem;background:var(--card);border:8px solid var(--border);padding:.45rem .95rem;box-shadow:8px 8px #00000014}.resume-link{font-weight:700;font-size:1.15rem;letter-spacing:.01em;text-decoration:underline;text-underline-offset:.18em}.resume-link:hover{color:var(--muted)}.overlay-card{position:fixed;z-index:30;background:var(--card);border:8px solid var(--border);padding:1.1rem 1.25rem;max-width:min(460px,calc(100vw - 40px));max-height:calc(100dvh - 48px);overflow:auto;top:max(28px,env(safe-area-inset-top));left:max(24px,env(safe-area-inset-left));box-shadow:12px 12px #00000014}.overlay-card-sheet{top:auto;left:0;right:0;bottom:0;max-width:none;max-height:46dvh;border-left:0;border-right:0;border-bottom:0;padding-bottom:max(1.25rem,env(safe-area-inset-bottom));border-radius:18px 18px 0 0}@media(max-height:559px){.overlay-card{top:auto;left:0;right:0;bottom:0;max-width:none;max-height:46dvh;border-left:0;border-right:0;border-bottom:0;padding-bottom:max(1.25rem,env(safe-area-inset-bottom));border-radius:18px 18px 0 0}}.sheet-handle{width:48px;height:5px;border-radius:99px;background:color-mix(in srgb,var(--muted) 45%,var(--card));margin:0 auto 12px}.overlay-card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.overlay-card h2{margin:0 0 .6rem;font-size:clamp(1.5rem,4vw,2.2rem)}.overlay-card p{margin:0 0 .7rem;line-height:1.45}.overlay-card .note{font-style:italic}.close-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--fg);color:var(--card);border:0;padding:.4rem .7rem;font:inherit;cursor:pointer;flex-shrink:0}.close-btn:hover{background:var(--muted)}.contact-list{padding-left:1.1rem}.item-label{-webkit-appearance:none;-moz-appearance:none;appearance:none;font-family:Rubik,sans-serif;font-size:12px;font-weight:600;letter-spacing:.02em;background:color-mix(in srgb,var(--card) 92%,transparent);border:2px solid var(--border);padding:3px 8px;white-space:nowrap;opacity:.7;transform:scale(.92);transition:opacity .2s,transform .2s;cursor:pointer;color:inherit;touch-action:manipulation}.item-label:hover,.item-label-hot{opacity:1;transform:scale(1.08)}.loading{opacity:1;background-color:var(--bg);position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;align-items:center;justify-content:center;transition:opacity .5s ease-out;overflow:hidden}.loading-fade{opacity:0;pointer-events:none}.loading-content{text-align:center;color:#333;max-width:600px;padding:40px;position:relative;z-index:10;display:flex;flex-direction:column;align-items:center}.portrait-card{--rx: 0deg;--ry: 0deg;--gx: 50%;--gy: 40%;flex-shrink:0;transform:perspective(820px) rotateX(var(--rx)) rotateY(var(--ry)) rotate(-2.5deg);transform-style:preserve-3d;will-change:transform}.portrait-chip{width:min(165px,25.5vw)}.portrait-hero{width:min(210px,51vw);margin:0 auto 22px}.portrait-frame{position:relative;margin:0;overflow:hidden;background:var(--card);border:4px solid var(--border);padding:8px 8px 22px;box-shadow:10px 10px #0000001a}.portrait-frame-captioned{padding-bottom:8px}.portrait-caption{display:block;margin:7px 2px 1px;color:var(--fg);font-family:Caveat,Rubik,cursive;font-weight:600;font-size:1.05rem;line-height:1.15;letter-spacing:.01em;text-align:center;white-space:pre-wrap;overflow-wrap:anywhere}.portrait-chip .portrait-caption{font-size:clamp(.92rem,2.2vw,1.12rem)}.portrait-hero .portrait-caption{font-size:clamp(1.05rem,3.4vw,1.28rem)}.portrait-shot{position:relative;overflow:hidden}.portrait-photo,.portrait-canvas{display:block;width:100%;aspect-ratio:4 / 5;height:auto;object-fit:cover;background:color-mix(in srgb,var(--muted) 18%,var(--card))}.portrait-canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;opacity:0;pointer-events:none;transition:opacity .28s ease}.portrait-canvas-ready{opacity:1}.portrait-photo-hidden{opacity:0}.portrait-glare{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:linear-gradient(118deg,transparent 32%,rgba(255,255,255,.34) 46%,transparent 58%);background-size:180% 180%;background-position:var(--gx) var(--gy);mix-blend-mode:soft-light}.webgl-fallback .portrait-card{margin:0 0 20px}@media(max-width:720px){.overview-chrome{top:max(12px,env(safe-area-inset-top));left:max(12px,env(safe-area-inset-left));gap:10px 12px;max-width:calc(100vw - 20px);display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start}.overview-copy{display:contents}.portrait-chip{width:min(88px,26vw);grid-column:1;grid-row:1 / 3}.overview-chrome h1{grid-column:2;grid-row:1;font-size:clamp(1.45rem,7vw,2.1rem);margin:0}.overview-actions{grid-column:2;grid-row:2;margin-top:.2rem}.overview-lede{grid-column:1 / -1;grid-row:3;font-size:.84rem;line-height:1.3;margin:.15rem 0 0}.overview-chrome p{font-size:.9rem;line-height:1.32;margin:0 0 .42rem;max-width:none}.overview-chrome .hint{font-size:.8rem;margin-bottom:0}.overview-resume-card{margin:0;padding:.28rem .7rem;border-width:5px;box-shadow:5px 5px #00000014}.resume-link{font-size:.98rem}.item-label{font-size:11px;padding:2px 6px}}@media(max-height:560px){.overview-chrome{top:max(10px,env(safe-area-inset-top));left:max(12px,env(safe-area-inset-left));gap:10px;max-width:min(520px,calc(100vw - 24px))}.portrait-chip{width:min(76px,16vw)}.overview-chrome h1{font-size:clamp(1.25rem,4.2vw,1.7rem);margin:0 0 .18rem}.overview-chrome p{font-size:.8rem;line-height:1.28;margin:0 0 .28rem}.overview-lede{grid-column:auto;grid-row:auto}.overview-chrome .hint{font-size:.74rem}.overview-resume-card{margin:0 0 .28rem;padding:.2rem .55rem;border-width:4px}}.loading-title{font-size:clamp(2.4rem,6vw,3.5rem);font-weight:700;margin:0 0 10px;letter-spacing:-1px;color:var(--fg);animation:fadeInUp 1s ease-out}.loading-subtitle{font-size:1.2em;font-weight:300;margin-bottom:25px;opacity:.7;animation:fadeInUp 1s ease-out .2s both}.progress-container{animation:fadeInUp 1s ease-out .4s both}.progress-bar{width:min(420px,70vw);height:6px;background-color:color-mix(in srgb,var(--fg) 12%,transparent);border-radius:3px;overflow:hidden;margin:0 auto 12px}.progress-fill{height:100%;background:linear-gradient(90deg,color-mix(in srgb,var(--fg) 70%,var(--muted)),var(--fg));width:1%;border-radius:3px;transition:width .3s ease}.loading-text{font-size:1em;font-weight:300;opacity:.6;animation:pulse 2s infinite}.loading-star{position:absolute;background-color:#000;border-radius:50%;animation:twinkle 2s infinite;opacity:0}.config-error{padding:48px 24px;max-width:720px;margin:0 auto;overflow:auto;height:100dvh;touch-action:auto}.debug-copy{position:fixed;right:16px;bottom:16px;z-index:80;font:inherit;padding:8px 12px;border:3px solid var(--border);background:var(--card);color:var(--fg);cursor:pointer}@keyframes fadeInUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,to{opacity:.6}50%{opacity:1}}@keyframes twinkle{0%,to{opacity:0;transform:scale(.5)}50%{opacity:1;transform:scale(1)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}.portrait-card{transform:none}}
