/* Research components only. The shared portfolio foundation owns all page geometry. */
.portfolio-page .portfolio-main .research-entry-links{display:flex;flex-wrap:wrap;gap:0 var(--portfolio-gap);margin:0;padding:0}
.portfolio-page .portfolio-main .research-entry-links a{display:inline-flex;align-items:center;gap:8px;min-height:44px;color:var(--blue);font-size:13px;line-height:1.45}
.portfolio-page .portfolio-main .research-entry-links a:hover{text-decoration:underline;text-underline-offset:4px}
.portfolio-page .portfolio-main .research-limit{font-size:15px;line-height:1.6;color:var(--muted)}
.portfolio-page .portfolio-main :is(.lecture-section-heading){margin:0 0 var(--portfolio-gap);padding:0}
.portfolio-page .portfolio-main .reading-prototypes{display:grid;gap:var(--portfolio-gap)}
.portfolio-page .portfolio-main :is(.reading-booklet-spread){margin:0}

/* The original four crop windows, with their native image-viewer hooks unchanged. */
.portfolio-page .portfolio-main .booklet-collection{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--portfolio-gap);align-items:start}
.portfolio-page .portfolio-main .reading-booklet-spread .booklet-fragment{position:relative;display:block;aspect-ratio:var(--sheet-ratio);width:100%;height:auto;overflow:hidden;border:0;border-radius:0;background:transparent;padding:0}
.portfolio-page .portfolio-main .reading-booklet-spread .booklet-fragment img{position:absolute;top:0;left:var(--sheet-left);width:var(--sheet-width);height:100%;max-width:none;max-height:none;object-fit:fill;transform:none}
.portfolio-page .portfolio-main .reading-booklet-spread .booklet-fragment::after{opacity:0;z-index:1}
.portfolio-page .portfolio-main .reading-booklet-spread .booklet-fragment:hover::after,.portfolio-page .portfolio-main .reading-booklet-spread .booklet-fragment:focus-visible::after{opacity:1}
.portfolio-page .portfolio-main .reading-booklet-spread>figcaption{max-width:none}
.portfolio-page .portfolio-main .booklet-opening-hint{display:inline-block;margin:0 0 0 8px;font-size:12px;color:var(--blue)}
.portfolio-page .portfolio-main .reading-directions-head{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--direction-gap);margin:0 0 16px calc(var(--direction-label) + var(--portfolio-gap));font-size:12px;line-height:1.5;color:var(--muted)}
.portfolio-page .portfolio-main .reading-direction{display:grid;grid-template-columns:var(--direction-label) minmax(0,1fr);gap:var(--portfolio-gap);align-items:center}
.portfolio-page .portfolio-main .reading-direction+.reading-direction{margin-top:var(--portfolio-gap)}
.portfolio-page .portfolio-main .reading-direction>h3{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 8px;font-size:15px;font-weight:450;line-height:1.45;letter-spacing:0;margin:0}
.portfolio-page .portfolio-main .reading-direction>h3 :is(span,small){color:var(--muted);font-size:12px;font-weight:400}
.portfolio-page .portfolio-main .reading-direction-arrow{position:absolute;right:calc(var(--direction-gap) / -2);top:50%;transform:translate(50%,-50%);width:20px;height:12px;fill:none;stroke:currentColor;stroke-width:1.3;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}
.portfolio-page .portfolio-main .reading-direction-return .reading-direction-start{grid-column:2;grid-row:1}
.portfolio-page .portfolio-main .reading-direction-return .reading-direction-end{grid-column:1;grid-row:1}
.portfolio-page .portfolio-main .reading-direction-return .reading-direction-arrow{left:calc(var(--direction-gap) / -2);right:auto;transform:translate(-50%,-50%) rotate(180deg)}

/* A fixed specimen field reserves room for the existing 26–60px word-size range. */
.portfolio-page .portfolio-main .reading-specimen{--specimen-size:2.369rem;--specimen-weight:505;display:grid;grid-template-columns:minmax(0,.7fr) minmax(0,1.3fr);gap:var(--portfolio-gap);align-items:center;margin:0 0 var(--portfolio-gap)}
.portfolio-page .portfolio-main .specimen-paper{min-width:0;padding:var(--portfolio-panel-pad);background:var(--portfolio-panel);border-radius:var(--card-radius)}
.portfolio-page .portfolio-main .specimen-line{display:flex;align-items:baseline;justify-content:center;gap:var(--portfolio-gap);min-height:112px;padding:24px 0 0;white-space:nowrap}
.portfolio-page .portfolio-main .specimen-reference{font-size:14px;font-weight:400;color:var(--muted)}
.portfolio-page .portfolio-main .specimen-word{font-size:var(--specimen-size);font-weight:var(--specimen-weight);font-variation-settings:"wght" var(--specimen-weight);line-height:1;letter-spacing:-.025em;color:var(--ink)}
.portfolio-page .portfolio-main .specimen-controls{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 12px;padding-top:14px;font-size:12px}
.portfolio-page .portfolio-main .specimen-controls output{font-variant-numeric:tabular-nums;color:var(--muted)}
.portfolio-page .portfolio-main .specimen-controls input{grid-column:1/-1;display:block;width:100%;min-width:0;min-height:44px;margin:0;accent-color:var(--blue);cursor:ew-resize}
.portfolio-page .portfolio-main .specimen-controls p{grid-column:1/-1;display:flex;justify-content:space-between;gap:12px;margin:0;font-size:12px;color:var(--muted)}
.portfolio-page .portfolio-main .reading-rule-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--portfolio-gap);padding-top:var(--portfolio-gap)}
.portfolio-page .portfolio-main .reading-rule-grid article{min-width:0}
.portfolio-page .portfolio-main .reading-rule-grid article>p{font-size:15px}
.portfolio-page .portfolio-main .reading-rule-grid article>h3{margin-top:14px}
.portfolio-page .portfolio-main :is(.reading-rule-grid,.reading-evidence,.lecture-group-image) .image-button{display:block;width:100%;height:auto;padding:0;background:transparent;border:0;border-radius:0}
.portfolio-page .portfolio-main :is(.reading-rule-grid,.reading-evidence,.lecture-group-image) img{display:block;width:100%;height:auto;max-width:100%;max-height:none;object-fit:contain}

