/* Groundwork interface. Shared navigation and reading rhythm consume UI tokens;
   scene composition and materials have a separate palette and lifecycle. */

/* 1. Masthead: the same mark, rhythm, active state and responsive menu everywhere. */
.gw-masthead{--gw-edge:var(--gw-gutter);box-sizing:border-box;position:relative;z-index:30;display:flex;align-items:center;justify-content:space-between;gap:24px;width:min(100% - var(--gw-edge) * 2,var(--gw-container));min-height:88px;margin-inline:auto;padding-block:16px;border:0;font:400 var(--gw-ui)/1.4 var(--gw-font);color:var(--gw-ink)}
.gw-masthead .gw-brand{display:inline-flex;align-items:center;gap:10px;min-height:44px;color:inherit;font-size:15px;font-weight:500;letter-spacing:-.045em;text-decoration:none;white-space:nowrap}
.gw-masthead .gw-mark{width:25px;height:25px;fill:none;stroke:currentColor;stroke-width:1.5;flex:none}
.gw-masthead .gw-dot{color:var(--gw-signal)}
.gw-masthead .gw-section{margin-left:2px;color:var(--gw-muted);font-weight:400;letter-spacing:-.02em}
.gw-masthead>.site-nav{display:flex;align-items:center;gap:0 26px;margin-left:auto}
.gw-masthead nav a{position:relative;display:inline-flex;align-items:center;min-height:44px;color:inherit;text-decoration:none;white-space:nowrap;border:0}
.gw-masthead nav a::after{content:'';position:absolute;left:0;right:0;bottom:5px;height:1px;background:var(--gw-signal);transform:scaleX(0);transform-origin:left;transition:transform .2s}
.gw-masthead nav a:hover{color:var(--gw-signal-text)}
.gw-masthead nav a:hover::after,.gw-masthead nav a[aria-current="page"]::after{transform:none}
.gw-masthead nav a[aria-current="page"]{font-weight:500;color:var(--gw-ink)}
.gw-masthead :is(a,summary):focus-visible{outline:2px solid var(--gw-signal);outline-offset:4px}
.gw-masthead nav a.gw-nav-action{justify-content:center;gap:8px;padding:10px 17px;border-radius:var(--gw-radius);background:var(--gw-action);color:var(--gw-action-text);font-weight:500}
.gw-masthead nav a.gw-nav-action:hover{background:var(--gw-action-hover);color:var(--gw-action-text)}
.gw-masthead nav a.gw-nav-action::after{content:none}
.gw-masthead nav a.gw-nav-action[aria-current="page"]{box-shadow:0 0 0 2px var(--gw-paper),0 0 0 3px var(--gw-signal)}
.gw-masthead>.gw-mobile-menu{display:block;position:relative;margin:0;flex:none;border:0;padding:0;color:var(--gw-muted);font-size:14px;background:transparent}
.gw-mobile-menu>summary{display:flex;align-items:center;justify-content:center;gap:7px;min-width:56px;min-height:44px;cursor:pointer;list-style:none;border:0;padding:0;background:transparent;color:inherit;font:inherit}
.gw-mobile-menu>summary::-webkit-details-marker{display:none}
.gw-mobile-menu>summary::after{content:none}
.gw-mobile-menu>summary svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.2;transition:transform .2s}
.gw-mobile-menu[open]>summary svg{transform:rotate(180deg)}
.gw-mobile-menu .gw-menu-label{display:none}
.gw-mobile-menu .gw-menu-panel{position:absolute;right:0;top:calc(100% + 10px);width:230px;max-width:calc(100vw - 40px);padding:14px 20px;border:1px solid var(--gw-rule);border-radius:var(--gw-radius);background:var(--gw-paper-raised);box-shadow:0 12px 40px color-mix(in srgb,var(--gw-ink) 8%,transparent)}
.gw-mobile-menu .gw-menu-panel>.site-nav{display:none}
.gw-mobile-menu .gw-secondary-nav{display:flex;flex-direction:column;align-items:stretch;gap:0}
.gw-mobile-menu .gw-secondary-nav a{font-size:14px;color:var(--gw-muted)}
@media(max-width:1180px){
  .gw-masthead{gap:20px;min-height:80px;padding-block:12px}
  .gw-masthead>.site-nav{display:none}
  .gw-mobile-menu .gw-menu-label{display:inline}
  .gw-mobile-menu .gw-more-label{display:none}
  .gw-mobile-menu .gw-menu-panel{width:320px;padding:18px 24px}
  .gw-mobile-menu .gw-menu-panel>.site-nav{display:flex;flex-direction:column;align-items:stretch;gap:4px}
  .gw-mobile-menu .gw-menu-panel nav a{font-size:16px;min-height:46px}
  .gw-mobile-menu .gw-menu-panel .gw-nav-action{margin-block:8px 12px}
  .gw-mobile-menu .gw-secondary-nav{border-top:1px solid var(--gw-rule);padding-top:10px}
  .gw-mobile-menu .gw-secondary-nav a{font-size:14px}
}
@media(max-width:560px){
  .gw-masthead{min-height:76px}
  .gw-masthead .gw-section{display:none}
  .gw-masthead .gw-brand{font-size:14px;gap:8px}
  .gw-masthead .gw-mark{width:23px;height:23px}
}
@media print{.gw-masthead{display:none}}
/* Ownership keeps its own links; it takes the same mark, height and current-page bar. */
html.ownership-page:not(.ownership-city-page) .ownership-header{min-height:72px;font-size:var(--gw-ui)}
html.ownership-page:not(.ownership-city-page) .ownership-header .brand{font-size:15px}
html.ownership-page:not(.ownership-city-page) .ownership-header nav{font-size:var(--gw-ui)}
html.ownership-page:not(.ownership-city-page) .ownership-header nav [aria-current]{text-decoration:none;font-weight:500;box-shadow:inset 0 -2px var(--gw-signal)}

