/* ELE VE shared typography. The existing logo artwork is preserved.
   Montserrat is the client-approved interim interface font until HK Gothic is supplied. */
@font-face{font-family:"Cormorant Garamond";src:url("/cormorant-garamond.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Calibri Light";src:url("/calibri-light.ttf") format("truetype");font-weight:300;font-style:normal;font-display:swap}
:root{font-size:14px;--font-ui:"Montserrat",sans-serif;--font-reading:"Cormorant Garamond",serif;--font-table:"Calibri Light",sans-serif;--serif:var(--font-reading);--type-small:.875rem;--type-ui:1rem;--type-reading:1.375rem;--leading-ui:1.5;--leading-reading:1.5;font-family:var(--font-ui)}
body{font-family:var(--font-ui);font-size:var(--type-ui);line-height:var(--leading-ui)}
/* Titles: expressive serif proportions, never used for small operational data. */
h1,h2,h3,h4,h5,h6{font-family:var(--font-reading);font-weight:400;line-height:1.12;letter-spacing:-.02em}
h1,.editorial-heading h1,.heading h1{font-size:clamp(3rem,4.4vw,4.5rem);line-height:1.08;font-weight:400;margin-bottom:20px}
h2,.sectionhead h2,.decision-focus h2,.home-columns h2,.decision-history h2{font-size:clamp(2rem,2.6vw,2.75rem);line-height:1.15;font-weight:400}
h3,.update h3,.decision-history h3,.space-entry h2,.roomcontent h3,.invoice h3{font-size:1.875rem;line-height:1.2;font-weight:400}
.selection-summary h2{font-size:2rem;font-weight:400;line-height:1.2}
.design-space span,.decision-row strong,.selection-row strong{font-family:var(--font-reading);font-size:1.875rem;line-height:1.2;font-weight:400}
.projectidentity p:last-child{font-family:var(--font-reading);font-size:1.625rem;line-height:1.25}
/* Reading copy, outside tables. Keep regular weight and generous leading. */
p,blockquote,.design-notes,.priorities li,.portalfooter,.invoice-supports p{font-family:var(--font-reading);font-size:var(--type-reading);font-weight:400;line-height:var(--leading-reading);letter-spacing:0}
.editorial-heading>p:last-child,.design-notes,p.budget-explanation{font-family:var(--font-reading);font-size:var(--type-reading);line-height:var(--leading-reading)}
.item-import-note{font-family:var(--font-reading);font-size:1.125rem;line-height:1.5;font-weight:400}
/* Interface: one family for controls, compact labels and status feedback. */
button,input,select,textarea,label,nav,summary,dt,dd,time,.eyebrow,.badge,.lifecycle,.message,.notice,.loginerror,#toast,#login-message,.topbar,.sidebottom,.spec-code,.money,.spec-links,.published-plan,.room-editorial figcaption,.slides figcaption,.decision-data,.image-placeholder,.empty,.empty-editorial{font-family:var(--font-ui);font-weight:400;line-height:var(--leading-ui)}
button,input,select,textarea,.decision-data{font-size:1rem}
.eyebrow,.badge,.lifecycle,.message,.notice,.loginerror,#toast,.topbar,.sidebottom,.spec-code,.room-editorial figcaption,.slides figcaption,#login-message{font-size:var(--type-small)}
.eyebrow{letter-spacing:.1em}
p.eyebrow,p.notice,p.loginerror,p.empty,p.empty-editorial,.selection-summary p,.project-now p,.roomcontent footer,.row small{font-family:var(--font-ui);font-size:var(--type-small);line-height:var(--leading-ui)}
.project-now p{font-size:1rem}.image-placeholder,.empty,.empty-editorial{font-size:1rem}
.client-portal nav a,.client-portal .sidebar nav a,.sidebar nav button{font-family:var(--font-ui);font-size:1rem;line-height:1.5}
.sidebottom button,.main a,.primary,.secondary,.link,.loginform a,.text-button,.spec-links button,.space-entry a{font-family:var(--font-ui)}
.stat strong,.selection-subtotal strong,.budget-metrics strong{font-family:var(--font-ui);font-weight:400;font-size:clamp(1.5rem,2.5vw,2rem);line-height:1.25;font-variant-numeric:tabular-nums;letter-spacing:-.025em}
.selection-subtotal .eyebrow,.selection-filters label,.client-facts dt,.client-facts dd,.decision-focus h2 small{font-family:var(--font-ui);font-size:var(--type-small)}
/* Tables: Calibri Light for all text, including nested names, numbers and notes.
   Interactive controls and status indicators remain in the interface family. */
table,table th,table td,table td p,table td span,table td small,table td strong,table td .money,table td .spec-code,.selections-table .selection-name,.selections-table .selection-name small,.tablewrap table,.invoice-review-table th,.invoice-review-table td{font-family:var(--font-table);font-weight:300;font-size:1.0625rem;line-height:1.4;letter-spacing:0}
table th,.selections-table th,.client-budget th,.invoice-review-table th{font-family:var(--font-table);font-size:1rem;line-height:1.4;font-weight:300;letter-spacing:.02em}
.selections-table td,.client-budget td,.tablewrap td,.invoice-review-table td{font-size:1.0625rem;line-height:1.4;font-weight:300}
.selections-table .selection-name{font-size:1.25rem;line-height:1.35;font-weight:300}
table td small,.selections-table .selection-name small,.client-budget td small,.tablewrap td small,.invoice-review-table td small{font-size:1rem;line-height:1.4}
table button,table a,table input,table select,table textarea,table label,table .lifecycle,table .badge,.tablewrap td button.link,.invoice-review-table .invoice-number{font-family:var(--font-ui);font-weight:400;font-size:var(--type-small);line-height:1.5}
.client-facts{line-height:1.5}.decision-actions{flex-wrap:wrap}.decision-row{align-items:center}
.budget-controls{flex-wrap:wrap;gap:16px}.budget-controls h2{margin:0}.budget-controls label{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.budget-metrics>div{min-width:0}.budget-metrics strong{overflow-wrap:anywhere}
@media(max-width:700px){
 :root{--type-reading:1.375rem}
 .heading h1,.editorial-heading h1,.storycaption h1{font-size:2.875rem;line-height:1.08}
 .loginform h2{font-size:2.5rem;line-height:1.12}
 .decision-focus h2,.home-columns h2,.decision-history h2{font-size:2rem}
 .selection-summary h2{font-size:1.875rem}
 .client-portal .sidebar nav a,.sidebar nav button{font-size:1rem}
 .client-portal .topbar{font-size:.875rem}
 .selection-filters{gap:18px}.client-facts{grid-template-columns:1fr}
 dialog{padding:38px 20px 24px}.decision-row{align-items:flex-start;flex-wrap:wrap}
 .sidebottom{font-size:.875rem;flex-wrap:wrap}
 .budget-metrics{gap:24px 16px}.budget-metrics strong{font-size:1.125rem}
 .budget-controls{align-items:flex-start}.budget-controls label{width:100%;justify-content:space-between}
 .selections-table:has(.selections-empty){min-width:0}.selections-table:has(.selections-empty) thead{display:none}.selections-empty{text-align:left;padding:28px 0!important}
}
/* Keep specification codes and monetary cells as legible table data. */
.selections-table .spec-code,.selections-table .selection-price,.selections-table .selection-amount,.invoice-review-table .money{font-family:var(--font-table);font-size:1.0625rem;font-weight:300;line-height:1.4}
.selections-table .lifecycle,.tablewrap .badge,.selection-detail-link{font-family:var(--font-ui);font-size:.875rem;font-weight:400;line-height:1.5}
/* Explanations stay readable; decision feedback is a compact UI message. */
p.muted{font-family:var(--font-reading);font-size:var(--type-reading);line-height:var(--leading-reading)}
.decision-actions+p.muted{font-family:var(--font-ui);font-size:.875rem;line-height:1.5}
/* Client-requested header exceptions: editorial navigation and Montserrat links. */
@font-face{font-family:"Montserrat";src:url("/montserrat-regular.ttf") format("truetype");font-weight:400;font-style:normal;font-display:swap}
.client-portal .sidebar nav a{font-family:var(--font-reading);font-size:1.375rem;font-weight:400;line-height:1.4}
.client-portal .sidebottom button,.client-portal .sidebottom a{font-family:"Montserrat",sans-serif;font-size:.875rem;font-weight:400;line-height:1.5}
@media(max-width:700px){.client-portal .sidebar nav a{font-size:1.25rem}}

.design-carousel-track .design-space>span{font-family:var(--font-reading);font-weight:400;line-height:1.25}
.design-carousel-controls{font-family:var(--font-ui);font-size:.875rem;line-height:1.5}

/* Compact portal scale, including components originally sized in pixels. */
.client-portal .project-now p,.home-dashboard .project-now p{font-size:1.125rem}
.home-decision-copy strong{font-size:1.625rem}
.home-decision-copy small,.home-decision-count,.home-decision-deadline{font-size:var(--type-small)}
.design-carousel-track .design-space>span{font-size:2rem}
.design-space small{font-size:1.25rem}
.published-plan{font-size:1.75rem}
@media(max-width:700px){.home-decisions h2{font-size:1.875rem}.home-decision-copy strong{font-size:1.5rem}.design-carousel-track .design-space>span{font-size:1.75rem}}