/* Native details share one disclosure treatment, without nested panels. */
.portfolio-page .portfolio-main :is(.reading-rule-notes,.lecture-framework details){border:0;border-radius:0;padding:0;background:transparent}
.portfolio-page .portfolio-main :is(.reading-rule-notes,.lecture-framework details)>summary{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 10px;min-height:44px;padding:10px 0;list-style:none;font-size:13px;line-height:1.5;color:var(--blue);cursor:pointer}
.portfolio-page .portfolio-main :is(.reading-rule-notes,.lecture-framework details)>summary::-webkit-details-marker{display:none}
.portfolio-page .portfolio-main :is(.reading-rule-notes,.lecture-framework details)>summary::before{content:"+";font-size:17px;line-height:1}
.portfolio-page .portfolio-main :is(.reading-rule-notes,.lecture-framework details)[open]>summary::before{content:"−";color:var(--pink)}
.portfolio-page .portfolio-main .reading-rule-notes>summary>span,.portfolio-page .portfolio-main .framework-summary-note{font-size:12px;color:var(--muted)}.portfolio-page .portfolio-main .reading-evidence{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:var(--portfolio-gap);align-items:start}
.portfolio-page .portfolio-main .reading-study-facts{display:flex;flex-wrap:wrap;gap:var(--portfolio-gap);margin:var(--portfolio-gap) 0 14px}
.portfolio-page .portfolio-main .reading-study-facts dt{font-size:12px;line-height:1.5;color:var(--muted);margin-bottom:4px}
.portfolio-page .portfolio-main .reading-study-facts dd{font-size:17px;line-height:1.4;font-weight:450;margin:0}
.portfolio-page .portfolio-main .reading-feedback{padding:var(--portfolio-panel-pad);background:var(--portfolio-panel);border-radius:var(--card-radius)}
.portfolio-page .portfolio-main .reading-feedback article+article,.portfolio-page .portfolio-main .reading-feedback>.research-limit{margin-top:var(--portfolio-gap)}
.portfolio-page .portfolio-main .reading-feedback article>p:last-child{font-size:17px;line-height:1.5}
.portfolio-page .portfolio-main .reading-next{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:var(--portfolio-gap);margin-top:var(--portfolio-gap)}
.portfolio-page .portfolio-main .reading-next ul{margin:14px 0;padding-left:18px}
.portfolio-page .portfolio-main .reading-next li+li{margin-top:6px}

/* The lecture retains a connected exercise and an inspectable prompt, with no stagger. */
.portfolio-page .portfolio-main .lecture-sprint{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--portfolio-gap);list-style:none;margin:0;padding:0}
.portfolio-page .portfolio-main .lecture-sprint>li{position:relative;display:flex;flex-direction:column;align-items:flex-start;min-width:0;margin:0;padding:var(--portfolio-panel-pad);background:var(--portfolio-panel);border-radius:var(--card-radius)}
.portfolio-page .portfolio-main .sprint-number{display:block;font-size:12px;color:var(--muted);margin-bottom:14px}
.portfolio-page .portfolio-main .lecture-sprint>li:not(:last-child)::after{content:"→";position:absolute;right:calc(var(--portfolio-gap) / -2);top:50%;transform:translate(50%,-50%);font-size:18px;line-height:1;color:var(--muted)}
.portfolio-page .portfolio-main .lecture-persona>.editorial-section-body{padding:var(--portfolio-panel-pad);background:var(--portfolio-panel);border-radius:var(--card-radius)}
.portfolio-page .portfolio-main .lecture-persona-intro blockquote{max-width:56ch;margin:0;padding:0;border:0;background:transparent;box-shadow:none;font-size:17px;font-weight:400;line-height:1.6;letter-spacing:0}
.portfolio-page .portfolio-main .lecture-assumptions,.portfolio-page .portfolio-main .lecture-annotation-layer{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--portfolio-gap);margin-top:var(--portfolio-gap)}
.portfolio-page .portfolio-main .lecture-generated{min-width:0;padding:0}
.portfolio-page .portfolio-main .annotation-intro{font-size:15px;line-height:1.5}
.portfolio-page .portfolio-main .annotation-intro>span{display:block;margin-top:8px;font-size:12px;line-height:1.6;color:var(--muted)}
.portfolio-page .portfolio-main .assumption-notes{min-width:0;margin:0;padding:0;background:transparent;border:0;border-radius:0}
.portfolio-page .portfolio-main .assumption-notes details{margin:0;padding:0;border:0;background:transparent}
.portfolio-page .portfolio-main .assumption-notes summary{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:3px 12px;align-items:center;min-height:64px;padding:12px 0;list-style:none;font-size:15px;line-height:1.5;color:var(--blue);cursor:pointer}
.portfolio-page .portfolio-main .assumption-notes summary::-webkit-details-marker{display:none}
.portfolio-page .portfolio-main .assumption-notes summary>span:first-child{font-size:12px;color:var(--muted)}
.portfolio-page .portfolio-main .assumption-notes summary>span:nth-child(2){grid-column:1}
.portfolio-page .portfolio-main .assumption-notes summary::after{content:"+";grid-column:2;grid-row:1/3;align-self:center;font-size:18px;line-height:1}
.portfolio-page .portfolio-main .assumption-notes details[open]>summary::after{content:"−";color:var(--pink)}
.portfolio-page .portfolio-main .assumption-notes details>div{padding:0 0 14px;font-size:15px}
.portfolio-page .portfolio-main .assumption-notes details>div>p{color:var(--muted)}
.portfolio-page .portfolio-main .assumption-notes details>div>.annotation-question{color:var(--ink)}
.portfolio-page .portfolio-main .lecture-practice>.editorial-section-body{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--portfolio-gap);align-items:start}
.portfolio-page .portfolio-main .lecture-framework{grid-column:1/-1;min-width:0;margin:0;padding:0}
.portfolio-page .portfolio-main .framework-notes{padding:14px 0 0}
.portfolio-page .portfolio-main .lecture-framework ol{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:var(--portfolio-gap);list-style:none;margin:0;padding:0}
.portfolio-page .portfolio-main .lecture-framework li{margin:0;padding:0}
.portfolio-page .portfolio-main .lecture-framework li>span{font-size:12px;color:var(--muted)}
.portfolio-page .portfolio-main .lecture-framework h3{font-size:14px;margin:8px 0}
.portfolio-page .portfolio-main .lecture-framework li>p{font-size:15px;color:var(--muted)}
.portfolio-page .portfolio-main .framework-return{font-size:12px;color:var(--muted);margin-top:14px}
.portfolio-page .portfolio-main .lecture-case-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--portfolio-gap);margin-top:var(--portfolio-gap)}
.portfolio-page .portfolio-main .lecture-case-list article{min-width:0;padding:var(--portfolio-panel-pad);background:var(--portfolio-panel);border-radius:var(--card-radius)}
.portfolio-page .portfolio-main .case-friction{font-size:15px;color:var(--muted)}
.portfolio-page .portfolio-main .case-reframe{font-size:15px;line-height:1.6;margin:0}
.portfolio-page .portfolio-main .case-reframe>span{color:var(--muted)}

