@font-face {
    font-family: 'Manrope';
    src: url('../fonts/manrope-latin.woff2') format('woff2');
    font-weight: 400 800;
    font-style: normal;
    font-display: swap;
}

:root {
    --font-ui: 'Manrope', 'Segoe UI', Arial, sans-serif;
    --type-caption: .75rem;
    --type-small: .875rem;
    --type-body: 1rem;
    --type-lead: 1.125rem;
    --type-card: 1.125rem;
    --type-section: clamp(1.375rem, 1.2rem + .6vw, 1.75rem);
    --type-page: clamp(1.75rem, 1.25rem + 1.6vw, 2.5rem);
    --weight-body: 400;
    --weight-label: 600;
    --weight-heading: 750;
    --font-news: var(--font-ui);
    --font-uol: var(--font-ui);
    --font-condensed: var(--font-ui);
}

/* One authoritative family for every surface, including injected/editor markup.
   SVG icons keep their geometry; no icon fonts are used by this project. */
body, body * { font-family: var(--font-ui) !important; }
body { font-weight: var(--weight-body); }
button, input, select, textarea, table { font-size: var(--type-small); }
h1, h2, h3, h4, h5, h6 { font-weight: var(--weight-heading); line-height: 1.25; }
h1 { font-size: var(--type-page); letter-spacing: -.035em; }
h2 { font-size: var(--type-section); letter-spacing: -.025em; }
h3 { font-size: var(--type-lead); letter-spacing: -.015em; }
strong, b { font-weight: 700; }
label, th, button { font-weight: var(--weight-label); }
label, th, td { line-height: 1.5; }
input::placeholder, textarea::placeholder { font-family: var(--font-ui); font-weight: 400; }
input, select, textarea { line-height: 1.5; }
.site-brand-text, .site-top-strip-title, .header-top-strip-title,
.logo-text, .sidebar-brand, .sidebar-logo-text { font-weight: 750 !important; }
.nav-item, .nav-desktop a, .mobile-nav a, .side-panel-nav a {
    font-weight: var(--weight-label) !important;
    letter-spacing: .01em;
}
.form-label, .form-group > label, .settings-label { font-size: var(--type-small) !important; font-weight: 600 !important; }
.page-subtitle, .form-help, .form-hint, .stat-label { font-size: var(--type-small) !important; line-height: 1.55; }
.modal-title, .card-title, .settings-section-title { font-size: 1.25rem !important; line-height: 1.3; font-weight: 700 !important; }
.table th, .data-table th { font-size: var(--type-caption); letter-spacing: .025em; }
.table td, .data-table td { font-size: var(--type-small); }
.news-card-category-text, .news-card-horizontal-category, .news-card-source-name,
.instagram-likes-count, .instagram-comments-count { font-size: var(--type-caption) !important; }
.news-card:hover .news-card-title { font-size: var(--type-card) !important; }
.login-title, #loginTitle { font-size: 1.5rem !important; line-height: 1.25; font-weight: 750 !important; }
.editor-content, [contenteditable="true"] { font-size: var(--type-body); line-height: 1.7; }
body { font-size: 1rem; line-height: 1.6; }
h1, h2, h3, h4 { text-wrap: balance; overflow-wrap: anywhere; }
button, a, input, select, textarea { -webkit-tap-highlight-color: transparent; }
:focus-visible { outline: 3px solid var(--primary, #2563eb); outline-offset: 3px; }
.section-title { font-size: var(--type-section) !important; font-weight: var(--weight-heading) !important; line-height: 1.2; letter-spacing: -.02em; }
.news-title, .news-card-title { font-size: var(--type-card) !important; line-height: 1.35; font-weight: 700; letter-spacing: -.012em; }
.news-excerpt { font-size: 1rem; line-height: 1.55; }
.news-meta, .news-date, .instagram-card-date { font-size: .8125rem; line-height: 1.45; }
.instagram-caption, .instagram-card-title-preview { font-size: .9375rem; line-height: 1.45; }
.instagram-profile-name, .instagram-card-username { font-size: .875rem; line-height: 1.3; font-weight: 700; }
.instagram-card-time, .news-card-datetime, .news-card-horizontal-time { font-size: .8125rem; line-height: 1.45; }
.news-card-horizontal-title { font-size: 1.0625rem; line-height: 1.35; font-weight: 700; letter-spacing: -.012em; -webkit-line-clamp: 2; max-height: 2.7em; flex-shrink: 0; }
.article-title, .institutional-title { font-size: var(--type-page) !important; line-height: 1.15; letter-spacing: -.025em; font-weight: 700; }
.article-excerpt { font-size: 1.1875rem; line-height: 1.5; }
.article-content { font-size: 1.125rem; line-height: 1.75; overflow-wrap: anywhere; }
.article-content p, .article-content ul, .article-content ol, .article-content blockquote { max-width: 70ch; margin-bottom: 1.25em; }
.article-content h2, .article-content h3 { line-height: 1.25; margin: 1.5em 0 .6em; }
.article-content img, .article-content video, .article-content iframe { max-width: 100%; }
.article-content table { display: block; max-width: 100%; overflow-x: auto; }
.institutional-content { font-size: 1.0625rem; line-height: 1.75; max-width: 70ch; overflow-wrap: anywhere; }
.news-card, .news-card-horizontal, .instagram-card, .news-content, .header-content > * { min-width: 0; }
.page-title { font-size: clamp(1.5rem, 1.2rem + .8vw, 2rem) !important; line-height: 1.2; letter-spacing: -.02em; font-weight: 700; }
.stat-value { font-variant-numeric: tabular-nums; }
.nav-item, .form-label, .btn { line-height: 1.4; }

/* Keep partially rendered content out of keyboard and visual navigation. */
body.page-pending > :not(#pageLoader):not(script):not(noscript) { visibility: hidden; }
body.page-pending { overflow: hidden; }
.page-loader {
    position: fixed; inset: 0; z-index: 100000;
    display: flex; flex-direction: column; align-items: center; justify-content: center;
    gap: 1.25rem; padding: 2rem; background: var(--background, #fff);
    color: var(--foreground, #172033); text-align: center;
}
.page-loader[hidden] { display: none; }
.page-loader-logo { width: min(15rem, 70vw); height: auto; object-fit: contain; }
.page-loader p { max-width: 34ch; font-size: 1.0625rem; line-height: 1.5; }
.page-loader-ring { width: 2.5rem; height: 2.5rem; border: 3px solid var(--border, #e2e8f0); border-top-color: var(--primary, #2563eb); border-radius: 50%; animation: page-loader-spin .8s linear infinite; }
.page-loader button { min-height: 44px; padding: .625rem 1.25rem; border: 1px solid currentColor; border-radius: 6px; background: transparent; color: inherit; font-weight: 600; cursor: pointer; }
.page-load-error .page-loader-ring { display: none; }
@keyframes page-loader-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) {
    .page-loader-ring { animation: none; border-style: dotted; }
}
