/* Shared portfolio chrome. Learning sample runtimes have separate styles. */
*{box-sizing:border-box}html{scroll-padding-top:24px}body{margin:0;background:var(--paper);color:var(--ink);font:var(--type-body)/1.65 var(--body);-webkit-font-smoothing:antialiased}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer}img{display:block;max-width:100%;height:auto}figure{margin:0}p{margin:0 0 var(--space-6);max-width:var(--measure)}p:last-child{margin-bottom:0}h1,h2,h3,h4{margin:0 0 var(--space-6);font-family:var(--display);font-weight:400;line-height:1.08;letter-spacing:-.025em;overflow-wrap:break-word}h1{font-size:var(--type-h1)}h2{font-size:var(--type-h2)}h3{font-size:var(--type-h3)}h4{font:600 var(--type-subhead)/1.35 var(--body)}em{font-weight:inherit}strong{font-weight:600}ul,ol{padding-left:var(--space-6)}li{margin-bottom:var(--space-3);max-width:var(--measure)}a{color:inherit;text-underline-offset:4px;text-decoration-thickness:1px;overflow-wrap:anywhere}a:hover{text-decoration-thickness:2px}a:focus-visible,button:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--ink);outline-offset:4px}::selection{background:var(--ink);color:var(--paper)}[hidden]{display:none!important}main{min-width:0}section,article,div,aside,figure,header,nav,footer{min-width:0}button,a,summary{-webkit-tap-highlight-color:transparent}.wrap{width:100%;max-width:var(--site-width);margin-inline:auto;padding-inline:var(--gutter)}.skip{position:fixed;z-index:100;top:8px;left:var(--gutter);padding:var(--space-3) var(--space-5);background:var(--ink);color:var(--paper);transform:translateY(-200%)}.skip:focus{transform:none}.eyebrow,.card-category{font:600 var(--type-label)/1.5 var(--body);letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.eyebrow{margin-bottom:var(--space-4)}.lead,.case-deck,.project-intro{font-size:var(--type-lead);line-height:1.55}.metadata,.note,.evidence-note,figcaption,.demo-status{font-size:var(--type-small);line-height:1.6;color:var(--muted)}figcaption{margin-top:var(--space-3);max-width:var(--measure)}.evidence-note{border-left:2px solid var(--rule);padding-left:var(--space-5)}.back-link{display:inline-flex;align-items:center;min-height:44px;font-size:var(--type-small);margin-bottom:var(--space-8)}.button{display:inline-flex;justify-content:center;align-items:center;gap:var(--space-3);min-height:48px;padding:var(--space-3) var(--space-5);border:1px solid var(--accent);border-radius:var(--radius);background:var(--accent);color:var(--on-accent);font:600 var(--type-detail)/1.5 var(--body);text-decoration:none;transition:background-color var(--motion)}.button:hover{background:var(--accent-hover);border-color:var(--accent-hover);text-decoration:none}.button:focus-visible{outline-color:var(--ink)}.actions,.hero-actions{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-4) var(--space-6);margin-top:var(--space-6)}.actions>a:not(.button),.hero-actions>a:not(.button){display:inline-flex;align-items:center;min-height:44px;font-size:var(--type-small);font-weight:600}.icon{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.5;vertical-align:middle}.site-header{max-width:var(--site-width);margin:auto;padding:var(--space-6) var(--gutter);display:flex;align-items:center;justify-content:space-between;gap:var(--space-6);border-bottom:1px solid var(--rule)}.wordmark{display:inline-flex;flex-direction:column;gap:var(--space-1);color:var(--ink);text-decoration:none;line-height:1.15}.wordmark-name{font:400 var(--type-title-medium)/1.1 var(--display);letter-spacing:-.02em}.wordmark-caption{font:500 var(--type-label)/1.5 var(--body);letter-spacing:.14em;text-transform:uppercase}.site-header nav{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-7)}.site-header nav a{display:inline-flex;align-items:center;min-height:44px;font-size:var(--type-small);text-decoration:none}.site-header nav a:hover,.site-header nav a[aria-current]{text-decoration:underline}.site-footer{border-top:1px solid var(--rule);padding-block:var(--space-8)}.site-footer>.wrap{display:flex;align-items:start;justify-content:space-between;gap:var(--space-6)}.site-footer p{font-size:var(--type-small);margin:0}.site-footer a{display:inline-flex;align-items:center;min-height:44px}.footer-links{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-6)}.footer-name{font-family:var(--display);font-size:var(--type-title-small)!important}.footer-caption{display:block;color:var(--muted);font:var(--type-label)/1.5 var(--body);margin-top:var(--space-2)}