@media(max-width:760px){
 .portfolio-page .portfolio-main .booklet-collection{grid-template-columns:repeat(2,minmax(0,1fr))}
 .portfolio-page .portfolio-main .reading-booklet-spread .booklet-fragment::after{opacity:1}
 .portfolio-page .portfolio-main .booklet-opening-hint{display:block;margin:4px 0 0}
 .portfolio-page .portfolio-main .reading-directions-head{display:none}
 .portfolio-page .portfolio-main .reading-direction{display:block}
 .portfolio-page .portfolio-main .reading-direction>h3{margin-bottom:14px}
 .portfolio-page .portfolio-main .reading-direction-arrow,.portfolio-page .portfolio-main .reading-direction-return .reading-direction-arrow{left:50%;right:auto;top:auto;bottom:calc(var(--direction-gap) / -2);width:16px;height:10px;transform:translate(-50%,50%) rotate(90deg)}
 .portfolio-page .portfolio-main :is(.reading-specimen,.reading-evidence,.reading-next,.lecture-sprint,.lecture-assumptions,.lecture-annotation-layer,.lecture-practice>.editorial-section-body,.lecture-case-list){grid-template-columns:minmax(0,1fr)}
 .portfolio-page .portfolio-main .reading-rule-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
 .portfolio-page .portfolio-main .specimen-reference{display:none}
 .portfolio-page .portfolio-main .lecture-sprint>li:not(:last-child)::after{content:"↓";left:50%;right:auto;top:auto;bottom:calc(var(--portfolio-gap) / -2);font-size:16px;transform:translate(-50%,50%)}
 .portfolio-page .portfolio-main .lecture-framework ol{grid-template-columns:minmax(0,1fr);gap:14px}
 .portfolio-page .portfolio-main .lecture-framework li{display:grid;grid-template-columns:24px minmax(0,1fr);gap:4px 10px}
 .portfolio-page .portfolio-main .lecture-framework h3{margin:0}
 .portfolio-page .portfolio-main .lecture-framework li>p{grid-column:2}
}
@media(max-width:420px){
 .portfolio-page .portfolio-main .reading-rule-grid{grid-template-columns:minmax(0,1fr)}
}


.portfolio-page .portfolio-main .systems-entry-link{display:inline-flex;align-items:center;gap:8px;min-height:44px;color:var(--blue);font-size:13px;line-height:1.45}
.portfolio-page .portfolio-main .systems-entry-link:hover{text-decoration:underline;text-underline-offset:4px}
/* Systems components. The shared portfolio foundation owns every outer layout. */
:is(.project-industry,.project-terakoya) :is(.systems-note){font-size:12px;line-height:1.6;color:var(--muted)}
:is(.project-industry,.project-terakoya) .systems-fold{margin:var(--portfolio-gap) 0 0;padding:0;border:0;border-top:1px solid var(--line);border-radius:0;background:transparent;box-shadow:none}
:is(.project-industry,.project-terakoya) .systems-fold>summary{display:flex;align-items:center;justify-content:space-between;gap:18px;min-height:52px;padding:12px 0;list-style:none;cursor:pointer;font:400 15px/1.5 var(--font);color:var(--blue)}
:is(.project-industry,.project-terakoya) .systems-fold>summary::-webkit-details-marker{display:none}
:is(.project-industry,.project-terakoya) .systems-fold>summary::after{content:'+';flex:none;font-size:20px;font-weight:400}
:is(.project-industry,.project-terakoya) .systems-fold[open]>summary::after{content:'−'}
:is(.project-industry,.project-terakoya) .systems-fold-body{padding:8px 0 0}
:is(.project-industry,.project-terakoya) .systems-fold summary:focus-visible{outline:2px solid var(--blue);outline-offset:4px}

/* One comparison surface, with a horizontal filter above it. */
.project-industry .industry-explorer{min-width:0;margin-top:var(--portfolio-gap)}
.project-industry .industry-lens-map{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:0 0 16px;padding:0}
.project-industry .industry-map-label,.project-industry .industry-lens-map .systems-note{grid-column:1/-1;margin:0;font-size:12px;line-height:1.5;color:var(--muted)}
.project-industry .industry-lens-map button{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 8px;align-items:center;min-width:0;min-height:52px;width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:transparent;color:var(--blue);font:400 13px/1.45 var(--font);text-align:left;cursor:pointer}
.project-industry .industry-lens-map button strong{font:400 12px/1.45 var(--font);color:var(--muted);font-variant-numeric:tabular-nums}
.project-industry .industry-lens-map button:hover{background:var(--portfolio-panel)}
.project-industry .industry-lens-map button[aria-pressed=true]{background:var(--portfolio-panel);border-color:var(--pink);color:var(--ink)}
.project-industry .industry-lens-map button:focus-visible{outline:2px solid var(--blue);outline-offset:3px}
.project-industry .industry-count-track{display:block;grid-column:1/-1;width:100%;height:3px;margin:3px 0 0;background:var(--line);overflow:hidden;border-radius:2px}
.project-industry .industry-count-track i{display:block;width:calc(var(--count) / 7 * 100%);height:100%;background:var(--ink)}
.project-industry .industry-lens-map button[aria-pressed=true] .industry-count-track i{background:var(--pink)}
.project-industry .industry-classification{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--portfolio-gap);align-items:start;margin:0;padding:var(--portfolio-panel-pad);background:var(--portfolio-panel);border:0;border-radius:var(--card-radius);box-shadow:none;min-width:0}
.project-industry .industry-classification>section{display:block;min-width:0;margin:0;padding:0;background:transparent;border:0;border-radius:0;box-shadow:none}
.project-industry .industry-classification header{min-height:0;margin:0;padding:0;background:transparent}
.project-industry .industry-classification h3{font-size:18px;font-weight:450;line-height:1.35;letter-spacing:-.01em;margin:0 0 8px}
.project-industry .industry-lens-code{display:block;margin:0 0 8px;font-size:12px;line-height:1.5;color:var(--muted)}
.project-industry .industry-classification header p{font-size:12px;line-height:1.5;color:var(--muted);margin:0}
.project-industry .industry-lens-intro{max-width:38ch;margin:14px 0 0;font-size:15px;line-height:1.6;color:var(--ink)}
.project-industry .industry-lens-body{min-width:0;margin-top:14px;padding:0;background:transparent}
.project-industry .industry-classification ul{list-style:none;padding:0;margin:0}
.project-industry .industry-classification li{display:grid;grid-template-columns:42px minmax(0,1fr);gap:10px;margin:0;padding:6px 0;font-size:15px;line-height:1.6}
.project-industry .industry-classification li+li{margin:0}
.project-industry .industry-classification li>span{font-size:12px;line-height:1.9;color:var(--muted);font-variant-numeric:tabular-nums}
.project-industry .industry-capital-note{max-width:32ch;margin:14px 0 0;font-size:12px;line-height:1.6;color:var(--muted)}
.project-industry .industry-explorer.is-ready:not([data-active-lens=all]) .industry-classification{grid-template-columns:minmax(0,1fr)}
.project-industry .industry-explorer.is-ready:not([data-active-lens=all]) .industry-lens-intro{max-width:68ch}
.project-industry .industry-explorer.is-ready:not([data-active-lens=all]) .industry-classification ul{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 var(--portfolio-gap)}
/* Native hidden remains authoritative, including if the comparison is restructured. */
.project-industry .industry-lens-map[hidden],.project-industry .industry-classification>section[hidden]{display:none!important}

