/* V3: an ivory editorial surface with a hidden midnight-blue workspace. */
:root{--ink:#253248;--muted:#626b7b;--olive:#536ba8;--line:#d8dce4;--highlight:#e7ebf4;--accent:#345bda;--midnight:#0c1533}
body{isolation:isolate}body::before{display:none}.portfolio-layout{z-index:2}.site-header{z-index:100}.reveal-canvas{position:fixed;inset:0;width:100%;height:100%;z-index:0;pointer-events:none}.reveal-cursor{position:fixed;z-index:200;top:0;left:0;pointer-events:none;width:28px;height:28px;border:1px solid #6584dc8a;border-radius:50%;opacity:0;transition:opacity .2s,width .2s,height .2s;mix-blend-mode:normal;transform:translate(-100px,-100px)}.reveal-cursor.is-visible{opacity:.75}.reveal-cursor span{display:block;position:absolute;inset:10px;border-radius:50%;background:#5878e5}.reveal-cursor.is-action{width:42px;height:42px;background:#527cf112}.reveal-cursor.is-action span{opacity:0}
.ink-safe{background:#f5f3ecee;border-radius:3px;box-shadow:0 0 14px 5px #f5f3ecad}.hero h1{align-self:flex-start;padding-right:10px;box-shadow:0 0 18px 10px #f5f3ece6}.hero-intro{max-width:440px}.hero h1 em{color:#526588}.status-dot{background:#57769b;box-shadow:0 0 0 3px #57769b14}.header-inner{gap:18px}.site-header nav{gap:24px}.motion-toggle{background:#f5f3ecd9}.reveal-toggle{border:1px solid var(--line);border-radius:24px;min-height:40px;background:#f5f3eceb;display:flex;align-items:center;gap:8px;padding:10px 13px;font-size:10px;white-space:nowrap}.reveal-toggle .icon{width:15px;height:15px}.reveal-toggle:hover,.reveal-toggle[aria-pressed=true]{background:#263b65;color:#fff;border-color:#263b65}.motion-toggle:hover{background:var(--highlight)}
.hero{padding-top:48px;padding-bottom:34px}.hero-actions{gap:14px}.button-ai{position:relative;overflow:hidden;background:var(--accent);color:white;border:1px solid var(--accent);border-radius:7px;min-height:61px;gap:15px;box-shadow:0 9px 22px #3158cb25}.button-ai:hover{background:#2549bf;box-shadow:0 12px 30px #3158cb40;transform:translateY(-2px)}.button-ai>span:not(.button-icon){text-align:left}.button-micro{display:block;font-size:8px;letter-spacing:.2px;color:#dfe7ff;margin-top:5px;font-weight:400}.button-icon{display:flex;align-items:center;justify-content:center;width:31px;height:31px;border-radius:8px;background:#ffffff1c}.button-ai:after{content:"";position:absolute;inset:-40% auto -40% -65%;width:30%;background:linear-gradient(90deg,transparent,#ffffff26,transparent);transform:rotate(22deg);animation:buttonGlint 9s 1.4s 2;pointer-events:none}@keyframes buttonGlint{0%,75%{left:-65%}100%{left:150%}}.button-outline{background:#f5f3ecf5;border-color:#d7dce6;min-height:61px;border-radius:7px;gap:14px}.button-outline:hover{border-color:var(--accent);background:#eef1f9}.hero-links{display:flex;align-items:center;gap:19px;margin-top:13px;flex-wrap:wrap}.hero-links>span{font-size:9px;color:var(--muted);background:#f5f3ecf0;padding:5px}.hero-links .text-link{font-size:11px;background:#f5f3ecf0}.hero-footnote{margin-top:24px;align-self:flex-start}.reveal-invitation{margin-top:25px;border-top:1px solid var(--line);display:flex;align-items:center;gap:13px;padding:17px 5px 0;background:#f5f3ecdf;border-radius:4px}.reveal-invitation-icon{width:34px;height:34px;border:1px solid #b7c3e5;border-radius:50%;display:grid;place-items:center;flex-shrink:0}.reveal-invitation-icon .icon{width:15px;height:15px}.reveal-invitation strong{font-size:11px;font-weight:500;line-height:1.5}.reveal-invitation div>span{display:block;font-size:9px;color:var(--muted);margin-top:4px}.invitation-wave{font:36px Georgia,serif;color:#6685c7;margin-left:auto}.portrait-rail{top:109px;padding-top:0}.portrait-card{width:min(100%,calc(100svh - 335px))}.portrait-meta{letter-spacing:.8px;font-size:7px}.portrait-meta>span:first-child{white-space:nowrap}.portrait-disc{background:linear-gradient(140deg,#dbe2f4b0,#c8d5f258);border:1px solid #c1cce387;left:7%;right:1%}.disc-grid{opacity:.55}.orbit-stroke{border-color:#829ac752}.speech-bubble{background:#f5f3ecf7;border-color:#cfd7ea;left:-3%;top:11%;font-size:10px}.speech-bubble:after{border-color:#cfd7ea}.portrait-badge{border:1px solid #dce4fd;background:#fffffff5;bottom:14px;font-size:10px;color:#263b67;box-shadow:0 5px 20px #122d6828}.ai-mini{display:inline-flex;font:600 8px Arial,sans-serif;letter-spacing:.4px;padding:3px 4px;border-radius:4px;background:#e8efff;color:#355ccf;line-height:1}.portrait-note{margin:0 auto 13px;font-size:20px;padding:4px;width:fit-content;max-width:100%;line-height:1.6}.portrait-note>span{font-family:Arial,sans-serif;display:block;font-size:10px;color:var(--muted)}.portrait-status{font-size:9px;padding:9px 4px}.portrait-prompts{display:flex;gap:8px;justify-content:center}.portrait-prompts button{font-size:9px;border:1px solid #d6dcea;background:#f9f8f3f5;border-radius:6px;min-height:39px;padding:10px 13px;display:flex;gap:12px;align-items:center;transition:background .2s,border-color .2s}.portrait-prompts button:hover{background:#e8efff;border-color:#a5b9f1}.portrait-prompts button>span{color:var(--accent)}.portrait-layer{transform-origin:50% 90%;animation:breathing 6.8s ease-in-out infinite;will-change:transform}#blinkCanvas{position:absolute;inset:0;width:100%;height:100%;z-index:3;pointer-events:none;opacity:0}.portrait-frame{transition:opacity 100ms linear}.portrait-stage[data-life=thinking] .speech-bubble{border-color:#839ae0}.portrait-stage[data-life=answering] .portrait-badge{border-color:#87b7a8}.portrait-stage[data-blinking=true] .portrait-frame{transition:none}
@keyframes breathing{0%,100%{transform:translateY(0) rotate(-.13deg) scale(1)}50%{transform:translateY(-2px) rotate(.13deg) scale(1.004)}}
.work-card{background:#f9f8f3f5;border-color:#d6dce6;transition:box-shadow .22s,border-color .22s,transform .22s}.work-card:hover{background:#fcfbf8;border-color:#8199d5;box-shadow:0 10px 25px #1627500b;transform:translateY(-2px)}.work-card[open]{background:#fcfbf8}.work-card .card-top,.project-number{color:#6275a3}.project-detail .tags span,.tags span{background:#edf0f8;border-color:#dce3f4;color:#496087}.project-filters button{background:#f8f7f1f2}.project-filters button[aria-pressed=true]{background:var(--ink);color:white}.ask-project{display:flex;gap:10px;align-items:center;background:#eaf0ff;color:#355cc0;border:1px solid #d1ddff;border-radius:5px;min-height:42px;margin-top:17px;padding:10px 13px;font-size:11px;text-align:left;width:100%;transition:background .2s}.ask-project .icon{width:15px;height:15px}.ask-project span{margin-left:auto}.ask-project:hover{background:#dce6ff}.reel-card h3,.reel-card p{background:#f5f3ecf2;box-shadow:0 0 10px 3px #f5f3ec99;border-radius:3px}.experience-list,.skill-groups,.education-card,.languages{background:#f5f3ecf0;border-radius:6px;box-shadow:0 0 14px 4px #f5f3ec99}.experience-cv{background:#f5f3ecf2}.visible-tools{display:flex;flex-wrap:wrap;gap:9px;margin:25px 0}.visible-tools>span{display:flex;align-items:center;gap:10px;padding:12px;background:#fdfcf8;border:1px solid var(--line);border-radius:6px;font-size:11px}.visible-tools img{width:28px;height:28px;object-fit:contain}.visible-tools b{font-size:17px;font-weight:600;color:#735cbe}.contact-panel{background:#152644}.contact-panel em{color:#a8b9ed}.contact-panel .ink-safe{background:none;box-shadow:none}.contact-ai{background:transparent;border-color:#9caed34f;color:#eff2ff;margin-left:7px;min-height:49px}.contact-ai:hover{background:#ffffff10}.site-footer{background:#f5f3eced;border-radius:5px}.site-notes p{background:transparent}.gaze-map{border-color:#9eafce}.gaze-map i{background:#456abc}.contact-panel .status-dot{background:#c4d0ea}.site-notes summary{min-height:36px}.no-canvas #revealToggle{display:none}
/* Chat is a left-side native dialog on desktop, leaving the avatar visible. */
.chat-dialog{color:var(--ink);font-family:Arial,Helvetica,sans-serif;padding:0;position:fixed;top:108px;bottom:24px;left:max(24px,calc((100vw - 1392px)/2));right:auto;margin:0;width:min(515px,46vw);max-width:calc(100vw - 32px);max-height:calc(100dvh - 132px);height:740px;border:1px solid #c8d2e6;border-radius:18px;background:#fbfaf6;box-shadow:0 20px 95px #17295125;overflow:hidden}.chat-dialog[open]{display:flex;flex-direction:column;animation:chatEnter .25s cubic-bezier(.22,1,.36,1)}.chat-dialog::backdrop{background:#0f193c18;backdrop-filter:blur(1px)}@keyframes chatEnter{from{opacity:0;transform:translateY(15px) scale(.985)}to{opacity:1;transform:none}}.chat-header{display:flex;align-items:center;gap:14px;padding:20px 22px 18px;background:#fdfcf8;border-bottom:1px solid #e3e6ef;flex-shrink:0}.chat-avatar{position:relative;width:49px;height:49px;border-radius:12px;background:#dfe7f8;border:1px solid #d0d9ee;flex-shrink:0}.chat-avatar img{width:100%;height:100%;object-fit:cover;object-position:center 20%;border-radius:12px}.chat-avatar .ai-mini{position:absolute;right:-4px;bottom:-3px;border:1px solid white}.chat-heading{flex:1;min-width:0}.chat-heading h2{font-family:Georgia,serif;font-size:25px;font-weight:400;letter-spacing:-.7px}.chat-heading>span{display:block;font-size:10px;color:#687793;margin-top:5px}.icon-button{width:36px;height:36px;border:1px solid #d9dfe9;border-radius:50%;background:transparent;display:grid;place-items:center;flex-shrink:0}.icon-button .icon{width:15px;height:15px}.icon-button:hover{background:#e9edf7}.chat-disclosure{padding:14px 21px 10px;display:flex;gap:10px;align-items:flex-start;background:#f0f3fb;flex-shrink:0}.chat-disclosure .icon{width:17px;height:17px;color:#5174c7;margin-top:2px}.chat-disclosure p{font-size:10px;line-height:1.65;margin:0;color:#56637e}.chat-disclosure strong{font-weight:600;color:#304976}.chat-mode-notice{font-size:8px;line-height:1.6;letter-spacing:.6px;padding:9px 21px;color:#6c6a5d;background:#f5f0e1;border-block:1px solid #ece4d0;flex-shrink:0}.chat-scroll{overflow:auto;overscroll-behavior:contain;flex:1;min-height:70px;padding:24px 21px 10px;scrollbar-width:thin;scrollbar-color:#b9c4dc transparent}.chat-messages{display:flex;flex-direction:column;gap:18px}.chat-message{max-width:100%;display:flex;flex-direction:column;align-items:flex-start}.chat-message-label{font-size:8px;letter-spacing:.7px;text-transform:uppercase;color:#788299;margin-bottom:6px;padding-left:3px}.chat-message .message-text{font-size:13px;line-height:1.8;white-space:pre-wrap;overflow-wrap:anywhere;padding:15px 17px;border:1px solid #e3e6ee;background:white;border-radius:3px 13px 13px 13px;max-width:100%;margin:0}.chat-message.user{align-items:flex-end}.chat-message.user .message-text{background:#e6edfc;border-color:#dbe5fb;border-radius:13px 3px 13px 13px;color:#243a65;max-width:90%}.chat-message.error .message-text{background:#fff3ee;border-color:#efdad0}.chat-message .message-source{font-size:9px;margin-top:7px;color:#6e7d99;line-height:1.6;padding-left:3px}.message-source a{border-bottom:1px solid #b8c7e5;cursor:pointer}.message-source a:hover{color:var(--accent)}.chat-starters{margin-top:25px;margin-bottom:17px}.chat-starters>.eyebrow{display:block;font-size:8px;letter-spacing:1.3px;color:#8690a4;margin-bottom:10px}.chat-starters button{display:flex;align-items:center;gap:13px;border:1px solid #dfe5f0;background:#f2f5fc;border-radius:7px;margin-bottom:7px;min-height:44px;width:100%;padding:11px 13px;font-size:11px;text-align:left;transition:background .18s,transform .18s,border-color .18s}.chat-starters button>span{font-size:9px;color:#8495b9}.chat-starters button>b{font-weight:400;color:#597ee6;margin-left:auto}.chat-starters button:hover{background:#e5edff;border-color:#a6bdef;transform:translateX(2px)}.chat-starters button:disabled{opacity:.55}.chat-form{margin:12px 17px 0;padding:8px 8px 8px 13px;display:flex;align-items:flex-end;gap:8px;border:1px solid #cbd5e9;border-radius:11px;background:white;flex-shrink:0}.chat-form:focus-within{border-color:#6181da;box-shadow:0 0 0 3px #668cde10}.chat-form textarea{font:12px/1.65 Arial,sans-serif;color:#29364d;resize:none;border:0;outline:none!important;max-height:120px;min-height:33px;background:transparent;padding:6px 0;flex:1;width:100%}.chat-form textarea::placeholder{color:#9aa2b4;font-size:10px}.chat-send{width:35px;height:35px;border:0;border-radius:8px;background:var(--accent);color:white;display:grid;place-items:center;flex-shrink:0}.chat-send:hover{background:#234bc2}.chat-send:disabled{opacity:.45;cursor:not-allowed}.chat-send .icon{width:17px;height:17px}.chat-footer{padding:11px 21px 15px;display:flex;flex-wrap:wrap;gap:9px 13px;align-items:center;font-size:9px;color:#8290aa;flex-shrink:0;line-height:1.5}.chat-footer>span{width:100%;font-size:8px;color:#8c93a2}.chat-footer button{border:0;background:none;padding:0;font-size:9px;color:#6c7c9d;min-height:22px}.chat-footer a{margin-left:auto;color:#405e9a}.chat-footer a:hover,.chat-footer button:hover{text-decoration:underline}.chat-error{padding:7px 21px;font-size:10px;color:#9f4b36;background:#fff1e8;line-height:1.6}.live-consent{padding:16px 21px;background:#f1f5ff;border-top:1px solid #d8e3ff}.live-consent p{font-size:11px;line-height:1.7;margin-bottom:10px}.live-consent .button{width:100%;min-height:43px;font-size:11px}.chat-message.is-loading .message-text:after{content:' ···';letter-spacing:3px;animation:loadingPulse 1s ease-in-out infinite}@keyframes loadingPulse{50%{opacity:.35}}.chat-dialog[aria-busy=true] #chatStarters{opacity:.65}
.motion-off .portrait-layer,.motion-off .button-ai:after,.motion-off .chat-message.is-loading .message-text:after{animation:none!important}.motion-off .work-card,.motion-off .button,.motion-off .chat-starters button{transition:none;transform:none!important}.motion-off .reveal-cursor{display:none}.motion-off #blinkCanvas{display:none}
@media(min-width:1500px){.chat-dialog{left:calc((100vw - 1392px)/2)}}
@media(max-width:1200px){.header-inner{gap:11px}.site-header nav{gap:18px}.brand{gap:12px}.reveal-toggle{padding:10px;font-size:9px}.portrait-meta{font-size:6px}.portrait-prompts{gap:6px}.portrait-prompts button{padding:9px 10px;font-size:8px;gap:7px}.portrait-note{font-size:19px}.hero-actions .button{font-size:11px;padding-inline:15px;gap:10px}.button-icon{width:27px;height:27px}.hero-links{gap:13px}.hero-links>span{font-size:8px}.speech-bubble{font-size:9px;max-width:145px}.chat-dialog{left:24px;width:min(475px,48vw)}.chat-heading h2{font-size:24px}.portrait-card{width:min(100%,calc(100svh - 330px))}}
@media(max-width:960px) and (min-width:761px){.reveal-toggle #revealToggleText{display:none}.reveal-toggle{min-width:37px;justify-content:center}.header-inner{gap:16px}.hero-actions{gap:10px}.hero-actions .button{min-height:55px;padding-inline:12px;font-size:10px}.button-micro{font-size:7px}.button-icon{display:none}.hero-links>span{display:none}.hero h1{margin-top:26px}.portrait-note{font-size:17px}.portrait-note>span{font-size:8px}.portrait-prompts{flex-direction:column;padding-inline:20px}.portrait-prompts button{font-size:9px}.portrait-prompts button>span{margin-left:auto}.portrait-card{width:min(100%,calc(100svh - 350px))}.chat-dialog{width:48vw}.chat-header{padding:16px}.chat-heading h2{font-size:21px}.chat-disclosure{padding:12px 16px}.chat-scroll{padding-inline:16px}}
@media(max-width:760px){.header-inner{gap:10px}.site-header nav{gap:14px}.site-header nav a[href="#experience"]{display:none}.reveal-toggle{padding:9px;min-height:37px}.reveal-toggle #revealToggleText{display:none}.reveal-toggle .icon{width:14px;height:14px}.site-header nav{margin-left:auto}.motion-toggle{min-height:37px}.hero{padding-top:37px}.hero h1{margin-top:27px;margin-bottom:27px}.hero-actions{gap:12px}.hero-actions .button{min-height:59px;font-size:11px;padding:12px 16px;gap:12px}.hero-actions .button-icon{display:flex}.hero-links>span{font-size:8px;display:block}.hero-links .text-link{font-size:10px}.hero-links{gap:12px}.hero-footnote{margin-top:23px}.reveal-invitation{margin-top:19px;padding-top:16px}.reveal-invitation strong{font-size:10px}.reveal-invitation div>span{font-size:9px}.portrait-rail{top:auto;margin-block:3px 30px;padding:0}.portrait-card{width:min(100%,430px)}.portrait-meta{font-size:6px}.portrait-note{font-size:21px}.portrait-note>span{font-size:9px}.portrait-prompts button{font-size:9px;min-height:40px}.portrait-disc{background:#dae3f2b0}.portrait-rail.is-docked .portrait-card{border-color:#bdcbe7;background:#edf1fbf2;padding-bottom:2px}.portrait-rail.is-docked .portrait-prompts{display:none}.portrait-rail.is-docked .portrait-badge{display:flex;bottom:5px;padding:4px 7px;font-size:7px;border-radius:6px;gap:4px}.portrait-rail.is-docked .portrait-badge .icon{width:8px;height:8px}.portrait-rail.is-docked .portrait-badge .touch-hint{font-size:0}.portrait-rail.is-docked .portrait-badge .touch-hint:after{content:'Ask my AI';font-size:7px}.portrait-rail.is-docked .portrait-badge .ai-mini{font-size:6px;padding:2px}.portrait-rail.is-docked .portrait-disc{border:0}.portrait-rail.is-docked .portrait-layer{animation:none}.contact-ai{margin-left:0;margin-top:9px}.contact-panel .button{margin-right:6px}.chat-dialog{inset:auto 0 0;margin:0;max-width:100%;width:100%;height:min(740px,calc(100dvh - 25px));max-height:calc(100dvh - 25px);border-radius:19px 19px 0 0;box-shadow:0 -10px 90px #1e31512a}.chat-dialog::backdrop{background:#0e15333b;backdrop-filter:blur(3px)}.chat-header{padding:18px 20px 15px}.chat-heading h2{font-size:26px}.chat-disclosure{padding:12px 20px}.chat-disclosure p{font-size:10px}.chat-mode-notice{font-size:8px;padding:8px 20px}.chat-scroll{padding:22px 20px 12px}.chat-message .message-text{font-size:13px}.chat-form textarea{font-size:16px;min-height:36px;line-height:1.45}.chat-form textarea::placeholder{font-size:11px}.chat-form{margin-top:8px}.chat-footer{padding-bottom:max(15px,env(safe-area-inset-bottom))}.chat-starters button{font-size:12px;min-height:46px}.chat-open .portrait-rail.is-docked .portrait-card{visibility:hidden}.chat-open .reveal-cursor{display:none}.reveal-cursor{display:none}}
@media(max-width:380px){.header-inner{gap:8px}.site-header nav{gap:12px}.hero-actions .button{padding-inline:12px;gap:10px;font-size:10px}.hero-actions .button-ai .button-icon{display:none}.hero h1{font-size:88px}.hero-links>span{display:none}.chat-disclosure p{font-size:9px}.chat-heading h2{font-size:23px}.chat-header{padding:13px 17px}.portrait-meta{font-size:5px}.portrait-note>span{font-size:8px}.portrait-prompts button{font-size:8px}}
@media(max-height:720px) and (min-width:761px){.portrait-card{width:min(100%,calc(100svh - 283px))}.portrait-meta{margin-bottom:11px}.portrait-note{font-size:17px;margin-bottom:9px}.portrait-prompts button{min-height:33px;font-size:8px;padding:8px}.portrait-status{padding:7px 4px}.portrait-note>span{font-size:8px}.chat-dialog{top:100px;bottom:12px;max-height:calc(100dvh - 112px)}.chat-header{padding:13px 17px}.chat-heading h2{font-size:23px}}
@media(prefers-reduced-motion:reduce){body:not(.motion-override) .portrait-layer{animation:none}body:not(.motion-override) .reveal-cursor{display:none}body:not(.motion-override) .chat-dialog[open]{animation:none}}
@media print{.reveal-canvas,.reveal-cursor,.reveal-toggle,.reveal-invitation,.chat-dialog,.ask-project,.hero-actions [data-open-chat],.contact-ai{display:none!important}.ink-safe{box-shadow:none;background:none}.work-card{box-shadow:none}.site-footer{background:none}}
.document-hidden .portrait-layer,.document-hidden .button-ai:after{animation-play-state:paused}
/* Keep the reveal visible around small hero labels rather than masking full rows. */
.hero-eyebrow,.specialties{width:fit-content}

/* The same approved portrait and eyelids stay docked inside the mobile dialog. */
.chat-portrait-dock{display:none}
@media(max-width:380px){.hero h1{font-size:clamp(74px,24vw,88px)}}
.live-consent a{text-decoration:underline}
/* Portrait-first composition; the same stage stays present as the visitor explores. */
@media(min-width:761px){
 .portfolio-layout{grid-template-columns:minmax(0,1fr) minmax(0,1.07fr)}
 .portfolio-layout>section,.portfolio-layout>.site-footer{grid-column:2}
 .portrait-rail{grid-column:1;top:110px}
 .portrait-card{width:min(100%,max(260px,calc(100svh - 290px)))}
 .hero{justify-content:flex-start;padding-top:56px}
 .chat-dialog{left:auto;right:max(24px,calc((100vw - 1392px)/2));width:min(515px,46vw)}
}
.portrait-stage{--gaze-x:0;--gaze-y:0}
.portrait-depth{position:absolute;inset:0;z-index:1;pointer-events:none;transform:translate3d(calc(var(--gaze-x)*7px),calc(var(--gaze-y)*4px),0) scale(1.008);transform-origin:50% 90%;will-change:transform}
.portrait-layer{animation:breathing 7.8s ease-in-out infinite;isolation:isolate}
/* Add the two complementary alpha weights so a turn does not wash out the face. */
.portrait-frame{transition:opacity 70ms linear;mix-blend-mode:plus-lighter}
.portrait-stage[data-idling=true] .portrait-frame,.portrait-stage[data-resting-transition=true] .portrait-frame{transition-duration:220ms}
.portrait-disc{transform:perspective(900px) rotateY(calc(var(--gaze-x)*-5deg)) rotateX(calc(var(--gaze-y)*3deg));background:radial-gradient(ellipse at 30% 28%,#f3f4ff 0%,#d6def4 50%,#a3b8e2 100%);box-shadow:inset 0 0 55px #fff8,0 20px 50px #486aac17}
.disc-grid{transform:translate3d(calc(var(--gaze-x)*-8px),calc(var(--gaze-y)*-5px),0)}
.orbit-stroke{transform:perspective(800px) rotateY(calc(var(--gaze-x)*9deg)) rotateX(calc(var(--gaze-y)*-6deg)) rotate(-24deg);border-color:#778fca88}
.orbit-stroke:before,.orbit-stroke:after{content:'';position:absolute;border-radius:50%;width:7px;height:7px;background:#7995dd;box-shadow:0 0 0 6px #839dea13;top:20%;left:8%}
.orbit-stroke:after{width:5px;height:5px;top:auto;left:auto;bottom:15%;right:13%;background:#b39158}
.reveal-invitation{flex-wrap:wrap;align-items:center}
.magic-button{display:flex;align-items:center;gap:18px;border:0;border-bottom:1px solid #9baed4;background:transparent;padding:12px 0 8px;min-height:40px;margin-left:47px;color:#3e5eaa;font:11px Arial,sans-serif}
.magic-button span{font-size:18px;transition:transform .4s}
.magic-button:hover span{transform:rotate(90deg)}
.magic-button:hover{color:#18398d}
.motion-off .portrait-depth,.motion-off .disc-grid{transform:none!important}
.motion-off .portrait-disc{transform:none!important}
.motion-off .orbit-stroke{transform:rotate(-24deg)!important}
@media(max-width:760px){
 .portrait-rail{order:-1;margin:18px 0 8px}
 .portrait-card{width:min(100%,380px)}
 .portrait-meta{margin-top:0}
 .portrait-note{font-size:19px;margin-bottom:7px}
 .portrait-prompts{display:none}
 .hero{padding-top:24px}
 .hero h1{margin-top:20px}
 .portrait-rail.is-docked .portrait-depth,.chat-portrait-dock .portrait-depth{transform:translate3d(calc(var(--gaze-x)*2px),calc(var(--gaze-y)*1px),0)}
 .magic-button{margin-left:47px}
}
@media(prefers-reduced-motion:reduce){
 body:not(.motion-override) .portrait-depth,body:not(.motion-override) .disc-grid{transform:none}
 body:not(.motion-override) .portrait-frame{transition:none}
}
@media(max-width:760px){
 .chat-portrait-dock{display:block;flex:0 0 68px;width:68px;height:68px}
 .chat-header>.chat-avatar{display:none}
 .chat-portrait-dock .portrait-stage{width:68px;height:68px;aspect-ratio:1;border-radius:12px;overflow:hidden;background:#e4eaf5;margin:0}
 .in-chat-dock .speech-bubble,.in-chat-dock .portrait-badge,.in-chat-dock .stage-corner,.in-chat-dock .orbit-stroke,.in-chat-dock .disc-grid{display:none}
 .chat-portrait-dock .portrait-layer{width:100%;height:100%;inset:0}
 .chat-header{gap:10px}
 .chat-heading{min-width:0}
 .chat-heading h2{font-size:23px}
 .chat-footer button,.chat-footer a{min-height:28px;display:inline-flex;align-items:center}
}
.chat-message .message-source{display:flex;flex-wrap:wrap;gap:6px 12px}

/* Audit: readable chat metadata and consent reachable on short screens. */
.availability-note{color:var(--muted);font-size:14px;margin:14px 0 0}
.chat-scroll{min-height:0}
.chat-scroll>.live-consent{padding:14px;margin:0 0 20px;border:1px solid #d8e3ff;border-radius:8px}
.chat-form[hidden]{display:none}
.chat-footer>span,.chat-message-label,.chat-starters>.eyebrow{color:var(--muted);font-size:12px}
.chat-form textarea::placeholder{color:var(--muted)}
/* Leave room for classic desktop scrollbars on narrow browser windows. */
@media(max-width:480px){.hero h1{font-size:clamp(66px,22vw,98px)}}
.tilt-controls{margin:0 4px 16px;text-align:center}.tilt-actions{display:flex;justify-content:center;gap:8px}.tilt-actions button{min-height:44px;padding:10px 14px;border:1px solid #c6d0e0;border-radius:8px;background:#f8f8f3;color:#314467;font-size:11px}.tilt-actions button[aria-pressed=true]{background:#263b65;color:white;border-color:#263b65}.tilt-actions button:disabled{opacity:.65}.tilt-controls p{font-size:10px;line-height:1.5;color:#526075;margin:8px 0 0}.portrait-rail.is-docked .tilt-controls{margin:2px 0 0}.portrait-rail.is-docked .tilt-controls p,.portrait-rail.is-docked #tiltRecenter{display:none}.portrait-rail.is-docked .tilt-actions button{width:100%;min-height:36px;font-size:10px;padding:6px;border-radius:0 0 10px 10px}