/* Home: a café invitation, direct project browsing, then an optional detour. */
.header-actions{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:var(--space-3) var(--space-6)}
.motion-toggle{display:inline-flex;align-items:center;gap:var(--space-2);background:transparent;border:1px solid var(--rule);border-radius:var(--radius);padding:var(--space-2) var(--space-3);min-height:44px;font-size:var(--type-label);line-height:1.4;white-space:nowrap}
.motion-note{width:100%;max-width:44ch;font-size:var(--type-label);color:var(--muted);line-height:1.5}.motion-toggle svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.5}.motion-pause{display:none}.motion-toggle[aria-pressed=true] .motion-pause{display:block}.motion-toggle[aria-pressed=true] .motion-waves{display:none}.motion-state{font-weight:600;border-left:1px solid var(--rule);padding-left:var(--space-2)}.motion-toggle:disabled{cursor:default;color:var(--muted)}
.editorial-hero{display:grid;grid-template-columns:minmax(0,6fr) minmax(0,6fr);grid-template-areas:"title art" "intro art";column-gap:var(--space-8);row-gap:var(--space-6);padding-top:var(--space-20);padding-bottom:var(--space-20);align-items:start}
.hero-heading{grid-area:title}.hero-heading .eyebrow{font-size:var(--type-cafe-label)}.hero-title{font-size:var(--type-hero);line-height:.98;letter-spacing:-.04em;margin:0;max-width:11ch}.hero-title em{display:block;color:var(--clay);font-style:italic}.hero-aside{grid-area:intro;max-width:43ch}.hero-aside .lead{font-size:var(--type-lead)}.hero-aside>p:not(.lead):not(.hero-person){font-size:var(--type-detail)}.hero-person{font-size:var(--type-small);color:var(--muted);margin-top:var(--space-8)}.hero-person strong{display:block;color:var(--ink);margin-bottom:var(--space-1)}
.hero-cafe{grid-area:art;align-self:center;margin-top:var(--space-8);position:relative}.hero-cafe:before{content:"";position:absolute;background:var(--wash-blue);inset:17% 6% 7% 12%;border-radius:48% 46% 44% 53%;z-index:-1;transform:rotate(-7deg)}.hero-cafe{isolation:isolate}.hero-cafe img{width:100%;height:auto}.hero-cafe figcaption{font:italic var(--type-subhead)/1.5 var(--display);color:var(--muted);text-align:center;max-width:none;margin-top:0}
.section-heading{display:grid;grid-template-columns:7fr 5fr;gap:var(--space-12);align-items:end;margin-bottom:var(--space-8)}.section-heading h2{margin:0;max-width:17ch}.section-heading>p{font-size:var(--type-detail);color:var(--muted);max-width:32ch;justify-self:end;margin-bottom:var(--space-1)}.collection-section{position:relative;padding-top:var(--space-12);padding-bottom:var(--space-20);border-top:1px solid var(--rule)}.legacy-anchor{position:absolute;top:0}
.work-filters{display:flex;flex-wrap:wrap;gap:var(--space-2);padding-bottom:var(--space-4)}.work-filters button{display:inline-flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);min-height:48px;border:1px solid var(--rule);border-radius:var(--radius);background:transparent;font-size:var(--type-small);font-weight:500}.work-filters button:hover{border-color:var(--ink)}.work-filters button[aria-pressed=true]{background:var(--deep-sea);border-color:var(--deep-sea);color:var(--paper)}.filter-icon{width:22px;height:22px;flex-shrink:0;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}.filter-count{font-size:var(--type-label);font-variant-numeric:tabular-nums}.work-count{font-size:var(--type-label);color:var(--muted);margin:0 0 var(--space-6)}
.work-shelf{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:var(--space-16) var(--space-10);align-items:start}.work-card{display:flex;flex-direction:column;grid-column:span 7;text-decoration:none;color:var(--ink);border-bottom:1px solid var(--rule);padding-bottom:var(--space-6);min-width:0}.work-card:nth-child(4n+2),.work-card:nth-child(4n+3){grid-column:span 5}.work-shelf.is-filtered .work-card{grid-column:span 6;padding-top:0}.card-image{display:flex;justify-content:center;align-items:center;position:relative;aspect-ratio:1.65;background:var(--surface);padding:var(--space-6);margin:0 0 var(--space-6);min-width:0;overflow:hidden}.card-image.blue{background:var(--wash-blue)}.card-image.clay{background:var(--clay-wash)}.card-image.dark{background:var(--deep-sea)}.card-image img{position:absolute;inset:var(--space-6);width:calc(100% - 2 * var(--space-6));height:calc(100% - 2 * var(--space-6));object-fit:contain}.card-image.cover{aspect-ratio:1.45}.card-copy{position:relative;padding-right:var(--space-8)}.card-copy .card-category{display:block;font-size:var(--type-label);letter-spacing:.055em;margin-bottom:var(--space-3)}.work-card h3{font-size:var(--type-card);margin-bottom:var(--space-3);line-height:1.1}.work-card p{font-size:var(--type-body);line-height:1.6;margin-bottom:var(--space-3)}.card-context{display:block;font-size:var(--type-label);color:var(--muted);margin-bottom:var(--space-5)}.card-link{display:inline-flex;align-items:center;gap:var(--space-3);font-size:var(--type-small);text-decoration:underline;text-underline-offset:5px}.card-link span{position:absolute;right:0;top:0;font-size:var(--type-title-small);text-decoration:none}.work-card:hover h3{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:6px}.work-card:hover{text-decoration:none}.project-status{display:block;font-size:var(--type-label);color:var(--muted);margin-top:var(--space-3)}
/* Small Worlds is a discoverable footnote to the main catalog, never its replacement. */
.worlds-section{padding-block:var(--space-12) var(--space-20)}.worlds-discovery{border-block:1px solid var(--deep-sea)}.worlds-discovery>summary{list-style:none;cursor:pointer;display:grid;grid-template-columns:100px minmax(0,1fr) auto;align-items:center;gap:var(--space-8);padding:var(--space-10);color:var(--paper);background:var(--deep-sea);position:relative;isolation:isolate}.worlds-discovery>summary::-webkit-details-marker{display:none}.worlds-discovery>summary:focus-visible{outline-color:var(--clay);outline-offset:5px}.entry-symbol svg{width:100%;height:auto;display:block;overflow:visible}.entry-frame{fill:none;stroke:var(--brass);stroke-width:1.4}.entry-inner{fill:var(--portal-paper)}.entry-door{fill:var(--clay);stroke:var(--brass);stroke-width:1.2;transform-box:view-box}.entry-door-left{transform-origin:28px 132px}.entry-door-right{transform-origin:92px 132px}.entry-door circle{fill:var(--portal-paper);stroke:none}.entry-step{fill:none;stroke:var(--brass);stroke-width:1.5}.entry-frame-inner{stroke-width:.6;opacity:.65}.door-panel,.door-grain{fill:none;stroke:var(--portal-paper);stroke-width:.65}.door-glass{fill:var(--deep-sea);stroke:var(--brass);stroke-width:.6}.entry-sun{fill:var(--brass)}.entry-hills{fill:var(--rule-dark)}.entry-path{fill:none;stroke:var(--portal-paper);stroke-width:2}.entry-stars{fill:none;stroke:var(--deep-sea);stroke-width:.7}.entry-threshold{fill:var(--portal-paper);opacity:0;transform:scaleY(.2);transform-origin:60px 132px}.entry-landscape{opacity:.35}.entry-copy{display:block}.entry-kicker{display:block;font:500 var(--type-label)/1.5 var(--body);letter-spacing:.08em;text-transform:uppercase;margin-bottom:var(--space-4)}.entry-title{display:block;font:400 clamp(32px,4.7vw,58px)/1.02 var(--display);letter-spacing:-.025em;max-width:16ch}.entry-title em{display:block;color:var(--portal-paper)}.entry-description{display:block;font-size:var(--type-detail);max-width:43ch;margin-top:var(--space-4)}.entry-action{display:flex;align-items:center;gap:var(--space-3);font-size:var(--type-small);align-self:end;white-space:nowrap;border-bottom:1px solid var(--rule-dark);padding-bottom:var(--space-2)}.entry-action svg{width:28px;height:28px;fill:none;stroke:currentColor;stroke-width:1.2;flex-shrink:0}.when-open{display:none}.worlds-discovery[open] .when-closed{display:none}.worlds-discovery[open] .when-open{display:inline}.worlds-discovery[open] .entry-door-left{transform:scaleX(.15) skewY(12deg)}.worlds-discovery[open] .entry-door-right{transform:scaleX(.15) skewY(-12deg)}.worlds-discovery[open] .entry-landscape{opacity:1}.worlds-discovery[open] .entry-threshold{opacity:.8;transform:scaleY(1)}.worlds-discovery[open] .entry-action svg{transform:rotate(-90deg)}
.worlds-panel{padding-block:var(--space-10) var(--space-8)}.worlds-panel-intro{display:grid;grid-template-columns:7fr 5fr;gap:var(--space-12);align-items:start}.worlds-panel-intro>p{font-size:var(--type-detail);max-width:53ch}.worlds-panel-intro .note{font-size:var(--type-small);max-width:28ch;justify-self:end}.portal-gallery{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));align-items:start;gap:var(--space-8);margin-top:var(--space-6)}.world-portal{display:block;text-decoration:none;min-width:0}.portal-art{display:block;width:100%;height:auto;overflow:visible;margin-bottom:var(--space-6)}.portal-number{display:block;font:600 var(--type-label)/1.5 var(--body);color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:var(--space-3)}.world-portal h3{font-size:var(--type-title-section);margin-bottom:var(--space-3);line-height:1.06}.world-portal p{font-size:var(--type-detail);margin-bottom:var(--space-5)}.portal-cta{font-size:var(--type-small);text-decoration:underline;text-underline-offset:5px}.portal-cta span{display:inline-block;margin-left:var(--space-2)}.world-portal:hover h3{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:5px}.world-portal:focus-visible{outline-offset:8px}.portal-school{padding-top:var(--space-8)}.portal-andes{padding-top:var(--space-3)}.worlds-return{display:inline-flex;align-items:center;min-height:44px;margin-top:var(--space-12);font-size:var(--type-small)}
.portal-art .frame-shadow{fill:var(--clay-wash)}.portal-art .frame{fill:var(--deep-sea)}.portal-art .frame-line{stroke:var(--brass);stroke-width:1.4;fill:none}.portal-art .step{fill:var(--deep-sea)}.portal-art .leaf{fill:var(--rule-dark)}.portal-art .pot{fill:var(--clay)}.cafe-portal .awning{fill:var(--clay);stroke:var(--portal-paper);stroke-width:1}.cafe-portal .awning-lines{stroke:var(--portal-paper);stroke-width:12;fill:none;opacity:.75}.cafe-portal .sign{fill:var(--portal-paper);stroke:var(--brass);stroke-width:2}.cafe-portal .sign-mark{fill:none;stroke:var(--deep-sea);stroke-width:2}.brass-fill{fill:var(--brass)}.school-portal .night{fill:var(--deep-sea)}.school-portal .stone-joints{fill:none;stroke:var(--rule-dark);stroke-width:1.5}.school-portal .clock-rim{fill:var(--deep-sea);stroke:var(--brass);stroke-width:1.8}.school-portal .clock-face{fill:var(--portal-paper)}.school-portal .clock-hands{fill:none;stroke:var(--deep-sea);stroke-width:1.5;stroke-linecap:round}.school-portal .vine{fill:none;stroke:var(--rule-dark);stroke-width:2}.andes-portal .frame{fill:var(--clay)}.andes-portal .frame-shadow{fill:var(--wash-blue)}.andes-portal .ridge-lines{fill:none;stroke:var(--portal-paper);stroke-width:1.4}.andes-portal .trail{fill:none;stroke:var(--portal-paper);stroke-width:3;stroke-dasharray:4 5}.andes-portal .trail-mark{fill:var(--clay);stroke:var(--portal-paper);stroke-width:2}.andes-portal .compass{fill:var(--paper);stroke:var(--clay);stroke-width:1.3}.andes-portal .grass{fill:none;stroke:var(--deep-sea);stroke-width:2}
/* Responsive details: native actions remain immediate; decorative layers carry motion. */
.work-card{position:relative}.work-card::after{content:"";position:absolute;bottom:-1px;left:0;width:100%;height:2px;background:var(--clay);transform:scaleX(0);transform-origin:left;pointer-events:none}.work-card:is(:hover,:focus-visible)::after{transform:scaleX(1)}
.site-header nav a,.case-jumps a{position:relative}.site-header nav a::after,.case-jumps a::after{content:"";height:1px;background:currentColor;position:absolute;left:0;right:0;bottom:7px;transform:scaleX(0);transform-origin:left;pointer-events:none}.site-header nav a:is(:hover,:focus-visible)::after,.case-jumps a:is(:hover,:focus-visible)::after{transform:scaleX(1)}.site-header nav a:is(:hover,:focus-visible){text-decoration:none}
.research-note>summary,.support-detail>summary{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);list-style:none}.research-note>summary::-webkit-details-marker,.support-detail>summary::-webkit-details-marker{display:none}.research-note>summary::after,.support-detail>summary::after{content:"+";font:400 var(--type-title-small)/1 var(--body);flex-shrink:0;width:24px;text-align:center}.research-note[open]>summary::after,.support-detail[open]>summary::after{content:"−"}
.image-link{position:relative}.image-link::after{content:"";position:absolute;inset:0;border:2px solid var(--clay);opacity:0;pointer-events:none}.image-link:is(:hover,:focus-visible)::after{opacity:1}
/* Nothing starts until the preference controller opts in. No looping or scroll-driven motion. */
.motion-enabled .filter-icon,.motion-enabled .card-link span,.motion-enabled .button>span,.motion-enabled .portal-cta span,.motion-enabled .entry-action svg{transition:transform var(--motion-art) var(--ease-out)}
.motion-enabled .card-image img,.motion-enabled .portal-art,.motion-enabled .hero-cafe img{transition:transform var(--motion-art) var(--ease-out)}
.motion-enabled .work-card::after,.motion-enabled .site-header nav a::after,.motion-enabled .case-jumps a::after{transition:transform var(--motion-art) var(--ease-out)}
.motion-enabled .image-link::after{transition:opacity var(--motion)}
.motion-enabled .entry-door{transition:transform var(--motion-door) var(--ease-out)}.motion-enabled .entry-landscape,.motion-enabled .entry-threshold{transition:opacity var(--motion-door),transform var(--motion-door) var(--ease-out)}
.motion-enabled .worlds-discovery:not([open])>summary:is(:hover,:focus-visible) .entry-door-left{transform:scaleX(.86) skewY(2deg)}.motion-enabled .worlds-discovery:not([open])>summary:is(:hover,:focus-visible) .entry-door-right{transform:scaleX(.86) skewY(-2deg)}
.motion-enabled .work-filters button:is(:hover,:focus-visible) .filter-icon{transform:translateY(-2px) rotate(-6deg)}
.motion-enabled .work-card:is(:hover,:focus-visible) .card-link span,.motion-enabled .button:is(:hover,:focus-visible)>span,.motion-enabled .world-portal:is(:hover,:focus-visible) .portal-cta span{transform:translate(3px,-3px)}
.motion-enabled .work-card:is(:hover,:focus-visible) .card-image img{transform:scale(1.025)}.motion-enabled .world-portal:is(:hover,:focus-visible) .portal-art{transform:translateY(-6px)}.motion-enabled .hero-cafe:hover img{transform:translateY(-4px) rotate(-.4deg)}
/* One small, setting-specific response per portal. Text is never delayed or clipped. */
.cafe-sign{transform-box:fill-box;transform-origin:50% 0}.motion-enabled .portal-cafe:is(:hover,:focus-visible) .cafe-sign{animation:sign-swing var(--motion-detail) ease-out}
.motion-enabled .portal-school:is(:hover,:focus-visible) .clock-rim{animation:arch-trace var(--motion-detail) ease-out}.motion-enabled .portal-andes:is(:hover,:focus-visible) .trail{animation:path-travel var(--motion-detail) ease-out}
.motion-enabled .worlds-discovery.is-entering .portal-art{animation:world-arrive var(--motion-reveal) var(--ease-out) both;animation-delay:180ms}.motion-enabled .worlds-discovery.is-entering .portal-school .portal-art{animation-delay:calc(180ms + var(--motion-stagger))}.motion-enabled .worlds-discovery.is-entering .portal-andes .portal-art{animation-delay:calc(180ms + 2 * var(--motion-stagger))}
.motion-enabled .work-card.is-settling .card-image{animation:filter-settle var(--motion-filter) var(--ease-out) both}
@keyframes world-arrive{from{transform:translateY(22px) scale(.94)}to{transform:translateY(0) scale(1)}}
@keyframes filter-settle{from{transform:translateY(9px)}to{transform:translateY(0)}}
@keyframes sign-swing{0%,100%{rotate:0deg}28%{rotate:5deg}62%{rotate:-2deg}}
@keyframes arch-trace{from{stroke-dasharray:190;stroke-dashoffset:190}to{stroke-dasharray:190;stroke-dashoffset:0}}
@keyframes path-travel{from{stroke-dashoffset:27}to{stroke-dashoffset:0}}
html[data-motion=still] *,html[data-motion=still] *::before,html[data-motion=still] *::after{scroll-behavior:auto!important;animation:none!important;transition:none!important}