/* Working evidence uses aligned image fields rather than card stacks. */
.project-industry .industry-workshop-gallery{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--portfolio-gap);align-items:start;margin:var(--portfolio-gap) 0 0;padding:0}
.project-industry :is(.industry-workshop-gallery,.industry-solution-gallery) figure{margin:0;min-width:0}
.project-industry :is(.industry-workshop-gallery,.industry-solution-gallery) .image-button{display:block;margin:0;width:100%;padding:8px;background:var(--portfolio-panel);border:0;border-radius:0;box-shadow:none}
.project-industry .industry-workshop-gallery img{display:block;width:100%;height:auto;max-height:none;aspect-ratio:1.6;object-fit:contain}
.project-industry :is(.industry-workshop-gallery,.industry-solution-gallery) figcaption{margin:8px 0 0;font-size:12px;line-height:1.5;color:var(--muted)}
.project-industry .industry-deliverables-heading{display:flex;align-items:baseline;justify-content:space-between;gap:var(--portfolio-gap);margin:var(--portfolio-gap) 0 16px}
.project-industry .industry-deliverables-heading h3,.project-industry .industry-deliverables-heading p{margin:0}
.project-industry .industry-solution-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--portfolio-gap);align-items:start;margin:0;padding:0}
.project-industry .industry-solution-gallery img{display:block;width:100%;height:auto;max-height:none;object-fit:contain}
.project-industry .industry-process{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--portfolio-gap);list-style:none;padding:0;margin:0}
.project-industry .industry-process li{min-width:0;margin:0;padding:0}
.project-industry .industry-process li>span{display:block;font-size:12px;line-height:1.5;color:var(--muted);margin-bottom:8px}
.project-industry .industry-process h3{font-size:17px;line-height:1.35;margin:0 0 10px}
.project-industry .industry-process p{font-size:15px;line-height:1.6;margin:0}

/* A schematic network of small named nodes and black connections. */
.project-terakoya .terakoya-network{position:relative;width:100%;height:var(--portfolio-feature-height);min-width:0;background:transparent;isolation:isolate}
.project-terakoya .terakoya-network-lines{position:absolute;inset:0;width:100%;height:100%;fill:none;stroke:var(--ink);stroke-width:1.2;opacity:.65;overflow:visible;z-index:-1}
.project-terakoya .terakoya-network-outer{stroke:var(--muted);stroke-width:.8;stroke-dasharray:3 7;opacity:.45}
.project-terakoya .terakoya-network-shared,.project-terakoya .terakoya-network-place{position:absolute;transform:translate(-50%,-50%);padding:12px;background:var(--portfolio-panel);border:0;border-radius:var(--card-radius);box-shadow:none;text-align:center}
.project-terakoya .terakoya-network-shared{left:50%;top:46%;width:27%;min-width:120px;max-width:174px}
.project-terakoya .terakoya-network-shared>span{display:block;font-size:12px;line-height:1.5;color:var(--muted);margin-bottom:6px}
.project-terakoya .terakoya-network-shared p{font-size:12px;line-height:1.5;letter-spacing:0;color:var(--ink);margin:0}
.project-terakoya .terakoya-network-place{width:28%;max-width:200px}
.project-terakoya .place-one{left:20.5%;top:23.6%}
.project-terakoya .place-two{left:79.5%;top:23.6%}
.project-terakoya .place-three{left:50%;top:82%}
.project-terakoya .terakoya-network-place h3{font-size:13px;font-weight:450;line-height:1.35;letter-spacing:0;margin:0 0 6px}
.project-terakoya .terakoya-network-place p{font-size:12px;line-height:1.5;color:var(--muted);margin:0}
.project-terakoya .terakoya-place-mark{position:absolute;width:6px;height:6px;left:calc(50% - 3px);top:-3px;border-radius:50%;background:var(--ink)}
.project-terakoya .terakoya-status{color:var(--pink)}
.project-terakoya .terakoya-status::before{content:'';display:inline-block;vertical-align:middle;width:5px;height:5px;margin-right:7px;border-radius:50%;background:currentColor}

