/* The dark portfolio remains the default; the day palette changes interface colors only. */
:root{--glyph-core:#f4c8ff;--glyph-mid:#a889ff;--glyph-edge:#738fff;--glyph-radius:150px}
html[data-theme="light"]{color-scheme:light;--bg:#f5f5f7;--fg:#19191f;--muted:#66636f;--line:#23213223;--violet:#7350b6;--glyph-core:#ad38d2;--glyph-mid:#7850ce;--glyph-edge:#356cc4}
body,dialog{transition:background-color .35s,color .35s}
/* Match the language control's neutral palette and align each icon to the thumb center. */
.theme-switch{--theme-width:80px;--theme-thumb-size:34px;--theme-icon-size:18px;--theme-inset:4px;position:relative;display:inline-block;width:var(--theme-width);height:44px;flex:0 0 var(--theme-width);padding:0;border:1px solid #ffffff28;border-radius:30px;background:transparent;box-shadow:none;transition:border-color .3s;isolation:isolate}
.theme-switch svg{position:absolute;top:50%;margin-top:calc(var(--theme-icon-size) / -2);width:var(--theme-icon-size);height:var(--theme-icon-size);fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;z-index:1;pointer-events:none;transition:color .3s}
.theme-moon{left:calc(var(--theme-inset) + (var(--theme-thumb-size) - var(--theme-icon-size)) / 2);color:#08080a}
.theme-sun{right:calc(var(--theme-inset) + (var(--theme-thumb-size) - var(--theme-icon-size)) / 2);color:#a4a1ab}
.theme-thumb{position:absolute;top:50%;margin-top:calc(var(--theme-thumb-size) / -2);left:var(--theme-inset);width:var(--theme-thumb-size);height:var(--theme-thumb-size);border-radius:50%;background:#edeaf4;box-shadow:none;transition:translate .45s var(--ease),background .3s;pointer-events:none}
.theme-switch[aria-checked=true]{background:transparent;border-color:#3f31453b;box-shadow:none}
.theme-switch[aria-checked=true] .theme-thumb{translate:calc(var(--theme-width) - 2px - var(--theme-inset) - var(--theme-inset) - var(--theme-thumb-size)) 0;background:#29222f}
.theme-switch[aria-checked=true] .theme-moon{color:#6b6277}
.theme-switch[aria-checked=true] .theme-sun{color:#fff}
/* A localized color field clipped to the glyphs: no glow behind the word. */
.letter-halo{position:relative;color:var(--fg)}
@supports ((background-clip:text) or (-webkit-background-clip:text)){
 .letter-halo,.halo-letter{background-image:linear-gradient(var(--fg),var(--fg));background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent}
 .letter-halo.halo-active,.halo-active:not([data-kinetic]) .halo-letter,.kinetic-contact .halo-letter.glyph-lit{background-image:radial-gradient(circle var(--glyph-radius) at var(--glyph-x,50%) var(--glyph-y,50%),var(--glyph-core) 0%,var(--glyph-mid) 27%,var(--glyph-edge) 48%,transparent 76%),linear-gradient(var(--fg),var(--fg))}
}
.project-title-row .letter-halo{padding:.07em .015em .12em 0;margin:-.07em 0 -.12em;max-width:100%;line-height:1.12}
/* Kinetic signature on the portfolio's original black, including in day mode. */
.lab-type-stage{background:#08080a;color:#f5f4f7;--fg:#f5f4f7;--glyph-core:#f4c8ff;--glyph-mid:#a889ff;--glyph-edge:#738fff;--glyph-radius:170px;border:1px solid #ffffff18}
.type-word,.type-echo{font-size:clamp(65px,14vw,235px);letter-spacing:-.065em}.type-word{padding:.1em .02em .12em;line-height:1}
.type-guides{background-image:linear-gradient(#b4a1d033 1px,transparent 1px),linear-gradient(90deg,#b4a1d033 1px,transparent 1px);opacity:.3}
.type-echo{color:transparent;-webkit-text-stroke:1px #b9a8d523;top:45%}.type-coordinates{color:#a298b0;opacity:.8}
.lab-type-stage .halo-letter{transform-origin:50% 70%}.lab-type-stage.is-alternate{border-color:#a889ff80}
.lightbox{color:#f5f4f7;--fg:#f5f4f7;--muted:#aaa3b5;color-scheme:dark}
.motion-stage{color:#f5f4f7;color-scheme:dark}.project-open{color:#f5f4f7}
/* Navigation, controls and editorial content in the day palette. */
html[data-theme="light"] .hero{background:#f5f5f7}
html[data-theme="light"] .hero h1>span{background-image:linear-gradient(110deg,#272231,#6c6478 60%,#43364f)}
html[data-theme="light"] .hero-showcase:after{background:linear-gradient(90deg,#f5f5f7e8 0%,#f5f5f788 22%,transparent 56%)}
html[data-theme="light"] .hero-sheen{background:radial-gradient(600px circle at var(--mx,65%) var(--my,45%),#8b66d312,transparent 70%)}
html[data-theme="light"] :is(.eyebrow,.hero-intro,.hero-location,.hero-number,.about-text,.project-summary,.meta-label,.work-end,.row-number,.practice-row p,.contact-top>span,.contact-bottom p,.source-credit,.site-footer,.project-description .body-copy){color:var(--muted)}
html[data-theme="light"] :is(.site-footer a,.source-credit a,.contact-action.secondary,[data-copy-email]){color:#4e3a66}
html[data-theme="light"] :is(.contact-nav,.circle-link,.language-switch,.menu-toggle,.close-button,.back-home-button,.footer-email,.contact-bottom a,[data-copy-email]){border-color:#3f31453b}
html[data-theme="light"] .circle-link{color:var(--fg)}
html[data-theme="light"] .circle-link:hover,html[data-theme="light"] .close-button:hover{background:#25202e;color:#fff}
html[data-theme="light"] .hero-controls button:after{background:#322b4040}
html[data-theme="light"] .hero-controls button.active:after{background:#7350b6}
html[data-theme="light"] .filters button{color:#6b6474}
html[data-theme="light"] .filters button.active{color:#fff;background:#29222f}
html[data-theme="light"] .filters button:hover:not(.active){color:#34263e;background:#6b469311}
html[data-theme="light"] .language-switch button{color:#6b6277}
html[data-theme="light"] .language-switch button[aria-pressed=true]{background:#29222f;color:#fff}
html[data-theme="light"] .language-switch button[aria-pressed=false]:is(:hover,:focus-visible){color:#503078;background:#8b5bcf17;border-color:#8c5cbd55;box-shadow:0 0 16px #8165ad17}
html[data-theme="light"] .menu-toggle{background:#ffffff80}
html[data-theme="light"] .site-header #main-nav{color:var(--fg)}
html[data-theme="light"] .project-image:before{border-color:#32253e15}
html[data-theme="light"] .about-index{color:#e7e5ec}
html[data-theme="light"] .about-index span{color:#8b8097}
html[data-theme="light"] .about-title h2>span,html[data-theme="light"] .contact-title>span:last-child{color:#8b8396}
html[data-theme="light"] .contact-title:hover>span:last-child{color:#7350b6}
html[data-theme="light"] .contact-star{color:#8864c8}
html[data-theme="light"] .dialog-nav{background:#f5f5f7e8;border-color:#33264218}
html[data-theme="light"] .project-heading-top .project-back:before{border-color:#3f31453b;background:#ffffff80}
html[data-theme="light"] .back-home-button{background:#fff5}
html[data-theme="light"] .back-home-button:hover{background:#b5a3ff20}
html[data-theme="light"] .source-credit a{border-color:#61487860}
html[data-theme="light"] .motion-selector button{background:#eceaf0;color:#655b72;border-color:#3a274620}
html[data-theme="light"] .motion-selector button.active{background:#e2d9ee;color:#3d2554;border-color:#9c7abc}
html[data-theme="light"] .motion-selector .motion-choice-number{color:#776283}
html[data-theme="light"] .motion-stage{border-color:#442d4d25}
html[data-theme="light"] .original-video,html[data-theme="light"] .original-video video{background:#08080a}
html[data-theme="light"] .project-compact-footer .email-details{border-color:var(--line)}
html[data-theme="light"] .view-cursor:not(.visible){border-color:#8761bf80;background:#7850bb07;box-shadow:0 0 18px #b5a3ff14}
/* The test page shares the selected theme; image and graphic studies retain their own artwork colors. */
html[data-theme="light"] .lab-intro h1>span{background-image:linear-gradient(105deg,#30293b,#84788f 65%,#574066)}
html[data-theme="light"] :is(.lab-intro-bottom>p,.lab-return,.lab-section-head>div>p,.lab-preview-caption>span:last-child,.lab-story-head>span,.lab-story-copy,.lab-tools p,.lab-story-layout figcaption,.lab-detail-note,.lab-outro>p:not(.eyebrow),.lab-outro h2>span,.lab-slider-label,.depth-category,.film-category){color:var(--muted)}
html[data-theme="light"] :is(.lab-section,.lab-project-list,.lab-project-list button,.lab-story-head,.lab-tools,.lab-detail-shell,.lab-text-link,.lab-primary-link){border-color:var(--line)}
html[data-theme="light"] :is(.lab-jump span,.lab-project-list button[aria-pressed=true],.lab-story-tabs button[aria-selected=true],.depth-card,.film-caption,.lab-film-controls>span>span:first-child){color:var(--fg)}
html[data-theme="light"] :is(.lab-jump,.lab-project-list button,.lab-story-tabs button,.lab-film-controls){color:#746b7f}
html[data-theme="light"] .lab-preview-open{color:#f5f4f7}
html[data-theme="light"] .lab-pill{color:#64458a;border-color:#7350b650}
html[data-theme="light"] .lab-story-tabs button[aria-selected=true]{background:#8e63c40c;border-color:#7350b630}
html[data-theme="light"] .lab-detail-shell{background:#eeeaf3}
html[data-theme="light"] .lab-detail-controls button{border-color:#5f427344}
html[data-theme="light"] .lab-primary-link{background:#fff5;color:#53376e}
html[data-theme="light"] .lab-small-button{color:#52346b;background:#fff7;border-color:#5f427344}
html[data-theme="light"] .lab-gesture-grid .gesture-card{background:#eeebf3;border-color:#50396026;color:#241a2e}
html[data-theme="light"] .gesture-caption p{color:#746581}
html[data-theme="light"] .lab-film-controls button{color:var(--fg);border-color:var(--line);background:#fff5}
html[data-theme="light"] .lab-motion-toggle{color:#6a5c7a}
html[data-theme="light"] .lab-light-section{background:#08080a;color:#f5f4f7}
html[data-theme="light"] .lab-light-section :is(.eyebrow,.lab-section-head>div>p,.lab-slider-label){color:#b7acbf}
html[data-theme="light"] .lab-type-stage{border-color:#25212d}
/* Secondary previews use the dedicated narrow cover composition. */
.lab-preview-picture[data-project="runweave-from-01"] img,.film-card[data-project="runweave-from-01"] img{object-fit:cover;object-position:center}
@media(max-width:900px){html[data-theme="light"] .site-header #main-nav{background:#f8f7fbee;border-color:#62427822;box-shadow:0 20px 50px #2c1b4520}}
@media(max-width:700px){.lab-header{flex-wrap:wrap;height:auto;min-height:90px;padding-top:18px;padding-bottom:18px;gap:12px}.lab-header-actions{gap:14px}.lab-header .lab-return{font-size:12px}.type-word,.type-echo{font-size:15vw}.lab-type-stage{padding-top:70px;padding-bottom:90px}.lab-type-stage{--glyph-radius:110px}.project-title-row .letter-halo{--glyph-radius:100px}}
@media(max-width:600px){.site-header .brand-star{display:none}.site-header .wordmark{font-size:18px}.header-controls{gap:6px}.theme-switch{--theme-width:68px;--theme-thumb-size:28px;--theme-icon-size:16px}.media-dialog-tools{justify-content:flex-end}.media-dialog-tools .theme-switch{margin-right:auto}.lab-header-actions{gap:10px}.lab-header .language-switch button{min-width:34px}.site-header .language-switch button{min-width:32px}.site-header .menu-toggle{width:40px;height:44px}.site-header{gap:8px}}
@media(prefers-reduced-motion:reduce){body,dialog,.theme-switch,.theme-switch svg,.theme-thumb{transition:none}.lab-type-stage .halo-letter{transform:scaleY(var(--stretch));transition:none}}

/* The inactive theme option uses exactly the EN/FR hover palette and motion. */
.theme-switch::before{content:"";position:absolute;top:50%;right:var(--theme-inset);margin-top:calc(var(--theme-thumb-size) / -2);width:var(--theme-thumb-size);height:var(--theme-thumb-size);box-sizing:border-box;border:1px solid transparent;border-radius:20px;background:transparent;pointer-events:none;transition:background .2s,border-color .2s,box-shadow .2s,transform .2s}
.theme-switch[aria-checked="true"]::before{right:auto;left:var(--theme-inset)}
.theme-switch :is(.theme-sun,.theme-moon){transition:color .2s,transform .2s;filter:none}
.theme-switch:is(:hover,:focus-visible)::before{background:#b5a3ff30;border-color:#c4b1ff80;box-shadow:0 0 20px #a68bff30;transform:translateY(-1px)}
.theme-switch[aria-checked="false"]:is(:hover,:focus-visible) .theme-sun,.theme-switch[aria-checked="true"]:is(:hover,:focus-visible) .theme-moon{color:#fff;transform:translateY(-1px)}
html[data-theme="light"] .theme-switch:is(:hover,:focus-visible)::before{background:#8b5bcf17;border-color:#8c5cbd55;box-shadow:0 0 16px #8165ad17}
html[data-theme="light"] .theme-switch[aria-checked="true"]:is(:hover,:focus-visible) .theme-moon{color:#503078}
.theme-switch:active::before,.theme-switch[aria-checked="false"]:active .theme-sun,.theme-switch[aria-checked="true"]:active .theme-moon{transform:translateY(0)}
@media(prefers-reduced-motion:reduce){.theme-switch::before,.theme-switch :is(.theme-sun,.theme-moon){transition:none}.theme-switch:is(:hover,:focus-visible)::before,.theme-switch[aria-checked="false"]:is(:hover,:focus-visible) .theme-sun,.theme-switch[aria-checked="true"]:is(:hover,:focus-visible) .theme-moon{transform:none}}
/* Keep the standalone experimental toggle's own treatment. */
.lab-theme-switch>span{transition:color .2s,transform .25s var(--ease),filter .25s;transform-origin:center}
.lab-theme-switch[aria-checked="false"]:is(:hover,:focus-visible)>span:nth-child(2){color:#f3d59f;transform:translateY(-1px) scale(1.08);filter:drop-shadow(0 0 4px #efc67866)}
.lab-theme-switch[aria-checked="true"]:is(:hover,:focus-visible)>span:first-child{color:#6552a0;transform:translateY(-1px) scale(1.08);filter:drop-shadow(0 0 4px #8775c766)}
@media(prefers-reduced-motion:reduce){.lab-theme-switch>span{transition:none}.lab-theme-switch[aria-checked="false"]:is(:hover,:focus-visible)>span:nth-child(2),.lab-theme-switch[aria-checked="true"]:is(:hover,:focus-visible)>span:first-child{transform:none}}
/* The kinetic study becomes an actionable, bilingual contact signature. */
.kinetic-contact{line-height:1.13;isolation:isolate}
.kinetic-line{display:block;max-width:100%}
.kinetic-word{display:inline-block;white-space:nowrap}
.kinetic-contact .halo-letter{display:inline-block;transform:translate3d(0,var(--letter-y,0px),0);transition:transform .24s var(--ease)}
.kinetic-contact.halo-active .halo-letter{transition:none}
/* Negative tracking reduces a glyph's advance box. Give the text mask room
   on every edge while compensating margins retain the original rhythm. */
.kinetic-contact .halo-letter,.lab-type-stage .halo-letter{padding:.12em .16em .16em;margin:-.12em -.16em -.16em;overflow:visible}
.kinetic-secondary{--fg:#a09ba9}
html[data-theme="light"] .kinetic-secondary{--fg:#77707f}
.kinetic-contact:focus-visible .halo-letter{color:var(--violet)}
@supports ((background-clip:text) or (-webkit-background-clip:text)){.kinetic-contact:focus-visible .halo-letter{background-image:linear-gradient(var(--violet),var(--violet))}}
@media(max-width:760px){.kinetic-contact{--glyph-radius:100px}.kinetic-contact .contact-star{right:-.7em}}
@media(prefers-reduced-motion:reduce){.kinetic-contact .halo-letter{transform:none;transition:none}}

/* A drawn mark avoids emoji substitution and missing mobile glyphs. */
.asterisk-icon{display:block;width:1em;height:1em;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:butt;flex-shrink:0}
.brand-star,.site-header .brand-star,.dialog-nav .brand-star,.lab-header .brand-star{display:inline-flex;align-items:center;justify-content:center;line-height:1;flex-shrink:0;color:var(--violet)}
.practice-symbol:has(.asterisk-icon){display:inline-flex;align-items:center;justify-content:center;color:inherit}
.contact-star{display:inline-flex;align-items:center;justify-content:center;line-height:1}
@media(max-width:600px){
 .site-header .brand-star,.dialog-nav .brand-star{display:inline-flex;font-size:22px}
 .project-dialog .media-dialog-tools{justify-content:flex-end}
 .kinetic-contact{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:12px;width:100%}
 .kinetic-contact>.kinetic-line:first-child{grid-column:1;grid-row:1}
 .kinetic-contact .contact-star{position:static;grid-column:2;grid-row:1;align-self:center;font-size:32px}
 .kinetic-contact>.kinetic-secondary{grid-column:1/-1;grid-row:2}
}

/* Equal icon footprints and a neutral resting color across disciplines. */
.practice-symbol{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;line-height:1;color:inherit}
.practice-symbol .practice-icon{display:block;width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:1.5;flex-shrink:0}
@media(max-width:600px){.practice-symbol{width:24px;height:24px}}

/* Circular EN/FR buttons, independent of text metrics or mobile minimum heights. */
.language-switch,.legal-page .legal-languages{display:flex;align-items:center;justify-content:center;gap:2px;width:80px;min-width:80px;height:44px;padding:4px;border-radius:999px;flex-shrink:0}
.language-switch button,.legal-page .legal-languages a{display:grid;place-items:center;width:34px;height:34px;min-width:34px;min-height:34px;max-width:34px;max-height:34px;flex:0 0 34px;padding:0;border-radius:50%;line-height:1;letter-spacing:0}