.approach-section{border-top:1px solid var(--rule);padding-block:var(--space-16) var(--space-24)}.approach-layout{display:grid;grid-template-columns:5fr 7fr;gap:var(--space-16)}.approach-list{list-style:none;margin:0;padding:0;counter-reset:approach}.approach-list li{counter-increment:approach;border-top:1px solid var(--rule);padding:var(--space-6) 0;display:grid;grid-template-columns:32px 1fr;gap:var(--space-4);max-width:none;margin:0}.approach-list li:before{content:counter(approach,decimal-leading-zero);font-size:var(--type-label);color:var(--muted);padding-top:var(--space-1)}.approach-list h3{font:600 var(--type-body)/1.4 var(--body);letter-spacing:0;margin-bottom:var(--space-2)}.approach-list p{font-size:var(--type-body);margin:0}.research-note{margin-top:var(--space-6);border-top:1px solid var(--rule);padding-top:var(--space-4)}.research-note summary{cursor:pointer;min-height:44px;font-weight:600;font-size:var(--type-small)}.research-note p{font-size:var(--type-small);line-height:1.7;margin-top:var(--space-4)}.about-editorial{border-top:1px solid var(--rule);padding-block:var(--space-16) var(--space-24);display:grid;grid-template-columns:5fr 7fr;gap:var(--space-16)}.about-editorial h2{max-width:12ch}.about-editorial .lead{font-size:var(--type-lead)}.about-editorial .personal-line{border-top:1px solid var(--rule);padding-top:var(--space-6);font-family:var(--display);font-size:var(--type-title-small);line-height:1.4}.contact-line a{display:inline-flex;align-items:center;min-height:44px;font-weight:600}.about-editorial .note{margin-top:var(--space-8)}.access-link{display:inline-flex;align-items:center;min-height:44px;font-size:var(--type-small);font-weight:600;margin-top:var(--space-2)}