/* Five columns of diagram, seven columns of readable layer descriptions. */
.project-terakoya .terakoya-layer-instrument{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:16px var(--portfolio-gap);align-items:center;min-width:0;margin-top:var(--portfolio-gap);padding:0}
.project-terakoya .terakoya-layer-figure{min-width:0;margin:0;padding:0}
.project-terakoya .terakoya-layer-diagram{display:block;width:100%;height:auto;max-height:360px;overflow:visible;fill:none}
.project-terakoya .layer-guide{stroke:var(--guide);stroke-width:.75;stroke-dasharray:2 5}
.project-terakoya [data-layer-sheet] path{fill:var(--portfolio-panel);stroke:var(--ink);stroke-width:1;transition:fill .15s ease,stroke .15s ease}
.project-terakoya [data-layer-sheet] text{font:400 20px var(--font);fill:var(--muted)}
.project-terakoya .is-ready [data-layer-sheet]{cursor:pointer}
.project-terakoya [data-layer-sheet].is-selected path{fill:#fff;stroke:var(--pink);stroke-width:1.6}
.project-terakoya [data-layer-sheet].is-selected text{fill:var(--pink)}
.project-terakoya .terakoya-layer-figure figcaption{max-width:38ch;margin:8px auto 0;font-size:12px;line-height:1.5;text-align:center;color:var(--muted)}
.project-terakoya .terakoya-layer-reading{min-width:0;margin:0;padding:0;background:transparent;border:0;box-shadow:none}
.project-terakoya .terakoya-layer-preview{position:relative;display:flex;align-items:baseline;gap:8px;min-height:0;margin:0 0 12px;padding:0;font-size:12px;line-height:1.5}
.project-terakoya .terakoya-layer-preview>[data-layer-preview-number]{font-size:12px;color:var(--pink);font-variant-numeric:tabular-nums}
.project-terakoya .terakoya-layer-preview h3{font-size:13px;line-height:1.5;font-weight:400;letter-spacing:0;margin:0}
/* Keep the polite selected-description announcement without repeating a visible paragraph. */
.project-terakoya .terakoya-layer-preview :is(p,.terakoya-layer-reading-note){position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.project-terakoya .terakoya-layers{display:grid;grid-template-columns:minmax(0,1fr);gap:8px;list-style:none;margin:0;padding:0}
.project-terakoya .terakoya-layers li{display:grid;grid-template-columns:140px minmax(0,1fr);gap:16px;align-items:center;margin:0;padding:8px 12px;border:0;border-radius:8px;background:transparent;min-width:0}
.project-terakoya .terakoya-layers li.is-selected{background:var(--portfolio-panel)}
.project-terakoya .terakoya-layers h3{font-size:15px;line-height:1.5;font-weight:400;letter-spacing:0;margin:0}
.project-terakoya .terakoya-layers button{display:flex;align-items:center;gap:8px;min-height:44px;width:100%;padding:0;border:0;border-radius:0;background:transparent;color:var(--blue);font:400 15px/1.5 var(--font);text-align:left;cursor:pointer}
.project-terakoya .terakoya-layers button span{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.project-terakoya .terakoya-layers button[aria-pressed=true]{color:var(--ink)}
.project-terakoya .terakoya-layers button[aria-pressed=true] span{color:var(--pink)}
.project-terakoya .terakoya-layers button:disabled{color:var(--ink);opacity:1;cursor:default}
.project-terakoya .terakoya-layers button:focus-visible{outline:2px solid var(--blue);outline-offset:3px}
.project-terakoya .terakoya-layers p,.project-terakoya .is-ready .terakoya-layers p{display:block;margin:0;padding:0;font-size:15px;line-height:1.6;color:var(--ink)}
.project-terakoya .terakoya-layer-hint{grid-column:1/-1;margin:0;font-size:12px;line-height:1.5;color:var(--muted)}
.project-terakoya .terakoya-layer-preview[hidden],.project-terakoya .terakoya-layer-hint[hidden]{display:none!important}
.project-terakoya .terakoya-pilot{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--portfolio-gap);list-style:none;margin:0;padding:0}
.project-terakoya .terakoya-pilot li{min-width:0;margin:0;padding:0}
.project-terakoya .terakoya-pilot li>span{display:block;font-size:12px;line-height:1.5;color:var(--muted);margin:0 0 8px}
.project-terakoya .terakoya-pilot h3{font-size:17px;line-height:1.35;margin:0 0 10px}
.project-terakoya .terakoya-pilot p{font-size:15px;line-height:1.6;margin:0;color:var(--ink)}

@media(max-width:1100px){
 .project-industry .industry-process,.project-terakoya .terakoya-pilot{grid-template-columns:repeat(2,minmax(0,1fr))}
 .project-terakoya .terakoya-layers li{grid-template-columns:120px minmax(0,1fr);gap:12px;padding:6px 8px}
}
@media(max-width:760px){
 .project-industry .industry-lens-map{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
 .project-industry .industry-classification{grid-template-columns:minmax(0,1fr);gap:24px}
 .project-industry .industry-classification>section+section{padding-top:24px;border-top:1px solid var(--line)}
 .project-industry .industry-classification h3{font-size:18px}
 .project-industry .industry-lens-intro{max-width:none}
 .project-industry .industry-explorer.is-ready:not([data-active-lens=all]) .industry-classification>section{border:0;padding:0}
 .project-industry .industry-explorer.is-ready:not([data-active-lens=all]) .industry-classification ul{grid-template-columns:minmax(0,1fr)}
 .project-industry .industry-workshop-gallery,.project-industry .industry-solution-gallery,.project-industry .industry-process{grid-template-columns:minmax(0,1fr)}
 .project-industry .industry-workshop-gallery img{aspect-ratio:auto;max-height:360px;object-fit:contain}
 .project-industry .industry-deliverables-heading{display:block;margin-bottom:14px}
 .project-industry .industry-deliverables-heading h3{margin-bottom:8px}
 .project-terakoya .terakoya-network{height:360px}
 .project-terakoya .terakoya-layer-instrument{grid-template-columns:minmax(0,1fr);gap:18px}
 .project-terakoya .terakoya-layer-diagram{max-height:320px}
 .project-terakoya .terakoya-layer-hint{grid-column:1}
 .project-terakoya .terakoya-layers li{grid-template-columns:112px minmax(0,1fr);gap:12px;padding:6px 8px}.project-terakoya .terakoya-pilot{grid-template-columns:minmax(0,1fr)}
}
@media(max-width:480px){
 .project-terakoya .terakoya-network{height:auto;display:grid;grid-template-columns:minmax(0,1fr);gap:12px;padding:8px 0 8px 28px}
 .project-terakoya .terakoya-network::before{content:'';position:absolute;left:10px;top:28px;bottom:28px;width:1px;background:var(--ink)}
 .project-terakoya .terakoya-network-lines{display:none}
 .project-terakoya .terakoya-network-shared,.project-terakoya .terakoya-network-place{position:relative;left:auto;top:auto;transform:none;width:100%;min-width:0;max-width:none;padding:12px 14px;text-align:left}
 .project-terakoya .terakoya-network-shared::before,.project-terakoya .terakoya-network-place::before{content:'';position:absolute;left:-18px;top:50%;width:18px;height:1px;background:var(--ink)}
 .project-terakoya .terakoya-network-shared br{display:none}
 .project-terakoya .terakoya-network-place h3{font-size:13px;margin-bottom:4px}
 .project-terakoya .terakoya-place-mark{left:-21px;top:calc(50% - 3px)}
 .project-terakoya .terakoya-layer-diagram{max-height:280px}
}
@media(prefers-reduced-motion:reduce){.project-terakoya [data-layer-sheet] path{transition:none}}
@media print{
 .project-industry .industry-lens-map{display:none!important}
 .project-industry .industry-classification>section[hidden]{display:block!important}
 .project-industry .industry-classification{display:block!important;background:transparent;padding:0}
 .project-industry .industry-classification>section{margin-bottom:20px}
 .project-terakoya .terakoya-layer-preview{display:none!important}
 .project-terakoya .terakoya-layers p,.project-terakoya .is-ready .terakoya-layers p{display:block!important}
}


/* Personal work: the shared grid carries the page. These rules only arrange
   drawings, small interactions, gallery controls and reading annotations. */
.project-fragments .fragment-intro,.project-calligraphy .ink-intro{max-width:46ch;font-size:15px;line-height:1.55}
.project-fragments .fragment-opening-note{color:var(--muted)}
.project-fragments .fragment-byline{font-size:12px;line-height:1.5;color:var(--muted)}
.project-fragments .fragment-original .image-button{background:var(--portfolio-panel);border-radius:10px;overflow:hidden}
.project-fragments .fragment-original img{mix-blend-mode:multiply}
.project-fragments .fragment-original figcaption{display:flex;justify-content:space-between;flex-wrap:wrap;gap:4px 16px}
.project-fragments .fragment-original figcaption span:last-child{color:var(--blue)}
.project-fragments .fragment-memory-body{margin-top:16px}
.project-fragments .fragment-doubling{width:100%;text-align:left;margin-bottom:16px}
.project-fragments .doubling-equation{margin:0 0 10px;font:400 clamp(24px,2.2vw,30px)/1.3 var(--font);font-variant-numeric:tabular-nums;letter-spacing:-.025em;overflow-wrap:anywhere}
.project-fragments .doubling-equation strong{color:var(--pink);font-weight:450}
.project-fragments .doubling-trace{min-height:36px;max-width:none;margin:0 0 8px;font-size:12px;line-height:1.5;color:var(--muted);overflow-wrap:anywhere}
.project-fragments .fragment-doubling .demo-actions{display:none;justify-content:flex-start;align-items:center;flex-wrap:wrap;gap:8px 20px}
.project-fragments .fragment-doubling.is-ready .demo-actions{display:flex}
.project-fragments .fragment-doubling .text-link{min-height:44px;padding:8px 0;font-size:13px;font-weight:450}
.project-fragments .fragment-senses{display:flex;flex-wrap:wrap;gap:14px 24px;list-style:none;margin:20px 0;padding:0}
.project-fragments .fragment-senses li{min-width:0;margin:0;font-size:13px}
.project-fragments .fragment-senses small{display:block;margin-top:3px;font-size:12px;line-height:1.5;color:var(--muted)}
.project-fragments .fragment-marginalia{font-size:12px;line-height:1.6;color:var(--muted)}
.project-fragments .fragment-pullquote{margin:0 0 16px;font:400 clamp(24px,2.4vw,32px)/1.2 var(--font);letter-spacing:-.025em;color:var(--ink)}
.project-fragments .poetic-related{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:4px;margin-top:16px;font-size:12px;line-height:1.5;color:var(--muted)}
.project-fragments .poetic-related span{font-size:13px;color:var(--blue)}

.project-calligraphy .ink-poem-jp{display:flex;flex-wrap:wrap;gap:0 18px;margin:0;font-size:18px;font-weight:400;line-height:1.65;letter-spacing:.08em;color:var(--ink)}
.project-calligraphy .ink-poem-jp span{white-space:nowrap}
.project-calligraphy .ink-poem-en{margin:8px 0 0;font-size:14px;line-height:1.5}
.project-calligraphy .ink-poem-source{margin:8px 0 0;font-size:12px;line-height:1.5;color:var(--muted)}
.project-calligraphy .ink-poem-source cite{font-style:normal}
/* Heading and controls share one row, leaving room for the complete sheets. */
.project-calligraphy .ink-gallery{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:16px 24px;align-items:start}
.project-calligraphy .ink-gallery-heading{grid-column:1;grid-row:1;min-width:0}
.project-calligraphy .ink-gallery-heading p{margin:0;font-size:12px;line-height:1.5;color:var(--muted)}
.project-calligraphy .ink-gallery-tools{grid-column:2;grid-row:1;display:flex;flex-direction:column;align-items:flex-end;gap:8px;min-width:0}
.project-calligraphy .ink-gallery-tools>p{margin:0;font-size:12px;line-height:1.5;color:var(--muted)}
.project-calligraphy .ink-view-controls{display:flex;align-items:center;gap:8px}
.project-calligraphy .ink-view-controls button{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-width:72px;min-height:44px;padding:8px 12px;border:1px solid transparent;border-radius:10px;background:transparent;color:var(--blue);font:400 13px/1.4 var(--font);white-space:nowrap}
.project-calligraphy .ink-view-controls button[aria-pressed=true]{border-color:var(--line);background:var(--portfolio-panel);color:var(--ink)}
.project-calligraphy .ink-view-controls button[aria-pressed=true]::before{content:"";width:5px;height:5px;border-radius:50%;background:var(--pink);flex-shrink:0}
.project-calligraphy .ink-sheets{grid-column:1/-1;grid-row:2;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:24px;align-items:start}
.project-calligraphy .ink-sheet{min-width:0;margin:0;padding:0}
.project-calligraphy .project-feature .ink-sheet img{height:clamp(160px,calc(100svh - 450px),300px);max-height:none;object-fit:contain}
.project-calligraphy .ink-sheet figcaption{display:flex;justify-content:space-between;flex-wrap:wrap;gap:3px 10px}
.project-calligraphy .ink-sheet figcaption span:last-child{color:var(--blue)}
.project-calligraphy [data-ink-view=close] .ink-sheets{grid-template-columns:repeat(2,minmax(0,1fr));gap:28px 24px}
.project-calligraphy [data-ink-view=close] .ink-sheet img{height:clamp(260px,60svh,560px)}
.project-calligraphy .ink-reflection-lede{font-size:15px;line-height:1.65}
.project-calligraphy .ink-reflection .roman-ruby{font-family:var(--font);font-size:.9em;letter-spacing:0}
.project-calligraphy .ink-learning{margin-top:24px}
.project-calligraphy .ink-learning-terms{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;list-style:none;margin:0;padding:0}
.project-calligraphy .ink-learning-terms li{display:flex;align-items:flex-start;gap:12px;min-width:0;margin:0;padding:0}
.project-calligraphy .ink-learning-character{flex-shrink:0;font-size:23px;line-height:1.5;color:var(--ink)}
.project-calligraphy .ink-learning-ha .ink-learning-character{color:var(--pink)}
.project-calligraphy .ink-learning-terms h3{margin:0 0 5px;font-size:15px;font-weight:450;line-height:1.4}
.project-calligraphy .ink-learning-terms p{margin:0;font-size:12px;line-height:1.6;color:var(--muted)}
.project-calligraphy .practice-statement{container-type:normal;margin:0;font-size:15px;font-weight:400;line-height:2;text-align:center;color:var(--ink);letter-spacing:0}
.project-calligraphy .practice-statement>span{font-size:inherit;line-height:inherit;display:block;white-space:nowrap}
.project-calligraphy .ink-japanese-note{display:grid;grid-template-columns:minmax(0,.3fr) minmax(0,1fr);gap:24px;margin-top:24px}
.project-calligraphy .ink-japanese-note>.eyebrow{margin:0}
.project-calligraphy .ink-japanese-note .editorial-copy{max-width:35em;line-height:1.95;letter-spacing:.015em}

@media(max-width:900px){
 .project-calligraphy .ink-sheets{grid-template-columns:repeat(2,minmax(0,1fr))}
 .project-calligraphy .project-feature .ink-sheet img{height:clamp(180px,35vw,300px)}
 .project-calligraphy [data-ink-view=close] .ink-sheets{grid-template-columns:minmax(0,1fr)}
 .project-calligraphy [data-ink-view=close] .ink-sheet img{height:auto;max-height:680px}
}
@media(max-width:760px){
 .project-calligraphy .ink-gallery{grid-template-columns:minmax(0,1fr);gap:18px}
 .project-calligraphy .ink-gallery-heading,.project-calligraphy .ink-gallery-tools,.project-calligraphy .ink-sheets{grid-column:1;grid-row:auto}
 .project-calligraphy .ink-gallery-tools{align-items:flex-start}
 .project-calligraphy .ink-sheets{gap:24px 18px}
 .project-calligraphy .project-feature .ink-sheet img{height:clamp(140px,40vw,260px)}
 .project-calligraphy [data-ink-view=close] .ink-sheet img{height:auto;max-height:680px}
 .project-calligraphy .ink-learning-terms{grid-template-columns:minmax(0,1fr);gap:20px}
 .project-calligraphy .ink-learning-terms li{gap:16px}
 .project-calligraphy .practice-statement{text-align:left}
 .project-calligraphy .practice-statement>span{white-space:normal;text-wrap:balance}
 .project-calligraphy .practice-phrase{display:inline-block;white-space:nowrap}
 .project-calligraphy .ink-japanese-note{grid-template-columns:minmax(0,1fr);gap:16px}
}
@media print{
 .project-fragments .fragment-doubling .demo-actions,.project-calligraphy .ink-gallery-tools{display:none!important}
 .project-fragments .fragment-original .image-button{background:transparent}
 .project-calligraphy .ink-gallery{display:block}
 .project-calligraphy .ink-sheets,.project-calligraphy [data-ink-view=close] .ink-sheets{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
 .project-calligraphy .project-feature .ink-sheet img,.project-calligraphy [data-ink-view=close] .ink-sheet img{height:85mm;max-height:85mm}
 .project-calligraphy .ink-sheet{break-inside:avoid}
}


.contact-section{--contact-leading:2.25rem}
.contact-heading h2{font-size:clamp(1.75rem,2.8vw,2.25rem)}
.contact-heading{margin-bottom:clamp(22px,3vw,32px)}
.contact-layout{grid-template-columns:minmax(180px,.5fr) minmax(0,1.5fr);gap:clamp(28px,6vw,88px)}
.contact-body{padding:clamp(22px,2.5vw,32px);background:var(--white);border:0;border-radius:var(--card-radius);box-shadow:var(--card-shadow)}
.contact-form{gap:20px}
.contact-letter{gap:12px}
.contact-letter .contact-salutation{font-size:2rem}
.contact-letter textarea{height:calc(var(--contact-leading)*4 + 1px);min-height:calc(var(--contact-leading)*4 + 1px);font-size:1.375rem}
.contact-fields{gap:24px}
.contact-send-mark{width:56px;height:56px;flex-basis:56px}
.contact-form [hidden]{display:none!important}
.contact-form.is-submitted{min-height:350px;align-content:start;gap:0;position:relative}
.contact-form.is-submitted .contact-form-status{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.contact-after{display:flex;flex-direction:column;align-items:flex-start;min-width:0;padding-top:0}
.contact-after-note{font:400 clamp(1.875rem,2.4vw,2.25rem)/1.15 var(--letter-font);color:var(--ink);margin:0 0 4px;letter-spacing:0;white-space:nowrap;word-break:normal;overflow-wrap:normal}
.contact-after-map{position:relative;width:min(100%,420px);align-self:flex-end;margin:0;isolation:isolate}
.contact-after-spiral{display:block;width:100%;height:auto;overflow:visible}
.contact-spiral-axis{fill:none;stroke:var(--guide);stroke-width:.7;opacity:.4;vector-effect:non-scaling-stroke}
.contact-spiral-line{fill:none;stroke:var(--ink);stroke-linecap:round;stroke-linejoin:round}
.contact-spiral-line path{vector-effect:non-scaling-stroke}
.contact-spiral-reveal{fill:none;stroke:#fff;stroke-width:8;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:0;animation:contact-spiral-draw 1.15s .1s ease-out both}
.contact-spiral-context{fill:var(--white);stroke:var(--guide);stroke-width:1;animation:contact-spiral-appear .35s .65s both}
.contact-spiral-future-line{fill:none;stroke:var(--guide);stroke-width:.75;vector-effect:non-scaling-stroke;stroke-dasharray:1;stroke-dashoffset:0;animation:contact-spiral-draw .8s 1.25s ease-out both}
.contact-spiral-future{fill:var(--white);stroke:var(--blue);stroke-width:1.4;vector-effect:non-scaling-stroke;animation:contact-spiral-appear .35s 1.3s both}
.contact-spiral-note{animation:contact-note-lands 1s .55s cubic-bezier(.22,.61,.36,1) both}
.contact-spiral-dot{fill:var(--pink)}
.contact-spiral-halo{fill:var(--pink);opacity:.1;transform-box:fill-box;transform-origin:center;animation:contact-note-settles .9s 1.35s ease-out both}
.contact-plot-label{position:absolute;left:calc(28.36% + 12px);top:calc(38.2% - 9px);font:450 .75rem/1.4 var(--font);color:var(--pink);background:var(--white);padding:0 3px;white-space:nowrap;word-break:normal;overflow-wrap:normal;animation:contact-spiral-appear .4s 1.25s both}
.contact-after-link{display:inline-flex;align-items:center;align-self:flex-end;gap:10px;min-height:44px;margin-top:0;font-size:.875rem;line-height:1.5;color:var(--blue);text-decoration:none;animation:contact-spiral-appear .4s 1.55s both}
.contact-after-link>span{flex:0 0 auto}
.contact-after-link:hover{text-decoration:underline;text-underline-offset:4px}
.contact-again{display:inline-flex;align-items:center;min-height:44px;padding:0;margin-top:8px;border:0;background:none;font:400 .8125rem/1.5 var(--font);color:var(--muted);cursor:pointer;text-decoration:underline;text-underline-offset:4px}
.contact-again:hover{color:var(--blue)}
@keyframes contact-spiral-draw{from{stroke-dashoffset:1}to{stroke-dashoffset:0}}
@keyframes contact-spiral-appear{from{opacity:0}to{opacity:1}}
@keyframes contact-note-lands{from{opacity:0;transform:translate(95px,-65px) scale(.35)}35%{opacity:1}to{opacity:1;transform:translate(0,0) scale(1)}}
@keyframes contact-note-settles{from{opacity:0;transform:scale(.4)}45%{opacity:.18;transform:scale(1.4)}to{opacity:.1;transform:scale(1)}}
@media (max-width:900px){.contact-layout{grid-template-columns:minmax(0,1fr);gap:24px}}
@media (max-width:640px){.contact-body{padding:24px 20px}
.contact-form{gap:20px}
.contact-letter .contact-salutation{font-size:1.875rem}
.contact-letter textarea{font-size:1.375rem}
.contact-send-row{gap:12px}
.contact-submit{gap:12px}
.contact-send-mark{width:54px;height:54px;flex-basis:54px}
.contact-form.is-submitted{min-height:280px}
.contact-after-note{font-size:1.875rem}
.contact-after-link{font-size:.875rem;gap:8px}}
@media (max-width:360px){.contact-body{padding:22px 16px}
.contact-address .contact-direct{flex-direction:column;align-items:flex-start;gap:0}
.contact-submit{font-size:.8125rem}}
@media (prefers-reduced-motion:reduce){.contact-after *{animation:none!important}}

/* The person and the letter use the same grid; time and handwriting retain their meaning. */
.portfolio-page .about-bio{max-width:68ch}
.portfolio-page .about-current{font-size:13px;line-height:1.6;color:var(--muted);margin-top:16px}
.portfolio-page .about-bio .lede{font-size:18px;line-height:1.5;max-width:36ch;margin-bottom:18px;text-wrap:balance}
.portfolio-page .about-bio .text-link{margin-top:4px}
.portfolio-page .about-practice{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:var(--portfolio-gap);margin:0;padding:0}
.portfolio-page .about-practice>.eyebrow{grid-column:1/span 3;margin:0}
.portfolio-page .about-practice>div{grid-column:4/span 9;display:flex;gap:0 24px;flex-wrap:wrap}
.portfolio-page .about-practice a{display:inline-flex;align-items:center;gap:8px;min-height:44px;color:var(--blue);font-size:13px}
.portfolio-page .about-context-lead{max-width:54ch;color:var(--muted);margin-bottom:24px}
.portfolio-page .about-thread-history{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:24px}
.portfolio-page .about-thread-history>li{position:relative;margin:0;padding:18px 0 0;min-width:0}
.portfolio-page .about-thread-history>li::before{content:'';position:absolute;top:0;left:0;width:7px;height:7px;border:1px solid var(--guide);border-radius:50%;background:#fff}
.portfolio-page .about-thread-history>.about-thread-present::before{background:var(--pink);border-color:var(--pink)}
.portfolio-page .about-thread-history>li:not(:last-child)::after{content:'';position:absolute;top:3px;left:12px;width:calc(100% + 10px);height:1px;background:var(--line)}
.portfolio-page .about-thread-history .about-thread-date{min-height:42px;margin:0 0 12px;font-size:12px;line-height:1.5;color:var(--muted)}
.portfolio-page .about-thread-history h3{font-size:17px;line-height:1.3;margin-bottom:10px}
.portfolio-page .about-thread-history>li>div>p{font-size:14px;line-height:1.65;color:var(--muted)}
.portfolio-page .about-thread-link{display:inline-flex;align-items:center;gap:8px;min-height:44px;font-size:13px;color:var(--blue)}
.portfolio-page .contact-section .contact-heading{margin:0}
.portfolio-page .contact-section .contact-layout{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:var(--portfolio-gap);width:100%;max-width:none}
.portfolio-page .contact-address{display:block;grid-template-columns:none;grid-column:1/span 3;margin:0;padding:0;border:0}
.portfolio-page .contact-body{grid-column:4/span 9;max-width:none;width:100%;padding:var(--portfolio-panel-pad);border:1px solid var(--line);border-radius:10px;background:#fff;box-shadow:none}
.portfolio-page .contact-recipient{font-size:16px;line-height:1.5}
.portfolio-page .contact-to{font-size:12px;color:var(--muted)}
.portfolio-page .contact-address .contact-direct{grid-column:auto;grid-row:auto;display:flex;flex-direction:column;align-items:flex-start;gap:0;margin-top:10px}
.portfolio-page .contact-address .text-link{font-size:13px}
@media(max-width:1000px){
 /* Keep the name intact when a portrait tablet has no room for a three-column name field. */
 .portfolio-page .project-opening.is-about{grid-template-columns:minmax(0,1fr)}
 .portfolio-page .project-opening.is-about .project-opening-copy{grid-column:1;grid-row:1}
 .portfolio-page .project-opening.is-about .project-feature{grid-column:1;grid-row:2}

 .portfolio-page .about-thread-history{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}
 .portfolio-page .about-thread-history>li:nth-child(2)::after{display:none}
}
@media(max-width:760px){
 .portfolio-page .about-practice{grid-template-columns:minmax(0,1fr);gap:8px}
 .portfolio-page .about-practice>.eyebrow,.portfolio-page .about-practice>div{grid-column:1}
 .portfolio-page .about-bio .lede{font-size:17px;max-width:none}
 .portfolio-page .contact-section .contact-layout{grid-template-columns:minmax(0,1fr);gap:20px}
 .portfolio-page .contact-address,.portfolio-page .contact-body{grid-column:1}
 .portfolio-page .contact-address .contact-direct{flex-direction:row;flex-wrap:wrap;gap:0 18px}
 .portfolio-page .contact-body{padding:18px}
}
@media(max-width:420px){
 .portfolio-page .about-thread-history{grid-template-columns:minmax(0,1fr);gap:22px}
 .portfolio-page .about-thread-history>li{display:grid;grid-template-columns:88px minmax(0,1fr);gap:18px;padding:0 0 0 15px}
 .portfolio-page .about-thread-history>li::before{top:5px}
 .portfolio-page .about-thread-history>li:not(:last-child)::after{display:block;left:3px;top:17px;bottom:-17px;width:1px;height:auto}
 .portfolio-page .about-thread-history .about-thread-date{min-height:0;margin:0}
 .portfolio-page .contact-address .contact-direct{flex-direction:column;gap:0}
}


/* Quiet transitions belong to the content, not to a scrolling effect. */
.project-calligraphy .portfolio-main .ink-personal-label{grid-column:1/-1;margin:0;font-size:12px;font-weight:450;line-height:1.5;letter-spacing:.035em;color:var(--muted)}
.portfolio-page .portfolio-main .lecture-framework details+details{margin-top:8px}
.portfolio-page .portfolio-main .contact-invitation{margin:0;max-width:58ch;font-size:15px;line-height:1.7;color:var(--muted)}

