/* Shared accessibility and interaction roles. Scientific canvas palettes are independent. */
:root{
 --ui-touch-target:48px;
 --ui-outline:#748171;
 --ui-focus:#79658f;
 --ui-status:#70598a;
 --ui-status-active:#674781;
 --ui-action-fill:color-mix(in srgb,var(--green) 12%,var(--control-tonal,var(--soft)));
 --ui-action-hover:color-mix(in srgb,var(--green) 24%,var(--control-tonal,var(--soft)));
 --ui-action-pressed:color-mix(in srgb,var(--green) 32%,var(--control-tonal,var(--soft)));
 --ui-quiet-hover:color-mix(in srgb,var(--ink) 6%,transparent);
 --ui-quiet-open:color-mix(in srgb,var(--ink) 9%,transparent);
 --ui-quiet-pressed:color-mix(in srgb,var(--ink) 12%,transparent);
 --motion-duration-effects:240ms;
 --motion-duration-icon:240ms;
 --motion-duration-disclosure:420ms;
 --motion-duration-navigation:420ms;
 --motion-duration-large:680ms;
 --control-focus:var(--ui-focus);
 --motion-effects-fast:var(--motion-duration-effects) var(--motion-ease-effects,ease);
 --control-transition:background-color var(--motion-effects-fast),color var(--motion-effects-fast),filter var(--motion-effects-fast),box-shadow var(--motion-effects-fast);
}
:root[data-theme=dark]{
 --ui-outline:#829681;
 --ui-focus:#cab5ef;
 --ui-status:#c9b2e8;
 --ui-status-active:#dec4f2;
}

/* Enlarge actual targets; disclosure glyph circles remain 40px inside their summary. */
html:root .header .header-controls :is(.theme-toggle,.motion-toggle),
html:root .project-share-toggle{
 width:var(--ui-touch-target);min-width:var(--ui-touch-target);
 height:var(--ui-touch-target);min-height:var(--ui-touch-target);padding:0;flex-shrink:0;
}
html:root .header .nav-links>a{min-width:var(--ui-touch-target);min-height:var(--ui-touch-target)}
html:root .header .nav-links>.nav-indicator{height:var(--ui-touch-target)}
:root :is(.cv-document .cv-filters button,.cv-document .cv-expand,.cv-paper-links a,.citation-toolbar button,.citation-toolbar a,.project-share-actions button,.project-share-actions a,.decision-surface button,.decision-surface select,.decision-segments button){
 min-height:var(--ui-touch-target);
}
:root .decision-segments button{min-width:var(--ui-touch-target)}
:root .decision-surface input[type=range]{min-height:var(--ui-touch-target)}
:root .decision-surface :is(select,input[type=search]),
:root .cv-document .cv-search input,
:root .project-share-panel input{border:1px solid var(--ui-outline)}
:root .decision-advanced>summary{min-height:var(--ui-touch-target)}
/* Keep the desktop and phone model dismissal controls' existing visibility rules. */
@media(max-width:760px){
 :root .cv-inline .cv-section-nav,:root .cv-section-nav{height:65px;min-height:65px}
 :root .cv-section-nav a{height:48px;min-height:48px;max-height:48px}
}
@media(pointer:coarse){
 :root .shared-contact-card .portrait-affiliations a{min-height:var(--ui-touch-target)}
}
@media(max-width:480px){
 html:root .header .nav-links{width:100%;gap:0;justify-content:space-between}
 html:root .header .header-controls{position:static;gap:0}
 html:root .header .nav-links>a{padding-inline:8px}
 html:root .header .nav-cv-full{display:none}
 html:root .header .nav-cv-short{display:inline}
}

/* Readable supporting text, without changing scientific axes, plot dimensions or colors. */
:root .current-grid .current-collaboration{font-size:13px}
:root .current-grid .current-project .project-meta{color:var(--ui-status)}
:root .research-masonry>.current-project.pending-ack .project-meta{color:var(--ui-status-active)}
:root .decision-surface :is(.decision-control-group>summary>span>span,.decision-preference-heading>span,.decision-preference-summary,.decision-preference-body>p,.decision-trajectory-browser>p,.decision-belief-caption,.decision-outcome-title,.decision-outcome-legend,.decision-time>span,.decision-slider>span,.decision-noise-level>span,.decision-field-controls>span,.decision-field-range){
 font-size:12px;
}
:root .decision-surface :is(.decision-slider label,.decision-view-control>span,.decision-preference-heading strong,.decision-control-heading>output,.decision-time label,.decision-field-buttons button){
 font-size:13px;
}
:root .decision-surface :is(.decision-explanation,.circ-method,.circ-caution){font-size:13px}
:root .circ-surface :is(button,select,.circ-data-controls label,.circ-data-controls output,.circ-examples>label,.circ-examples p,.circ-progress,.circ-speed){font-size:13px}
:root .circ-surface :is(.circ-panel figcaption>span,.circ-section-heading label,.circ-joint-legend,.circ-chains,.circ-warmup-key,.circ-component-legend,.circ-group-key,.circ-diagnostics span){font-size:12px}
:root .circ-surface .circ-section-heading label{flex-wrap:wrap;justify-content:flex-end}
:root .cv-document .cv-paper-meta{font-size:12px}

/* Common visible focus; native semantics and existing clipping-safe indicators remain. */
:root body :is(a,button,input,select,textarea,summary,[tabindex]):focus-visible{
 outline:2px solid var(--ui-focus);outline-offset:3px;
}
:root .research-details>summary:focus-visible{outline-color:var(--ui-focus);outline-offset:-4px}
:root .cv-document :is(.cv-entry-details,.cv-publication>details,.cv-method)>summary:focus-visible>.disclosure-indicator{
 outline:2px solid var(--ui-focus);outline-offset:2px;
}
:root .decision-segments button:focus-visible{outline-color:var(--ui-focus);outline-offset:-3px}
:root .citation-panel .citation-entry:has(>.citation-box-copy:focus-visible){outline-color:var(--ui-focus)}