/* Project pages share one editorial system. */
.portfolio-case,.access-page,.credits-page,.aid-page{padding-top:var(--space-8);padding-bottom:var(--space-16)}.portfolio-case h1{font-size:var(--type-h1);line-height:1.04;margin:var(--space-4) 0 var(--space-6)}.case-hero{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:var(--space-12);align-items:center;margin:var(--space-6) 0 var(--space-12)}.case-hero .lead{font-size:var(--type-deck)}.case-hero figure{padding:var(--space-6);background:var(--surface)}.case-hero figure img{width:100%;height:auto}.case-hero .eyebrow{color:var(--muted)}.case-facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-8);border-block:1px solid var(--rule);padding-block:var(--space-6);margin:0 0 var(--space-4)}.case-facts>div{min-width:0}.case-facts dt,.case-facts strong{display:block;font:600 var(--type-label)/1.5 var(--body);letter-spacing:.06em;text-transform:uppercase;margin:0 0 var(--space-2);color:var(--muted)}.case-facts dd,.case-facts span{display:block;margin:0;font-size:var(--type-detail);line-height:1.65}.case-section{padding:var(--space-12) 0;border-bottom:1px solid var(--rule);max-width:1040px}.case-section h2{font-size:var(--type-h2);max-width:25ch}.case-section p,.case-section li{font-size:var(--type-body)}.case-section h3{font-size:var(--type-title-medium);margin-bottom:var(--space-4)}.case-pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-12);margin-top:var(--space-8)}.case-visual{margin:var(--space-8) 0;max-width:960px}.case-visual img{max-height:720px;width:auto;object-fit:contain;object-position:left}.case-evaluation{border-bottom:0}.table-scroll{overflow-x:auto;max-width:100%;margin-block:var(--space-6)}.table-scroll table{width:100%;border-collapse:collapse;text-align:left}.table-scroll th,.table-scroll td{padding:var(--space-4);border-bottom:1px solid var(--rule);vertical-align:top;font-size:var(--type-detail);min-width:180px}.table-scroll th{background:var(--surface);font-weight:600}.record-preview{max-width:390px;margin:auto;border:1px solid var(--rule)}.record-preview img{width:100%;height:auto}.record-preview figcaption{padding:var(--space-3);margin:0}.record-preview a{display:block}.metadata{margin-top:var(--space-6)}

