div.mx-auto.flex.max-w-screen-xl:has(>article){max-width:96rem;width:100%;padding-inline:1rem}@media(min-width:1280px){div.mx-auto.flex.max-w-screen-xl:has(>article){padding-inline:2rem}}article.w-full.justify-center{justify-content:stretch}article main.max-w-6xl{max-width:none;padding-left:1.5rem;padding-right:1.5rem}@media(min-width:768px){article main.max-w-6xl{padding-left:2rem;padding-right:2rem}}article main.w-full .prose{max-width:none}article main .max-w-prose{max-width:none}.article-container{max-width:760px;margin-left:auto;margin-right:auto}.schema-tool-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;height:620px;width:100%;max-width:100%;align-items:stretch;overflow:hidden;margin:1rem 0 2.5rem;box-sizing:border-box}.schema-tool-stack{min-width:0;min-height:0;height:100%;display:grid;grid-template-rows:1fr 1fr;gap:16px;overflow:hidden}.schema-tool-panel{min-width:0;min-height:0;height:100%;display:flex;flex-direction:column;overflow:hidden}.schema-tool-label{flex-shrink:0;font-size:.85rem;font-weight:600;margin-bottom:6px}article main .prose .schema-tool-pre,.schema-tool-pre{flex:auto;min-height:0;margin:0!important;padding:.75rem!important;font-size:.8rem;line-height:1.4;overflow:auto!important;box-sizing:border-box;max-width:100%}@media(max-width:768px){.schema-tool-grid{grid-template-columns:1fr;height:auto;max-height:none;overflow:visible}.schema-tool-stack{height:auto;grid-template-rows:none;gap:16px}.schema-tool-panel{height:280px}}article main .prose .mermaid{max-width:min(72rem,100%);margin-inline:auto;overflow-x:auto}article main .prose .mermaid svg{max-width:100%;height:auto}.high-mark{background-image:linear-gradient(transparent 48%,rgba(212,160,50,.48) 48%);background-repeat:no-repeat;background-size:100% 100%;padding:0 .08em;box-decoration-break:clone;-webkit-box-decoration-break:clone}html:not(.dark) .high-mark{background-image:linear-gradient(transparent 48%,#ffe566 48%)}.high-mark.high-mark--red{background-image:linear-gradient(transparent 48%,rgba(45,212,191,.45) 48%)}html:not(.dark) .high-mark.high-mark--red{background-image:linear-gradient(transparent 48%,rgba(94,234,212,.55) 48%)}.high-mark.high-mark--mint{background-image:linear-gradient(transparent 48%,rgba(212,160,50,.55) 48%);background-size:0% 100%;background-position:0;background-repeat:no-repeat;animation:high-mark-paint .55s cubic-bezier(.22,1,.36,1)forwards}html:not(.dark) .high-mark.high-mark--mint{background-image:linear-gradient(transparent 48%,#ffe566 48%)}.high-mark.high-mark--mint[data-mark-seq="0"]{animation-delay:0s}.high-mark.high-mark--mint[data-mark-seq="1"]{animation-delay:.5s}.high-mark.high-mark--mint[data-mark-seq="2"]{animation-delay:1s}.high-mark.high-mark--mint[data-mark-seq="3"]{animation-delay:1.5s}.high-mark.high-mark--mint,.high-mark.high-mark--mint strong{color:#fff}@keyframes high-mark-paint{from{background-size:0% 100%}to{background-size:100% 100%}}@media(prefers-reduced-motion:reduce){.high-mark.high-mark--mint{background-size:100% 100%;animation:none}}.portfolio-badge{display:inline-flex;align-items:center;gap:.25rem;padding:.375rem .625rem;font-size:.75rem;line-height:1rem;font-weight:600;border-radius:9999px;border-width:1px;border-style:solid;box-shadow:0 4px 6px -1px rgb(0 0 0/.2)}.portfolio-reveal-grid .portfolio-reveal-card{opacity:0;transform:translateY(1.75rem);transition:opacity .65s cubic-bezier(.22,1,.36,1),transform .65s cubic-bezier(.22,1,.36,1),border-color .3s ease,background-color .3s ease,box-shadow .3s ease}.portfolio-reveal-grid .portfolio-reveal-card.is-inview{opacity:1;transform:translateY(0)}.tech-reveal-list .tech-reveal-category{opacity:0;transform:translateY(1.75rem);transition:opacity .65s cubic-bezier(.22,1,.36,1),transform .65s cubic-bezier(.22,1,.36,1),border-color .3s ease,background-color .3s ease,box-shadow .3s ease}.tech-reveal-list .tech-reveal-category.is-inview{opacity:1;transform:translateY(0)}.scroll-reveal-item{opacity:0;transform:translateY(1.75rem);transition:opacity .65s cubic-bezier(.22,1,.36,1),transform .65s cubic-bezier(.22,1,.36,1),border-color .3s ease,background-color .3s ease,box-shadow .3s ease}.scroll-reveal-item.is-inview{opacity:1;transform:translateY(0)}@media(prefers-reduced-motion:reduce){.portfolio-reveal-grid .portfolio-reveal-card{opacity:1;transform:none;transition:border-color .3s ease,background-color .3s ease,box-shadow .3s ease}.tech-reveal-list .tech-reveal-category{opacity:1;transform:none;transition:border-color .3s ease,background-color .3s ease,box-shadow .3s ease}.scroll-reveal-item{opacity:1;transform:none;transition:border-color .3s ease,background-color .3s ease,box-shadow .3s ease}}.portfolio-badge-award{background-color:#facc15;color:#422006;border-color:#fde047}.portfolio-badge-hold{background-color:#6b7280;color:#fff;border-color:#9ca3af}.portfolio-badge-live{background-color:#059669;color:#fff;border-color:#10b981}.portfolio-badge-done{background-color:#0284c7;color:#fff;border-color:#0ea5e9}.agent-chat{--agent-bg:#2a2f3c;--agent-panel:#343b4a;--agent-border:rgba(255, 255, 255, 0.12);--agent-text:#f3f4f6;--agent-muted:#a8b0bd;--agent-accent:#3b82f6;--agent-user:#2563eb;--agent-bot:#454d5e;--agent-shadow:0 18px 50px rgba(0, 0, 0, 0.4);position:fixed;right:1.25rem;bottom:1.25rem;z-index:9999;font-family:inherit}html:not(.dark) .agent-chat{--agent-bg:#ffffff;--agent-panel:#ffffff;--agent-border:rgba(15, 23, 42, 0.12);--agent-text:#0f172a;--agent-muted:#64748b;--agent-accent:#2563eb;--agent-user:#2563eb;--agent-bot:#f1f5f9;--agent-shadow:0 18px 50px rgba(15, 23, 42, 0.18)}.agent-chat .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}.agent-chat__fab{position:relative;display:inline-flex;align-items:center;gap:.5rem;padding:.85rem 1.1rem;border:1px solid var(--agent-border);border-radius:9999px;background:var(--agent-accent);color:#fff;box-shadow:var(--agent-shadow);cursor:pointer;transition:transform .2s ease,box-shadow .2s ease,opacity .2s ease}.agent-chat__badge{position:absolute;top:-.35rem;right:-.3rem;z-index:1;display:inline-flex;align-items:center;justify-content:center;min-width:1.35rem;height:1.35rem;padding:0 .32rem;border-radius:9999px;background:#ef4444;color:#fff;font-size:.8rem;font-weight:700;line-height:1;box-shadow:0 0 0 2px #fff;transform:scale(.35);opacity:0;pointer-events:none}.dark .agent-chat__badge{box-shadow:0 0 0 2px #343b4a}.agent-chat__badge[hidden]{display:none!important}.agent-chat__badge.is-visible{display:inline-flex;opacity:1;transform:scale(1);animation:agent-badge-pop .45s cubic-bezier(.34,1.56,.64,1)both}@keyframes agent-badge-pop{0%{opacity:0;transform:scale(.35)}70%{opacity:1;transform:scale(1.15)}100%{opacity:1;transform:scale(1)}}.agent-chat__fab:hover{transform:translateY(-2px);box-shadow:0 22px 55px rgba(37,99,235,.35)}.agent-chat__fab:active{transform:translateY(0)scale(.97)}.agent-chat__fab:focus-visible{outline:2px solid #93c5fd;outline-offset:3px}.agent-chat__fab-label{font-size:.95rem;font-weight:600;letter-spacing:.01em}.agent-chat[data-open=true] .agent-chat__fab{opacity:.92}.agent-chat__panel{position:absolute;right:0;bottom:calc(100% + .75rem);width:min(380px,calc(100vw - 2rem));height:min(560px,calc(100vh - 6.5rem));display:flex;flex-direction:column;overflow:hidden;border:1px solid var(--agent-border);border-radius:1rem;background:var(--agent-panel);color:var(--agent-text);box-shadow:var(--agent-shadow)}.agent-chat__panel[hidden]{display:none!important}.agent-chat__panel--in{animation:agent-chat-in .24s ease both}.agent-chat__panel--out{animation:agent-chat-out .22s ease both}@keyframes agent-chat-in{from{opacity:0;transform:translateY(10px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes agent-chat-out{from{opacity:1;transform:translateY(0)scale(1)}to{opacity:0;transform:translateY(10px)scale(.97)}}.agent-chat__header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.9rem 1rem;border-bottom:1px solid var(--agent-border);background:linear-gradient(180deg,rgba(59,130,246,.12),transparent)}.agent-chat__title-wrap{display:flex;align-items:center;gap:.7rem;min-width:0}.agent-chat__avatar{display:inline-flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;border-radius:9999px;background:var(--agent-accent);color:#fff;font-size:.75rem;font-weight:700;flex-shrink:0;object-fit:cover;overflow:hidden}img.agent-chat__avatar{display:block;padding:0;background:0 0}.agent-chat__title{margin:0;font-size:.95rem;font-weight:650;line-height:1.2}.agent-chat__subtitle{margin:.1rem 0 0;font-size:.75rem;color:var(--agent-muted)}.agent-chat__icon-btn{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;border:0;border-radius:.5rem;background:0 0;color:var(--agent-muted);cursor:pointer}.agent-chat__icon-btn:hover{background:rgba(148,163,184,.15);color:var(--agent-text)}.agent-chat__messages{flex:1;overflow-y:auto;padding:.85rem .75rem;display:flex;flex-direction:column;gap:.85rem;scroll-behavior:smooth}.agent-chat__messages--scrolling{scroll-behavior:smooth}.agent-chat__row{display:flex;align-items:flex-start;gap:.45rem;max-width:100%}.agent-chat__row--user{justify-content:flex-end}.agent-chat__row--assistant{justify-content:flex-start}.agent-chat__msg-avatar{display:inline-flex;align-items:center;justify-content:center;width:2.1rem;height:2.1rem;border-radius:9999px;background:var(--agent-accent);color:#fff;font-size:.65rem;font-weight:700;flex-shrink:0;object-fit:cover;overflow:hidden}img.agent-chat__msg-avatar{display:block;padding:0;background:0 0}.agent-chat__msg-body{min-width:0;max-width:calc(100% - 2.6rem);display:flex;flex-direction:column;gap:.2rem}.agent-chat__msg-name{margin:0;padding-left:.1rem;font-size:.72rem;font-weight:600;color:var(--agent-muted);line-height:1.2}.agent-chat__msg-line{display:flex;align-items:flex-end;gap:.35rem;max-width:100%}.agent-chat__msg-line--user{justify-content:flex-end;max-width:100%}.agent-chat__msg-time{flex-shrink:0;font-size:.65rem;line-height:1.2;color:var(--agent-muted);white-space:nowrap;padding-bottom:.1rem}.agent-chat__row--enter{animation:agent-bubble-in .28s cubic-bezier(.22,1,.36,1)both}.agent-chat__row--user.agent-chat__row--enter{animation-name:agent-bubble-in-user}.agent-chat__row--assistant.agent-chat__row--enter{animation-name:agent-bubble-in-assistant}@keyframes agent-bubble-in-user{from{opacity:0;transform:translateX(14px)translateY(6px)scale(.96)}to{opacity:1;transform:translateX(0)translateY(0)scale(1)}}@keyframes agent-bubble-in-assistant{from{opacity:0;transform:translateX(-14px)translateY(6px)scale(.96)}to{opacity:1;transform:translateX(0)translateY(0)scale(1)}}.agent-chat__bubble{max-width:min(15.5rem,72%);padding:.45rem .65rem;border-radius:.75rem;font-size:.8rem;line-height:1.4;white-space:pre-wrap;word-break:break-word}.agent-chat__row--assistant .agent-chat__bubble{max-width:min(15.5rem,100%)}.agent-chat__row--user .agent-chat__bubble{max-width:min(15.5rem,78vw)}.agent-chat__bubble strong{font-weight:700}.agent-chat__bubble .high-mark{background-image:none;padding:0;font-weight:700}.agent-chat__bubble em{font-style:italic}.agent-chat__code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.84em;padding:.1em .35em;border-radius:.3rem;background:rgba(148,163,184,.18)}.agent-chat__codeblock{margin:.45rem 0 0;padding:.55rem .65rem;border-radius:.5rem;overflow-x:auto;font-size:.8em;white-space:pre;background:rgba(15,23,42,.35)}.agent-chat__bubble--user .agent-chat__code,.agent-chat__bubble--user .agent-chat__codeblock{background:rgba(255,255,255,.18)}.agent-chat__link{color:inherit;text-decoration:underline;text-underline-offset:2px;font-weight:600}.agent-chat__link:hover{opacity:.9}.agent-chat__bubble--user{background:var(--agent-user);color:#fff;border-bottom-right-radius:.3rem}.agent-chat__bubble--assistant{background:var(--agent-bot);color:var(--agent-text);border-bottom-left-radius:.3rem}.agent-chat__bubble--pending{color:var(--agent-muted);min-width:3.25rem;display:inline-flex;align-items:center;justify-content:center}.agent-chat__bubble--error{border:1px solid rgba(248,113,113,.45)}.agent-chat__typing{display:inline-flex;align-items:center;gap:.28rem;height:1rem;padding:.1rem .15rem}.agent-chat__typing-dot{width:.38rem;height:.38rem;border-radius:9999px;background:currentColor;opacity:.45;animation:agent-typing-bounce 1.05s infinite ease-in-out}.agent-chat__typing-dot:nth-child(2){animation-delay:.14s}.agent-chat__typing-dot:nth-child(3){animation-delay:.28s}@keyframes agent-typing-bounce{0%,70%,100%{transform:translateY(0);opacity:.35}35%{transform:translateY(-4px);opacity:1}}.agent-chat__status{min-height:1.1rem;margin:0;padding:0 1rem;font-size:.75rem;color:var(--agent-muted);transition:opacity .2s ease}.agent-chat__form{display:flex;align-items:center;gap:.5rem;padding:.75rem;border-top:1px solid var(--agent-border);background:var(--agent-bg)}.agent-chat__input{flex:1;min-width:0;padding:.7rem .85rem;border:1px solid var(--agent-border);border-radius:.75rem;background:0 0;color:var(--agent-text);font:inherit;font-size:.875rem;transition:border-color .2s ease,box-shadow .2s ease,transform .2s ease}.agent-chat__input::placeholder{color:var(--agent-muted)}.agent-chat__input:focus{outline:none;border-color:rgba(59,130,246,.7);box-shadow:0 0 0 3px rgba(59,130,246,.2);transform:translateY(-1px)}.agent-chat__send{display:inline-flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;border:0;border-radius:.75rem;background:var(--agent-accent);color:#fff;cursor:pointer;flex-shrink:0;transition:transform .18s ease,filter .18s ease,box-shadow .18s ease}.agent-chat__send svg{transition:transform .18s ease}.agent-chat__send:disabled{opacity:.55;cursor:not-allowed}.agent-chat__send:hover:not(:disabled){filter:brightness(1.08);transform:translateY(-1px);box-shadow:0 8px 18px rgba(37,99,235,.28)}.agent-chat__send:hover:not(:disabled) svg{transform:translateX(1px)translateY(-1px)rotate(-8deg)}.agent-chat__send:active:not(:disabled),.agent-chat__send--press:not(:disabled){transform:scale(.92)}.agent-chat__send--pulse{animation:agent-send-pulse .9s ease-in-out infinite}.agent-chat__send--busy{opacity:.7}@keyframes agent-send-pulse{0%,100%{box-shadow:0 0 rgba(59,130,246,.35)}50%{box-shadow:0 0 0 8px rgba(59,130,246,0)}}@media(max-width:480px){.agent-chat{right:.75rem;bottom:.75rem}.agent-chat__panel{width:calc(100vw - 1.5rem);height:min(70vh,calc(100vh - 5.5rem))}.agent-chat__fab-label{display:none}.agent-chat__fab{width:3.25rem;height:3.25rem;padding:0;justify-content:center}}#hero.has-site-purpose-notice,#hero:has(>.site-purpose-notice){position:relative}.site-purpose-notice{position:absolute;top:.85rem;left:.85rem;z-index:5;margin:0;max-width:none;white-space:nowrap;font-size:13px;font-weight:600;line-height:1.3;letter-spacing:-.01em;color:color-mix(in srgb,currentColor 55%,transparent);pointer-events:none;user-select:none}.dark .site-purpose-notice{color:rgba(148,163,184,.7)}@media(max-width:640px){.site-purpose-notice{font-size:10px;top:.65rem;left:.65rem}}@media(prefers-reduced-motion:reduce){.agent-chat__fab,.agent-chat__panel--in,.agent-chat__panel--out,.agent-chat__row--enter,.agent-chat__typing-dot,.agent-chat__send,.agent-chat__send svg,.agent-chat__send--pulse,.agent-chat__input,.agent-chat__badge{animation:none!important;transition:none!important}.agent-chat__badge.is-visible{opacity:1;transform:scale(1)}.agent-chat__messages{scroll-behavior:auto}}