/* 2. Spacious headlines with a bounded reading measure and quiet metadata. */
html:is(.query-guide,.ut-courses) h1,
html.ownership-page:not(.ownership-city-page) :is(.profile-hero,.text-hero) h1{font-size:var(--gw-h1);line-height:1.06;letter-spacing:-.045em;font-weight:400;max-width:22ch}
html.query-guide .query-reading h2,html.ut-courses h2{font-size:var(--gw-h2);line-height:1.15;letter-spacing:-.035em;font-weight:400}
html.query-guide .query-reading h3{font-size:var(--gw-h3)}
html.query-guide body{font-size:var(--gw-body)}
html.query-guide :is(.query-byline,.query-rail,.query-source-note,.query-note,.query-figure figcaption,.query-mobile-contents){font-size:var(--gw-meta)}
html.query-guide :is(.query-findings dt,.query-tool label,.query-calendar-list .query-calendar-date,.query-degree-school li span,.query-degree-school li a,.query-degree-school li small){font-size:var(--gw-meta)}
html.query-guide :is(.query-rail h2,.query-sources li span,.query-table-hint,.query-calendar-list small,.query-degree-school>summary>span,.query-list-address,.query-findings small,.query-mobile-contents summary span:not([data-nosnippet-text])){font-size:13px}
html.query-guide table{font-size:var(--gw-ui)}
html.query-guide :is(.query-byline,.query-source-note,.query-note,.query-sources li span,.query-findings small,thead th){color:var(--gw-muted)}
html.ownership-page:not(.ownership-city-page) :is(.section-path,.small-label,.small-note,.profile-answer-label,.profile-flags>span,.breadcrumb a,.breadcrumb>span,dt,.profile-aside nav a,.profile-aside .text-link,.ownership-footer,.ownership-footer p,.ownership-footer a){font-size:var(--gw-meta)}

