/* Calm Pro base: fonts, typography scale, shared primitives. All rules scoped under .rd-* */

@font-face {
    font-family: 'Instrument Sans';
    font-style: normal;
    font-weight: 400 700;
    font-display: swap;
    src: url('../fonts/InstrumentSans-latin.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
    font-family: 'Instrument Sans';
    font-style: normal;
    font-weight: 400 700;
    font-display: swap;
    src: url('../fonts/InstrumentSans-latin-ext.woff2') format('woff2');
    unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
    font-family: 'Spline Sans Mono';
    font-style: normal;
    font-weight: 500 600;
    font-display: swap;
    src: url('../fonts/SplineSansMono-latin.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
    font-family: 'Spline Sans Mono';
    font-style: normal;
    font-weight: 500 600;
    font-display: swap;
    src: url('../fonts/SplineSansMono-latin-ext.woff2') format('woff2');
    unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* The HTML `hidden` attribute must win over component display rules.
   Author styles beat the UA stylesheet's [hidden]{display:none}, so any
   component setting `display` (modals, the students drawer, notices) would
   otherwise stay visible even while marked hidden. */
[hidden] {
    display: none !important;
}

/* ---- Shell-scoped typography ---- */

/* Universal border-box so `width: 100%` controls include their own padding
   and border, and never overflow/overlap their container. Applies to every
   redesign page (admin `.rd-shell` and public `.rdp-shell.rd-shell`). */
.rd-shell *,
.rd-shell *::before,
.rd-shell *::after {
    box-sizing: border-box;
}

.rd-shell {
    font-family: var(--rd-font-ui);
    color: var(--rd-body);
    background: var(--rd-bg);
    font-size: 13.5px;
    line-height: 1.5;
    -webkit-font-smoothing: antialiased;
}

.rd-shell h1, .rd-shell h2, .rd-shell h3,
.rd-shell h4, .rd-shell h5, .rd-shell h6 {
    color: var(--rd-text);
    font-family: var(--rd-font-ui);
}

.rd-mono {
    font-family: var(--rd-font-mono);
    font-weight: 500;
}

.rd-page-title {
    font-size: 22px;
    font-weight: 700;
    letter-spacing: -0.3px;
    color: var(--rd-text);
    margin: 0;
}

.rd-card-title {
    font-size: 15px;
    font-weight: 700;
    color: var(--rd-text);
    margin: 0;
}

.rd-meta {
    font-size: 11.5px;
    color: var(--rd-faint);
}

.rd-section-label {
    font-size: 10.5px;
    font-weight: 600;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--rd-faint);
}

.rd-col-header {
    font-size: 11px;
    font-weight: 600;
    letter-spacing: .05em;
    text-transform: uppercase;
    color: var(--rd-faint);
}

/* Plain links only. Anchors that are styled as buttons/nav items keep their
   own colour — this selector is more specific than .rd-btn--*, so without the
   :not() exclusions a link-button would render blue text on a blue fill. */
.rd-shell a:not(.rd-btn):not(.rdp-btn):not(.rd-nav__item):not(.rdm-tab):not(.rdm-row) {
    color: var(--rd-blue-text);
    text-decoration: none;
}

.rd-shell a:not(.rd-btn):not(.rdp-btn):not(.rd-nav__item):not(.rdm-tab):not(.rdm-row):hover {
    color: var(--rd-blue-hover);
    
}

.rd-shell a.rd-btn,
.rd-shell a.rdp-btn {
    text-decoration: none;
}

/* Icon primitives (Lucide sprite) */
.rd-icon {
    width: 20px;
    height: 20px;
    flex-shrink: 0;
    stroke: currentColor;
    stroke-width: 1.75;
    fill: none;
    stroke-linecap: round;
    stroke-linejoin: round;
    vertical-align: middle;
}

.rd-icon--sm { width: 18px; height: 18px; }
.rd-icon--xs { width: 16px; height: 16px; }

/* Scrollbar (webkit) inside redesign surfaces */
.rd-shell ::-webkit-scrollbar { width: 8px; height: 8px; }
.rd-shell ::-webkit-scrollbar-thumb { background: var(--rd-border); border-radius: 999px; }
.rd-shell ::-webkit-scrollbar-track { background: transparent; }