/* Classroom case studies and guided entry points. */
.case-intro,.demo-intro{padding-top:var(--space-8);padding-bottom:var(--space-16)}.case-intro h1,.demo-intro h1{max-width:16ch;margin:var(--space-4) 0 var(--space-6)}.case-deck{max-width:48ch}.case-jumps{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-6);margin-top:var(--space-6);padding-top:var(--space-4);border-top:1px solid var(--rule)}.case-jumps a{display:inline-flex;align-items:center;min-height:44px;font-size:var(--type-small)}.escape-hero{display:grid;grid-template-columns:7fr 5fr;gap:var(--space-16);padding-block:var(--space-12);border-block:1px solid var(--rule)}.escape-story h2{font-size:var(--type-h2);max-width:19ch}.book-cover{max-width:270px;justify-self:center;align-self:center;background:var(--surface);padding:var(--space-5)}.case-numbers{display:flex;flex-wrap:wrap;gap:var(--space-8);margin-top:var(--space-8)}.case-numbers b{font:400 var(--type-title-large)/1 var(--display)}.case-numbers span{display:block;margin-top:var(--space-2);font-size:var(--type-label);color:var(--muted)}.case-narrative{display:grid;grid-template-columns:5fr 7fr;gap:var(--space-16);padding-block:var(--space-12) var(--space-16);border-top:1px solid var(--rule)}.decision-gallery{padding-block:var(--space-6) var(--space-12)}.decision-gallery>h2{margin-bottom:var(--space-10)}.decision-row{display:grid;grid-template-columns:6fr 5fr;gap:var(--space-20);align-items:center;padding-block:var(--space-10);border-top:1px solid var(--rule)}.decision-row.reverse{grid-template-columns:5fr 6fr}.decision-row.reverse .decision-note{order:2}.decision-row.reverse figure{order:1}.decision-note h3{font-size:var(--type-title-section);max-width:20ch}.folio{display:block;font-size:var(--type-label);color:var(--muted);margin-bottom:var(--space-4)}.decision-row figure{max-width:360px;justify-self:center}.decision-row figure img{border:1px solid var(--rule)}.transfer-note{padding-top:var(--space-6);margin-top:var(--space-6);border-top:1px solid var(--rule);font-size:var(--type-detail)}.transfer-note strong{display:block;margin-bottom:var(--space-2)}.facilitator-band{border-block:1px solid var(--rule);padding-block:var(--space-12)}.facilitator-band>.wrap{display:grid;grid-template-columns:7fr 5fr;gap:var(--space-16)}.facilitator-band aside{padding:var(--space-6);background:var(--surface)}.facilitator-band aside h3{font-size:var(--type-title-medium)}.facilitator-band aside p{font-size:var(--type-detail)}.evidence-section{display:grid;grid-template-columns:7fr 5fr;gap:var(--space-16);padding-block:var(--space-16)}.evidence-section h3{font-size:var(--type-title-section);margin-top:var(--space-8)}.evidence-section p,.evidence-section li{font-size:var(--type-body)}.more-work{border-top:1px solid var(--rule);padding-block:var(--space-10)}.supporting-project{display:grid;grid-template-columns:4fr 8fr;gap:var(--space-16);padding-block:var(--space-10);border-top:1px solid var(--rule);margin-top:var(--space-8)}.supporting-art{max-width:280px;justify-self:center}.supporting-art img{border:1px solid var(--rule)}.supporting-project h3{font-size:var(--type-title-large)}.support-detail{border-top:1px solid var(--rule);margin-top:var(--space-6);padding-top:var(--space-4)}.support-detail summary{min-height:44px;font-weight:600;font-size:var(--type-detail);cursor:pointer}.support-detail img{max-width:440px;margin-block:var(--space-6)}.case-close{padding-block:var(--space-6) var(--space-16)}.demo-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-8);margin-block:var(--space-10)}.demo-steps>div{border-top:1px solid var(--rule);padding-top:var(--space-6)}.demo-steps span{font-size:var(--type-label);color:var(--muted)}.demo-steps h2{font-size:var(--type-title-medium);margin:var(--space-4) 0}.demo-steps p{font-size:var(--type-body)}.demo-note{padding:var(--space-6);background:var(--surface);max-width:900px;margin-block:var(--space-8)}.demo-status{margin-top:var(--space-6)}.demo-intro .actions{margin-top:var(--space-8)}.demo-intro .button{max-width:100%}