/* 3. Answer-first hero: open composition, direct copy and one primary action. */
html.query-guide .query-path,
html.ownership-page:not(.ownership-city-page) :is(.profile-hero,.text-hero) .section-path{margin:0 0 var(--gw-space-4);font:500 var(--gw-kicker)/1.5 var(--gw-font);letter-spacing:.1em;text-transform:uppercase;color:var(--gw-signal-text)}
html.query-guide .query-path a{color:inherit}
html.query-guide .query-hero{padding-block:var(--gw-space-9) var(--gw-space-8)}
html.query-guide h1{margin-bottom:var(--gw-space-5)}
html.query-guide .query-answer,html.ut-courses .course-dek{max-width:var(--gw-measure);padding-left:0;border:0;font-size:var(--gw-lead);line-height:1.6;color:var(--gw-muted)}
html.ownership-page:not(.ownership-city-page) .profile-hero :is(.profile-answer-label,.profile-answer,.profile-owner-detail){padding-left:0;border:0;margin-block:0}
html.ownership-page:not(.ownership-city-page) .profile-hero .profile-answer-label{padding-top:2px;margin-top:var(--gw-space-5)}
html.ownership-page:not(.ownership-city-page) .profile-hero .profile-owner-detail{padding-bottom:4px;margin-bottom:var(--gw-space-5)}
html.query-guide .query-primary{border-radius:var(--gw-radius);background:var(--gw-action);color:var(--gw-action-text);border-color:var(--gw-action);min-height:48px;padding:12px 22px}
html.query-guide .query-primary:hover{background:var(--gw-action-hover);border-color:var(--gw-action-hover)}
@media(max-width:800px){
  html.query-guide .query-hero{padding-block:var(--gw-space-7)}
  html.query-guide h1{margin-bottom:var(--gw-space-4)}
  html.query-guide .query-answer,html.ut-courses .course-dek{padding-left:0}
  html.ownership-page:not(.ownership-city-page) .profile-hero :is(.profile-answer-label,.profile-answer,.profile-owner-detail){padding-left:0}
}

/* 4. Original miniature plates sit beside the answer, or above it on phones. */
html.query-guide .query-hero:has(>.gw-plate-art){display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,.82fr);column-gap:clamp(32px,5vw,88px);align-items:start;max-width:none}
html.query-guide .query-hero:has(>.gw-plate-art)>:not(.gw-plate-art){grid-column:1}
html.query-guide .query-hero:has(>.gw-plate-art)>.query-primary{justify-self:start}
html.query-guide .query-path a{text-decoration:none}
html.query-guide .query-hero>.gw-plate-art{grid-column:2;grid-row:1/span 8;align-self:center;margin:0}
.gw-plate-art img{display:block;width:100%;height:auto}
html.query-guide .query-answer:has(+.gw-answer-date) p:last-child{margin-bottom:0;padding-bottom:var(--gw-space-4)}
html.query-guide .gw-answer-date{display:grid;gap:4px;max-width:var(--gw-measure);margin:0 0 var(--gw-space-5);padding:var(--gw-space-3) 0 var(--gw-space-1);border:0;font:400 var(--gw-ui)/1.4 var(--gw-font);color:var(--gw-muted)}
html.query-guide .gw-answer-date strong{font-size:clamp(24px,.6vw + 20px,30px);line-height:1.15;letter-spacing:-.025em;font-weight:500;color:var(--gw-ink)}
@media(max-width:800px){
  html.query-guide .query-hero:has(>.gw-plate-art){grid-template-columns:minmax(0,1fr)}
  html.query-guide .query-hero>.gw-plate-art{grid-column:1;grid-row:1;width:min(64%,240px);margin:0 0 var(--gw-space-3)}
  html.query-guide .gw-answer-date{padding-left:0}
}

