/* HEXA typography catalogue — use these roles for every new component.
 * title / spotlight: 37 bold; detail: 23 bold; all other text: 14.
 * heading: 14 semibold muted uppercase (fixed labels only).
 * strong: 14 bold; body: 14 regular; secondary: body + muted.
 * User content is never case-converted. Sidebar retains Inter and honey.
 */
:root { --text-large: 37px; --text-detail: 23px; --text-base: 14px; --weight-normal: 400; --weight-semibold: 600; --weight-bold: 700; }
body { font-size: var(--text-base); color: var(--ink); }
.type-title,.type-spotlight { font-size: var(--text-large); font-weight: var(--weight-bold); color: var(--ink); }
.type-detail { font-size: var(--text-detail); font-weight: var(--weight-bold); color: var(--ink); }
.type-heading { font-size: var(--text-base); font-weight: var(--weight-semibold); color: var(--ink-soft); text-transform: uppercase; }
.type-strong { font-size: var(--text-base); font-weight: var(--weight-bold); }
.type-body,.type-secondary { font-size: var(--text-base); font-weight: var(--weight-normal); }
.type-muted,.type-secondary { color: var(--ink-soft); }
.type-honey { color: var(--honey); }
/* Existing component mappings. Priority here keeps the catalogue authoritative
 * over legacy desktop/mobile component declarations. */
:is(.small,.tiny,.subtitle,.rubric-subtitle,.eyebrow,.button,.tab,.pill,.tag,.count,.text-link,.text-button,.plain-text,.summary-text,.summary-label,.procedure-title,.procedure-meta,.task-title,.task-meta,.contact-select-name,.contact-category-name,.contact-section-label,.rubric-pill,.rubric-tag-add,.rubric-add-type,.rubric-check,.project-tile-meta,.calendar-event,.calendar-more,.calendar-day-number,.weekday,.date-chip,.checkbox-label,.format-help,.footer-note,.form-error,.empty,.note-preview,.notice,.crumbs,.stat-title,.stat-note,.contact-link-select,.contact-link-option,.contact-related-link,.rubric-category-name,#toast),
:is(.content,dialog,.auth-card) :is(h2,h3,p,label,input,select,textarea,th,td,dt,dd,small,summary),
:is(.task-text,.deadline-text) :is(b,.sub1,.sub2),.project :is(b,small,.code,.bar-label),.date,.date strong,.avatar,.sidebar :is(button,strong,small,.counter,.side-label,.workspace,.profile span:last-child) { font-size: var(--text-base) !important; }
h1,.auth-card h1,.stat-row strong,.summary-number { font-size: var(--text-large) !important; font-weight: var(--weight-bold); color: var(--ink); text-transform: none; }
h1 .accent { color: var(--honey); }
.contact-detail-head h2,.type-detail { font-size: var(--text-detail) !important; font-weight: var(--weight-bold); color: var(--ink); }
:is(.eyebrow,.subtitle,.rubric-subtitle,.contact-section-label,.contact-editor-section h3,.contact-extra-section summary),
:is(.phase-table,.data-table,.contact-classification,.contact-links-table) th {
 font-size: var(--text-base) !important; font-weight: var(--weight-semibold) !important; color: var(--ink-soft); text-transform: uppercase; letter-spacing: normal;
}
.rubric-heading .rubric-subtitle { color: var(--ink-soft); font-weight: var(--weight-semibold); }
:is(.content,dialog) :is(h2,h3),.card-head h2,.button,.text-link,.tab,.pill,.tag,.rubric-pill,.procedure-title,.task-title,.contact-select-name,.task-text b,.deadline-text b,.project b,.summary-text,.linked-project strong,.contact-related-link strong { font-weight: var(--weight-bold); }
.contact-editor-section h3,.contact-extra-section summary { font-weight: var(--weight-semibold); }
.tab { color: var(--ink-soft); }
.tab.active { color: var(--ink); }
.form-field label,.contact-editor .form-field label { font-weight: var(--weight-semibold); color: var(--ink-soft); text-transform: uppercase; }
.form-field :is(input,select,textarea),.contact-links-table input { font-weight: var(--weight-normal); color: var(--ink); text-transform: none; }
.note-preview,.info-item dd { color: var(--ink); font-weight: var(--weight-normal); }
:is(.procedure-meta,.task-meta,.project-tile-meta,.info-item dt,.contact-category-name,.empty,.footer-note,.stat-note),
:is(.task-text,.deadline-text) :is(.sub1,.sub2),.contact-detail-head p,.project small { font-weight: var(--weight-normal); color: var(--ink-soft); }
.task-text .sub2,.deadline-text .sub2 { opacity: 1; }
.task.done :is(.plain-text,b,.sub1,.sub2),.task-item.done :is(.task-title,.task-meta),.tag.done { color: var(--ink-soft); }
/* Dark sidebar: muted cream is the legible counterpart to muted green. */
.sidebar,.sidebar :is(button,input,select,strong,small) { font-family: Inter,Arial,sans-serif; }
.sidebar :is(.nav button,.workspace,.profile span:last-child) { font-weight: var(--weight-bold); }
.sidebar :is(.nav button,.workspace) { color: var(--cream-soft); }
.sidebar :is(.nav button.active,.workspace.active) { color: var(--card); }
.sidebar :is(.workspace-summary,.side-label,.workspace-home),.sidebar .workspace-home.active { color: var(--honey); font-weight: var(--weight-semibold); }
.sidebar .brand small { font-weight: var(--weight-normal); }
/* Icon glyphs and the circled information hint are symbols, not text roles. */
.required-info { font-size: 9px; }
.required-info [role=tooltip] { font-size: var(--text-base); font-weight: var(--weight-normal); text-transform: none; }
.phase-title.completed,.phase-title.completed .text-button { color: var(--ink-soft); }