/* Reference pages and gallery dialog. */
.access-page,.credits-page{max-width:var(--text-width)}.access-page h1,.credits-page h1{margin:var(--space-4) 0 var(--space-8)}.access-page>.lead{font-size:var(--type-deck)}.access-status{border-left:2px solid var(--ink);padding:var(--space-5) var(--space-6);background:var(--surface);margin-block:var(--space-8)}.access-status p{font-size:var(--type-detail)}.access-section{margin-top:var(--space-10);padding-top:var(--space-8);border-top:1px solid var(--rule)}.access-section h2{font-size:var(--type-title-large)}.access-section h3{font-size:var(--type-title-medium);margin:var(--space-8) 0 var(--space-4)}.access-section p,.access-section li{font-size:var(--type-body)}.access-page .check-date{font-size:var(--type-small);color:var(--muted);margin-top:var(--space-8)}.credits-page article{border-top:1px solid var(--rule);padding-top:var(--space-6);margin-top:var(--space-8)}.credits-page article h2{font-size:var(--type-title-medium)}.credits-page p{font-size:var(--type-body)}.aid-context{display:grid;grid-template-columns:7fr 5fr;gap:var(--space-12);padding-bottom:var(--space-10);align-items:start}.aid-context h1{font-size:var(--type-h1)}.aid-context-aside{border-left:1px solid var(--rule);padding-left:var(--space-6)}.aid-context-aside strong{display:block;margin-bottom:var(--space-3)}.aid-context-aside p{font-size:var(--type-detail)}.preview-hint{display:block;margin-top:var(--space-2);font-size:var(--type-label)}.image-link{display:block}.image-link img{width:100%}a[data-lightbox]{cursor:zoom-in}.asset-viewer{width:min(1100px,calc(100vw - 32px));max-width:calc(100vw - 32px);height:min(840px,calc(100dvh - 32px));max-height:calc(100dvh - 32px);margin:auto;padding:0;border:1px solid var(--ink);background:var(--paper);color:var(--ink);overflow:auto;overscroll-behavior:contain}.asset-viewer::backdrop{background:rgb(36 35 31 / .72)}.viewer-bar{position:sticky;top:0;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:var(--space-3) var(--space-5);background:var(--paper);border-bottom:1px solid var(--rule)}.viewer-bar h2{font-size:var(--type-title-small);margin:0}.viewer-close,.viewer-controls button{min-height:44px;min-width:44px;padding:var(--space-2) var(--space-4);background:var(--paper);color:var(--ink);border:1px solid var(--ink);border-radius:var(--radius);font-size:var(--type-small)}.viewer-close{flex-shrink:0}.viewer-body{display:grid;grid-template-columns:minmax(0,1fr) minmax(180px,240px);gap:var(--space-6);padding:var(--space-6);align-items:start}.viewer-image-wrap{padding:var(--space-4);background:var(--surface)}.viewer-image-wrap img{width:100%;height:auto;max-height:none;object-fit:contain}.viewer-info p{font-size:var(--type-detail);line-height:1.65}.viewer-info a{font-size:var(--type-small)}.viewer-controls{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-6)}.viewer-controls button:disabled{color:var(--muted);border-color:var(--rule);cursor:default}.viewer-help{font-size:var(--type-label)!important;color:var(--muted);margin-top:var(--space-4)}