/* Small motions settle before the unchanged large card/CV/video transformations. */
html:root .header .nav-links.indicator-ready>.nav-indicator{
 transition:transform var(--motion-duration-navigation) var(--motion-ease-spatial),width var(--motion-duration-navigation) var(--motion-ease-spatial),opacity var(--motion-effects-fast);
}
:root .cv-section-nav::before{
 transition:transform var(--motion-duration-navigation) var(--motion-ease-spatial),width var(--motion-duration-navigation) var(--motion-ease-spatial),height var(--motion-duration-navigation) var(--motion-ease-spatial);
}
:root :is(.research-details,.cv-entry-details,.cv-publication>details,.cv-method)>summary svg,
:root .model-disclosure-icon svg,
:root .decision-control-group>summary>svg,
:root .decision-preference-chevron{
 transition:transform var(--motion-duration-icon) var(--motion-ease-spatial);
}
:root :is(.citation-tabs,.cv-filters,.decision-segments.segments-ready,.decision-view-buttons,.decision-field-buttons)::before{
 transition-duration:var(--motion-duration-navigation);
 transition-timing-function:var(--motion-ease-spatial);
}
:root .project-share-toggle{transition:var(--control-transition);transform:none}
:root .project-share-toggle:active{transform:none}
:root .project-share-toggle>svg{transition:translate var(--motion-duration-icon) var(--motion-ease-spatial)}
:root .project-share-toggle:active>svg{translate:0 1px}
@media(prefers-reduced-motion:reduce){
 html:root .header .nav-links.indicator-ready>.nav-indicator,
 :root .cv-section-nav::before,
 :root :is(.research-details,.cv-entry-details,.cv-publication>details,.cv-method)>summary svg,
 :root .model-disclosure-icon svg,:root .decision-control-group>summary>svg,:root .decision-preference-chevron,
 :root .project-share-toggle,:root .project-share-toggle>svg,
 :root :is(.citation-tabs,.cv-filters,.decision-segments.segments-ready,.decision-view-buttons,.decision-field-buttons)::before{transition:none!important}
 :root .project-share-toggle>svg{translate:none!important}
}
html[data-motion=reduce] .header .nav-links.indicator-ready>.nav-indicator,
html[data-motion=reduce] .cv-section-nav::before,
html[data-motion=reduce] :is(.research-details,.cv-entry-details,.cv-publication>details,.cv-method)>summary svg,
html[data-motion=reduce] :is(.model-disclosure-icon svg,.decision-control-group>summary>svg,.decision-preference-chevron,.project-share-toggle,.project-share-toggle>svg),
html[data-motion=reduce] :is(.citation-tabs,.cv-filters,.decision-segments.segments-ready,.decision-view-buttons,.decision-field-buttons)::before{transition:none!important}
html[data-motion=reduce] .project-share-toggle>svg{translate:none!important}
@media(forced-colors:active){
 :root body :is(a,button,input,select,textarea,summary,[tabindex]):focus-visible{outline-color:Highlight}
 :root :is(.project-share-toggle,.model-disclosure-icon,.disclosure-indicator,.research-details>summary>span,button,select,input[type=search]){border:1px solid ButtonText}
 :root :is(.decision-segments,.decision-view-buttons,.decision-field-buttons,.cv-filters,.citation-tabs)::before{background:Highlight}
 :root :is(.decision-segments,.decision-view-buttons,.decision-field-buttons,.cv-filters) button[aria-pressed=true],
 :root .citation-tabs button[aria-selected=true]{background:Highlight;color:HighlightText}
}

/* Cursor ownership mirrors the existing delegated card-activation boundaries. */
:root .research-masonry>.project:has(.research-details),
:root .research-masonry>.current-project,
:root .research-masonry>.model-project .current-copy,
:root .cv-document .cv-publication:has(>details),
:root .cv-document .cv-timeline-entry:has(.cv-entry-details),
:root .cv-document .cv-skills>li:has(.cv-method),
:root main #about>.shared-contact-card{cursor:pointer}
:root .research-masonry>.project .project-image{cursor:default}
:root :is(.research-masonry>article,.cv-publication,.cv-timeline-entry,.cv-skills>li) :is(a,button,summary,select,[role=button]){cursor:pointer}
:root :is(.research-masonry>article,.cv-publication,.cv-timeline-entry,.cv-skills>li) :is(input:not([type=range]),textarea,[contenteditable=true]){cursor:text}
:root :is(.research-masonry>article,.cv-publication,.cv-timeline-entry,.cv-skills>li) :is(video,iframe,canvas){cursor:auto}
:root :is(.research-masonry>article,.cv-publication,.cv-timeline-entry,.cv-skills>li) :is(button,input,select):disabled{cursor:default}

/* A single, non-interactive surface cue matches the research-card hover treatment. */
:root main #about>.shared-contact-card::after{
 content:"";display:block;position:absolute;inset:0;z-index:3;border-radius:inherit;
 pointer-events:none;background:var(--green);opacity:0;
 transition:opacity var(--motion-effects-fast);
}
@media(hover:hover) and (pointer:fine){
 :root main #about>.shared-contact-card:hover::after{opacity:.035}
 :root main #about>.shared-contact-card:active::after{opacity:.07}
}
@media(prefers-reduced-motion:reduce){:root main #about>.shared-contact-card::after{transition:none}}
html[data-motion=reduce] main #about>.shared-contact-card::after{transition:none}

@media print{:root main #about>.shared-contact-card::after{display:none}}
