:root{--text:#6b6375;--text-h:#08060d;--bg:#fff;--border:#e5e4e7;--code-bg:#f4f3ec;--accent:#aa3bff;--accent-bg:#aa3bff1a;--accent-border:#aa3bff80;--social-bg:#f4f3ec80;--shadow:#0000001a 0 10px 15px -3px, #0000000d 0 4px 6px -2px;--sans:system-ui, "Segoe UI", Roboto, sans-serif;--heading:system-ui, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, Consolas, monospace;font:18px/145% var(--sans);letter-spacing:.18px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}@media (width<=1024px){:root{font-size:16px}}@media (prefers-color-scheme:dark){:root{--text:#9ca3af;--text-h:#f3f4f6;--bg:#16171d;--border:#2e303a;--code-bg:#1f2028;--accent:#c084fc;--accent-bg:#c084fc26;--accent-border:#c084fc80;--social-bg:#2f303a80;--shadow:#0006 0 10px 15px -3px, #00000040 0 4px 6px -2px}#social .button-icon{filter:invert()brightness(2)}}body{margin:0}#root{text-align:center;border-inline:1px solid var(--border);box-sizing:border-box;flex-direction:column;width:1126px;max-width:100%;min-height:100svh;margin:0 auto;display:flex}h1,h2{font-family:var(--heading);color:var(--text-h);font-weight:500}h1{letter-spacing:-1.68px;margin:32px 0;font-size:56px}@media (width<=1024px){h1{margin:20px 0;font-size:36px}}h2{letter-spacing:-.24px;margin:0 0 8px;font-size:24px;line-height:118%}@media (width<=1024px){h2{font-size:20px}}p{margin:0}code,.counter{font-family:var(--mono);color:var(--text-h);border-radius:4px;display:inline-flex}code{background:var(--code-bg);padding:4px 8px;font-size:15px;line-height:135%}:root{--portfolio-font:"Inter", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--portfolio-ink:#102033;--portfolio-muted:#526274;--portfolio-line:#dbe3ee;--portfolio-page:#f5f7fb;--portfolio-surface:#fff;--portfolio-soft:#f4f8fb;--portfolio-raised:#fff;--portfolio-accent:#1263d6;--portfolio-accent-soft:#eaf3ff;--markdown-code-bg:#fafbfc;--markdown-code-header:#f4f6f8;--markdown-code-ink:#2d3748;--markdown-code-muted:#7b8794;--markdown-workflow-bg:#f8fbff;--markdown-workflow-ink:#24364a;--button-primary-bg:#1263d6;--button-primary-border:#1263d6;--button-primary-text:#fff;--button-primary-hover-bg:#0f55ba;--button-primary-hover-border:#0f55ba;--button-secondary-bg:color-mix(in srgb, var(--portfolio-raised) 88%, transparent);--button-secondary-border:color-mix(in srgb, var(--portfolio-line) 88%, var(--portfolio-accent));--button-secondary-text:var(--portfolio-ink);--button-secondary-hover-bg:var(--portfolio-accent-soft);--button-secondary-hover-border:color-mix(in srgb, var(--portfolio-accent) 36%, var(--portfolio-line));--portfolio-shadow:0 20px 58px #10203324;--portfolio-sticky-offset:52px;background:var(--portfolio-page);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;letter-spacing:0}:root[data-theme=dark]{--portfolio-ink:#f8fbff;--portfolio-muted:#b7c5d6;--portfolio-line:#3a4d63;--portfolio-page:#0b111b;--portfolio-surface:#121c29;--portfolio-soft:#172434;--portfolio-raised:#1f2e40;--portfolio-accent:#8dc7ff;--portfolio-accent-soft:#183a59;--markdown-code-bg:#101923;--markdown-code-header:#172536;--markdown-code-ink:#e7eef7;--markdown-code-muted:#9fb0c3;--markdown-workflow-bg:#101b27;--markdown-workflow-ink:#d9e5f2;--button-primary-bg:#8dc7ff;--button-primary-border:#9ed0ff;--button-primary-text:#06111f;--button-primary-hover-bg:#a7d5ff;--button-primary-hover-border:#b8ddff;--button-secondary-bg:color-mix(in srgb, var(--portfolio-surface) 86%, transparent);--button-secondary-border:color-mix(in srgb, var(--portfolio-line) 86%, var(--portfolio-accent));--button-secondary-text:#d8e4f0;--button-secondary-hover-bg:color-mix(in srgb, var(--portfolio-accent) 16%, var(--portfolio-surface));--button-secondary-hover-border:color-mix(in srgb, var(--portfolio-accent) 54%, var(--portfolio-line));--portfolio-shadow:0 30px 86px #0000008a;background:var(--portfolio-page);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}html{scroll-behavior:smooth;scroll-padding-top:var(--portfolio-sticky-offset)}body{background:var(--portfolio-page);font-family:var(--portfolio-font);transition:background .18s}#root{text-align:left;border:0;width:100%}button{font:inherit}.app-shell{color:var(--portfolio-ink);font-family:var(--portfolio-font);min-height:100svh}.sticky-header{-webkit-backdrop-filter:blur(26px)saturate(160%);backdrop-filter:blur(26px)saturate(160%);background:color-mix(in srgb, var(--portfolio-page) 64%, transparent);border-bottom:1px solid var(--portfolio-line);box-shadow:0 10px 32px color-mix(in srgb, var(--portfolio-ink) 6%, transparent);z-index:30;position:sticky;top:0}:root[data-theme=dark] .sticky-header{background:linear-gradient(180deg, color-mix(in srgb, var(--portfolio-surface) 82%, transparent), color-mix(in srgb, var(--portfolio-page) 68%, transparent));border-bottom-color:color-mix(in srgb, var(--portfolio-line) 78%, transparent);box-shadow:inset 0 1px #ffffff0d,0 16px 42px #00000057}.site-nav,.portfolio{max-width:1180px;margin:0 auto;padding-inline:clamp(18px,3.5vw,44px)}.site-nav{justify-content:space-between;align-items:center;gap:12px;min-height:46px;padding-block:3px;display:flex}.site-nav a,.hero-actions a,.contact a{color:inherit;text-decoration:none}.nav-identity,.nav-actions,.nav-tools{align-items:center;display:flex}.nav-identity{flex-wrap:wrap;gap:8px}.brand{color:var(--portfolio-ink);letter-spacing:0;font-size:.8rem;font-weight:800}.view-counter{background:color-mix(in srgb, var(--portfolio-raised) 95%, transparent);border:1px solid var(--portfolio-line);color:var(--portfolio-muted);letter-spacing:0;border-radius:999px;padding:5px 8px;font-size:.76rem;font-weight:900;line-height:1;display:inline-flex}:root[data-theme=dark] .view-counter{background:color-mix(in srgb, var(--portfolio-raised) 72%, transparent);border-color:color-mix(in srgb, var(--portfolio-line) 82%, #78b8ff);color:#c4d1df}.nav-actions{flex-wrap:wrap;justify-content:flex-end;gap:5px 12px}.nav-links{color:var(--portfolio-muted);letter-spacing:0;flex-wrap:wrap;justify-content:flex-end;gap:5px 15px;font-size:.94rem;font-weight:800;display:flex}.nav-links a{transition:color .18s;position:relative}.nav-links a:after{background:var(--portfolio-accent);content:"";opacity:0;transform-origin:50%;border-radius:999px;height:2px;transition:opacity .18s,transform .18s;position:absolute;top:calc(100% + 4px);left:0;right:0;transform:scaleX(.52)}.nav-links a:hover,.nav-links a:focus-visible,.nav-links a.is-active{color:var(--portfolio-accent)}.nav-links a.is-active:after{opacity:1;transform:scaleX(1)}.nav-tools{gap:8px}.language-switch,.theme-toggle{background:var(--button-secondary-bg);border:1px solid var(--button-secondary-border)}:root[data-theme=dark] .language-switch,:root[data-theme=dark] .theme-toggle{box-shadow:inset 0 1px #ffffff09}.language-switch{border-radius:8px;padding:3px;display:inline-flex}.language-switch button,.theme-toggle,.chat-close,.chat-expand,.chat-reset,.chat-launcher,.chat-composer button,.case-study-button,.project-head button,.more-projects,.project-modal-close{cursor:pointer}.language-switch button{color:var(--portfolio-muted);letter-spacing:0;background:0 0;border:0;border-radius:6px;min-width:40px;min-height:27px;padding:0 7px;font-size:.82rem;font-weight:900;transition:background .16s,color .16s}.language-switch .is-active{background:var(--portfolio-accent-soft);color:var(--portfolio-accent)}:root[data-theme=dark] .language-switch .is-active{background:color-mix(in srgb, var(--portfolio-accent) 18%, var(--portfolio-surface));color:#d8ebff}.theme-toggle{color:var(--button-secondary-text);letter-spacing:0;border-radius:8px;justify-content:center;align-items:center;min-width:36px;min-height:33px;padding:0 10px;font-size:1rem;font-weight:900;transition:background .16s,border-color .16s,box-shadow .16s,color .16s,transform .16s;display:inline-flex}.theme-icon{font-size:1.02rem;line-height:1;display:block}.language-switch button:hover,.language-switch button:focus-visible,.theme-toggle:hover,.theme-toggle:focus-visible{background:var(--button-secondary-hover-bg);color:var(--portfolio-accent)}.theme-toggle:hover,.theme-toggle:focus-visible{border-color:var(--button-secondary-hover-border);box-shadow:0 0 0 3px color-mix(in srgb, var(--portfolio-accent) 10%, transparent)}.theme-toggle:active,.project-head button:active,.more-projects:active,.project-modal-close:active{transform:translateY(0)}:root[data-theme=dark] .language-switch button:hover,:root[data-theme=dark] .language-switch button:focus-visible,:root[data-theme=dark] .theme-toggle:hover,:root[data-theme=dark] .theme-toggle:focus-visible{background:var(--button-secondary-hover-bg);border-color:var(--button-secondary-hover-border);box-shadow:0 0 0 3px color-mix(in srgb, var(--portfolio-accent) 14%, transparent), 0 1px 0 #ffffff0d inset;color:#d8ebff}.scroll-progress{width:100%;height:3px;display:block}.scroll-progress-track{background:color-mix(in srgb, var(--portfolio-line) 68%, transparent);height:100%;display:block;position:relative;overflow:hidden}.scroll-progress-fill{background:linear-gradient(90deg, var(--portfolio-accent), color-mix(in srgb, var(--portfolio-accent) 72%, #9ce2ff));transform-origin:0;height:100%;transition:transform 90ms linear;display:block}.portfolio{padding-bottom:44px}.hero,.section,#portfolio-title{scroll-margin-top:calc(var(--portfolio-sticky-offset) + 18px)}.hero{border-bottom:1px solid var(--portfolio-line);min-height:min(540px, calc(100svh - var(--portfolio-sticky-offset)));align-content:center;padding:clamp(38px,5.8vw,62px) 0 52px;display:grid}.hero-layout{display:block}.hero-copy{max-width:860px}.eyebrow,.section-label,.project-type{color:var(--portfolio-accent);letter-spacing:0;text-transform:uppercase;margin:0 0 12px;font-size:.74rem;font-weight:900}.hero h1{color:var(--portfolio-ink);letter-spacing:0;max-width:840px;margin:0;font-size:clamp(2.35rem,6vw,5.25rem);line-height:.98}.hero-description{color:var(--portfolio-muted);max-width:680px;margin:20px 0 0;font-size:clamp(1rem,1.75vw,1.18rem);line-height:1.58}.hero-actions{flex-wrap:wrap;gap:10px;margin-top:24px;display:flex}.hero-actions a,.more-projects,.project-modal-close{border:1px solid var(--portfolio-line);letter-spacing:0;border-radius:8px;justify-content:center;align-items:center;min-height:44px;padding:0 18px;font-weight:800;transition:background .19s,border-color .19s,color .19s,transform .19s,box-shadow .19s;display:inline-flex}.hero-actions .primary-action{background:var(--button-primary-bg);border-color:var(--button-primary-border);box-shadow:0 12px 28px color-mix(in srgb, var(--portfolio-accent) 18%, transparent);color:var(--button-primary-text)}:root[data-theme=dark] .hero-actions .primary-action,:root[data-theme=dark] .contact-form>button{background:var(--button-primary-bg);border-color:var(--button-primary-border);box-shadow:0 1px 0 #ffffff2e inset, 0 14px 34px color-mix(in srgb, var(--portfolio-accent) 16%, transparent);color:var(--button-primary-text)}:root[data-theme=dark] .hero-actions .primary-action:hover,:root[data-theme=dark] .hero-actions .primary-action:focus-visible,:root[data-theme=dark] .contact-form>button:hover,:root[data-theme=dark] .contact-form>button:focus-visible{background:var(--button-primary-hover-bg);border-color:var(--button-primary-hover-border);box-shadow:0 1px 0 #ffffff38 inset, 0 18px 42px color-mix(in srgb, var(--portfolio-accent) 20%, transparent);color:var(--button-primary-text)}.hero-actions .primary-action:hover,.hero-actions .primary-action:focus-visible{background:var(--button-primary-hover-bg);border-color:var(--button-primary-hover-border);color:var(--button-primary-text)}.more-projects:hover,.more-projects:focus-visible,.project-modal-close:hover,.project-modal-close:focus-visible{background:var(--button-secondary-hover-bg);border-color:var(--button-secondary-hover-border);color:var(--portfolio-accent)}.contact a:hover,.contact a:focus-visible{background:var(--portfolio-soft);border-color:color-mix(in srgb, var(--portfolio-accent) 38%, var(--portfolio-line))}:root[data-theme=dark] .more-projects,:root[data-theme=dark] .project-head button,:root[data-theme=dark] .project-modal-close{background:var(--button-secondary-bg);border-color:var(--button-secondary-border);color:var(--button-secondary-text);box-shadow:inset 0 1px #ffffff09}:root[data-theme=dark] .more-projects:hover,:root[data-theme=dark] .more-projects:focus-visible,:root[data-theme=dark] .more-projects:active,:root[data-theme=dark] .project-head button:hover,:root[data-theme=dark] .project-head button:focus-visible,:root[data-theme=dark] .project-head button:active,:root[data-theme=dark] .project-modal-close:hover,:root[data-theme=dark] .project-modal-close:focus-visible,:root[data-theme=dark] .project-modal-close:active,:root[data-theme=dark] .chat-close:hover,:root[data-theme=dark] .chat-close:focus-visible,:root[data-theme=dark] .chat-close:active,:root[data-theme=dark] .chat-expand:hover,:root[data-theme=dark] .chat-expand:focus-visible,:root[data-theme=dark] .chat-expand:active,:root[data-theme=dark] .chat-reset:hover,:root[data-theme=dark] .chat-reset:focus-visible,:root[data-theme=dark] .chat-reset:active{background:var(--button-secondary-hover-bg);border-color:var(--button-secondary-hover-border);color:#f4f9ff;box-shadow:inset 0 1px #ffffff14,0 12px 28px #00000047}.section{border-bottom:1px solid var(--portfolio-line);padding:clamp(46px,6.4vw,84px) 0}.about,.contact{grid-template-columns:minmax(280px,.9fr) minmax(320px,1fr);gap:clamp(22px,4.8vw,72px);display:grid}.section-heading{max-width:760px;margin-bottom:28px}.section-heading p{max-width:680px;margin:12px 0 0}.section-label{margin-bottom:10px}.section h2,.project-modal h2{color:var(--portfolio-ink);letter-spacing:0;margin:0;font-size:clamp(1.28rem,1.95vw,1.92rem);font-weight:700;line-height:1.08}.section h3,.project-modal h3{color:var(--portfolio-ink);letter-spacing:0;margin:0 0 12px;font-size:1.12rem;line-height:1.25}.project-modal h3{margin-bottom:8px}.section p,.project-modal p{color:var(--portfolio-muted);font-size:1rem;line-height:1.62}.about .about-lead{white-space:pre-line;max-width:560px;font-size:clamp(1.28rem,1.95vw,1.82rem);font-weight:750;line-height:1.24}.about-details{align-self:end;gap:14px;max-width:560px;display:grid}.about .about-detail{color:color-mix(in srgb, var(--portfolio-muted) 90%, var(--portfolio-raised));white-space:pre-line;margin:0;font-size:clamp(.96rem,1.28vw,1.04rem);line-height:1.68}.skill-grid,.project-grid{gap:13px;display:grid}.skill-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.skill-grid article{border-top:2px solid var(--portfolio-line);min-height:150px;padding-top:16px}.project-column{min-width:0}.project-grid{grid-template-columns:1fr}.portfolio-case-studies{gap:14px;display:grid}.case-study-card{min-width:0}.case-study-button{background:color-mix(in srgb, var(--portfolio-raised) 96%, transparent);border:1px solid var(--portfolio-line);color:inherit;text-align:left;border-radius:8px;grid-template-columns:minmax(240px,.42fr) minmax(0,1fr);gap:clamp(16px,2.4vw,28px);width:100%;min-height:100%;padding:clamp(16px,2.2vw,24px);transition:background .22s,border-color .22s,box-shadow .22s,transform .22s cubic-bezier(.22,1,.36,1);display:grid}.case-study-card.is-featured .case-study-button{border-color:#f90;box-shadow:inset 5px 0 #f90}.case-study-preview-placeholder,.case-study-preview-image{aspect-ratio:16/9;background:linear-gradient(90deg, color-mix(in srgb, var(--portfolio-line) 42%, transparent) 1px, transparent 1px), linear-gradient(180deg, color-mix(in srgb, var(--portfolio-line) 42%, transparent) 1px, transparent 1px), color-mix(in srgb, var(--portfolio-soft) 74%, var(--portfolio-raised));border:1px solid color-mix(in srgb, var(--portfolio-line) 88%, transparent);background-size:28px 28px;border-radius:8px;align-items:center;padding:16px;display:flex;overflow:hidden}.case-study-preview-image{background:color-mix(in srgb, var(--portfolio-raised) 98%, transparent);padding:12px}.case-study-preview-image img{object-fit:contain;width:100%;height:100%;max-height:100%;display:block}.case-study-preview-flow{flex-wrap:wrap;align-items:center;gap:9px 22px;width:100%;display:flex}.case-study-preview-node{background:color-mix(in srgb, var(--portfolio-raised) 94%, transparent);border:1px solid var(--portfolio-line);color:var(--portfolio-ink);letter-spacing:0;border-radius:7px;justify-content:center;min-width:78px;padding:10px 11px;font-size:.76rem;font-weight:900;line-height:1;display:inline-flex;position:relative}.case-study-preview-link{background:var(--portfolio-line);content:"";width:22px;height:1px;position:absolute;top:50%;left:calc(100% + 1px)}.case-study-body{align-content:start;gap:10px;min-width:0;padding-block:2px;display:grid}.case-study-topline{justify-content:space-between;align-items:center;gap:12px;min-width:0;display:flex}.case-study-link-hint{color:var(--portfolio-muted);letter-spacing:0;flex:none;font-size:.78rem;font-weight:900;line-height:1;transition:color .18s}.case-study-card h3{color:var(--portfolio-ink);letter-spacing:0;margin:0;font-size:clamp(1.08rem,1.55vw,1.34rem);font-weight:800;line-height:1.2;transition:color .18s}.case-study-card p{color:var(--portfolio-muted);max-width:620px;margin:0;font-size:.94rem;line-height:1.5}.case-study-button:hover,.case-study-button:focus-visible{background:color-mix(in srgb, var(--portfolio-accent-soft) 42%, var(--portfolio-raised));border-color:color-mix(in srgb, var(--portfolio-accent) 46%, var(--portfolio-line));box-shadow:0 16px 34px color-mix(in srgb, var(--portfolio-accent) 12%, transparent);outline:0;transform:translateY(-2px)}.case-study-card.is-featured .case-study-button:hover,.case-study-card.is-featured .case-study-button:focus-visible{border-color:#f90;box-shadow:inset 5px 0 #f90,0 16px 34px #ff99001a}.case-study-button:hover h3,.case-study-button:focus-visible h3,.case-study-button:hover .case-study-link-hint,.case-study-button:focus-visible .case-study-link-hint{color:var(--portfolio-accent)}:root[data-theme=dark] .case-study-button{background:linear-gradient(180deg, color-mix(in srgb, var(--portfolio-raised) 96%, #31475f), color-mix(in srgb, var(--portfolio-raised) 90%, var(--portfolio-page)));border-color:color-mix(in srgb, var(--portfolio-line) 88%, var(--portfolio-accent));box-shadow:0 1px 0 #ffffff0f inset, var(--portfolio-shadow)}:root[data-theme=dark] .case-study-card.is-featured .case-study-button{box-shadow:inset 5px 0 0 #f90, 0 1px 0 #ffffff0f inset, var(--portfolio-shadow);border-color:#f90}:root[data-theme=dark] .case-study-preview-placeholder,:root[data-theme=dark] .case-study-preview-image{background:linear-gradient(90deg, color-mix(in srgb, var(--portfolio-line) 36%, transparent) 1px, transparent 1px), linear-gradient(180deg, color-mix(in srgb, var(--portfolio-line) 36%, transparent) 1px, transparent 1px), color-mix(in srgb, var(--portfolio-soft) 86%, var(--portfolio-page));border-color:color-mix(in srgb, var(--portfolio-line) 82%, var(--portfolio-accent))}:root[data-theme=dark] .case-study-preview-image{background:color-mix(in srgb, var(--portfolio-raised) 88%, #111827)}:root[data-theme=dark] .case-study-preview-node{background:color-mix(in srgb, var(--portfolio-raised) 86%, #1d324d);border-color:color-mix(in srgb, var(--portfolio-line) 82%, var(--portfolio-accent));color:#dbe8f6}:root[data-theme=dark] .case-study-button:hover,:root[data-theme=dark] .case-study-button:focus-visible{background:linear-gradient(180deg, color-mix(in srgb, var(--portfolio-accent) 20%, var(--portfolio-raised)), color-mix(in srgb, var(--portfolio-raised) 92%, var(--portfolio-page)));border-color:var(--portfolio-accent);box-shadow:inset 0 1px #ffffff14,0 18px 48px #00000057}.project{background:color-mix(in srgb, var(--portfolio-raised) 96%, transparent);border:1px solid var(--portfolio-line);color:inherit;text-align:left;border-radius:8px;gap:11px;min-height:0;padding:clamp(16px,2vw,22px);transition:background .22s,border-color .22s,box-shadow .22s,transform .22s cubic-bezier(.22,1,.36,1);display:grid;transform:translateY(0)scale(1)}:root[data-theme=dark] .project,:root[data-theme=dark] .contact-form,:root[data-theme=dark] .project-modal,:root[data-theme=dark] .chat-window{background:linear-gradient(180deg, color-mix(in srgb, var(--portfolio-raised) 96%, #31475f), color-mix(in srgb, var(--portfolio-raised) 90%, var(--portfolio-page)));border-color:color-mix(in srgb, var(--portfolio-line) 88%, var(--portfolio-accent));box-shadow:0 1px 0 #ffffff0f inset, var(--portfolio-shadow)}:root[data-theme=dark] .skill-grid article{border-color:color-mix(in srgb, var(--portfolio-line) 82%, var(--portfolio-accent))}.project h3{color:var(--portfolio-ink);letter-spacing:0;margin:-2px 0 0;font-size:clamp(1.16rem,1.7vw,1.42rem);font-weight:800;line-height:1.22;transition:color .18s}.project p{color:var(--portfolio-muted);font-size:.94rem;line-height:1.5}.project-head{justify-content:space-between;align-items:start;gap:12px;display:flex}.project-head>div{min-width:0}.project-head button{background:var(--button-secondary-bg);border:1px solid var(--button-secondary-border);color:var(--button-secondary-text);letter-spacing:0;border-radius:8px;flex:none;justify-content:center;align-items:center;min-height:38px;padding:0 14px;font-weight:800;transition:background .19s,border-color .19s,color .19s,transform .19s;display:inline-flex}.project-head button:hover,.project-head button:focus-visible{background:var(--button-secondary-hover-bg);border-color:var(--button-secondary-hover-border);color:var(--portfolio-accent);transform:translateY(-1px)}.project-services{flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none;display:flex}.project-services li{background:var(--portfolio-soft);border:1px solid var(--portfolio-line);color:var(--portfolio-ink);letter-spacing:0;border-radius:999px;padding:7px 9px;font-size:.8rem;font-weight:900;line-height:1}:root[data-theme=dark] .project-services li,:root[data-theme=dark] .project-detail-grid li,:root[data-theme=dark] .system-layer-grid li,:root[data-theme=dark] .architecture-step>span:first-child{background:color-mix(in srgb, var(--portfolio-soft) 88%, #1f3550);border-color:color-mix(in srgb, var(--portfolio-line) 82%, var(--portfolio-accent));color:#dbe8f6}.project-type{margin-bottom:2px;display:block}.project:hover,.project:focus-within{background:color-mix(in srgb, var(--portfolio-accent-soft) 42%, var(--portfolio-raised));border-color:var(--portfolio-accent);box-shadow:0 18px 42px color-mix(in srgb, var(--portfolio-accent) 18%, transparent);transform:translateY(-3px)scale(1.015)}:root[data-theme=dark] .project:hover,:root[data-theme=dark] .project:focus-within{background:linear-gradient(180deg, color-mix(in srgb, var(--portfolio-accent-soft) 40%, var(--portfolio-raised)), color-mix(in srgb, var(--portfolio-raised) 90%, var(--portfolio-page)));border-color:color-mix(in srgb, var(--portfolio-accent) 66%, var(--portfolio-line));box-shadow:0 1px 0 #ffffff0f inset, 0 18px 46px color-mix(in srgb, var(--portfolio-accent) 16%, #00000085)}.project:hover h3,.project:focus-within h3{color:var(--portfolio-accent)}.more-projects{background:var(--button-secondary-bg);border-color:var(--button-secondary-border);color:var(--button-secondary-text);margin-top:14px}.contact{border-bottom:0;align-items:start;padding-bottom:18px}.contact-intro{max-width:470px}.contact-opportunity{gap:0;margin-top:clamp(14px,2vw,22px);display:grid}.contact-intro .contact-role{color:color-mix(in srgb, var(--portfolio-accent) 84%, var(--portfolio-ink));letter-spacing:0;margin:0 0 12px;font-size:clamp(1.24rem,2vw,1.72rem);font-weight:750;line-height:1.3}.contact-intro .contact-summary,.contact-intro .contact-invite{color:var(--portfolio-muted);max-width:430px;font-size:clamp(.96rem,1.25vw,1.04rem);line-height:1.58}.contact-intro .contact-summary{margin-bottom:8px}.contact-intro .contact-invite{color:color-mix(in srgb, var(--portfolio-muted) 82%, var(--portfolio-ink))}.contact-form{background:linear-gradient(135deg, color-mix(in srgb, var(--portfolio-accent-soft) 55%, transparent), transparent 38%), color-mix(in srgb, var(--portfolio-raised) 96%, transparent);border:1px solid var(--portfolio-line);box-shadow:0 1px 0 color-mix(in srgb, var(--portfolio-raised) 96%, transparent) inset, 0 22px 62px color-mix(in srgb, var(--portfolio-ink) 9%, transparent);border-radius:8px;gap:15px;padding:clamp(18px,2.4vw,28px);display:grid}.contact-fields-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.contact-field{gap:8px;display:grid}.contact-field>span{color:var(--portfolio-muted);letter-spacing:.06em;text-transform:uppercase;font-size:.72rem;font-weight:900;line-height:1.2}.contact-field input,.contact-field textarea{background:color-mix(in srgb, var(--portfolio-surface) 88%, var(--portfolio-soft));border:1px solid color-mix(in srgb, var(--portfolio-line) 88%, var(--portfolio-accent));box-sizing:border-box;color:var(--portfolio-ink);font:inherit;letter-spacing:0;border-radius:22px;outline:none;width:100%;padding:0 20px;transition:background .18s,border-color .18s,box-shadow .18s}:root[data-theme=dark] .contact-field input,:root[data-theme=dark] .contact-field textarea,:root[data-theme=dark] .chat-composer,:root[data-theme=dark] .chat-suggestions span,:root[data-theme=dark] .chat-message.is-assistant,:root[data-theme=dark] .project-modal-card{background:color-mix(in srgb, var(--portfolio-surface) 88%, #263b52);border-color:color-mix(in srgb, var(--portfolio-line) 86%, var(--portfolio-accent));box-shadow:inset 0 1px #ffffff08}:root[data-theme=dark] .section{border-color:color-mix(in srgb, var(--portfolio-line) 72%, transparent)}:root[data-theme=dark] .contact-field input:focus,:root[data-theme=dark] .contact-field textarea:focus{background:color-mix(in srgb, var(--portfolio-surface) 94%, #1d344f);border-color:color-mix(in srgb, var(--portfolio-accent) 72%, #fff);box-shadow:0 0 0 4px color-mix(in srgb, var(--portfolio-accent) 20%, transparent), 0 14px 34px #00000057}.contact-field input{min-height:62px}.contact-field textarea{resize:vertical;min-height:168px;padding-block:18px;line-height:1.55}.contact-field input::placeholder,.contact-field textarea::placeholder{color:color-mix(in srgb, var(--portfolio-muted) 74%, transparent);opacity:1}.contact-field input:focus,.contact-field textarea:focus{background:var(--portfolio-surface);border-color:var(--portfolio-accent);box-shadow:0 0 0 4px color-mix(in srgb, var(--portfolio-accent) 18%, transparent), 0 14px 40px color-mix(in srgb, var(--portfolio-accent) 11%, transparent)}.contact-form>button{background:var(--button-primary-bg);border:1px solid var(--button-primary-border);color:var(--button-primary-text);cursor:pointer;letter-spacing:0;border-radius:999px;justify-content:center;justify-self:start;align-items:center;min-height:62px;padding:0 28px;font-weight:900;transition:background .18s,border-color .18s,box-shadow .18s,color .18s,transform .18s;display:inline-flex}.contact-form>button:hover,.contact-form>button:focus-visible{background:var(--button-primary-hover-bg);border-color:var(--button-primary-hover-border);box-shadow:0 18px 44px color-mix(in srgb, var(--portfolio-accent) 26%, transparent);color:var(--button-primary-text);transform:translateY(-1px)}.project-modal-backdrop{z-index:1000;background:#070d148f;justify-content:center;align-items:center;padding:clamp(18px,4vh,32px);animation:.18s both modal-backdrop-in;display:flex;position:fixed;inset:0}:root[data-theme=dark] .project-modal-backdrop{background:radial-gradient(circle at 50% 28%,#1e3e5f33,#0000 42%),#030c18bd}.project-modal{background:var(--portfolio-raised);border:1px solid var(--portfolio-line);box-sizing:border-box;box-shadow:var(--portfolio-shadow);z-index:1010;border-radius:10px;flex-direction:column;width:min(90vw,1280px);max-width:1280px;height:min(88svh,900px);margin:auto;padding:clamp(14px,2vw,20px);animation:.22s cubic-bezier(.22,1,.36,1) both modal-panel-in;display:flex;position:relative;overflow:hidden}@keyframes modal-backdrop-in{0%{opacity:0}}@keyframes modal-panel-in{0%{opacity:0;transform:translateY(10px)scale(.985)}}.project-modal-header{border-bottom:1px solid var(--portfolio-line);flex:none;justify-content:space-between;align-items:start;gap:12px;margin-bottom:10px;padding-bottom:10px;display:flex}.project-modal-controls{flex:none;justify-content:flex-end;align-items:center;gap:8px;display:flex}.modal-language-switch{background:color-mix(in srgb, var(--portfolio-raised) 72%, transparent)}.modal-theme-toggle,.project-modal-close{min-height:36px}:root[data-theme=dark] .project-modal-header,:root[data-theme=dark] .project-modal-tabs,:root[data-theme=dark] .chat-header{border-color:color-mix(in srgb, var(--portfolio-line) 84%, transparent)}.project-modal-close{background:var(--button-secondary-bg);border-color:var(--button-secondary-border);color:var(--button-secondary-text);flex:none;justify-content:center;align-items:center;width:36px;height:36px;padding:0;display:inline-flex}.project-modal-close span{font-size:1rem;font-weight:900;line-height:1;display:block}.project-modal-tabs{border-bottom:1px solid var(--portfolio-line);flex-wrap:wrap;flex:none;justify-content:space-between;align-items:center;gap:4px;margin-bottom:10px;padding-bottom:8px;display:flex}.project-modal-tabs>div{grid-template-columns:repeat(4,minmax(0,1fr));gap:5px;width:100%;display:grid}.project-modal-tabs button{background:var(--button-secondary-bg);border:1px solid var(--button-secondary-border);color:var(--button-secondary-text);cursor:pointer;letter-spacing:0;border-radius:8px;justify-content:center;align-items:center;width:100%;min-height:32px;padding:0 9px;font-size:.84rem;font-weight:850;transition:background .22s,border-color .22s,box-shadow .22s,color .18s,transform .22s cubic-bezier(.22,1,.36,1);display:inline-flex}.project-modal-tabs button:hover,.project-modal-tabs button:focus-visible,.project-modal-tabs button.is-active{background:var(--button-secondary-hover-bg);border-color:var(--button-secondary-hover-border);box-shadow:0 1px 0 color-mix(in srgb, var(--portfolio-raised) 72%, transparent) inset, 0 10px 24px color-mix(in srgb, var(--portfolio-accent) 10%, transparent);color:var(--portfolio-accent);transform:translateY(-1px)}:root[data-theme=dark] .project-modal-tabs button:hover,:root[data-theme=dark] .project-modal-tabs button:focus-visible,:root[data-theme=dark] .project-modal-tabs button.is-active{background:var(--button-secondary-hover-bg);border-color:var(--button-secondary-hover-border);color:#d8ebff}.project-workspace{flex-direction:column;flex:auto;min-height:0;display:flex;overflow:hidden}.project-docs-layout{border:1px solid var(--portfolio-line);border-radius:8px;flex:auto;grid-template-columns:minmax(188px,224px) minmax(0,1fr);min-height:0;display:grid;overflow:hidden}.project-doc-sidebar{background:color-mix(in srgb, var(--portfolio-soft) 78%, transparent);border-right:1px solid var(--portfolio-line);scrollbar-gutter:stable;min-height:0;padding:14px 10px;overflow-y:auto}.project-doc-nav-section+.project-doc-nav-section{margin-top:4px}.project-doc-nav-section>button,.project-doc-nav-pages button{color:var(--portfolio-muted);cursor:pointer;font:inherit;letter-spacing:0;text-align:left;background:0 0;border:0;border-radius:6px;gap:7px;width:100%;padding:8px 9px;font-size:.9rem;font-weight:820;line-height:1.25;display:flex}.project-doc-nav-section>button span{color:color-mix(in srgb, var(--portfolio-muted) 78%, transparent);flex:0 0 12px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.76rem;line-height:1.45}.project-doc-nav-section>button:hover,.project-doc-nav-section>button:focus-visible,.project-doc-nav-section>button.is-open{background:color-mix(in srgb, var(--portfolio-raised) 82%, transparent);color:var(--portfolio-ink)}.project-doc-nav-pages{border-left:1px solid var(--portfolio-line);opacity:0;grid-template-rows:0fr;margin:0 0 0 15px;padding-left:8px;transition:grid-template-rows .18s,margin .18s,opacity .16s;display:grid;overflow:hidden}.project-doc-nav-section>button.is-open+.project-doc-nav-pages{opacity:1;grid-template-rows:1fr;margin-top:2px;margin-bottom:8px}.project-doc-nav-pages>div{min-height:0;overflow:hidden}.project-doc-nav-pages button{padding:7px 8px;font-size:.84rem;font-weight:760}.project-doc-nav-pages button:hover,.project-doc-nav-pages button:focus-visible,.project-doc-nav-pages button.is-active{background:color-mix(in srgb, var(--portfolio-accent) 10%, transparent);color:var(--portfolio-accent)}.project-doc-viewer{background:var(--portfolio-raised);scrollbar-gutter:stable;min-height:0;padding:clamp(18px,2.4vw,30px);overflow-y:auto}.project-doc-viewer:focus{outline:none}.project-markdown-document{color:var(--portfolio-ink);gap:26px;max-width:82ch;line-height:1.66;display:grid}.project-markdown-section{gap:13px;scroll-margin-top:20px;display:grid}.project-markdown{gap:13px;display:grid}.project-markdown-section>h2,.project-markdown h2,.project-markdown h3{color:var(--portfolio-ink);letter-spacing:0;line-height:1.2}.project-markdown-section>h2,.project-markdown h2{margin:3px 0 1px;font-size:clamp(1.16rem,1.7vw,1.42rem)}.project-markdown h3{margin:7px 0 0;font-size:.98rem}.project-markdown p,.project-markdown li,.project-markdown td,.project-markdown th,.project-markdown blockquote{font-size:.93rem}.project-markdown p,.project-markdown li{color:var(--portfolio-muted);line-height:1.68}.project-markdown p{margin:0}.project-markdown ul,.project-markdown ol{gap:8px;margin:0;padding-left:20px;display:grid}.project-markdown blockquote{border-left:3px solid var(--portfolio-accent);color:var(--portfolio-ink);margin:0;padding:8px 0 8px 14px;font-weight:850}.project-markdown-divider{border:0;border-top:1px solid var(--portfolio-line);width:100%;margin:6px 0}.project-markdown-code-frame{background:var(--markdown-code-bg);border:1px solid color-mix(in srgb, var(--portfolio-line) 74%, #fff);color:var(--markdown-code-ink);border-radius:8px;margin:0;overflow:hidden;box-shadow:inset 0 1px #ffffffc7}:root[data-theme=dark] .project-markdown-code-frame{border-color:var(--portfolio-line);box-shadow:inset 0 1px #ffffff12}.project-markdown-code-frame figcaption{background:var(--markdown-code-header);border-bottom:1px solid color-mix(in srgb, var(--portfolio-line) 68%, #fff);color:var(--markdown-code-muted);letter-spacing:.045em;text-transform:uppercase;padding:7px 13px;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:.66rem;font-weight:700;line-height:1}:root[data-theme=dark] .project-markdown-code-frame figcaption{border-bottom-color:var(--portfolio-line);letter-spacing:.06em;padding:9px 14px;font-size:.72rem;font-weight:800}.project-markdown-code{background:var(--markdown-code-bg);color:var(--markdown-code-ink);scrollbar-gutter:stable;tab-size:2;margin:0;padding:14px 16px;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:.84rem;line-height:1.62;overflow-x:auto}.project-markdown-code code{color:inherit;white-space:pre;background:0 0;border-radius:0;min-width:max-content;padding:0;display:block}.project-markdown-text-diagram{background:linear-gradient(90deg, color-mix(in srgb, var(--portfolio-accent) 12%, transparent), transparent 36%), var(--markdown-workflow-bg);border:1px solid color-mix(in srgb, var(--portfolio-line) 78%, var(--portfolio-accent));color:var(--markdown-workflow-ink);border-radius:8px;margin:0;overflow:hidden}.project-markdown-text-diagram pre{color:inherit;scrollbar-gutter:stable;tab-size:2;background:0 0;margin:0;padding:16px 18px;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:.86rem;font-weight:650;line-height:1.85;overflow-x:auto}.project-markdown-text-diagram span{white-space:pre;min-width:max-content;display:block}:root[data-theme=dark] .project-markdown-text-diagram{background:linear-gradient(90deg, color-mix(in srgb, var(--portfolio-accent) 10%, transparent), transparent 36%), var(--markdown-workflow-bg);border-color:color-mix(in srgb, var(--portfolio-line) 82%, var(--portfolio-accent))}.project-markdown-callout{--callout-accent:var(--portfolio-accent);background:color-mix(in srgb, var(--callout-accent) 8%, transparent);border:1px solid color-mix(in srgb, var(--callout-accent) 32%, var(--portfolio-line));border-left:4px solid var(--callout-accent);border-radius:8px;gap:8px;padding:12px 14px;display:grid}.project-markdown-callout-note{--callout-accent:#64748b}.project-markdown-callout-info{--callout-accent:#2563eb}.project-markdown-callout-tip{--callout-accent:#0f766e}.project-markdown-callout-warning{--callout-accent:#d97706}.project-markdown-callout-danger{--callout-accent:#dc2626}.project-markdown-callout-success{--callout-accent:#16a34a}.project-markdown-callout-aws{--callout-accent:#f90}.project-markdown-callout-gcp{--callout-accent:#4285f4}.project-markdown-callout-title{color:color-mix(in srgb, var(--callout-accent) 80%, var(--portfolio-ink));letter-spacing:.02em;text-transform:uppercase;margin:0;font-size:.82rem;font-weight:900}.project-markdown-callout .project-markdown{gap:8px}.project-markdown-callout .project-markdown p,.project-markdown-callout .project-markdown li{color:var(--portfolio-ink)}.project-markdown-mermaid{background:color-mix(in srgb, var(--portfolio-soft) 78%, var(--portfolio-raised) 18%);border:1px solid var(--portfolio-line);scrollbar-gutter:stable;border-radius:8px;justify-items:center;width:100%;margin:0;padding:14px;display:grid;overflow-x:auto}.project-markdown-mermaid-svg{min-width:0;max-width:100%;margin-inline:auto;padding:2px;display:inline-block}.project-markdown-mermaid svg{min-width:0;max-width:min(100%,1000px);height:auto;max-height:min(520px,62svh);margin-inline:auto;display:block;overflow:visible}.project-markdown-mermaid svg g,.project-markdown-mermaid svg .node,.project-markdown-mermaid svg .label{overflow:visible}.project-markdown-mermaid svg text,.project-markdown-mermaid svg foreignObject{font-size:13px;overflow:visible}.project-markdown-warning-block{background:color-mix(in srgb, #d97706 8%, var(--portfolio-raised));border:1px solid color-mix(in srgb, #d97706 36%, var(--portfolio-line));border-radius:8px;gap:12px;width:100%;margin:0;padding:14px;display:grid}.project-markdown-warning-block>p{color:var(--portfolio-ink);margin:0;font-weight:900}.project-markdown-warning-block .project-markdown-code-frame{margin:0}.project-markdown-table-wrap{border:1px solid var(--portfolio-line);border-radius:8px;overflow:auto}.project-markdown-table{border-collapse:collapse;min-width:100%}.project-markdown-table th,.project-markdown-table td{border-bottom:1px solid var(--portfolio-line);text-align:left;vertical-align:top;padding:10px 12px}.project-markdown-table th{background:var(--portfolio-soft);color:var(--portfolio-ink);white-space:nowrap;font-weight:900}.project-markdown-table td{color:var(--portfolio-muted)}.project-markdown-table tr:last-child td{border-bottom:0}.project-markdown-link-list{padding-left:0;list-style:none}.project-markdown-link-list li{border:1px solid var(--portfolio-line);border-radius:8px;padding:12px}.project-markdown-link-list a,.project-markdown-link-list span{color:var(--portfolio-accent);font-weight:900;text-decoration:none}.project-markdown-link-list p{margin-top:4px}.project-markdown-figure{background:color-mix(in srgb, var(--portfolio-soft) 48%, transparent);border:1px solid var(--portfolio-line);border-radius:8px;place-items:center;gap:10px;margin:0;padding:16px;display:grid}.project-markdown-figure img{object-fit:contain;max-width:100%;max-height:min(420px,46svh);display:block}.project-markdown-figure.is-image-missing img{display:none}.project-markdown-image-fallback{aspect-ratio:16/9;background:color-mix(in srgb, var(--portfolio-muted) 10%, transparent);border:1px dashed color-mix(in srgb, var(--portfolio-muted) 50%, transparent);color:var(--portfolio-muted);text-align:center;border-radius:6px;place-items:center;width:100%;min-height:120px;padding:16px;font-size:.9rem;font-weight:900;display:grid}.project-markdown-figure figcaption{color:var(--portfolio-muted);text-align:center;font-size:.84rem;font-weight:820}.project-markdown-gallery{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:14px;display:grid}.project-markdown-gallery-item{background:color-mix(in srgb, var(--portfolio-soft) 48%, transparent);border:1px solid var(--portfolio-line);border-radius:8px;gap:8px;margin:0;padding:10px;display:grid;overflow:hidden}.project-markdown-gallery-item img{aspect-ratio:16/10;object-fit:contain;border-radius:6px;width:100%;height:auto;display:block}.project-markdown-gallery-item figcaption{color:var(--portfolio-muted);text-align:center;font-size:.84rem;font-weight:820}.project-tab-panel{overscroll-behavior:contain;scrollbar-gutter:stable;flex:auto;min-width:0;height:100%;min-height:0;padding:1px 4px 8px 0;animation:.18s both project-tab-in;overflow-y:auto}.project-tab-panel>*{max-width:100%}.project-tab-panel>:first-child{margin-top:0}.project-tab-panel>:last-child{margin-bottom:0}@keyframes project-tab-in{0%{opacity:0;transform:translateY(4px)}}.project-tab-stack{align-content:start;gap:8px;min-height:100%;display:grid}.project-modal-card{background:var(--portfolio-soft);border:1px solid var(--portfolio-line);border-radius:8px;gap:8px;min-height:0;padding:clamp(12px,1.6vw,16px);display:grid}.project-overview-lead .project-type{color:var(--portfolio-accent);letter-spacing:0;text-transform:uppercase;margin-bottom:8px;font-size:.74rem;font-weight:900}.project-overview-lead h3{margin-bottom:8px;font-size:clamp(1.25rem,2vw,1.55rem)}.project-card-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch;gap:10px;display:grid}.project-detail-grid article:last-child{grid-column:1/-1;min-height:auto}.project-detail-grid--compact article:last-child{grid-column:auto}.project-detail-grid ul{flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;display:flex}.project-detail-grid li{background:var(--portfolio-raised);border:1px solid var(--portfolio-line);color:var(--portfolio-ink);letter-spacing:0;border-radius:999px;padding:8px 11px;font-size:.86rem;font-weight:800;transition:background .18s,border-color .18s,color .18s,transform .18s}:root[data-theme=dark] .architecture-step.is-highlighted>span:first-child{background:color-mix(in srgb, var(--portfolio-accent) 22%, var(--portfolio-soft));border-color:color-mix(in srgb, var(--portfolio-accent) 64%, var(--portfolio-line));color:#f0f8ff;box-shadow:0 10px 26px #0000004d}.project-modal-card h4{color:var(--portfolio-ink);margin-bottom:8px;font-size:.88rem;font-weight:900}.modal-architecture-diagram{background:color-mix(in srgb, var(--portfolio-raised) 88%, transparent);border:1px dashed color-mix(in srgb, var(--portfolio-line) 72%, var(--portfolio-accent));border-radius:8px;justify-content:center;align-items:center;min-height:clamp(118px,16svh,165px);padding:12px;display:flex;overflow:hidden}.modal-architecture-diagram img{object-fit:contain;max-width:100%;max-height:min(200px,22svh);display:block}.modal-architecture-diagram>div{color:var(--portfolio-muted);text-align:center;gap:6px;max-width:420px;display:grid}.modal-architecture-diagram img+div,.modal-architecture-diagram.is-image-missing img{display:none}.modal-architecture-diagram.is-image-missing img+div{display:grid}.modal-architecture-diagram span{color:var(--portfolio-ink);font-size:.94rem;font-weight:900}.system-layer-grid ul{flex-wrap:wrap;gap:7px;margin:0;padding:0;list-style:none;display:flex}.system-layer-grid li{background:var(--portfolio-soft);border:1px solid var(--portfolio-line);color:var(--portfolio-muted);border-radius:999px;padding:6px 8px;font-size:.78rem;font-weight:800}.project-challenges-panel article>div{border-top:1px solid var(--portfolio-line);padding-top:10px}.project-documentation-panel>article:first-child p{max-width:68ch}.project-documentation-grid span{color:var(--portfolio-accent);letter-spacing:0;text-transform:uppercase;margin-bottom:6px;font-size:.7rem;font-weight:900;display:block}.architecture-flow{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.architecture-flow.compact-flow{margin-top:2px}.architecture-step{color:var(--portfolio-muted);cursor:default;font:inherit;text-align:left;background:0 0;border:0;align-items:center;gap:8px;padding:0;transition:color .18s,transform .18s;display:inline-flex}.architecture-step:hover,.architecture-step:focus-visible{color:var(--portfolio-accent)}.architecture-step>span:first-child{background:color-mix(in srgb, var(--portfolio-raised) 92%, transparent);border:1px solid var(--portfolio-line);color:inherit;border-radius:999px;padding:8px 10px;font-size:.85rem;font-weight:850;transition:background .18s,border-color .18s,color .18s,box-shadow .18s}.architecture-step.is-highlighted{color:var(--portfolio-accent);transform:translateY(-1px)}.architecture-step.is-highlighted>span:first-child{background:var(--portfolio-accent-soft);border-color:color-mix(in srgb, var(--portfolio-accent) 48%, var(--portfolio-line));box-shadow:0 10px 26px color-mix(in srgb, var(--portfolio-accent) 14%, transparent)}.architecture-arrow{color:color-mix(in srgb, var(--portfolio-muted) 74%, transparent);font-weight:800}.chat-page-backdrop{pointer-events:auto;z-index:1190;background:#09121f57;animation:.22s both chat-backdrop-fade;position:fixed;inset:0}:root[data-theme=dark] .chat-page-backdrop{background:#03091285}@keyframes chat-backdrop-fade{0%{opacity:0}to{opacity:1}}.assistant-workspace-shell{height:min(620px, calc(100svh - var(--portfolio-sticky-offset) - 48px));opacity:0;pointer-events:none;visibility:hidden;z-index:1200;grid-template-columns:142px 34px minmax(0,560px);align-items:start;gap:10px;transition:bottom .24s cubic-bezier(.22,1,.36,1),grid-template-columns .24s cubic-bezier(.22,1,.36,1),height .24s cubic-bezier(.22,1,.36,1),left .24s cubic-bezier(.22,1,.36,1),opacity .22s,right .24s cubic-bezier(.22,1,.36,1),top .24s cubic-bezier(.22,1,.36,1),transform .24s cubic-bezier(.22,1,.36,1),visibility .24s;display:grid;position:fixed;bottom:16px;right:16px;transform:translate(calc(100% + 42px))}.assistant-workspace-shell.is-docked-left{grid-template-columns:minmax(0,560px) 34px 142px;left:16px;right:auto;transform:translate(calc(-100% - 42px))}.assistant-workspace-shell.is-docked-left.is-open{transform:translate(0)}.assistant-workspace-shell.is-open{opacity:1;pointer-events:auto;visibility:visible;transform:translate(0)}.assistant-workspace-shell.is-dragging,.assistant-workspace-shell.is-dragging *{cursor:grabbing;-webkit-user-select:none;user-select:none}.assistant-workspace-shell.is-sidebar-collapsed{grid-template-columns:0 34px minmax(0,560px)}.assistant-workspace-shell.is-docked-left.is-sidebar-collapsed{grid-template-columns:minmax(0,560px) 34px 0}.assistant-workspace-shell.is-expanded{height:min(760px, calc(100svh - var(--portfolio-sticky-offset) - 48px));max-height:calc(100svh - var(--portfolio-sticky-offset) - 48px);grid-template-columns:142px 34px minmax(0,min(1080px,100vw - 248px));bottom:12px;left:auto;right:16px;top:auto!important}.assistant-workspace-shell.is-expanded.is-docked-left{grid-template-columns:minmax(0,min(1080px,100vw - 248px)) 34px 142px;left:16px;right:auto}.assistant-workspace-shell.is-expanded.is-sidebar-collapsed{grid-template-columns:0 34px minmax(0,min(1080px,100vw - 114px))}.assistant-workspace-shell.is-expanded.is-docked-left.is-sidebar-collapsed{grid-template-columns:minmax(0,min(1080px,100vw - 114px)) 34px 0}.chat-window{background:color-mix(in srgb, var(--portfolio-raised) 97%, transparent);border:1px solid var(--portfolio-line);box-sizing:border-box;box-shadow:var(--portfolio-shadow);color:var(--portfolio-ink);border-radius:8px;grid-template-rows:auto minmax(0,1fr) auto;gap:11px;width:100%;height:100%;padding:14px;display:grid;overflow:hidden}.assistant-workspace-shell.is-expanded .chat-thread,.assistant-workspace-shell.is-expanded .chat-messages,.assistant-workspace-shell.is-expanded .chat-composer,.assistant-workspace-shell.is-expanded .chat-main{width:100%}.chat-header{border-bottom:1px solid var(--portfolio-line);justify-content:space-between;align-items:start;gap:9px;padding-bottom:10px;display:flex}.chat-suggestions>p,.message-role{color:var(--portfolio-accent);letter-spacing:0;text-transform:uppercase;margin-bottom:5px;font-size:.68rem;font-weight:900;line-height:1.2;display:block}.chat-title-group{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;flex:1;gap:3px;min-width:0;display:grid}.assistant-workspace-shell.is-expanded .chat-title-group{cursor:default;touch-action:auto}.assistant-project-title{color:var(--portfolio-ink);letter-spacing:0;margin:0;font-size:1.08rem;font-weight:800;line-height:1.2}.assistant-title-aws{color:#f90}.assistant-title-gcp{color:#4285f4}.chat-title-group p{color:var(--portfolio-muted);margin:0;font-size:.76rem;font-weight:750;line-height:1.25}.chat-close,.chat-expand,.chat-reset{background:var(--button-secondary-bg);border:1px solid var(--button-secondary-border);color:var(--button-secondary-text);border-radius:8px;flex:0 0 32px;justify-content:center;align-items:center;height:32px;font-size:.9rem;font-weight:900;transition:background .18s,border-color .18s,box-shadow .18s,color .18s,transform .18s;display:inline-flex}:root[data-theme=dark] .chat-close,:root[data-theme=dark] .chat-expand,:root[data-theme=dark] .chat-reset{background:var(--button-secondary-bg);border-color:var(--button-secondary-border);color:var(--button-secondary-text)}.chat-reset{margin-left:auto}.chat-expand{position:relative}.chat-expand span{font-size:.95rem;line-height:1;display:block}.chat-close span,.chat-reset span{font-size:1rem;line-height:1;display:block}.project-workspace-sidebar{background:color-mix(in srgb, var(--portfolio-surface) 86%, transparent);border:1px solid var(--portfolio-line);box-sizing:border-box;box-shadow:0 18px 36px color-mix(in srgb, var(--portfolio-ink) 12%, transparent);visibility:visible;z-index:2;border-radius:8px;grid-template-rows:auto minmax(0,1fr);gap:8px;width:142px;min-height:0;padding:8px;transition:opacity .18s,transform .22s cubic-bezier(.22,1,.36,1),visibility .18s;display:grid;position:relative;overflow:visible;transform:translate(0)}.assistant-workspace-shell.is-docked-left .project-workspace-sidebar{order:3}.project-workspace-sidebar.is-collapsed{opacity:0;pointer-events:none;visibility:hidden;transform:translate(-12px)}.assistant-workspace-shell.is-docked-left .project-workspace-sidebar.is-collapsed{transform:translate(12px)}.project-workspace-sidebar-header{justify-content:flex-start;align-items:center;gap:6px;min-height:28px;display:flex}.project-workspace-sidebar-header span{color:var(--portfolio-accent);letter-spacing:0;text-transform:uppercase;font-size:.68rem;font-weight:900;line-height:1.2}.project-sidebar-toggle{background:var(--button-secondary-bg);border:1px solid var(--button-secondary-border);box-sizing:border-box;color:var(--button-secondary-text);border-radius:8px;flex:0 0 28px;justify-content:center;align-items:center;height:28px;margin-top:8px;font-size:1rem;font-weight:900;transition:background .18s,border-color .18s,box-shadow .18s,color .18s,transform .18s;display:inline-flex}.assistant-workspace-shell.is-docked-left .project-sidebar-toggle{order:2}.project-sidebar-toggle:hover,.project-sidebar-toggle:focus-visible{background:var(--button-primary-bg);border-color:var(--button-primary-bg);box-shadow:0 10px 20px color-mix(in srgb, var(--portfolio-accent) 18%, transparent);color:var(--button-primary-text);transform:translateY(-1px)}.project-workspace-list{gap:7px;min-width:0;display:grid;overflow:visible}.project-workspace-list button{background:color-mix(in srgb, var(--portfolio-raised) 88%, transparent);border:1px solid var(--portfolio-line);color:var(--portfolio-muted);font:inherit;text-align:left;white-space:nowrap;border-radius:8px;align-items:center;width:100%;min-width:0;height:34px;padding:0 10px;font-size:.78rem;font-weight:850;line-height:1.1;transition:background .18s,border-color .18s,box-shadow .18s,color .18s,transform .18s;display:flex;position:relative;overflow:hidden}.project-workspace-list button:hover,.project-workspace-list button:focus-visible{background:var(--portfolio-raised);border-color:var(--portfolio-accent);box-shadow:0 12px 24px color-mix(in srgb, var(--portfolio-accent) 14%, transparent);color:var(--portfolio-ink);z-index:4;overflow:visible;transform:translateY(-1px)}.project-workspace-list button.is-active{background:color-mix(in srgb, var(--portfolio-accent) 12%, var(--portfolio-raised));border-color:color-mix(in srgb, var(--portfolio-accent) 72%, var(--portfolio-line));color:var(--portfolio-accent)}.workspace-short-label,.workspace-full-label{text-overflow:ellipsis;min-width:0;display:block;overflow:hidden}.workspace-full-label,.project-workspace-list button:hover .workspace-short-label,.project-workspace-list button:focus-visible .workspace-short-label{display:none}.project-workspace-list button:hover .workspace-full-label,.project-workspace-list button:focus-visible .workspace-full-label{background:var(--portfolio-raised);border:1px solid var(--portfolio-accent);box-shadow:0 12px 24px color-mix(in srgb, var(--portfolio-accent) 14%, transparent);color:var(--portfolio-ink);text-overflow:clip;z-index:5;border-radius:8px;align-items:center;width:336px;height:34px;padding:0 10px;display:flex;position:absolute;top:-1px;left:-1px;overflow:visible}.assistant-workspace-shell.is-docked-left .project-workspace-list button:hover .workspace-full-label,.assistant-workspace-shell.is-docked-left .project-workspace-list button:focus-visible .workspace-full-label{left:auto;right:-1px}.chat-main{grid-template-rows:minmax(0,1fr);gap:10px;min-width:0;display:grid}.chat-active-project{background:color-mix(in srgb, var(--portfolio-soft) 78%, transparent);border:1px solid var(--portfolio-line);border-radius:8px;gap:3px;padding:9px 10px;display:grid}.chat-active-project h3{color:var(--portfolio-ink);margin:0;font-size:.92rem;font-weight:850;line-height:1.2}.chat-active-project p{color:var(--portfolio-muted);margin:0;font-size:.74rem;font-weight:750;line-height:1.25}.chat-thread{align-content:start;gap:10px;min-height:0;display:grid;overflow:auto}.assistant-workspace-shell.is-docked-left .chat-window{order:1}.chat-suggestions>div{gap:6px;display:grid}.chat-suggestions span,.chat-suggestions button{background:color-mix(in srgb, var(--portfolio-surface) 82%, transparent);border:1px solid var(--portfolio-line);color:var(--portfolio-muted);text-align:left;border-radius:8px;width:100%;padding:7px 9px;font-size:.8rem;line-height:1.38;display:block}.chat-suggestions button{cursor:pointer;transition:border-color .18s,color .18s}.chat-suggestions button:hover,.chat-suggestions button:focus-visible{border-color:var(--portfolio-accent);color:var(--portfolio-accent)}.chat-messages{gap:7px;display:grid}.chat-message{background:var(--portfolio-soft);border:1px solid var(--portfolio-line);border-radius:8px;gap:5px;max-width:min(96%,620px);padding:9px 10px;display:grid}.assistant-message-header{border-bottom:1px solid color-mix(in srgb, var(--portfolio-line) 76%, transparent);flex-wrap:wrap;align-items:baseline;gap:5px 8px;padding-bottom:5px;display:flex}.message-status{color:#6d63c8;align-items:center;gap:8px;font-size:.74rem;font-weight:850;line-height:1.2;display:inline-flex}.message-status:before{color:color-mix(in srgb, var(--portfolio-muted) 56%, transparent);content:"|";font-weight:800}:root[data-theme=dark] .message-status{color:#b6adff}.chat-message.is-assistant{border-left:3px solid var(--portfolio-accent);justify-self:start;width:min(100%,620px)}.chat-message.is-user{background:var(--button-primary-bg);border-color:color-mix(in srgb, var(--button-primary-bg) 84%, white);color:var(--button-primary-text);justify-self:end;max-width:min(78%,420px)}.chat-message.is-user>span,.chat-message.is-user p{color:var(--button-primary-text)}.chat-message p{color:var(--portfolio-ink);white-space:pre-wrap;margin:0;font-size:.86rem;line-height:1.45}.chat-sample-prompts{color:var(--portfolio-ink);gap:5px;display:grid}.chat-sample-prompts span{color:var(--portfolio-muted);font-size:.8rem;font-weight:850;line-height:1.3}.chat-sample-prompts ol{color:var(--portfolio-ink);gap:3px;margin:0;padding-left:18px;font-size:.84rem;line-height:1.38;display:grid}.chat-sample-prompts li{padding-left:2px}.assistant-workspace-shell.is-expanded .chat-message.is-assistant{width:100%;max-width:100%}.assistant-workspace-shell.is-expanded .chat-message.is-user{max-width:min(58%,520px)}.chat-sources{background:var(--portfolio-surface);border:1px solid var(--portfolio-line);border-radius:8px;padding:8px 10px}.chat-sources summary{color:var(--portfolio-muted);cursor:pointer;letter-spacing:0;text-transform:uppercase;margin-bottom:6px;font-size:.7rem;font-weight:900}.chat-sources:not([open]) summary{margin-bottom:0}.chat-sources ul{gap:5px;margin:0;padding:0;list-style:none;display:grid}.chat-sources li{color:var(--portfolio-ink);font-size:.8rem;line-height:1.3}.chat-source-line{flex-wrap:wrap;align-items:baseline;gap:4px;display:flex}.chat-source-line strong{color:var(--portfolio-accent);font-size:.74rem;font-weight:900}.chat-sources small{color:var(--portfolio-muted);font-size:.72rem}.chat-composer{background:var(--portfolio-surface);border:1px solid var(--portfolio-line);border-radius:8px;justify-content:space-between;align-items:flex-end;gap:7px;min-height:48px;padding:8px 6px 6px 18px;display:flex;position:relative}.chat-composer>span{color:var(--portfolio-muted);padding-left:6px;font-size:.82rem;line-height:1.35}.chat-composer textarea{box-sizing:border-box;color:var(--portfolio-ink);font:inherit;resize:none;background:0 0;border:0;outline:0;flex:1;min-height:44px;max-height:180px;padding:5px;font-size:.82rem;line-height:1.34;overflow-y:auto}.chat-composer textarea::placeholder{color:var(--portfolio-muted)}.chat-composer .chat-composer-resize{color:color-mix(in srgb, var(--portfolio-muted) 82%, transparent);cursor:ns-resize;opacity:.8;touch-action:none;background:0 0;border:0;border-radius:6px;justify-content:center;align-items:center;width:16px;height:24px;padding:0;display:inline-flex;position:absolute;top:3px;left:3px}.chat-composer-resize span{width:8px;height:14px;display:block;position:relative}.chat-composer-resize span:before,.chat-composer-resize span:after{content:"";background:currentColor;border-radius:999px;width:2px;height:100%;position:absolute;top:0}.chat-composer-resize span:before{left:1px}.chat-composer-resize span:after{right:1px}.chat-composer .chat-composer-resize:hover,.chat-composer .chat-composer-resize:focus-visible,.chat-composer.is-resizing .chat-composer-resize{background:color-mix(in srgb, var(--portfolio-accent) 10%, transparent);color:var(--portfolio-accent);opacity:1}.chat-composer.is-resizing,.chat-composer.is-resizing *{cursor:ns-resize;-webkit-user-select:none;user-select:none}.chat-composer-send{background:var(--button-primary-bg);color:var(--button-primary-text);opacity:.74;border:0;border-radius:8px;flex:0 0 36px;justify-content:center;align-items:center;height:36px;display:inline-flex}:root[data-theme=dark] .chat-composer-send{background:var(--button-primary-bg);color:var(--button-primary-text);opacity:.9}.chat-composer-send:disabled{cursor:default}.chat-reset:disabled{cursor:default;opacity:.65}.chat-composer-send span{border-top:2px solid;border-right:2px solid;width:10px;height:10px;display:block;transform:translate(-2px,2px)rotate(45deg)}.chat-launcher{background:var(--button-primary-bg);border:1px solid var(--button-primary-border);box-shadow:0 1px 0 #ffffff1f inset, 0 16px 44px color-mix(in srgb, var(--portfolio-accent) 18%, transparent);color:var(--button-primary-text);touch-action:none;z-index:1210;justify-content:center;place-items:center;width:54px;height:76px;padding:0 10px;transition:background .2s,border-color .2s,box-shadow .2s,color .16s,opacity .22s,height .24s cubic-bezier(.22,1,.36,1),transform .24s cubic-bezier(.22,1,.36,1),visibility .22s,width .24s cubic-bezier(.22,1,.36,1);display:grid;position:fixed;top:calc(55% - 38px);right:0;overflow:hidden;transform:translate(0)}.chat-launcher.is-docked-left{left:0;right:auto}.chat-launcher.is-dragging{cursor:grabbing;transition:none}.chat-launcher:not(.is-dragging){cursor:grab}:root[data-theme=dark] .chat-launcher{background:var(--button-primary-bg);border-color:var(--button-primary-border);box-shadow:0 1px 0 #ffffff2e inset, 0 18px 40px color-mix(in srgb, var(--portfolio-accent) 18%, #0000006b);color:var(--button-primary-text)}.chat-launcher-compact,.chat-launcher-expanded{grid-area:1/1;justify-items:center;gap:5px;transition:opacity .19s,transform .19s;display:grid}.chat-launcher-compact span,.chat-launcher-expanded span{letter-spacing:0;white-space:nowrap;font-size:.82rem;font-weight:950;line-height:1;display:block}.chat-launcher-expanded{opacity:0;transform:translate(8px)}.chat-close:hover,.chat-close:focus-visible,.chat-expand:hover,.chat-expand:focus-visible,.chat-reset:hover,.chat-reset:focus-visible{background:var(--button-secondary-hover-bg);border-color:var(--button-secondary-hover-border);color:var(--portfolio-accent)}.chat-launcher:hover,.chat-launcher:focus-visible{background:var(--button-primary-hover-bg);border-color:var(--button-primary-hover-border);color:var(--button-primary-text);box-shadow:0 1px 0 #ffffff24 inset, 0 18px 46px color-mix(in srgb, var(--portfolio-accent) 18%, transparent);width:142px;height:84px;transform:translate(-3px,-2px)}.chat-launcher.is-docked-left:hover,.chat-launcher.is-docked-left:focus-visible{transform:translate(3px,-2px)}:root[data-theme=dark] .chat-launcher:hover,:root[data-theme=dark] .chat-launcher:focus-visible{background:var(--button-primary-hover-bg);border-color:var(--button-primary-hover-border);color:var(--button-primary-text)}.chat-launcher:hover .chat-launcher-compact,.chat-launcher:focus-visible .chat-launcher-compact{opacity:0;transform:translate(-8px)}.chat-launcher:hover .chat-launcher-expanded,.chat-launcher:focus-visible .chat-launcher-expanded{opacity:1;transform:translate(0)}.chat-launcher.is-hidden{opacity:0;pointer-events:none;visibility:hidden;transform:translate(18px)}.chat-launcher.is-docked-left.is-hidden{transform:translate(-18px)}@media (width<=1040px){:root{--portfolio-sticky-offset:96px}.site-nav{flex-direction:column;align-items:flex-start;gap:10px}.nav-actions{justify-content:space-between;width:100%}.about,.contact{grid-template-columns:1fr}.skill-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.case-study-button{grid-template-columns:1fr}.case-study-preview-placeholder,.case-study-preview-image{max-width:560px}}@media (width<=720px){:root{--portfolio-sticky-offset:138px}.portfolio{padding-bottom:30px}.site-nav{min-height:0}.nav-actions,.nav-tools{flex-direction:column;align-items:flex-start}.nav-links{justify-content:flex-start}.hero{min-height:auto;padding-top:38px}.hero-actions a,.more-projects{width:100%}.skill-grid,.project-grid,.project-card-grid{grid-template-columns:1fr}.case-study-button{gap:14px;padding:15px}.case-study-card.is-featured .case-study-button{border-left-width:4px}.case-study-preview-placeholder,.case-study-preview-image{max-width:none}.case-study-preview-flow{gap:9px 18px}.case-study-preview-link{width:16px}.contact-fields-row{grid-template-columns:1fr}.contact-form>button{width:100%}.skill-grid article,.project,.project-modal-card{min-height:auto}.project-head{flex-direction:column}.project-head button{width:100%}.project-modal-header{flex-direction:column;align-items:stretch}.project-modal-controls{justify-content:flex-start}.project-modal-backdrop{align-items:center;padding:10px}.project-modal{width:calc(100vw - 20px);max-width:100%;height:calc(100svh - 20px);max-height:calc(100svh - 20px);padding:clamp(14px,3.5vw,20px)}.project-workspace{min-height:0}.project-docs-layout{grid-template-rows:auto minmax(0,1fr);grid-template-columns:1fr}.project-doc-sidebar{border-bottom:1px solid var(--portfolio-line);border-right:0;max-height:220px;padding:10px}.project-doc-viewer{padding:16px}.project-markdown-document{max-width:none}.project-tab-panel{padding-right:0}.project-modal-tabs>div{grid-template-columns:repeat(2,minmax(0,1fr))}.assistant-workspace-shell{grid-template-columns:34px minmax(0,1fr);height:min(74svh,620px);inset:auto 12px 12px;transform:translateY(calc(100% + 32px))}.assistant-workspace-shell.is-open{transform:translateY(0)}.assistant-workspace-shell.is-expanded{height:min(86svh, calc(100svh - var(--portfolio-sticky-offset) - 22px))}.assistant-workspace-shell .project-workspace-sidebar{display:none}.assistant-workspace-shell .chat-window,.assistant-workspace-shell.is-expanded .chat-window,.assistant-workspace-shell.is-expanded.is-sidebar-collapsed .chat-window{width:auto}.chat-launcher{width:54px;height:72px;top:auto;bottom:30px;right:0;transform:none}.chat-launcher:hover,.chat-launcher:focus-visible{width:138px;height:78px;transform:translate(-2px,-2px)}}
