@keyframes rb-rainbow-move{0%{background-position:0%}to{background-position:200%}}.dock-header{z-index:50;pointer-events:none;justify-content:center;padding:.75rem .75rem 0;display:flex;position:fixed;top:0;left:0;right:0}.dock-header__align{width:100%;max-width:min(100vw - calc(var(--site-content-gutter)*2),var(--site-dock-max));pointer-events:none;justify-content:center;margin:0 auto;display:flex}.dock-shell{pointer-events:auto;width:auto;max-width:100%;box-shadow:0 0 0 1px #ffffff59 inset,0 14px 40px #0f172a2e,0 0 28px var(--dock-accent-glow);background:linear-gradient(135deg,#ff4242a6,#a855f799,#22d3eea6,#4ade808c) 0 0/200% 200%;border-radius:9999px;padding:2px;animation:8s linear infinite rb-rainbow-move}:root[data-theme=dark] .dock-shell,:root.dark .dock-shell{box-shadow:0 0 0 1px #ffffff14 inset,0 16px 48px #0000008c,0 0 32px var(--dock-accent-glow);background:linear-gradient(135deg,#38bdf88c,#a855f773,#4ade8066)}.dock{-webkit-backdrop-filter:blur(18px)saturate(1.4);scrollbar-width:none;-ms-overflow-style:none;background:#fffffff0;border:1px solid #94a3b866;border-radius:9999px;flex-direction:row;justify-content:flex-start;align-items:stretch;gap:.35rem;margin:0;padding:.5rem .55rem;list-style:none;display:flex;overflow:auto hidden;box-shadow:inset 0 1px #fffffff2}:root[data-theme=dark] .dock,:root.dark .dock{background:#0a0f1ceb;border-color:#94a3b847;box-shadow:inset 0 1px #ffffff0f}.dock::-webkit-scrollbar{display:none}.dock-slot{flex:none;align-items:stretch;margin:0;padding:0;display:flex}.dock-item{min-width:4.05rem;min-height:3.35rem;color:var(--text);font:inherit;cursor:pointer;transform:scale(var(--dock-scale,1))translateY(0);transform-origin:bottom;background:#f8fafce6;border:1px solid #94a3b859;border-radius:.9rem;outline:none;flex-direction:column;justify-content:center;align-items:center;gap:.16rem;padding:.38rem .5rem .34rem;text-decoration:none;transition:transform .18s cubic-bezier(.22,1,.36,1),background-color .15s,color .15s,box-shadow .15s,border-color .15s;display:inline-flex;position:relative}.resume-modal{z-index:1000;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.resume-modal__backdrop{cursor:pointer;-webkit-backdrop-filter:blur(10px);background:radial-gradient(circle at 20% 20%,#38bdf82e,#0000 32rem),radial-gradient(circle at 80% 10%,#a855f733,#0000 28rem),#020617ad;border:0;position:absolute;inset:0}.resume-modal__panel{z-index:1;width:min(58rem,100%);max-height:min(48rem,100dvh - 2rem);color:var(--text);background:#fffffff0;border:1px solid #94a3b847;border-radius:24px;flex-direction:column;display:flex;position:relative;overflow:hidden;box-shadow:0 30px 90px #00000057,inset 0 0 0 1px #ffffff80}:root[data-theme=dark] .resume-modal__panel,:root.dark .resume-modal__panel{background:#0f172af0;border-color:#94a3b83d}.resume-modal__header,.resume-modal__footer{justify-content:space-between;align-items:center;gap:1rem;padding:1rem;display:flex}.resume-modal__header{border-bottom:1px solid #94a3b838}.resume-modal__eyebrow{color:var(--text-muted);letter-spacing:.08em;text-transform:uppercase;margin:0 0 .2rem;font-size:.72rem;font-weight:700}.resume-modal__title{margin:0;font-size:clamp(1.15rem,3vw,1.5rem);line-height:1.2}.resume-modal__close,.resume-modal__secondary,.resume-modal__download{min-height:2.45rem;font:inherit;cursor:pointer;border-radius:9999px;justify-content:center;align-items:center;gap:.45rem;font-size:.88rem;font-weight:700;text-decoration:none;display:inline-flex}.resume-modal__close{width:2.45rem;color:var(--text);background:#f8fafcd1;border:1px solid #94a3b84d}:root[data-theme=dark] .resume-modal__close,:root.dark .resume-modal__close{background:#1e293bd9}.resume-modal__close svg,.resume-modal__download svg{width:1rem;height:1rem}.resume-modal__preview{background:#0f172a0f;flex:1;min-height:18rem;padding:.75rem}:root[data-theme=dark] .resume-modal__preview,:root.dark .resume-modal__preview{background:#02061752}.resume-modal__object{background:#fff;border:1px solid #94a3b847;border-radius:16px;width:100%;height:min(34rem,60dvh);display:block;overflow:hidden}.resume-modal__fallback{color:#475569;text-align:center;place-items:center;min-height:18rem;padding:2rem;display:grid}.resume-modal__fallback-path{margin:.5rem 0 0;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.78rem}.resume-modal__footer{border-top:1px solid #94a3b838;flex-wrap:wrap}.resume-modal__secondary{color:var(--text-muted);background:0 0;border:1px solid #94a3b84d;padding:.6rem .95rem}.resume-modal__download{color:#fff;background:linear-gradient(135deg,#2563eb,#7c3aed);border:1px solid #0000;padding:.6rem 1rem;box-shadow:0 12px 30px #4f46e547}.resume-modal__close:focus-visible,.resume-modal__secondary:focus-visible,.resume-modal__download:focus-visible{outline-offset:2px;outline:3px solid #93c5fd}@media (max-width:640px){.resume-modal{padding:.65rem}.resume-modal__panel{border-radius:18px;max-height:calc(100dvh - 1.3rem)}.resume-modal__header,.resume-modal__footer{padding:.85rem}.resume-modal__object{height:58dvh}}:root[data-theme=dark] .dock-item,:root.dark .dock-item{color:#e2e8f0;background:#1e293b8c;border-color:#94a3b833}.dock-item:hover,.dock-item:focus-visible{border-color:var(--dock-accent);color:var(--dock-accent);transform:scale(var(--dock-scale,1))translateY(-1px);box-shadow:0 0 0 1px #fffc inset,0 0 22px var(--dock-accent-glow);background:#fff}:root[data-theme=dark] .dock-item:hover,:root[data-theme=dark] .dock-item:focus-visible,:root.dark .dock-item:hover,:root.dark .dock-item:focus-visible{color:#f8fafc;box-shadow:0 0 20px var(--dock-accent-glow);background:#334155d9;border-color:#7dd3fc73}.dock-item:focus-visible{box-shadow:0 0 0 2px #fff,0 0 0 4px var(--dock-accent),0 0 22px var(--dock-accent-glow)}.dock-item--current{border-color:var(--dock-accent);color:var(--dock-accent);box-shadow:0 0 0 1px #ffffffa6 inset,0 0 20px var(--dock-accent-glow);background:linear-gradient(160deg,#2563eb24,#6366f12e)}.dock-item--current:after{content:"";background:var(--dock-accent);height:3px;box-shadow:0 0 10px var(--dock-accent-glow);border-radius:9999px;position:absolute;bottom:.28rem;left:18%;right:18%}:root[data-theme=dark] .dock-item--current,:root.dark .dock-item--current{color:#f8fafc;box-shadow:0 0 0 1px #7dd3fc40 inset,0 0 24px var(--dock-accent-glow);background:linear-gradient(145deg,#38bdf847,#6366f152);border-color:#7dd3fc8c}.dock-icon{pointer-events:none;flex-shrink:0;width:1.16rem;height:1.16rem}.dock-label{text-overflow:ellipsis;letter-spacing:.035em;text-align:center;text-transform:uppercase;white-space:nowrap;pointer-events:none;color:currentColor;opacity:.88;max-width:3.6rem;font-size:.62rem;font-weight:700;line-height:1.05;overflow:hidden}.theme-toggle{top:max(.9rem,env(safe-area-inset-top,0px));right:max(1rem,env(safe-area-inset-right,0px));z-index:60;width:2.65rem;height:2.65rem;color:var(--text);cursor:pointer;-webkit-backdrop-filter:blur(14px)saturate(1.2);background:#ffffffb8;border:1px solid #94a3b859;border-radius:9999px;padding:0;transition:transform .15s,background .2s,border-color .2s;position:fixed;box-shadow:0 8px 28px #0f172a14}.theme-toggle:hover{transform:scale(1.04)}.theme-toggle:focus-visible{outline-offset:2px;outline:3px solid #93c5fd}.theme-toggle__icon{place-items:center;transition:opacity .2s,transform .2s;display:grid;position:absolute;inset:0}html:not([data-theme=dark]) .theme-toggle__icon--sun,html[data-theme=dark] .theme-toggle__icon--moon{opacity:0;pointer-events:none;transform:scale(.85)}:root[data-theme=dark] .theme-toggle,:root.dark .theme-toggle{background:#0f172ac7;border-color:#94a3b838;box-shadow:0 10px 36px #0006}@media (prefers-reduced-motion:reduce){.dock-shell{background-size:auto;animation:none}.dock-item{transition:transform .15s,background-color .15s,color .15s,border-color .15s}.dock-item:hover,.dock-item:focus-visible{transform:scale(1.05)translateY(-1px)}}@media (min-width:641px){.dock-shell{width:min(100%,var(--site-dock-frame-width))}.dock{justify-content:space-between;gap:.4rem;width:100%;padding:.5rem .6rem}.dock-slot{flex:1 1 0;justify-content:center;min-width:0}.dock-item{width:100%;min-width:0;max-width:4.15rem}}@media (max-width:640px){.dock-header{padding-left:.5rem;padding-right:.5rem}.dock-shell{max-width:100%}.dock{justify-content:flex-start;gap:.25rem;padding:.4rem}.dock-slot{flex:none}.dock-item{width:auto;min-width:3.45rem;max-width:none;min-height:3.05rem;padding:.34rem .36rem .3rem}.dock-icon{width:1.05rem;height:1.05rem}.dock-label{max-width:3.1rem;font-size:.54rem}}.site-page-shell{width:100%;max-width:min(100vw - calc(var(--site-content-gutter)*2),var(--site-content-max));padding-left:var(--site-content-gutter);padding-right:var(--site-content-gutter);margin-left:auto;margin-right:auto;padding-bottom:1rem}.site-page-shell--personal,.portfolio-site-shell{padding-bottom:4rem}.portfolio-site-shell{padding-top:calc(var(--dock-clearance) + .5rem)}.site-footer{justify-content:center;margin-top:1rem;padding:2.5rem 1rem 1.5rem;display:flex}.site-footer__text{text-align:center;color:var(--text-muted);letter-spacing:.02em;margin:0;font-size:.82rem;font-weight:500}.back-to-top-fab{right:max(1rem,env(safe-area-inset-right,0px));bottom:max(1rem,env(safe-area-inset-bottom,0px));z-index:54;color:var(--text-muted);box-shadow:none;opacity:0;pointer-events:none;background:0 0;border:none;border-radius:0;align-items:center;gap:.35rem;padding:.25rem;font-size:.8rem;font-weight:600;text-decoration:none;transition:opacity .2s,transform .2s,color .15s;display:inline-flex;position:fixed;transform:translateY(.35rem)}.back-to-top-fab.is-visible{opacity:1;pointer-events:auto;transform:translateY(0)}.back-to-top-fab:hover,.back-to-top-fab:focus-visible{color:var(--dock-accent)}.back-to-top-fab:focus-visible{outline:2px solid var(--dock-accent);outline-offset:4px;border-radius:.25rem}.back-to-top-fab__icon{flex-shrink:0;width:1.25rem;height:1.25rem}.back-to-top-fab--above-chat{bottom:calc(4.75rem + env(safe-area-inset-bottom,0px))}@media (prefers-reduced-motion:reduce){.back-to-top-fab{transition:none;transform:none}.back-to-top-fab.is-visible{transform:none}}@media (max-width:640px){.back-to-top-fab__label{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}}
.contact-icon-panel{background:var(--surface);border:1px solid var(--border);box-shadow:var(--card-shadow);border-radius:16px;margin:0;padding:2rem 1.5rem;position:relative;overflow:hidden}.contact-icon-panel__grid{pointer-events:none;border-radius:16px;position:absolute;inset:0 0 50%;overflow:hidden}.contact-icon-panel__body{text-align:center;flex-direction:column;align-items:center;gap:1.25rem;display:flex;position:relative}.contact-icon-panel__title{letter-spacing:-.02em;color:var(--text);margin:0;font-size:clamp(1.75rem,4.5vw,2.35rem);font-weight:700;line-height:1.15}.contact-icon-panel__lead{max-width:36rem;color:var(--text-muted);margin:0;font-size:1.05rem;line-height:1.65}.contact-icon-panel__nav{flex-wrap:wrap;justify-content:center;align-items:center;gap:.75rem;width:100%;max-width:32rem;display:flex}.contact-icon-panel__btn{border:1px solid var(--border);background:color-mix(in srgb,var(--bg)55%,transparent);min-width:6.5rem;color:var(--text);cursor:pointer;border-radius:12px;flex-direction:column;align-items:center;gap:.375rem;padding:.75rem 1rem;font-size:.875rem;font-weight:500;line-height:1.3;text-decoration:none;transition:border-color .15s,background-color .15s;display:inline-flex}.contact-icon-panel__btn:hover,.contact-icon-panel__btn:focus-visible{border-color:color-mix(in srgb,var(--dock-accent)45%,var(--border));background:color-mix(in srgb,var(--surface)70%,var(--bg))}.contact-icon-panel__btn:focus-visible{outline:2px solid var(--dock-accent);outline-offset:2px}.contact-icon-panel__icon{width:1.25rem;height:1.25rem;color:var(--dock-accent);flex-shrink:0}@media (min-width:768px){.contact-icon-panel{padding:2rem 1.75rem}}