/* Native controls share focus, input and table states across reading families. */
:is(html.query-guide,html.ut-courses,html.ownership-page:not(.ownership-city-page)) :is(input:not([type=checkbox]):not([type=radio]):not([type=range]),select,textarea){font-family:var(--gw-font);font-size:16px;min-height:48px;border:1px solid var(--gw-input-line);border-radius:var(--gw-radius);background:var(--gw-paper-raised);color:var(--gw-ink)}
:is(html.query-guide,html.ut-courses,html.ownership-page:not(.ownership-city-page)) :is(input,select,textarea,button,summary,a):focus-visible{outline:2px solid var(--gw-signal);outline-offset:4px}
:is(html.query-guide,html.ut-courses) :is(input,select,textarea):disabled{opacity:.6;background:var(--gw-paper)}
:is(html.query-guide,html.ut-courses) :is(input[type=checkbox],input[type=radio]){accent-color:var(--gw-signal)}
html.query-guide .query-reading details{border-color:var(--gw-rule)}
html.query-guide .query-reading summary{min-height:48px;cursor:pointer}
:is(html.query-guide,html.ut-courses) :is(table th,table td){padding-block:16px;border-color:var(--gw-rule)}
@media(prefers-reduced-motion:reduce){.gw-masthead nav a::after,.gw-mobile-menu>summary svg{transition:none}}
/* Keep the shared skip link available to keyboards without consuming layout. */
body>.skip-link{position:absolute;left:var(--gw-gutter,20px);top:0;z-index:100;transform:translateY(-150%);padding:12px 18px;background:var(--gw-ink);color:var(--gw-paper);border-radius:4px;text-decoration:none}
body>.skip-link:focus{transform:translateY(12px)}
/* One reading-page footer (siteFooter() in scripts/lib/site-nav.mjs): the dark
   band, in limestone type, with the after-hours clay for hover. */
footer.gw-site-footer{display:block;width:auto;max-width:none;margin:var(--gw-space-9) 0 0;padding:0;border:0;background:var(--gw-slate);color:var(--gw-limestone);font-size:var(--gw-ui);line-height:1.5}
footer.gw-site-footer .gw-footer-inner{box-sizing:border-box;display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--gw-space-2) var(--gw-space-8);align-items:start;width:min(100% - var(--gw-gutter) * 2,var(--gw-container));margin:0 auto;padding:var(--gw-space-7) 0 var(--gw-space-8)}
footer.gw-site-footer .gw-brand{display:inline-flex;align-items:center;gap:10px;min-height:44px;color:inherit;font-size:15px;font-weight:500;letter-spacing:-.045em;text-decoration:none;white-space:nowrap}
footer.gw-site-footer .gw-mark{width:25px;height:25px;fill:none;stroke:currentColor;stroke-width:1.5;flex:none}
footer.gw-site-footer .gw-dot{color:var(--gw-night-clay)}
footer.gw-site-footer :is(.gw-footer-start,.gw-footer-page){display:flex;flex-wrap:wrap;gap:0 var(--gw-space-5)}
footer.gw-site-footer nav a{display:inline-flex;align-items:center;min-height:44px;color:var(--gw-limestone);font-size:var(--gw-ui);text-decoration:none}
footer.gw-site-footer nav a:hover{color:var(--gw-night-clay)}
footer.gw-site-footer nav a[aria-current="page"]{font-weight:500}
footer.gw-site-footer .gw-footer-page a{color:var(--gw-night-muted)}
footer.gw-site-footer :is(.gw-footer-page,.gw-footer-note){grid-column:2}
footer.gw-site-footer .gw-footer-note{max-width:none;margin:var(--gw-space-2) 0 0;color:var(--gw-night-muted);font-size:13px;line-height:1.55}
footer.gw-site-footer .gw-footer-note a{display:inline;min-height:0;color:inherit;text-underline-offset:.2em}
footer.gw-site-footer a:focus-visible{outline:2px solid var(--gw-night-clay);outline-offset:3px}
@media(max-width:700px){
  footer.gw-site-footer .gw-footer-inner{grid-template-columns:minmax(0,1fr);gap:var(--gw-space-2);padding-block:var(--gw-space-6) var(--gw-space-7)}
  footer.gw-site-footer :is(.gw-footer-page,.gw-footer-note){grid-column:1}
}
@media print{footer.gw-site-footer{display:none}}