@media(min-width:1000px){.work-shelf:not(.is-filtered) .work-card:nth-child(4n+2){padding-top:var(--space-12)}}
@media(max-width:1000px){.editorial-hero{gap:var(--space-8);padding-block:var(--space-16)}.small-worlds,.approach-layout,.about-editorial,.companion-note,.case-narrative,.facilitator-band>.wrap,.evidence-section,.supporting-project{gap:var(--space-10)}.case-hero{gap:var(--space-8)}.work-shelf{gap:var(--space-12) var(--space-8)}.decision-row,.decision-row.reverse{gap:var(--space-12)}.world-feature{grid-template-columns:1fr}.world-feature figure{max-width:300px}.case-facts{gap:var(--space-6)}}
@media(max-width:760px){.site-header{align-items:flex-start;gap:var(--space-3);flex-direction:column;padding-block:var(--space-5)}.site-header nav{gap:var(--space-1) var(--space-5);width:100%}.wordmark-name{font-size:var(--type-title-small)}.site-header nav a{font-size:var(--type-small)}.editorial-hero{grid-template-columns:1fr;gap:var(--space-10);padding-block:var(--space-12) var(--space-16)}.hero-title{font-size:var(--type-hero-narrow);max-width:12ch}.hero-aside{max-width:42ch}.hero-person{margin-top:var(--space-6)}.section-heading{grid-template-columns:1fr;gap:var(--space-4);margin-bottom:var(--space-8)}.section-heading>p{justify-self:start;max-width:45ch}.collection-section{padding-top:var(--space-8);padding-bottom:var(--space-12)}.work-shelf{grid-template-columns:1fr;gap:var(--space-10)}.work-card,.work-card:nth-child(n){grid-column:auto;padding-top:0}.card-image{padding:var(--space-4)}.card-image img{inset:var(--space-4);width:calc(100% - 2 * var(--space-4));height:calc(100% - 2 * var(--space-4))}.work-card h3{font-size:var(--type-title-section)}.small-worlds,.companion-note,.approach-layout,.about-editorial{grid-template-columns:1fr;gap:var(--space-8)}.small-worlds,.approach-section,.about-editorial{padding-block:var(--space-12) var(--space-16)}.small-worlds .intro{max-width:var(--measure)}.small-worlds h2{font-size:var(--type-display-md)}.world-feature{grid-template-columns:minmax(0,4fr) minmax(0,6fr);gap:var(--space-6)}.world-feature figure{padding:var(--space-3)}.world-feature h3{font-size:var(--type-title-medium)}.companion-note{padding-block:var(--space-8) var(--space-12)}.site-footer>.wrap{flex-direction:column;gap:var(--space-4)}.case-hero,.case-pair,.case-facts,.escape-hero,.case-narrative,.decision-row,.decision-row.reverse,.facilitator-band>.wrap,.evidence-section,.supporting-project,.demo-steps,.aid-context{grid-template-columns:1fr;gap:var(--space-8)}.case-hero{margin-top:var(--space-2)}.case-hero figure{padding:var(--space-4)}.case-hero .lead{font-size:var(--type-lead)}.case-facts{gap:var(--space-6)}.case-section{padding-block:var(--space-8)}.case-visual img{max-height:none;width:100%}.case-section h2{font-size:var(--type-title-large)}.case-section h3{font-size:var(--type-title-medium)}.case-intro,.demo-intro{padding-top:var(--space-6);padding-bottom:var(--space-12)}.case-intro h1,.demo-intro h1{font-size:var(--type-display-sm)}.escape-hero{padding-block:var(--space-8)}.book-cover{max-width:230px;justify-self:start}.decision-row.reverse .decision-note,.decision-row.reverse figure{order:initial}.decision-row figure{max-width:360px;width:100%}.decision-row{padding-block:var(--space-8)}.facilitator-band{padding-block:var(--space-8)}.evidence-section{padding-block:var(--space-10)}.supporting-project{gap:var(--space-8)}.supporting-art{justify-self:start;max-width:240px}.supporting-project h3{font-size:var(--type-title-section)}.demo-steps{margin-block:var(--space-8);gap:var(--space-6)}.demo-steps>div{padding-top:var(--space-5)}.viewer-body{grid-template-columns:1fr;padding:var(--space-4);gap:var(--space-6)}.viewer-bar{padding:var(--space-3) var(--space-4)}.viewer-bar h2{font-size:var(--type-deck)}.asset-viewer{width:calc(100vw - 16px);max-width:calc(100vw - 16px);height:calc(100dvh - 16px);max-height:calc(100dvh - 16px)}.viewer-image-wrap{padding:var(--space-2)}.aid-context-aside{border-left:0;border-top:1px solid var(--rule);padding:var(--space-6) 0 0}.access-page h1{font-size:var(--type-display-sm)}.access-section h2{font-size:var(--type-title-section)}.access-status{padding:var(--space-4) var(--space-5)}.table-scroll th,.table-scroll td{padding:var(--space-3);min-width:150px}.footer-links{gap:var(--space-1) var(--space-5)}}
@media(max-width:420px){.world-feature{grid-template-columns:1fr}.world-feature figure{max-width:210px}.hero-title{font-size:var(--type-display-md)}.case-intro h1,.demo-intro h1{font-size:var(--type-display-xs)}.actions{gap:var(--space-3)}.viewer-controls{gap:var(--space-2)}}
@media(min-width:761px) and (max-width:1050px){.site-header{align-items:flex-start}.header-actions{max-width:70%;gap:var(--space-2)}.site-header nav{gap:var(--space-4)}.editorial-hero{column-gap:var(--space-6);grid-template-columns:6fr 5fr}.hero-title{font-size:clamp(58px,7.2vw,76px)}.worlds-discovery>summary{gap:var(--space-6);padding:var(--space-8);grid-template-columns:76px minmax(0,1fr)}.entry-action{grid-column:2;justify-self:start}.portal-gallery{gap:var(--space-6)}.world-portal h3{font-size:var(--type-title-medium)}}
@media(max-width:760px){.header-actions{justify-content:flex-start;width:100%;gap:var(--space-2) var(--space-4)}.site-header nav{width:auto;flex-grow:1}.motion-toggle{margin-top:var(--space-1)}.editorial-hero{grid-template-columns:1fr;grid-template-areas:"title" "art" "intro";row-gap:var(--space-6)}.hero-title{font-size:var(--type-hero-narrow);max-width:11ch}.hero-cafe{max-width:520px;width:100%;justify-self:center;margin-top:0}.hero-cafe figcaption{font-size:var(--type-body)}.hero-aside{max-width:var(--measure)}.section-heading h2{max-width:20ch}.work-filters{gap:var(--space-2)}.work-filters button{padding:var(--space-2) var(--space-3);gap:var(--space-2)}.work-shelf.is-filtered .work-card{grid-column:auto}.card-image.cover{aspect-ratio:1.6}.worlds-section{padding-block:var(--space-10) var(--space-16)}.worlds-discovery>summary{grid-template-columns:64px minmax(0,1fr);gap:var(--space-5);padding:var(--space-6)}.entry-title{font-size:var(--type-title-large)}.entry-kicker{font-size:var(--type-label);letter-spacing:.03em}.entry-description{font-size:var(--type-small)}.entry-action{grid-column:2;justify-self:start}.worlds-panel-intro{grid-template-columns:1fr;gap:var(--space-3)}.worlds-panel-intro>p{margin-bottom:0}.worlds-panel-intro .note{justify-self:start;max-width:var(--measure)}.portal-gallery{grid-template-columns:1fr;gap:var(--space-12);max-width:400px;margin-inline:auto;margin-top:var(--space-8)}.world-portal,.portal-school,.portal-andes{padding-top:0}.portal-art{max-width:330px;margin-inline:auto;margin-bottom:var(--space-5)}.world-portal h3{font-size:var(--type-title-section)}.worlds-return{margin-top:var(--space-8)}}
@media(max-width:420px){.hero-title{font-size:var(--type-display-md)}.work-filters{display:grid;grid-template-columns:1fr 1fr}.work-filters button{justify-content:flex-start;min-width:0;font-size:var(--type-label)}.filter-count{margin-left:auto}.filter-icon{width:19px;height:19px}.worlds-discovery>summary{padding:var(--space-5);grid-template-columns:44px minmax(0,1fr);gap:var(--space-4)}.entry-title{font-size:var(--type-title-section)}.entry-description{grid-column:1/-1}.entry-action{grid-column:1/-1;justify-self:start}.entry-symbol{align-self:start;margin-top:var(--space-8)}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation:none!important;transition:none!important}}
@media print{body{background:white;color:black}.site-header,.site-footer,.asset-viewer,.skip{display:none!important}.wrap{max-width:none;padding-inline:0}.editorial-hero{padding-block:var(--space-6);display:block}.hero-title{font-size:var(--type-display-sm);margin-bottom:var(--space-6)}.work-shelf,.case-hero,.case-pair{display:block}.work-card{margin-bottom:var(--space-8);break-inside:avoid}.card-image{max-height:220px}.case-section{break-inside:avoid}.button{color:black;background:transparent;border:1px solid black}.table-scroll{overflow:visible}}