/* Design System 2 components (Nov 5). One of each; templates adopt them in
   Phases 2-3. Colours come only from roles; numbers use tabular figures. */
.gw-kicker{display:block;margin:0 0 var(--gw-space-3);color:var(--gw-muted);font-size:var(--gw-kicker);font-weight:500;letter-spacing:.08em;text-transform:uppercase}
.gw-btn{display:inline-flex;align-items:center;justify-content:center;gap:12px;min-height:48px;padding:12px 20px;border:1px solid transparent;border-radius:var(--gw-radius);font:500 var(--gw-ui)/1.2 var(--gw-font);text-decoration:none;cursor:pointer;transition:background var(--gw-fast) var(--gw-ease),border-color var(--gw-fast)}
.gw-btn-primary{background:var(--gw-action);border-color:var(--gw-action);color:var(--gw-action-text)}
.gw-btn-primary:hover{background:var(--gw-action-hover);border-color:var(--gw-action-hover)}
.gw-btn-secondary{background:transparent;border-color:var(--gw-rule-strong);color:var(--gw-ink)}
.gw-btn-secondary:hover{border-color:var(--gw-ink)}
.gw-link{color:var(--gw-ink);text-decoration:underline;text-decoration-color:var(--gw-rule-strong);text-underline-offset:.25em}
.gw-link:hover{color:var(--gw-signal-text);text-decoration-color:currentColor}
.gw-arrow{color:var(--gw-signal)}
.gw-chips{display:flex;flex-wrap:wrap;gap:var(--gw-space-2)}
.gw-chip{display:inline-flex;align-items:center;gap:8px;min-height:40px;padding:8px 16px;border:1px solid var(--gw-rule-strong);border-radius:var(--gw-radius-pill);background:transparent;color:var(--gw-ink);font:400 14px/1 var(--gw-font);text-decoration:none;white-space:nowrap;cursor:pointer}
.gw-chip:hover{border-color:var(--gw-ink)}
.gw-chip[aria-pressed="true"],.gw-chip[aria-current],.gw-chip.is-on{background:var(--gw-ink);border-color:var(--gw-ink);color:var(--gw-paper)}
.gw-price{display:grid;gap:2px;font-variant-numeric:tabular-nums}
.gw-price strong{font-size:28px;font-weight:500;line-height:1.1;letter-spacing:-.03em}
.gw-price strong small{font-size:var(--gw-ui);font-weight:400;letter-spacing:0;color:var(--gw-muted)}
.gw-price span{font-size:var(--gw-meta);color:var(--gw-muted)}
.gw-status{display:inline-flex;align-items:center;gap:6px;width:max-content;font-size:13px;color:var(--gw-positive)}
.gw-status::before{content:'';width:7px;height:7px;border-radius:50%;background:var(--gw-oak)}
.gw-status.is-ask{color:var(--gw-caution)}.gw-status.is-ask::before{background:var(--gw-lamp)}
.gw-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:var(--gw-space-5)}
.gw-card{position:relative;display:grid;grid-template-rows:auto 1fr;border-radius:var(--gw-radius-card);background:var(--gw-card);overflow:hidden;color:var(--gw-ink);transition:background var(--gw-fast)}
.gw-card:hover{background:var(--gw-card-hover)}
.gw-card-art{position:relative;aspect-ratio:4/3;overflow:hidden}
.gw-card-art img{position:absolute;inset:6%;width:88%;height:88%;object-fit:contain}
.gw-card-body{display:grid;gap:10px;padding:16px 18px 18px}
.gw-card-title{color:var(--gw-ink);font-size:19px;font-weight:500;line-height:1.25;letter-spacing:-.015em;text-decoration:none}
.gw-card-title::after{content:'';position:absolute;inset:0}
.gw-card-sub{margin:0;color:var(--gw-muted);font-size:var(--gw-meta)}
.gw-card .gw-price strong{font-size:22px}
.gw-feature{position:relative;display:grid;align-content:space-between;gap:24px;min-height:184px;padding:24px;border-radius:var(--gw-radius-card);background:var(--gw-card);color:var(--gw-ink);text-decoration:none}
.gw-feature:hover{background:var(--gw-card-hover)}
.gw-rows{list-style:none;margin:0;padding:0;border-top:1px solid var(--gw-rule-strong)}
.gw-row{position:relative;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr) 24px;gap:6px 48px;align-items:baseline;padding:16px 0;border-bottom:1px solid var(--gw-rule)}
.gw-row>a{color:var(--gw-ink);font-size:19px;line-height:1.35;letter-spacing:-.01em;text-decoration:none}
.gw-row>a::after{content:'';position:absolute;inset:0}
.gw-row>p{margin:0;color:var(--gw-muted);font-size:var(--gw-ui);line-height:1.55}
.gw-row>.gw-arrow{text-align:right;transition:transform var(--gw-fast)}
.gw-row:hover>a{color:var(--gw-signal-text)}.gw-row:hover>.gw-arrow{transform:translateX(3px)}
.gw-row:has(>a:focus-visible){outline:2px solid var(--gw-focus);outline-offset:2px}.gw-row>a:focus-visible{outline:0}
.gw-disclosure{border-top:1px solid var(--gw-rule)}
.gw-disclosure:last-of-type{border-bottom:1px solid var(--gw-rule)}
.gw-disclosure>summary{display:flex;justify-content:space-between;align-items:center;gap:16px;min-height:56px;font-size:17px;cursor:pointer;list-style:none}
.gw-disclosure>summary::-webkit-details-marker{display:none}
.gw-disclosure>summary::after{content:'+';color:var(--gw-signal);font-size:20px}
.gw-disclosure[open]>summary::after{content:'\2212'}
.gw-table{width:100%;border-collapse:collapse;font-size:var(--gw-ui);font-variant-numeric:tabular-nums}
.gw-table :is(th,td){padding:12px 14px;border-bottom:1px solid var(--gw-rule);text-align:left;vertical-align:top}
.gw-table thead th{color:var(--gw-muted);font-size:13px;font-weight:500;padding-block:10px}
.gw-table .num{text-align:right}
.gw-table :is(th,td):first-child{padding-left:0}.gw-table :is(th,td):last-child{padding-right:0}
.gw-answer{margin:var(--gw-space-4) 0 0;padding-left:16px;border-left:2px solid var(--gw-signal);max-width:52ch;color:var(--gw-ink);font-size:var(--gw-lead);line-height:1.55}
.gw-source{margin-top:var(--gw-space-4);color:var(--gw-muted);font-size:13px;line-height:1.6}
.gw-source a{color:inherit;text-underline-offset:.2em}
.gw-model-frame{position:relative;aspect-ratio:16/10;border-radius:var(--gw-radius-card);background:var(--gw-card) center/contain no-repeat;overflow:hidden}
.gw-model-frame>:is(img,canvas){position:absolute;inset:8%;width:84%;height:84%;object-fit:contain}
.gw-section-head{display:flex;align-items:end;justify-content:space-between;gap:var(--gw-space-5);margin-bottom:var(--gw-space-6)}
.gw-section-head h2{margin:0;font-size:var(--gw-h2);font-weight:400;line-height:1.15;letter-spacing:-.035em}
@media(max-width:760px){
  .gw-row{grid-template-columns:minmax(0,1fr) 20px;gap:4px 12px;padding:14px 0}.gw-row>p{grid-column:1;grid-row:2}.gw-row>.gw-arrow{grid-column:2;grid-row:1}.gw-row>a{font-size:17px}
  .gw-chip{min-height:44px}
  .gw-section-head{flex-direction:column;align-items:flex-start;gap:12px}
}
@media(prefers-reduced-motion:reduce){:is(.gw-btn,.gw-card,.gw-row>.gw-arrow){transition:none}}