/* Performance brief: native text remains usable at narrow widths. */
.rubric-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-8)}.rubric-criterion{min-width:0;border-top:1px solid var(--rule);padding-top:var(--space-4)}.rubric-criterion h3{font-size:var(--type-title-small)}.rubric-criterion dl{margin:0}.rubric-criterion dl div{margin-block:var(--space-4)}.rubric-criterion dt{font-size:var(--type-small)}.rubric-criterion dd{margin:var(--space-1) 0 0}@media(max-width:640px){.rubric-grid{grid-template-columns:1fr}}

/* PulseDesk design brief: native reading order, editorial columns. */
.brief-columns{display:grid;grid-template-columns:1.1fr 1fr;gap:clamp(2rem,5vw,4rem)}.brief-columns>div{min-width:0}.brief-columns .case-section{margin-block:0 2.5rem}.brief-excerpt{margin:1rem 0;padding-inline-start:1.2rem;border-inline-start:1px solid var(--rule);font-family:var(--display);font-size:1.45rem;line-height:1.45;color:var(--deep-sea)}.brief-note{color:var(--muted);font-size:var(--type-small);margin-block:2rem 4rem}@media(max-width:700px){.brief-columns{grid-template-columns:1fr;gap:0}}
/* RelayWorks: native-text workflow study, within the editorial case layout. */
.relay-study{background:#0d343e;color:#f6f7f8;padding:clamp(24px,3.5vw,44px);min-width:0;align-self:center}
.relay-study-brand{display:flex;flex-wrap:wrap;gap:8px 24px;font-size:16px;font-weight:600;border-bottom:1px solid #718c92;padding-bottom:18px}
.relay-study-brand span{font-weight:400}.relay-study-kicker{font-size:14px;margin-top:32px;color:#d7e3e6}.relay-study h3{font-family:var(--display);font-size:clamp(32px,3.5vw,46px);font-weight:400;line-height:1.05;color:inherit;margin:12px 0 32px}.relay-study dl{margin:0}.relay-study dl>div{border-top:1px solid #718c92;padding-block:14px}.relay-study dt{font-size:14px;color:#d7e3e6}.relay-study dd{margin:4px 0 0;font-size:18px}.relay-study dd span{display:block;font-size:14px;color:#d7e3e6}.relay-study-note{font-size:14px;line-height:1.6;margin:24px 0 0}.card-image.relay-card{background:#0d343e;color:#f6f7f8;align-items:stretch;padding:clamp(20px,3vw,36px)}.relay-card-art{display:flex;flex-direction:column;width:100%;justify-content:center;gap:12px}.relay-card-brand,.relay-card-foot{font-size:13px;line-height:1.45;color:#d7e3e6}.relay-card-title{font-family:var(--display);font-size:clamp(26px,3.1vw,40px);line-height:1.12;margin-block:10px}.relay-card-row{display:flex;justify-content:space-between;gap:12px;border-top:1px solid #718c92;padding-top:8px;font-size:14px}.relay-card-row b{font-weight:500}.relay-card-foot{margin-top:8px}

.card-image.relay-card{aspect-ratio:auto;min-height:320px;overflow:visible}.relay-card-art{min-width:0}.relay-card-row{flex-wrap:wrap}

/* Fieldwell: a precise product illustration, with shared editorial chrome. */
.fieldwell-study{background:#EBE7DF;padding:clamp(20px,3vw,36px);align-self:center}.fieldwell-study img{width:100%;height:auto}.fieldwell-label{font-size:14px;letter-spacing:.08em;font-weight:600;color:#615B53;margin:0}.fieldwell-study figcaption{font-size:14px;color:#615B53}.card-image.fieldwell-card{background:#EBE7DF;padding:20px}.card-image.fieldwell-card img{width:100%;height:100%;object-fit:contain}.fieldwell-evidence{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-8);margin-block:var(--space-8)}.fieldwell-evidence article{border-top:1px solid var(--rule);padding-top:var(--space-5)}.fieldwell-evidence h3{font-size:var(--type-title-small);line-height:1.2}.fieldwell-evidence a{display:inline-flex;align-items:center;min-height:44px;font-size:var(--type-small);font-weight:600}@media(max-width:760px){.fieldwell-evidence{grid-template-columns:1fr;gap:var(--space-6)}}

/* Curated starting point and contact routes; preserve the existing grid and tokens. */
.work-more{display:inline-flex;align-items:center;gap:var(--space-3);min-height:44px;margin-top:var(--space-8);font-weight:600;font-size:var(--type-small)}
.contact-line{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2) var(--space-6)}
.legacy-project-anchor{display:block;scroll-margin-top:var(--space-8)}
.supporting-project.supporting-compact{display:block;max-width:var(--measure)}
