﻿:root {
    --green-950: #0d2f28;
    --green-900: #123d33;
    --green-800: #185545;
    --green-700: #1f725b;
    --green-600: #258b6d;
    --green-100: #dcf4eb;
    --green-50: #f0faf6;
    --orange-600: #db5c0d;
    --orange-500: #ee751e;
    --orange-100: #ffead9;
    --ink-950: #17211e;
    --ink-800: #2c3834;
    --ink-600: #5d6b66;
    --ink-400: #95a09c;
    --surface: #ffffff;
    --canvas: #f4f7f6;
    --line: #dfe7e4;
    --danger: #b42318;
    --danger-soft: #fff0ee;
    --success: #187653;
    --success-soft: #e9f8f1;
    --shadow-sm: 0 8px 24px rgba(17, 55, 45, .07);
    --shadow-lg: 0 28px 80px rgba(10, 44, 36, .18);
    --radius-sm: 10px;
    --radius-md: 16px;
    --radius-lg: 24px;
    --sidebar-width: 282px;
}

* {
    box-sizing: border-box;
}

html {
    min-height: 100%;
    font-size: 16px;
}

body,
button,
input,
select {
    font-family: "Segoe UI", Tahoma, Arial, sans-serif;
}

body {
    margin: 0;
    color: var(--ink-950);
    background: var(--canvas);
}

a {
    color: inherit;
    text-decoration: none;
}

button,
input,
select {
    font-size: inherit;
}

button,
a,
select {
    -webkit-tap-highlight-color: transparent;
}

svg {
    display: block;
}

.portal-body {
    min-height: 100vh;
}

.portal-shell {
    min-height: 100vh;
}

.sidebar {
    position: fixed;
    z-index: 40;
    inset: 0 0 0 auto;
    width: var(--sidebar-width);
    display: flex;
    flex-direction: column;
    overflow-y: auto;
    color: #fff;
    background:
        radial-gradient(circle at 0 5%, rgba(238, 117, 30, .18), transparent 30%),
        linear-gradient(165deg, var(--green-950), #0a2822 72%);
    border-left: 1px solid rgba(255, 255, 255, .08);
}

.brand {
    min-height: 104px;
    display: flex;
    align-items: center;
    gap: 13px;
    padding: 24px 22px;
    border-bottom: 1px solid rgba(255, 255, 255, .09);
}

.brand-mark,
.login-logo {
    width: 48px;
    height: 48px;
    display: grid;
    place-items: center;
    flex: 0 0 auto;
    color: #fff;
    background: linear-gradient(145deg, var(--orange-500), #c84d07);
    border-radius: 15px;
    box-shadow: 0 10px 28px rgba(225, 90, 12, .28);
}

.brand-mark.compact {
    width: 42px;
    height: 42px;
    border-radius: 13px;
}

.brand-mark svg,
.login-logo svg {
    width: 30px;
    fill: none;
    stroke: currentColor;
    stroke-width: 2.3;
    stroke-linejoin: round;
    stroke-linecap: round;
}

.brand strong {
    display: block;
    font-size: 1.04rem;
    letter-spacing: .01em;
}

.brand small {
    display: block;
    margin-top: 4px;
    color: rgba(255, 255, 255, .58);
    font-size: .76rem;
}

.sidebar-nav {
    flex: 1;
    padding: 22px 15px;
}

.nav-heading {
    display: block;
    margin: 16px 11px 9px;
    color: rgba(255, 255, 255, .4);
    font-size: .7rem;
    font-weight: 700;
    letter-spacing: .07em;
}

.nav-heading:first-child {
    margin-top: 0;
}

.nav-item {
    min-height: 47px;
    display: flex;
    align-items: center;
    gap: 11px;
    margin: 4px 0;
    padding: 9px 11px;
    color: rgba(255, 255, 255, .78);
    font-size: .89rem;
    font-weight: 600;
    border-radius: 12px;
    transition: background .2s ease, color .2s ease, transform .2s ease;
}

.nav-item:hover,
.nav-item.is-active {
    color: #fff;
    background: rgba(255, 255, 255, .1);
    transform: translateX(-2px);
}

.nav-item.is-active {
    box-shadow: inset -3px 0 0 var(--orange-500);
}

.nav-icon {
    width: 30px;
    height: 30px;
    display: grid;
    place-items: center;
    flex: 0 0 auto;
    color: #d9f4ea;
    background: rgba(255, 255, 255, .08);
    border-radius: 9px;
    font-size: .64rem;
    font-weight: 800;
    letter-spacing: .03em;
}

.sidebar-footer {
    padding: 16px;
    border-top: 1px solid rgba(255, 255, 255, .08);
}

.sidebar-user {
    display: flex;
    align-items: center;
    gap: 10px;
    min-width: 0;
    padding: 10px;
    background: rgba(255, 255, 255, .06);
    border-radius: 13px;
}

.avatar {
    width: 38px;
    height: 38px;
    display: grid;
    place-items: center;
    flex: 0 0 auto;
    color: var(--green-950);
    background: #fff;
    border-radius: 11px;
    font-size: .78rem;
    font-weight: 800;
}

.sidebar-user strong,
.sidebar-user small {
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.sidebar-user strong {
    max-width: 165px;
    font-size: .82rem;
}

.sidebar-user small {
    margin-top: 3px;
    color: rgba(255, 255, 255, .5);
    font-size: .69rem;
}

.portal-main {
    min-height: 100vh;
    margin-right: var(--sidebar-width);
}

.topbar {
    min-height: 104px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 22px;
    padding: 18px clamp(20px, 3vw, 42px);
    background: rgba(255, 255, 255, .93);
    border-bottom: 1px solid var(--line);
    backdrop-filter: blur(12px);
}

.topbar-start,
.topbar-actions {
    display: flex;
    align-items: center;
}

.topbar-start {
    gap: 14px;
}

.topbar-actions {
    gap: 11px;
}

.topbar h1 {
    margin: 3px 0 0;
    font-size: clamp(1.25rem, 2vw, 1.65rem);
    line-height: 1.25;
}

.eyebrow {
    color: var(--green-700);
    font-size: .7rem;
    font-weight: 800;
    letter-spacing: .05em;
}

.light-eyebrow {
    color: #a9e5cf;
}

.sidebar-toggle {
    display: none !important;
    flex-direction: column;
    gap: 4px;
}

.sidebar-toggle span {
    width: 18px;
    height: 2px;
    background: currentColor;
    border-radius: 2px;
}

.icon-button {
    width: 42px;
    height: 42px;
    display: inline-grid;
    place-items: center;
    color: var(--green-800);
    background: var(--green-50);
    border: 1px solid #d9ebe4;
    border-radius: 12px;
    cursor: pointer;
    font-size: .68rem;
    font-weight: 800;
}

.branch-switcher {
    min-width: 230px;
    display: grid;
    gap: 3px;
}

.branch-switcher label {
    color: var(--ink-600);
    font-size: .64rem;
    font-weight: 700;
}

.branch-switcher select {
    width: 100%;
    height: 42px;
    padding: 0 13px;
    color: var(--ink-800);
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 11px;
    outline: none;
}

.branch-switcher select:focus {
    border-color: var(--green-600);
    box-shadow: 0 0 0 3px rgba(37, 139, 109, .12);
}

.logout-button,
.primary-button,
.secondary-button {
    min-height: 42px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 9px;
    padding: 0 17px;
    border-radius: 11px;
    cursor: pointer;
    font-weight: 700;
}

.logout-button {
    color: var(--ink-600);
    background: #fff;
    border: 1px solid var(--line);
}

.primary-button {
    color: #fff;
    background: linear-gradient(135deg, var(--green-700), var(--green-900));
    border: 0;
    box-shadow: 0 9px 22px rgba(24, 85, 69, .18);
}

.primary-button:hover {
    background: linear-gradient(135deg, var(--green-600), var(--green-800));
}

.secondary-button {
    color: var(--ink-800);
    background: #fff;
    border: 1px solid var(--line);
}

.full-button {
    width: 100%;
    min-height: 52px;
    margin-top: 8px;
    font-size: .96rem;
}

.content-wrap {
    width: min(100%, 1580px);
    margin: 0 auto;
    padding: clamp(22px, 3vw, 42px);
}

.welcome-banner {
    position: relative;
    isolation: isolate;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 30px;
    overflow: hidden;
    padding: clamp(25px, 4vw, 42px);
    color: #fff;
    background:
        radial-gradient(circle at 15% 0, rgba(238, 117, 30, .24), transparent 34%),
        linear-gradient(125deg, var(--green-950), var(--green-700));
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-sm);
}

.welcome-banner::after {
    content: "";
    position: absolute;
    z-index: -1;
    width: 290px;
    height: 290px;
    left: -90px;
    bottom: -190px;
    border: 45px solid rgba(255, 255, 255, .06);
    border-radius: 50%;
}

.welcome-copy h2 {
    margin: 7px 0 8px;
    font-size: clamp(1.55rem, 3vw, 2.25rem);
}

.welcome-copy p {
    max-width: 760px;
    margin: 0;
    color: rgba(255, 255, 255, .72);
    line-height: 1.9;
}

.welcome-copy p strong {
    color: #fff;
}

.role-pills {
    display: flex;
    flex-wrap: wrap;
    gap: 7px;
    margin-top: 18px;
}

.role-pills span {
    padding: 7px 11px;
    color: #d9f5ea;
    background: rgba(255, 255, 255, .09);
    border: 1px solid rgba(255, 255, 255, .1);
    border-radius: 999px;
    font-size: .72rem;
    font-weight: 700;
}

.welcome-date {
    min-width: 190px;
    padding: 19px;
    text-align: center;
    background: rgba(255, 255, 255, .09);
    border: 1px solid rgba(255, 255, 255, .12);
    border-radius: 17px;
}

.welcome-date span,
.welcome-date small {
    display: block;
    color: rgba(255, 255, 255, .58);
    font-size: .7rem;
}

.welcome-date strong {
    display: block;
    margin: 9px 0;
    font-size: 1.1rem;
    letter-spacing: .04em;
}

.stat-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 15px;
    margin: 20px 0 34px;
}

.stat-card {
    min-width: 0;
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 20px;
    background: var(--surface);
    border: 1px solid var(--line);
    border-radius: var(--radius-md);
    box-shadow: 0 5px 18px rgba(16, 45, 38, .035);
}

.stat-icon,
.module-icon,
.module-hero-icon,
.section-badge {
    display: grid;
    place-items: center;
    flex: 0 0 auto;
    font-weight: 900;
    letter-spacing: .03em;
}

.stat-icon {
    width: 48px;
    height: 48px;
    border-radius: 14px;
    font-size: .72rem;
}

.stat-card small,
.stat-card span {
    display: block;
}

.stat-card small {
    color: var(--ink-600);
    font-size: .7rem;
    font-weight: 700;
}

.stat-card strong {
    display: block;
    margin: 2px 0 1px;
    font-size: 1.65rem;
}

.stat-card span:not(.stat-icon) {
    color: var(--ink-400);
    font-size: .66rem;
}

.stat-card .status-word {
    color: var(--success);
    font-size: 1.2rem;
}

.accent-green { color: #146d4f; background: #e1f6ed; }
.accent-orange { color: #bd4f0b; background: #fff0e4; }
.accent-blue { color: #295f9e; background: #e8f2ff; }
.accent-violet { color: #6a45a8; background: #f0e9fb; }
.accent-cyan { color: #147681; background: #e1f6f7; }
.accent-slate { color: #4c626a; background: #eaf0f1; }
.accent-red { color: #a64040; background: #faeaea; }
.accent-gold { color: #8c6611; background: #fbf2d7; }

.section-block {
    margin-top: 4px;
}

.section-title-row {
    display: flex;
    align-items: end;
    justify-content: space-between;
    gap: 20px;
    margin-bottom: 16px;
}

.section-title-row h2,
.panel-heading h2,
.module-hero h2 {
    margin: 5px 0 0;
    font-size: 1.25rem;
}

.muted-label {
    color: var(--ink-400);
    font-size: .72rem;
}

.module-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 14px;
}

.module-card {
    min-height: 145px;
    display: flex;
    align-items: flex-start;
    gap: 13px;
    padding: 19px;
    background: #fff;
    border: 1px solid var(--line);
    border-radius: var(--radius-md);
    box-shadow: 0 5px 18px rgba(16, 45, 38, .03);
    transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease;
}

.module-card:hover {
    transform: translateY(-3px);
    border-color: #bfd8ce;
    box-shadow: var(--shadow-sm);
}

.module-icon {
    width: 44px;
    height: 44px;
    border-radius: 13px;
    font-size: .68rem;
}

.module-content {
    min-width: 0;
    flex: 1;
}

.module-content strong,
.module-content small {
    display: block;
}

.module-content strong {
    margin-top: 3px;
    font-size: .91rem;
}

.module-content small {
    margin-top: 8px;
    color: var(--ink-600);
    font-size: .71rem;
    line-height: 1.75;
}

.module-arrow {
    color: var(--ink-400);
    font-size: 1.1rem;
}

.foundation-note {
    display: flex;
    align-items: flex-start;
    gap: 14px;
    margin-top: 24px;
    padding: 18px 20px;
    color: var(--green-900);
    background: var(--green-50);
    border: 1px solid #d1e9df;
    border-radius: var(--radius-md);
}

.note-mark {
    width: 29px;
    height: 29px;
    display: grid;
    place-items: center;
    flex: 0 0 auto;
    color: #fff;
    background: var(--green-700);
    border-radius: 50%;
    font-weight: 800;
}

.foundation-note strong {
    display: block;
    margin: 2px 0 5px;
    font-size: .87rem;
}

.foundation-note p {
    margin: 0;
    color: var(--ink-600);
    font-size: .76rem;
    line-height: 1.8;
}

.empty-panel,
.state-panel {
    padding: 48px 25px;
    text-align: center;
    background: #fff;
    border: 1px dashed #c9d6d1;
    border-radius: var(--radius-lg);
}

.empty-panel > span {
    color: var(--orange-500);
    font-size: 2rem;
}

.empty-panel h3,
.state-panel h2 {
    margin: 10px 0 7px;
}

.empty-panel p,
.state-panel p {
    margin: 0 0 20px;
    color: var(--ink-600);
}

.state-code {
    display: block;
    color: var(--orange-500);
    font-size: 3rem;
    font-weight: 900;
}

.module-hero {
    display: flex;
    align-items: center;
    gap: 17px;
    padding: 23px;
    background: #fff;
    border: 1px solid var(--line);
    border-radius: var(--radius-lg);
}

.module-hero-icon {
    width: 62px;
    height: 62px;
    border-radius: 17px;
    font-size: .85rem;
}

.module-hero p {
    margin: 7px 0 0;
    color: var(--ink-600);
    font-size: .81rem;
}

.branch-context-chip {
    margin-right: auto;
    padding: 8px 12px;
    color: var(--green-800);
    background: var(--green-50);
    border: 1px solid #d2e9e0;
    border-radius: 999px;
    font-size: .72rem;
    font-weight: 700;
}

.page-grid {
    display: grid;
    gap: 18px;
    margin-top: 20px;
}

.two-column-grid {
    grid-template-columns: minmax(0, 1.5fr) minmax(280px, .7fr);
}

.narrow-grid {
    max-width: 760px;
    margin-inline: auto;
}

.panel {
    padding: clamp(21px, 3vw, 30px);
    background: #fff;
    border: 1px solid var(--line);
    border-radius: var(--radius-lg);
}

.panel-heading {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 18px;
    padding-bottom: 18px;
    border-bottom: 1px solid var(--line);
}

.panel-heading p,
.roadmap-panel > p,
.permission-panel p {
    color: var(--ink-600);
    line-height: 1.8;
}

.panel-heading p {
    margin: 7px 0 0;
    font-size: .78rem;
}

.roadmap-panel > p,
.permission-panel p {
    font-size: .81rem;
}

.section-badge {
    width: 46px;
    height: 46px;
    color: var(--green-700);
    background: var(--green-50);
    border-radius: 13px;
    font-size: .7rem;
}

.status-badge {
    padding: 7px 11px;
    border-radius: 999px;
    font-size: .68rem;
    font-weight: 800;
}

.status-badge.in-progress {
    color: #9b4d12;
    background: #fff0e3;
}

.check-list {
    display: grid;
    gap: 10px;
    margin: 20px 0 0;
    padding: 0;
    list-style: none;
}

.check-list li {
    position: relative;
    padding-right: 27px;
    color: var(--ink-800);
    font-size: .82rem;
}

.check-list li::before {
    content: "✓";
    position: absolute;
    right: 0;
    width: 19px;
    height: 19px;
    display: grid;
    place-items: center;
    color: var(--success);
    background: var(--success-soft);
    border-radius: 50%;
    font-size: .68rem;
    font-weight: 900;
}

.permission-panel code {
    display: block;
    direction: ltr;
    margin: 18px 0;
    padding: 13px;
    color: var(--green-800);
    background: var(--green-50);
    border: 1px solid #d5e9e1;
    border-radius: 10px;
    text-align: left;
    font-size: .72rem;
    overflow-wrap: anywhere;
}

.stack-form {
    display: grid;
    gap: 18px;
    margin-top: 23px;
}

.field-group {
    display: grid;
    gap: 7px;
}

.field-group label {
    color: var(--ink-800);
    font-size: .78rem;
    font-weight: 700;
}

.input-frame {
    min-height: 51px;
    display: flex;
    align-items: center;
    overflow: hidden;
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 12px;
    transition: border-color .2s ease, box-shadow .2s ease;
}

.input-frame:focus-within {
    border-color: var(--green-600);
    box-shadow: 0 0 0 4px rgba(37, 139, 109, .11);
}

.input-frame input {
    min-width: 0;
    flex: 1;
    height: 49px;
    padding: 0 13px;
    color: var(--ink-950);
    background: transparent;
    border: 0;
    outline: 0;
}

.input-frame input::placeholder {
    color: #aab3b0;
}

.input-symbol {
    min-width: 45px;
    color: var(--green-700);
    text-align: center;
    font-size: .66rem;
    font-weight: 900;
}

.password-toggle {
    height: 33px;
    margin-left: 8px;
    padding: 0 10px;
    color: var(--ink-600);
    background: var(--canvas);
    border: 0;
    border-radius: 8px;
    cursor: pointer;
    font-size: .68rem;
    font-weight: 700;
}

.field-error {
    min-height: 15px;
    color: var(--danger);
    font-size: .68rem;
}

.validation-summary {
    color: var(--danger);
    background: var(--danger-soft);
    border: 1px solid #f2cbc6;
    border-radius: 11px;
    font-size: .76rem;
}

.validation-summary:empty,
.validation-summary.validation-summary-valid {
    display: none;
}

.validation-summary ul {
    margin: 0;
    padding: 12px 30px 12px 12px;
}

.form-actions {
    display: flex;
    gap: 10px;
    margin-top: 4px;
}

.alert {
    margin: 0 0 16px;
    padding: 12px 14px;
    border-radius: 11px;
    font-size: .76rem;
    line-height: 1.7;
}

.alert-success {
    color: var(--success);
    background: var(--success-soft);
    border: 1px solid #c8e9dc;
}

.login-body {
    min-height: 100vh;
    background: #eef4f1;
}

.login-shell {
    min-height: 100vh;
    display: grid;
    grid-template-columns: minmax(420px, 1.05fr) minmax(480px, .95fr);
}

.login-brand-panel {
    position: relative;
    isolation: isolate;
    display: grid;
    place-items: center;
    overflow: hidden;
    padding: clamp(40px, 7vw, 100px);
    color: #fff;
    background:
        radial-gradient(circle at 18% 15%, rgba(238, 117, 30, .24), transparent 26%),
        linear-gradient(145deg, #0b2e27, #155443 62%, #1c6b55);
}

.login-brand-content {
    position: relative;
    z-index: 2;
    max-width: 620px;
}

.login-logo {
    width: 64px;
    height: 64px;
    border-radius: 19px;
}

.login-logo svg {
    width: 39px;
}

.login-kicker {
    margin: 22px 0 7px;
    color: #a9e5cf;
    font-size: .75rem;
    font-weight: 800;
    letter-spacing: .08em;
    text-transform: uppercase;
}

.login-brand-content h1 {
    max-width: 580px;
    margin: 0;
    font-size: clamp(2rem, 4.6vw, 4rem);
    line-height: 1.3;
}

.login-lead {
    max-width: 570px;
    margin: 20px 0 0;
    color: rgba(255, 255, 255, .68);
    font-size: clamp(.9rem, 1.4vw, 1.05rem);
    line-height: 2;
}

.login-feature-list {
    display: grid;
    gap: 12px;
    margin-top: 40px;
}

.login-feature-list div {
    display: flex;
    align-items: center;
    gap: 12px;
    color: rgba(255, 255, 255, .82);
    font-size: .85rem;
}

.login-feature-list span {
    width: 34px;
    height: 34px;
    display: grid;
    place-items: center;
    color: #ffc193;
    background: rgba(255, 255, 255, .08);
    border: 1px solid rgba(255, 255, 255, .1);
    border-radius: 10px;
    font-size: .66rem;
    font-weight: 800;
}

.login-orb {
    position: absolute;
    z-index: 1;
    border: 1px solid rgba(255, 255, 255, .08);
    border-radius: 50%;
}

.login-orb-one {
    width: 420px;
    height: 420px;
    left: -210px;
    bottom: -170px;
    box-shadow: inset 0 0 0 55px rgba(255, 255, 255, .025);
}

.login-orb-two {
    width: 210px;
    height: 210px;
    right: -95px;
    top: -75px;
    box-shadow: inset 0 0 0 34px rgba(238, 117, 30, .04);
}

.login-form-panel {
    display: grid;
    place-items: center;
    padding: clamp(25px, 6vw, 80px);
    background: #fff;
}

.login-form-card {
    width: min(100%, 430px);
}

.mobile-brand {
    display: none;
    align-items: center;
    gap: 10px;
    margin-bottom: 32px;
}

.login-form-card h2 {
    margin: 8px 0 6px;
    font-size: clamp(1.55rem, 3vw, 2rem);
}

.form-intro {
    margin: 0 0 27px;
    color: var(--ink-600);
    font-size: .82rem;
}

.login-form-card form {
    display: grid;
    gap: 16px;
}

.check-row {
    display: flex;
    align-items: center;
    gap: 8px;
    width: fit-content;
    color: var(--ink-600);
    cursor: pointer;
    font-size: .74rem;
}

.check-row input {
    width: 17px;
    height: 17px;
    accent-color: var(--green-700);
}

.login-support {
    margin: 24px 0 0;
    color: var(--ink-400);
    text-align: center;
    font-size: .69rem;
}

.sidebar-backdrop {
    display: none;
}

@media (max-width: 1280px) {
    .module-grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .stat-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 1024px) {
    :root {
        --sidebar-width: 270px;
    }

    .sidebar {
        transform: translateX(100%);
        transition: transform .25s ease;
        box-shadow: var(--shadow-lg);
    }

    .sidebar.is-open {
        transform: translateX(0);
    }

    .portal-main {
        margin-right: 0;
    }

    .sidebar-toggle {
        display: inline-flex !important;
    }

    .sidebar-backdrop {
        position: fixed;
        z-index: 35;
        inset: 0;
        background: rgba(7, 25, 21, .44);
    }

    .sidebar-backdrop.is-visible {
        display: block;
    }

    .login-shell {
        grid-template-columns: minmax(350px, .8fr) minmax(440px, 1.2fr);
    }
}

@media (max-width: 820px) {
    .topbar {
        align-items: flex-start;
        flex-direction: column;
    }

    .topbar-actions {
        width: 100%;
    }

    .branch-switcher {
        min-width: 0;
        flex: 1;
    }

    .logout-button {
        padding-inline: 12px;
        font-size: .72rem;
    }

    .module-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .two-column-grid {
        grid-template-columns: 1fr;
    }

    .login-shell {
        display: block;
    }

    .login-brand-panel {
        display: none;
    }

    .login-form-panel {
        min-height: 100vh;
    }

    .mobile-brand {
        display: flex;
    }
}

@media (max-width: 590px) {
    .content-wrap {
        padding: 17px;
    }

    .topbar {
        min-height: 0;
        padding: 15px 17px;
    }

    .topbar-actions {
        flex-wrap: wrap;
    }

    .branch-switcher {
        width: 100%;
        flex-basis: 100%;
        order: 3;
    }

    .welcome-banner {
        align-items: flex-start;
        flex-direction: column;
    }

    .welcome-date {
        width: 100%;
    }

    .stat-grid,
    .module-grid {
        grid-template-columns: 1fr;
    }

    .stat-grid {
        gap: 10px;
    }

    .module-card {
        min-height: 0;
    }

    .section-title-row,
    .module-hero {
        align-items: flex-start;
        flex-direction: column;
    }

    .muted-label {
        display: none;
    }

    .branch-context-chip {
        margin-right: 0;
    }

    .form-actions {
        flex-direction: column;
    }

    .login-form-panel {
        align-items: start;
        padding: 30px 20px;
    }
}

@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        scroll-behavior: auto !important;
        transition-duration: .01ms !important;
        animation-duration: .01ms !important;
        animation-iteration-count: 1 !important;
    }
}

/* PHASE 2A: employee-led student registration */
.registration-hero {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 28px;
    overflow: hidden;
    padding: clamp(25px, 4vw, 38px);
    color: #fff;
    background:
        radial-gradient(circle at 8% 0, rgba(238, 117, 30, .3), transparent 33%),
        linear-gradient(125deg, var(--green-950), var(--green-700));
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-sm);
}

.registration-hero h2 {
    margin: 7px 0 8px;
    font-size: clamp(1.5rem, 3vw, 2.1rem);
}

.registration-hero p {
    max-width: 770px;
    margin: 0;
    color: rgba(255, 255, 255, .72);
    font-size: .82rem;
    line-height: 1.9;
}

.registration-context {
    min-width: 240px;
    padding: 18px 20px;
    background: rgba(255, 255, 255, .1);
    border: 1px solid rgba(255, 255, 255, .14);
    border-radius: 16px;
}

.registration-context span,
.registration-context small,
.registration-context strong {
    display: block;
}

.registration-context span,
.registration-context small {
    color: rgba(255, 255, 255, .6);
    font-size: .68rem;
}

.registration-context strong {
    margin: 7px 0;
    font-size: 1rem;
}

.workflow-steps {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 1px;
    margin: 16px 0 22px;
    padding: 0;
    overflow: hidden;
    list-style: none;
    background: var(--line);
    border: 1px solid var(--line);
    border-radius: 15px;
}

.workflow-steps li {
    min-height: 70px;
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 13px 17px;
    background: #fff;
}

.workflow-steps li > span,
.section-number {
    display: grid;
    place-items: center;
    flex: 0 0 auto;
    color: var(--green-700);
    background: var(--green-50);
    border: 1px solid #d7ebe3;
    border-radius: 10px;
    font-size: .7rem;
    font-weight: 900;
}

.workflow-steps li > span {
    width: 32px;
    height: 32px;
}

.workflow-steps li.is-current > span {
    color: #fff;
    background: var(--orange-500);
    border-color: var(--orange-500);
}

.workflow-steps strong,
.workflow-steps small {
    display: block;
}

.workflow-steps strong { font-size: .77rem; }
.workflow-steps small { margin-top: 3px; color: var(--ink-400); font-size: .64rem; }

.system-alert {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    margin: 14px 0;
    padding: 15px 17px;
    border: 1px solid;
    border-radius: 13px;
}

.system-alert .alert-mark {
    width: 28px;
    height: 28px;
    display: grid;
    place-items: center;
    flex: 0 0 auto;
    border-radius: 50%;
    font-size: .75rem;
    font-weight: 900;
}

.system-alert strong,
.system-alert p { display: block; margin: 0; }
.system-alert strong { font-size: .8rem; }
.system-alert p { margin-top: 3px; font-size: .73rem; line-height: 1.7; }
.success-alert { color: var(--success); background: var(--success-soft); border-color: #c8e9dc; }
.success-alert .alert-mark { color: #fff; background: var(--success); }
.danger-alert { color: var(--danger); background: var(--danger-soft); border-color: #efcbc6; }
.danger-alert .alert-mark { color: #fff; background: var(--danger); }
.info-alert { color: var(--green-800); background: var(--green-50); border-color: #cee7dd; }
.info-alert .alert-mark { color: #fff; background: var(--green-700); }

.form-panel {
    margin-top: 18px;
    padding: clamp(20px, 3vw, 29px);
    background: #fff;
    border: 1px solid var(--line);
    border-radius: var(--radius-lg);
    box-shadow: 0 5px 18px rgba(16, 45, 38, .025);
}

.registration-panel-heading > div:first-child {
    display: flex;
    align-items: center;
    gap: 12px;
}

.section-number {
    width: 42px;
    height: 42px;
}

.safe-badge,
.branch-lock {
    padding: 8px 11px;
    color: var(--success);
    background: var(--success-soft);
    border: 1px solid #c9e9dc;
    border-radius: 999px;
    font-size: .68rem;
    font-weight: 800;
}

.branch-lock {
    color: var(--green-800);
    background: var(--green-50);
    border-color: #d0e8df;
}

.required-note,
.helper-note {
    max-width: 340px;
    color: var(--ink-400);
    font-size: .67rem;
    line-height: 1.6;
}

.student-search-form {
    display: grid;
    gap: 8px;
    margin-top: 20px;
}

.student-search-form > label {
    color: var(--ink-800);
    font-size: .78rem;
    font-weight: 700;
}

.student-search-form > small {
    color: var(--ink-400);
    font-size: .66rem;
}

.search-frame {
    display: flex;
    gap: 9px;
}

.search-frame input {
    min-width: 0;
    min-height: 48px;
    flex: 1;
    padding: 0 14px;
    color: var(--ink-950);
    background: var(--canvas);
    border: 1px solid var(--line);
    border-radius: 12px;
    outline: none;
}

.search-frame input:focus {
    background: #fff;
    border-color: var(--green-600);
    box-shadow: 0 0 0 4px rgba(37, 139, 109, .1);
}

.search-summary {
    display: flex;
    align-items: center;
    gap: 11px;
    margin-top: 17px;
    padding: 13px 15px;
    background: var(--canvas);
    border-radius: 12px;
}

.search-clear-mark,
.search-warning-mark {
    width: 29px;
    height: 29px;
    display: grid;
    place-items: center;
    flex: 0 0 auto;
    color: #fff;
    border-radius: 50%;
    font-size: .7rem;
    font-weight: 900;
}

.search-clear-mark { background: var(--success); }
.search-warning-mark { background: var(--orange-500); }
.search-summary strong,
.search-summary small { display: block; }
.search-summary strong { font-size: .77rem; }
.search-summary small { margin-top: 3px; color: var(--ink-600); font-size: .67rem; }

.student-results {
    display: grid;
    gap: 9px;
    margin-top: 13px;
}

.student-result-card {
    display: grid;
    grid-template-columns: minmax(220px, 1.2fr) minmax(420px, 2fr) auto;
    align-items: center;
    gap: 17px;
    padding: 14px;
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 13px;
}

.student-result-card.is-blacklisted {
    background: #fff9f8;
    border-color: #efc9c4;
}

.student-result-main {
    display: flex;
    align-items: center;
    gap: 10px;
    min-width: 0;
}

.student-avatar {
    width: 39px;
    height: 39px;
    display: grid;
    place-items: center;
    flex: 0 0 auto;
    color: var(--green-800);
    background: var(--green-50);
    border-radius: 11px;
    font-weight: 900;
}

.student-result-main strong,
.student-result-main small { display: block; }
.student-result-main strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: .79rem; }
.student-result-main small { margin-top: 4px; color: var(--ink-400); font-size: .64rem; }
.student-result-card dl { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; margin: 0; }
.student-result-card dt { color: var(--ink-400); font-size: .6rem; }
.student-result-card dd { margin: 4px 0 0; color: var(--ink-800); font-size: .7rem; font-weight: 700; }

.status-pill {
    display: inline-flex;
    padding: 6px 9px;
    border-radius: 999px;
    white-space: nowrap;
    font-size: .64rem;
    font-weight: 800;
}
.success-pill { color: var(--success); background: var(--success-soft); }
.danger-pill { color: var(--danger); background: var(--danger-soft); }
.muted-pill { color: var(--ink-600); background: var(--canvas); }

.registration-form > .validation-summary { margin-top: 18px; }
.registration-fields { display: grid; gap: 16px; margin-top: 22px; }
.registration-fields.three-fields { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.registration-fields .wide-field { grid-column: span 2; }
.registration-fields .full-field { grid-column: 1 / -1; }

.registration-fields input:not([type="checkbox"]),
.registration-fields select,
.registration-fields textarea {
    width: 100%;
    min-height: 47px;
    padding: 10px 12px;
    color: var(--ink-950);
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 11px;
    outline: none;
    transition: border-color .2s ease, box-shadow .2s ease;
}

.registration-fields textarea { min-height: 72px; resize: vertical; }
.registration-fields input:focus,
.registration-fields select:focus,
.registration-fields textarea:focus {
    border-color: var(--green-600);
    box-shadow: 0 0 0 4px rgba(37, 139, 109, .1);
}

.registration-fields .field-group > span {
    min-height: 14px;
    color: var(--danger);
    font-size: .65rem;
}

.emphasized-field input {
    background: #fffdf9 !important;
    border-color: #e8c5a8 !important;
    font-weight: 700;
    letter-spacing: .07em;
}

.field-warning { color: var(--danger); font-size: .67rem; }

.check-card {
    display: flex;
    align-items: center;
    gap: 11px;
    padding: 13px 15px;
    cursor: pointer;
    background: var(--green-50);
    border: 1px solid #d4eae1;
    border-radius: 12px;
}

.check-card input { width: 18px; height: 18px; accent-color: var(--green-700); }
.check-card strong,
.check-card small { display: block; }
.check-card strong { font-size: .75rem; }
.check-card small { margin-top: 3px; color: var(--ink-600); font-size: .65rem; }

.live-duplicate-box {
    margin-top: 16px;
    padding: 14px 16px;
    border: 1px solid;
    border-radius: 12px;
}
.live-duplicate-box.is-warning { color: #86410f; background: #fff6ec; border-color: #f0d0ad; }
.live-duplicate-box.is-error { color: var(--danger); background: var(--danger-soft); border-color: #efcbc6; }
.live-duplicate-box > strong { display: block; margin-bottom: 8px; font-size: .75rem; }
.live-duplicate-box p { margin: 0; font-size: .72rem; }
.live-match-row { display: flex; justify-content: space-between; gap: 15px; padding: 7px 0; border-top: 1px solid rgba(134, 65, 15, .12); font-size: .7rem; }
.live-match-row small { color: inherit; opacity: .7; }

.manual-workflow-note {
    display: flex;
    align-items: center;
    gap: 11px;
    margin-top: 18px;
    padding: 13px 15px;
    color: var(--green-800);
    background: var(--green-50);
    border-radius: 12px;
}
.manual-workflow-note > span { width: 27px; height: 27px; display: grid; place-items: center; flex: 0 0 auto; color: #fff; background: var(--green-700); border-radius: 50%; font-weight: 900; }
.manual-workflow-note p { margin: 0; font-size: .71rem; line-height: 1.7; }

.registration-submit-bar {
    position: sticky;
    z-index: 20;
    bottom: 14px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    margin-top: 18px;
    padding: 15px 18px;
    background: rgba(255, 255, 255, .96);
    border: 1px solid var(--line);
    border-radius: 15px;
    box-shadow: 0 14px 38px rgba(15, 53, 43, .13);
    backdrop-filter: blur(12px);
}
.registration-submit-bar strong,
.registration-submit-bar small { display: block; }
.registration-submit-bar strong { font-size: .79rem; }
.registration-submit-bar small { margin-top: 3px; color: var(--ink-600); font-size: .66rem; }
.registration-submit { min-width: 210px; }
.registration-submit:disabled { cursor: not-allowed; opacity: .5; }

@media (max-width: 1100px) {
    .student-result-card { grid-template-columns: 1fr; }
    .registration-fields.three-fields { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 760px) {
    .registration-hero,
    .registration-panel-heading,
    .registration-submit-bar { align-items: flex-start; flex-direction: column; }
    .registration-context { width: 100%; min-width: 0; }
    .workflow-steps { grid-template-columns: repeat(2, 1fr); }
    .search-frame { flex-direction: column; }
    .student-result-card dl { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .registration-fields.three-fields { grid-template-columns: 1fr; }
    .registration-fields .wide-field,
    .registration-fields .full-field { grid-column: auto; }
    .registration-submit { width: 100%; min-width: 0; }
    .registration-submit-bar { position: static; }
}

@media (max-width: 480px) {
    .workflow-steps { grid-template-columns: 1fr; }
    .workflow-steps li { min-height: 58px; }
    .student-result-card dl { grid-template-columns: 1fr; }
    .live-match-row { flex-direction: column; gap: 3px; }
}

/* =========================================================
   Student directory and unified student file
   ========================================================= */

.students-hero,
.student-file-hero {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 28px;
    padding: 26px 28px;
    color: #fff;
    background:
        radial-gradient(circle at 15% 10%, rgba(255, 255, 255, .14), transparent 34%),
        linear-gradient(135deg, #0f493a, #176c54);
    border-radius: 19px;
    box-shadow: 0 18px 42px rgba(15, 73, 58, .18);
}

.students-hero h2,
.student-file-hero h2 { margin: 6px 0 7px; font-size: 1.42rem; }
.students-hero p,
.student-file-hero p { max-width: 720px; margin: 0; color: rgba(255, 255, 255, .8); font-size: .75rem; line-height: 1.8; }
.students-hero-actions { min-width: 235px; padding: 15px 17px; background: rgba(255, 255, 255, .1); border: 1px solid rgba(255, 255, 255, .18); border-radius: 14px; }
.students-hero-actions > span,
.students-hero-actions > strong { display: block; }
.students-hero-actions > span { color: rgba(255, 255, 255, .7); font-size: .65rem; }
.students-hero-actions > strong { margin: 4px 0 12px; font-size: .87rem; }
.light-button { display: inline-flex; align-items: center; justify-content: center; min-height: 37px; padding: 8px 13px; color: var(--green-800); background: #fff; border-radius: 9px; font-size: .69rem; font-weight: 800; text-decoration: none; }

.student-filter-panel,
.student-list-panel,
.student-file-section {
    margin-top: 18px;
    padding: 20px;
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 17px;
    box-shadow: 0 9px 26px rgba(18, 57, 48, .045);
}

.student-filter-search label,
.student-filter-grid label,
.inline-edit-form label,
.enrollment-inline-form label,
.status-change-form label,
.blacklist-form label,
.link-settings-form label { display: block; margin-bottom: 6px; color: var(--ink-700); font-size: .68rem; font-weight: 800; }

.student-filter-search > div { display: flex; gap: 9px; }
.student-filter-search input { flex: 1; min-width: 0; }
.student-filter-panel input,
.student-filter-panel select,
.inline-edit-form input:not([type="checkbox"]),
.inline-edit-form select,
.inline-edit-form textarea,
.enrollment-inline-form input,
.enrollment-inline-form textarea,
.status-change-form input,
.status-change-form select,
.blacklist-form textarea,
.link-settings-form select {
    width: 100%;
    min-height: 43px;
    padding: 9px 11px;
    color: var(--ink-950);
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 10px;
    outline: none;
}

.student-filter-panel input:focus,
.student-filter-panel select:focus,
.inline-edit-form input:focus,
.inline-edit-form select:focus,
.inline-edit-form textarea:focus,
.enrollment-inline-form input:focus,
.enrollment-inline-form textarea:focus,
.status-change-form input:focus,
.status-change-form select:focus,
.blacklist-form textarea:focus,
.link-settings-form select:focus { border-color: var(--green-600); box-shadow: 0 0 0 4px rgba(37, 139, 109, .09); }

.student-filter-grid { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 12px; margin-top: 14px; }
.compact-check { display: flex !important; align-items: center; gap: 9px; min-height: 43px; margin: 0 !important; padding: 8px 10px; background: var(--canvas); border: 1px solid var(--line); border-radius: 10px; cursor: pointer; }
.compact-check input { width: 17px !important; height: 17px; flex: 0 0 auto; accent-color: var(--green-700); }
.compact-check strong,
.compact-check small { display: block; }
.compact-check strong { font-size: .67rem; }
.compact-check small { margin-top: 2px; color: var(--ink-500); font-size: .58rem; }
.filter-actions { display: flex; align-items: center; justify-content: flex-end; gap: 11px; margin-top: 14px; }
.text-button { color: var(--green-700); font-size: .68rem; font-weight: 800; text-decoration: none; }

.student-list-heading,
.file-section-heading { display: flex; align-items: center; justify-content: space-between; gap: 18px; margin-bottom: 16px; }
.student-list-heading h2,
.file-section-heading h2 { margin: 3px 0 0; color: var(--ink-950); font-size: 1.02rem; }
.student-list-heading > span,
.file-section-heading > span { color: var(--ink-500); font-size: .67rem; }
.student-directory { display: grid; gap: 9px; }
.directory-card { display: grid; grid-template-columns: minmax(210px, 1.4fr) minmax(170px, 1fr) minmax(160px, .9fr) auto auto; align-items: center; gap: 17px; padding: 14px; border: 1px solid var(--line); border-radius: 13px; transition: transform .18s ease, border-color .18s ease, box-shadow .18s ease; }
.directory-card:hover { transform: translateY(-1px); border-color: #bbd9ce; box-shadow: 0 8px 20px rgba(14, 68, 53, .07); }
.directory-card.is-risk { background: #fffaf9; border-color: #efcfc9; }
.directory-person { display: flex; align-items: center; gap: 10px; min-width: 0; }
.directory-person > div { min-width: 0; }
.directory-person a { display: block; overflow: hidden; color: var(--ink-950); font-size: .76rem; font-weight: 900; text-decoration: none; text-overflow: ellipsis; white-space: nowrap; }
.directory-person small,
.directory-academic small { display: block; margin-top: 3px; color: var(--ink-500); font-size: .62rem; }
.large-avatar { width: 42px; height: 42px; }
.directory-academic strong,
.directory-contact strong { display: block; font-size: .69rem; }
.directory-contact a { display: inline-block; margin-top: 4px; color: var(--green-700); font-size: .66rem; text-decoration: none; }
.directory-status { display: grid; justify-items: start; gap: 5px; }
.enrollment-pill { color: #7b4d14; background: #fff3df; }
.directory-open { color: var(--green-700); font-size: .66rem; font-weight: 900; text-decoration: none; white-space: nowrap; }
.empty-students,
.section-empty { display: grid; justify-items: center; gap: 7px; padding: 38px 18px; color: var(--ink-500); text-align: center; background: var(--canvas); border-radius: 13px; }
.empty-students > span { width: 44px; height: 44px; display: grid; place-items: center; color: var(--green-700); background: #fff; border-radius: 12px; font-weight: 900; }
.empty-students strong { color: var(--ink-800); font-size: .82rem; }
.empty-students p { max-width: 500px; margin: 0; font-size: .68rem; line-height: 1.7; }
.pagination { display: flex; align-items: center; justify-content: center; gap: 12px; margin-top: 18px; }
.pagination a,
.pagination span { min-width: 68px; padding: 8px 11px; text-align: center; border-radius: 9px; font-size: .68rem; }
.pagination a { color: var(--green-700); background: var(--green-50); font-weight: 800; text-decoration: none; }
.pagination span { color: var(--ink-500); }

.student-file-back { margin-bottom: 11px; }
.student-file-back a { color: var(--green-700); font-size: .69rem; font-weight: 800; text-decoration: none; }
.student-file-hero.is-blacklisted { background: linear-gradient(135deg, #612e2b, #97473e); }
.student-file-identity { display: flex; align-items: center; gap: 15px; }
.file-avatar { width: 63px; height: 63px; color: var(--green-900); background: #fff; font-size: 1.35rem; border-radius: 17px; }
.student-file-badges { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 7px; max-width: 390px; }
.hero-badge { display: inline-flex; padding: 7px 10px; color: #fff; background: rgba(255, 255, 255, .12); border: 1px solid rgba(255, 255, 255, .16); border-radius: 999px; font-size: .63rem; font-weight: 800; }
.hero-badge.active { color: #d8ffef; }
.hero-badge.inactive,
.hero-badge.risk { color: #ffe0dc; }
.student-file-nav { position: sticky; z-index: 15; top: 8px; display: flex; gap: 5px; margin-top: 13px; padding: 6px; overflow-x: auto; background: rgba(255, 255, 255, .95); border: 1px solid var(--line); border-radius: 12px; box-shadow: 0 8px 22px rgba(18, 57, 48, .06); backdrop-filter: blur(10px); }
.student-file-nav a { padding: 8px 11px; color: var(--ink-600); border-radius: 8px; font-size: .65rem; font-weight: 800; text-decoration: none; white-space: nowrap; }
.student-file-nav a:hover { color: var(--green-800); background: var(--green-50); }
.profile-facts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.profile-facts > div,
.enrollment-details-grid > div { min-height: 68px; padding: 12px 13px; background: var(--canvas); border-radius: 11px; }
.profile-facts span,
.enrollment-details-grid span { display: block; color: var(--ink-500); font-size: .61rem; }
.profile-facts strong,
.enrollment-details-grid strong { display: block; margin-top: 6px; color: var(--ink-850); font-size: .7rem; line-height: 1.6; }
.wide-fact { grid-column: span 2; }
.permission-mark { color: var(--success) !important; }

.edit-disclosure { margin-top: 14px; background: #fbfdfc; border: 1px solid #d7e7e1; border-radius: 12px; }
.edit-disclosure > summary { padding: 12px 14px; color: var(--green-800); cursor: pointer; font-size: .7rem; font-weight: 900; }
.edit-disclosure[open] > summary { border-bottom: 1px solid #d7e7e1; }
.inline-edit-form { padding: 16px; }
.edit-grid { display: grid; gap: 12px; }
.edit-grid.three-columns { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.edit-grid .wide-field { grid-column: span 2; }
.edit-grid .full-field { grid-column: 1 / -1; }
.inline-edit-form textarea,
.blacklist-form textarea { resize: vertical; }
.inline-form-actions { display: flex; justify-content: flex-end; margin-top: 13px; }
.add-disclosure { margin-top: 18px; border-style: dashed; }
.compact-disclosure { margin-top: 0; }

.guardian-cards { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 13px; }
.guardian-card { padding: 16px; background: #fff; border: 1px solid var(--line); border-radius: 14px; }
.guardian-card.is-disabled { background: #fafafa; opacity: .82; }
.guardian-card-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; padding-bottom: 12px; border-bottom: 1px solid var(--line); }
.guardian-card-head > div:first-child { display: flex; align-items: center; gap: 10px; }
.guardian-icon { width: 38px; height: 38px; display: grid; place-items: center; color: var(--green-700); background: var(--green-50); border-radius: 10px; font-size: .63rem; font-weight: 900; }
.guardian-card h3 { margin: 0; font-size: .78rem; }
.guardian-card-head p { margin: 3px 0 0; color: var(--ink-500); font-size: .62rem; }
.guardian-badges { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 5px; }
.guardian-contact-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 9px; margin: 13px 0 0; }
.guardian-contact-grid > div { min-width: 0; }
.guardian-contact-grid dt { color: var(--ink-500); font-size: .59rem; }
.guardian-contact-grid dd { margin: 4px 0 0; overflow-wrap: anywhere; color: var(--ink-800); font-size: .68rem; font-weight: 700; }
.guardian-contact-grid a { color: var(--green-700); text-decoration: none; }
.guardian-edit-stack { display: grid; gap: 8px; margin-top: 13px; }
.link-settings-form { display: grid; grid-template-columns: 1fr 1fr 1fr auto; align-items: end; gap: 9px; padding: 13px; }
.compact-action-form { display: flex; justify-content: flex-end; }
.danger-text-button { padding: 7px 0; color: var(--danger); background: transparent; border: 0; cursor: pointer; font-size: .65rem; font-weight: 800; }

.enrollment-timeline { position: relative; display: grid; gap: 14px; padding-right: 18px; }
.enrollment-timeline::before { position: absolute; top: 15px; right: 4px; bottom: 15px; width: 2px; content: ""; background: #d8e8e2; }
.enrollment-card { position: relative; padding: 16px; background: #fff; border: 1px solid var(--line); border-radius: 14px; }
.timeline-dot { position: absolute; top: 24px; right: -21px; width: 10px; height: 10px; background: var(--green-600); border: 3px solid #e7f4ef; border-radius: 50%; box-sizing: content-box; }
.enrollment-card-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; }
.enrollment-card-head h3 { margin: 4px 0; font-size: .81rem; }
.enrollment-card-head p { margin: 0; color: var(--ink-500); font-size: .62rem; }
.enrollment-details-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 9px; margin-top: 13px; }
.enrollment-actions { display: grid; gap: 8px; margin-top: 12px; }
.enrollment-inline-form,
.status-change-form { display: flex; align-items: end; gap: 9px; padding: 13px; }
.enrollment-inline-form .grow-field,
.status-change-form .grow-field { flex: 1; }
.status-change-form .is-required label::after { color: var(--danger); content: " *"; }
.terminal-status-note { color: var(--ink-500); font-size: .62rem; }

.risk-section { border-color: #efd4cf; }
.risk-label { color: var(--danger) !important; }
.risk-controls-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 13px; }
.risk-control-card { padding: 16px; background: #fffafa; border: 1px solid #efd8d3; border-radius: 13px; }
.risk-control-card h3 { margin: 0 0 6px; color: #7d332d; font-size: .8rem; }
.risk-control-card p { margin: 0 0 12px; color: var(--ink-600); font-size: .67rem; line-height: 1.7; }
.danger-button { display: inline-flex; align-items: center; justify-content: center; min-height: 39px; padding: 8px 14px; color: #fff; background: var(--danger); border: 0; border-radius: 9px; cursor: pointer; font-size: .68rem; font-weight: 800; }
.blacklist-form { display: grid; gap: 10px; }

@media (max-width: 1280px) {
    .student-filter-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .directory-card { grid-template-columns: minmax(220px, 1.3fr) 1fr 1fr auto; }
    .directory-open { grid-column: 1 / -1; justify-self: end; }
}

@media (max-width: 980px) {
    .directory-card { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .directory-open { grid-column: auto; justify-self: end; }
    .guardian-cards { grid-template-columns: 1fr; }
    .profile-facts { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .enrollment-details-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .link-settings-form { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 760px) {
    .students-hero,
    .student-file-hero { align-items: flex-start; flex-direction: column; padding: 21px; }
    .students-hero-actions { width: 100%; min-width: 0; }
    .student-filter-search > div { flex-direction: column; }
    .student-filter-grid { grid-template-columns: 1fr; }
    .directory-card { grid-template-columns: 1fr; align-items: start; }
    .directory-open { justify-self: start; }
    .student-file-identity { align-items: flex-start; }
    .student-file-badges { justify-content: flex-start; }
    .profile-facts,
    .guardian-contact-grid,
    .enrollment-details-grid,
    .risk-controls-grid { grid-template-columns: 1fr; }
    .wide-fact { grid-column: auto; }
    .edit-grid.three-columns { grid-template-columns: 1fr; }
    .edit-grid .wide-field,
    .edit-grid .full-field { grid-column: auto; }
    .guardian-card-head,
    .enrollment-card-head { flex-direction: column; }
    .guardian-badges { justify-content: flex-start; }
    .enrollment-inline-form,
    .status-change-form { align-items: stretch; flex-direction: column; }
    .link-settings-form { grid-template-columns: 1fr; }
}

@media (max-width: 480px) {
    .student-filter-panel,
    .student-list-panel,
    .student-file-section { padding: 14px; }
    .file-avatar { width: 50px; height: 50px; }
    .student-file-identity h2 { font-size: 1.05rem; }
}

/* Study groups workspace */
.group-hero,.group-file-hero{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:28px;color:#fff;background:linear-gradient(135deg,#103f36,#19715f);border-radius:20px;box-shadow:0 18px 42px rgba(16,63,54,.16)}
.group-hero h2,.group-file-hero h2{margin:5px 0 7px;font-size:1.55rem}.group-hero p,.group-file-hero p{margin:0;color:rgba(255,255,255,.78);font-size:.76rem;line-height:1.8}
.group-hero-stats,.group-file-numbers{display:flex;gap:9px}.group-hero-stats>span,.group-file-numbers>div{min-width:100px;padding:12px 14px;text-align:center;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.16);border-radius:13px}.group-hero-stats b,.group-file-numbers b{display:block;margin-bottom:3px;font-size:1.08rem}.group-file-numbers span{display:block;color:rgba(255,255,255,.7);font-size:.64rem}
.group-create-panel,.group-directory-panel{margin-top:14px;padding:19px;background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:0 9px 26px rgba(18,57,48,.05)}.group-create-panel>summary{display:flex;align-items:center;gap:10px;cursor:pointer;list-style:none}.group-create-panel>summary::-webkit-details-marker{display:none}.group-create-panel>summary>span{display:grid;place-items:center;width:34px;height:34px;color:#fff;background:var(--green-700);border-radius:10px}.group-create-panel>summary small{margin-inline-start:auto;color:var(--ink-400);font-size:.66rem}
.group-form-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin-top:18px;padding-top:18px;border-top:1px solid var(--line)}.group-form-grid .wide-field{grid-column:span 2}.group-form-grid input,.group-form-grid select,.group-form-grid textarea,.subject-add-row input,.subject-add-row select,.teacher-add-details input,.teacher-add-details select,.inline-action input,.inline-action select{width:100%;padding:10px 11px;color:var(--ink-800);background:#fff;border:1px solid var(--line);border-radius:9px;font:inherit}.group-filter-panel{margin-top:14px}.group-filter-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
.group-directory{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.group-card{padding:17px;border:1px solid var(--line);border-radius:14px;background:linear-gradient(180deg,#fff,#fbfdfc)}.group-card.is-inactive,.subject-card.is-inactive{opacity:.67}.group-card-top,.group-card-footer,.group-capacity,.file-section-heading,.subject-card>header,.danger-zone{display:flex;align-items:center;justify-content:space-between;gap:12px}.group-code,.subject-code{display:inline-flex;padding:5px 8px;color:var(--green-800);background:var(--green-50);border-radius:7px;font-size:.62rem;font-weight:900;direction:ltr}.group-card h3{margin:13px 0 5px;font-size:.95rem}.group-card h3 a{color:var(--ink-900);text-decoration:none}.group-card>p{margin:0 0 16px;color:var(--ink-400);font-size:.66rem}.group-capacity strong{display:block;font-size:1.2rem}.group-capacity span,.group-capacity b{color:var(--ink-400);font-size:.62rem}.capacity-track{height:6px;margin:10px 0 14px;overflow:hidden;background:#e9efec;border-radius:99px}.capacity-track span{display:block;height:100%;background:linear-gradient(90deg,var(--green-600),var(--orange-500));border-radius:inherit}.group-card-footer{padding-top:11px;border-top:1px solid var(--line);font-size:.65rem}.group-card-footer a{color:var(--green-700);font-weight:800;text-decoration:none}.pagination-row{display:flex;justify-content:center;align-items:center;gap:13px;margin-top:17px}.pagination-row a{padding:7px 12px;color:var(--green-700);background:var(--green-50);border-radius:8px;text-decoration:none;font-size:.67rem;font-weight:800}
.group-file-hero.is-inactive{background:linear-gradient(135deg,#45534f,#728079)}.group-file-title{display:flex;align-items:center;gap:16px}.group-file-title>span{display:grid;place-items:center;min-width:74px;height:74px;padding:8px;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.18);border-radius:18px;font-weight:900;direction:ltr}.group-section{margin-top:14px;scroll-margin-top:80px}.file-section-heading{margin-bottom:16px}.file-section-heading h2{margin:4px 0}.file-section-heading p{margin:0;color:var(--ink-400);font-size:.68rem}
.group-student-search{padding:15px;background:var(--green-50);border:1px solid #dce9e3;border-radius:13px}.group-student-search>label{display:block;margin-bottom:7px;font-size:.69rem;font-weight:900}.group-student-search>small{display:block;margin-top:6px;color:var(--ink-400);font-size:.61rem}.picker-search-row{display:flex;gap:8px}.picker-search-row input{flex:1;min-width:0;padding:11px;border:1px solid var(--line);border-radius:10px}.student-picker-results{display:grid;gap:7px;margin-top:10px}.student-picker-results>p,.empty-inline{margin:0;padding:11px;color:var(--ink-400);background:#f7f9f8;border-radius:9px;font-size:.66rem}.student-option{display:grid;grid-template-columns:1fr auto;gap:3px 14px;padding:11px;text-align:right;background:#fff;border:1px solid var(--line);border-radius:10px;cursor:pointer}.student-option strong{font-size:.73rem}.student-option small{color:var(--ink-400);font-size:.61rem}.student-option span{grid-row:1/3;grid-column:2;align-self:center;color:var(--green-700);font-size:.64rem;font-weight:900}.student-option:disabled{opacity:.56;cursor:not-allowed}
.selected-student-form{display:grid;grid-template-columns:1.5fr 1fr 1.5fr auto auto;align-items:end;gap:9px;margin-top:10px;padding:13px;background:#fff7ed;border:1px solid #f3d8b6;border-radius:12px}.selected-student-chip{align-self:center;color:var(--ink-800);font-size:.7rem;font-weight:900}.group-student-list{display:grid;gap:7px;margin-top:15px}.group-student-row{display:grid;grid-template-columns:auto minmax(180px,2fr) minmax(90px,.7fr) auto minmax(110px,1fr);align-items:center;gap:11px;padding:11px;border:1px solid var(--line);border-radius:11px}.group-student-row.is-history{color:var(--ink-400);background:#fafbfa}.student-row-person a{display:block;color:var(--ink-900);font-size:.72rem;font-weight:900;text-decoration:none}.student-row-person small,.group-student-row>div>small{color:var(--ink-400);font-size:.6rem}.group-student-row>div>strong{display:block;margin-top:3px;font-size:.65rem}.student-row-actions{display:flex;justify-content:flex-end;gap:6px}
.inline-action{position:relative}.inline-action>summary{padding:6px 9px;color:var(--green-700);background:var(--green-50);border-radius:7px;cursor:pointer;list-style:none;font-size:.62rem;font-weight:900}.inline-action>form{position:absolute;z-index:20;inset-inline-end:0;width:250px;margin-top:5px;padding:12px;background:#fff;border:1px solid var(--line);border-radius:11px;box-shadow:0 15px 34px rgba(15,48,41,.16)}.inline-action label{display:block;margin-bottom:8px;color:var(--ink-700);font-size:.61rem;font-weight:800}.danger-action>summary{color:#a4473d;background:#fff1ef}.history-note{font-size:.6rem}.compact-empty{min-height:180px}
.subject-add-row{display:grid;grid-template-columns:2fr .7fr 1.5fr auto;align-items:end;gap:10px;margin-bottom:14px;padding:13px;background:var(--green-50);border-radius:12px}.subject-stack{display:grid;gap:12px}.subject-card{overflow:visible;border:1px solid var(--line);border-radius:14px}.subject-card>header{padding:14px;background:#f8faf9;border-radius:14px 14px 0 0}.subject-card>header h3{display:inline;margin:0 8px;font-size:.85rem}.subject-card>header small{color:var(--ink-400);font-size:.6rem}.subject-admin-row{display:flex;justify-content:flex-end;gap:8px;padding:8px 13px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.subject-admin-row>form{display:inline-flex}.teacher-assignment-area{padding:13px}.teacher-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.teacher-chip{display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:9px;padding:10px;background:#fbfcfb;border:1px solid var(--line);border-radius:10px}.teacher-chip.is-inactive{opacity:.58}.teacher-avatar{display:grid;place-items:center;width:32px;height:32px;color:var(--green-800);background:var(--green-50);border-radius:9px;font-weight:900}.teacher-chip strong,.teacher-chip small{display:block}.teacher-chip strong{font-size:.68rem}.teacher-chip small{margin-top:3px;color:var(--ink-400);font-size:.58rem}.teacher-chip>b{padding:4px 7px;color:var(--orange-600);background:#fff4e7;border-radius:7px;font-size:.57rem}
.teacher-add-details{margin-top:9px}.teacher-add-details>summary{color:var(--green-700);cursor:pointer;font-size:.66rem;font-weight:900}.teacher-add-details>form{display:grid;grid-template-columns:.8fr .8fr 1.3fr 1fr 1.3fr auto;align-items:end;gap:9px;margin-top:10px;padding:11px;background:var(--green-50);border-radius:10px}.teacher-add-details form>small{grid-column:1/-1;color:var(--ink-400)}.danger-zone{margin-top:17px;padding:15px;background:#fff7f5;border:1px solid #f1d4cf;border-radius:12px}.danger-zone strong{color:#923d35}.danger-zone p{margin:4px 0 0;color:var(--ink-400);font-size:.64rem}.small-button{padding:7px 10px;min-height:auto;font-size:.62rem}
@media(max-width:1100px){.group-form-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.group-directory{grid-template-columns:repeat(2,minmax(0,1fr))}.teacher-add-details>form{grid-template-columns:repeat(3,minmax(0,1fr))}.selected-student-form{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.group-hero,.group-file-hero{align-items:flex-start;flex-direction:column;padding:20px}.group-hero-stats,.group-file-numbers{width:100%;overflow-x:auto}.group-hero-stats>span,.group-file-numbers>div{flex:1;min-width:90px}.group-create-panel>summary small{display:none}.group-form-grid,.group-filter-grid,.group-directory,.teacher-list,.teacher-add-details>form,.subject-add-row,.selected-student-form{grid-template-columns:1fr}.group-form-grid .wide-field{grid-column:auto}.group-student-row{grid-template-columns:auto 1fr auto}.group-student-row>div:nth-child(3){display:none}.student-row-actions,.history-note{grid-column:1/-1;justify-content:flex-start}.inline-action>form{inset-inline-start:0;inset-inline-end:auto;width:min(280px,calc(100vw - 60px))}.file-section-heading{align-items:flex-start;flex-direction:column}.group-file-title{align-items:flex-start}}

/* PHASE 4A: weekly schedules and manually confirmed sessions */
.schedule-hero{display:flex;align-items:center;justify-content:space-between;gap:22px;padding:26px;color:#fff;background:linear-gradient(125deg,#123f35,#1c6b58);border-radius:19px;box-shadow:0 13px 34px rgba(18,63,53,.18)}.schedule-hero h2{margin:6px 0;font-size:1.45rem}.schedule-hero p{margin:0;color:rgba(255,255,255,.76);font-size:.76rem}.schedule-hero .eyebrow{color:#ffbd72}.schedule-hero-stats{display:flex;gap:9px}.schedule-hero-stats span{min-width:94px;padding:12px;text-align:center;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.14);border-radius:12px;font-size:.66rem}.schedule-hero-stats b{display:block;font-size:1.25rem}.schedule-actions-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:14px}.schedule-action-card,.schedule-section{padding:18px;background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:0 9px 26px rgba(18,57,48,.05)}.schedule-action-card>summary{display:flex;align-items:center;gap:10px;cursor:pointer;list-style:none}.schedule-action-card>summary::-webkit-details-marker{display:none}.schedule-action-card>summary span:last-child{display:grid}.schedule-action-card>summary small{margin-top:2px;color:var(--ink-400);font-size:.63rem}.schedule-action-icon{display:grid;place-items:center;width:36px;height:36px;color:#fff;background:var(--green-700);border-radius:10px;font-size:.67rem;font-weight:900}.schedule-action-icon.orange{background:var(--orange-500)}.schedule-form-grid,.mini-edit-form{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:16px;padding-top:16px;border-top:1px solid var(--line)}.schedule-form-grid .span-2,.mini-edit-form .span-2{grid-column:span 2}.schedule-form-grid input,.schedule-form-grid select,.schedule-form-grid textarea,.schedule-filter-grid input,.schedule-filter-grid select,.mini-edit-form input,.mini-edit-form select,.session-status-form input,.session-status-form select{width:100%;padding:9px 10px;color:var(--ink-800);background:#fff;border:1px solid var(--line);border-radius:9px;font:inherit}.orange-button{background:var(--orange-500)}.schedule-filter-panel{margin-top:14px}.schedule-filter-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:11px}.schedule-filter-grid .span-2{grid-column:span 2}.schedule-section{margin-top:14px}.schedule-section-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.schedule-section-heading h2{margin:3px 0 0;font-size:1.08rem}.schedule-section-heading>span{color:var(--ink-400);font-size:.69rem}.schedule-empty{padding:28px;text-align:center;color:var(--ink-400);background:#f8faf9;border:1px dashed var(--line);border-radius:12px;font-size:.73rem}.schedule-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.weekly-card{padding:15px;background:linear-gradient(180deg,#fff,#fbfdfc);border:1px solid var(--line);border-radius:13px}.weekly-card.is-inactive{opacity:.62}.weekly-card header,.schedule-card-actions{display:flex;align-items:center;justify-content:space-between;gap:10px}.day-badge{padding:6px 9px;color:var(--green-800);background:var(--green-50);border-radius:8px;font-size:.66rem;font-weight:900}.weekly-card>.eyebrow{display:block;margin-top:13px}.weekly-card h3{margin:4px 0 9px;font-size:.92rem}.schedule-time{display:block;color:var(--orange-600);direction:ltr;text-align:right}.weekly-card dl{display:grid;gap:7px;margin:13px 0}.weekly-card dl div{display:flex;justify-content:space-between;gap:8px;padding-top:7px;border-top:1px solid #edf1ef;font-size:.65rem}.weekly-card dt{color:var(--ink-400)}.weekly-card dd{margin:0;font-weight:750}.schedule-card-actions{padding-top:10px;border-top:1px solid var(--line);font-size:.66rem}.schedule-card-actions summary,.session-actions summary{cursor:pointer;color:var(--green-700);font-weight:850}.schedule-card-actions details,.session-actions details{position:relative}.schedule-card-actions details[open] .mini-edit-form,.session-actions details[open] form{position:absolute;z-index:8;inset-inline-end:0;width:min(520px,80vw);padding:15px;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 18px 45px rgba(18,57,48,.17)}.session-list{display:grid;gap:9px}.session-row{display:grid;grid-template-columns:62px minmax(190px,1.4fr) 90px 78px minmax(170px,1fr) auto;align-items:center;gap:12px;padding:13px;border:1px solid var(--line);border-radius:13px}.session-date{display:grid;place-items:center;padding:8px;background:var(--green-50);border-radius:10px}.session-date b{font-size:1.25rem}.session-date span,.session-time span{color:var(--ink-400);font-size:.59rem}.session-main h3{margin:3px 0;font-size:.84rem}.session-main p{margin:0;color:var(--ink-400);font-size:.64rem}.session-time{display:grid;direction:ltr;text-align:center}.session-status{padding:6px 8px;text-align:center;border-radius:99px;font-size:.61rem;font-weight:900}.session-status.scheduled{color:#6b5100;background:#fff5ca}.session-status.completed{color:#126048;background:#dff5e9}.session-status.cancelled{color:#9d3434;background:#fee6e6}.session-notes{display:grid}.session-notes strong{font-size:.68rem}.session-notes small{margin-top:3px;color:var(--danger);font-size:.6rem}.session-actions{display:flex;gap:10px;font-size:.65rem}.session-status-form{display:grid;grid-template-columns:140px 1fr auto;gap:8px;min-width:460px}.session-edit-form{min-width:520px}
@media(max-width:1100px){.schedule-actions-grid{grid-template-columns:1fr}.schedule-filter-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.schedule-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.session-row{grid-template-columns:62px 1fr 90px 78px}.session-notes,.session-actions{grid-column:2/-1}}
@media(max-width:760px){.schedule-hero{align-items:flex-start;flex-direction:column}.schedule-hero-stats{width:100%;overflow:auto}.schedule-form-grid,.mini-edit-form,.schedule-filter-grid,.schedule-cards{grid-template-columns:1fr}.schedule-form-grid .span-2,.mini-edit-form .span-2,.schedule-filter-grid .span-2{grid-column:auto}.session-row{grid-template-columns:52px 1fr auto}.session-time{display:none}.session-status{grid-column:3}.session-notes,.session-actions{grid-column:2/-1}.schedule-card-actions details[open] .mini-edit-form,.session-actions details[open] form{inset-inline-end:auto;inset-inline-start:0;width:min(320px,calc(100vw - 65px))}.session-status-form{grid-template-columns:1fr;min-width:0}.session-edit-form{min-width:0}}

/* Student subject and section selection */
.enrollment-choice-panel{margin-top:14px}.subject-choice-list{display:grid;gap:13px}.subject-choice-card{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin:0;padding:16px;border:1px solid var(--line);border-radius:15px}.subject-choice-card legend{display:flex;align-items:center;gap:9px;padding:0 8px;color:var(--ink-900)}.subject-choice-card legend span{padding:5px 8px;color:var(--green-800);background:var(--green-50);border-radius:7px;font-size:.62rem;direction:ltr}.subject-choice-card legend strong{font-size:.86rem}.group-choice{display:flex;align-items:center;gap:10px;min-height:72px;padding:12px;background:#fff;border:1px solid var(--line);border-radius:11px;cursor:pointer;transition:.16s ease}.group-choice:hover,.group-choice.is-selected{border-color:var(--green-600);box-shadow:0 0 0 3px rgba(25,113,95,.08)}.group-choice input{accent-color:var(--green-700)}.group-choice>span strong,.group-choice>span small{display:block}.group-choice small{margin-top:4px;color:var(--ink-400);font-size:.59rem}.choice-main{flex:1}.choice-main strong{font-size:.72rem}.choice-capacity{text-align:center}.choice-capacity b{font-size:1rem;color:var(--green-700)}.none-choice{color:var(--ink-400);background:#fafbfa}.choice-save-bar{position:sticky;z-index:10;bottom:12px;display:grid;grid-template-columns:180px 1fr auto;align-items:end;gap:11px;margin-top:16px;padding:14px;background:rgba(255,255,255,.96);border:1px solid var(--line);border-radius:14px;box-shadow:0 15px 36px rgba(15,48,41,.13);backdrop-filter:blur(8px)}.choice-save-bar input{width:100%;padding:10px 11px;border:1px solid var(--line);border-radius:9px;font:inherit}
@media(max-width:900px){.subject-choice-card{grid-template-columns:repeat(2,minmax(0,1fr))}.choice-save-bar{grid-template-columns:1fr 1fr}.choice-save-bar button{grid-column:1/-1}}
@media(max-width:600px){.subject-choice-card,.choice-save-bar{grid-template-columns:1fr}.choice-save-bar button{grid-column:auto}}

/* Class attendance */
.attendance-hero{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:18px;padding:24px 28px;color:#fff;background:linear-gradient(125deg,var(--green-900),var(--green-700));border-radius:20px;box-shadow:0 18px 44px rgba(11,74,60,.18)}.attendance-hero h2{margin:4px 0 7px;font-size:1.45rem}.attendance-hero p{margin:0;color:rgba(255,255,255,.78);font-size:.72rem}.attendance-hero .eyebrow{color:#bfe8db}.attendance-hero .secondary-button{color:var(--green-900);background:#fff;border-color:#fff;white-space:nowrap}.attendance-session-card{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:22px;margin-bottom:16px;padding:20px 22px;background:#fff;border:1px solid var(--line);border-radius:17px}.attendance-session-main h2{margin:4px 0;font-size:1.13rem}.attendance-session-main p{margin:0;color:var(--ink-400);font-size:.68rem}.attendance-summary,.attendance-report-summary{display:flex;gap:8px}.attendance-summary span,.attendance-report-summary article{min-width:78px;padding:10px;text-align:center;background:var(--canvas);border:1px solid var(--line);border-radius:12px}.attendance-summary b,.attendance-report-summary b{display:block;font-size:1.05rem}.is-present b,.report-status.status-present{color:#147451}.is-absent b,.report-status.status-absent{color:#bd3c3c}.is-late b,.report-status.status-late{color:#a66800}.is-excused b,.report-status.status-excused{color:#6746a0}.attendance-bulk-bar{display:flex;align-items:center;gap:9px;margin:14px 0;padding:12px 16px;background:#fff;border:1px solid var(--line);border-radius:14px}.attendance-bulk-bar>div{margin-inline-end:auto}.attendance-bulk-bar strong,.attendance-bulk-bar small{display:block}.attendance-bulk-bar small{margin-top:3px;color:var(--ink-400);font-size:.58rem}.attendance-bulk-bar button{padding:8px 12px;font:inherit;font-size:.63rem;font-weight:800;background:var(--green-50);border:1px solid rgba(25,113,95,.2);border-radius:8px;cursor:pointer}.attendance-sheet,.attendance-report-card{background:#fff;border:1px solid var(--line);border-radius:16px;overflow:hidden}.attendance-table-wrap{overflow:auto}.attendance-table{width:100%;border-collapse:collapse;min-width:980px}.attendance-table th{padding:11px 12px;color:var(--ink-500);background:#f5f8f7;border-bottom:1px solid var(--line);font-size:.6rem;text-align:right}.attendance-table td{padding:11px 12px;border-bottom:1px solid var(--line);font-size:.65rem;vertical-align:middle}.attendance-table tr:last-child td{border-bottom:0}.attendance-table tr.needs-attention{background:#fff3f3}.attendance-index{width:42px;color:var(--ink-400)}.attendance-student strong,.attendance-student small,.report-table td>strong,.report-table td>small{display:block}.attendance-student small,.report-table td>small{margin-top:3px;color:var(--ink-400);font-size:.56rem}.attendance-status-options{display:flex;gap:5px}.status-option input{position:absolute;opacity:0;pointer-events:none}.status-option span{display:block;min-width:50px;padding:7px 8px;text-align:center;background:#f3f5f4;border:1px solid transparent;border-radius:8px;cursor:pointer;font-size:.59rem;font-weight:800}.status-option input:checked+span{color:#fff;background:var(--green-700)}.status-absent input:checked+span{background:#bc4747}.status-late input:checked+span{background:#b57a17}.status-excused input:checked+span{background:#7052a3}.status-option input:disabled+span{cursor:default;opacity:.8}.attendance-note{width:100%;min-width:230px;padding:9px 10px;border:1px solid var(--line);border-radius:8px;font:inherit;font-size:.62rem}.attendance-record-state{color:var(--ink-400);white-space:nowrap}.attendance-save-bar{position:sticky;z-index:10;bottom:0;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 18px;background:rgba(255,255,255,.96);border-top:1px solid var(--line);box-shadow:0 -10px 24px rgba(15,48,41,.06);backdrop-filter:blur(8px);font-size:.67rem}.attendance-link,.report-status{display:inline-flex;align-items:center;justify-content:center;padding:7px 10px;color:var(--green-800);background:var(--green-50);border:1px solid rgba(25,113,95,.18);border-radius:8px;font-weight:800;text-decoration:none;white-space:nowrap}.attendance-report-summary{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));margin-bottom:16px}.attendance-report-summary article{text-align:right;padding:15px 17px}.attendance-report-summary span{color:var(--ink-400);font-size:.61rem}.attendance-report-summary b{margin-top:5px;font-size:1.35rem}.attendance-filter-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));align-items:end;gap:10px}.attendance-filter-grid .filter-actions{display:flex;align-items:center;gap:8px;padding-bottom:1px}.attendance-report-card{padding:18px}.report-table{min-width:900px}.report-status.status-present{background:#e4f6ee}.report-status.status-absent{background:#fee9e9}.report-status.status-late{background:#fff3da}.report-status.status-excused{background:#f0eafd}
@media(max-width:1000px){.attendance-session-card{grid-template-columns:1fr}.attendance-summary{overflow:auto}.attendance-filter-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:650px){.attendance-hero{align-items:flex-start;flex-direction:column;padding:20px}.attendance-report-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.attendance-report-summary article:first-child{grid-column:1/-1}.attendance-filter-grid{grid-template-columns:1fr}.attendance-bulk-bar{align-items:stretch;flex-wrap:wrap}.attendance-bulk-bar>div{width:100%}.attendance-save-bar{align-items:stretch;flex-direction:column}.attendance-save-bar button{width:100%}}


/* PHASE 4C — Teacher Attendance */
.teacher-attendance-summary{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:1px;margin-bottom:16px;background:var(--line);border:1px solid var(--line);border-radius:18px;overflow:hidden}.teacher-attendance-summary article{background:var(--surface);padding:15px 17px}.teacher-attendance-summary span{display:block;color:var(--ink-400);font-size:.61rem}.teacher-attendance-summary b{display:block;margin-top:5px;font-size:1.35rem}.teacher-attendance-filter-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));align-items:end;gap:10px}.teacher-attendance-filter-grid .filter-actions{display:flex;align-items:center;gap:8px}.teacher-attendance-substitute-filter{min-height:44px;align-self:end}.teacher-attendance-report-table{min-width:1180px}.teacher-session-card{grid-template-columns:minmax(0,1fr) minmax(260px,.42fr)}.teacher-session-identity{display:grid;gap:3px;padding:14px 16px;border:1px solid var(--line);border-radius:16px;background:var(--surface-soft)}.teacher-session-identity span{color:var(--ink-400);font-size:.65rem}.teacher-session-identity strong{font-size:.92rem}.teacher-session-identity small{color:var(--ink-400)}.teacher-substitute-badge{display:inline-flex!important;width:max-content;margin:7px 0;padding:4px 8px;border-radius:999px;background:#fff3da;color:#7b5200!important;font-weight:800}.teacher-attendance-form{margin-top:16px}.teacher-status-options{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:16px 0}.teacher-status-options .status-option{min-height:54px}.teacher-attendance-fields{display:grid;grid-template-columns:minmax(220px,.35fr) minmax(0,1fr);gap:12px}.teacher-attendance-fields textarea{width:100%;resize:vertical}.teacher-attendance-meta{margin:12px 0;color:var(--ink-400);font-size:.7rem}.teacher-attendance-link{background:#f0eafd!important;color:#533592!important}
@media(max-width:1100px){.teacher-attendance-summary{grid-template-columns:repeat(4,minmax(0,1fr))}.teacher-attendance-filter-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.teacher-session-card{grid-template-columns:1fr}}
@media(max-width:650px){.teacher-attendance-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.teacher-attendance-filter-grid{grid-template-columns:1fr}.teacher-status-options{grid-template-columns:repeat(2,minmax(0,1fr))}.teacher-attendance-fields{grid-template-columns:1fr}}

/* PHASE 4D — Operational Session Reporting */
.operations-hero{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:16px;padding:25px 28px;color:#fff;background:linear-gradient(125deg,#1d3d4b,#225e70);border-radius:20px;box-shadow:0 18px 44px rgba(24,65,80,.18)}.operations-hero h2{margin:4px 0 7px;font-size:1.45rem}.operations-hero p{max-width:760px;margin:0;color:rgba(255,255,255,.8);font-size:.72rem;line-height:1.8}.operations-hero .eyebrow{color:#c8e9f2}.operations-hero-actions{display:flex;gap:8px;flex-wrap:wrap}.operations-hero .secondary-button{color:#1d4f5d;background:#fff;border-color:#fff;white-space:nowrap}.operations-kpi-grid{display:grid;grid-template-columns:repeat(9,minmax(0,1fr));gap:1px;margin-bottom:16px;background:var(--line);border:1px solid var(--line);border-radius:18px;overflow:hidden}.operations-kpi-grid article{min-width:0;padding:14px 15px;background:var(--surface)}.operations-kpi-grid span{display:block;color:var(--ink-400);font-size:.58rem}.operations-kpi-grid b{display:block;margin-top:5px;font-size:1.28rem}.operations-filter-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));align-items:end;gap:10px}.operations-filter-grid .filter-actions{display:flex;align-items:center;gap:8px}.operations-attention-check{background:#fff7f2;border-color:#efdccc}.operations-range-note{margin:10px 0 0;color:var(--ink-400);font-size:.61rem}.operations-report-card,.operations-teacher-card{margin-top:16px}.operations-table{min-width:1480px}.operations-teacher-table{min-width:1050px}.operations-state,.operations-attention-badge,.operations-ok-badge,.operations-substitute-badge{display:inline-flex;align-items:center;width:max-content;padding:5px 8px;border-radius:999px;font-size:.58rem;font-weight:900;white-space:nowrap}.operations-state{margin-bottom:5px;background:#eef2f4;color:#536169}.operations-state.state-delivered,.operations-ok-badge{background:#e4f6ee;color:#147451}.operations-state.state-not_delivered{background:#fff3da;color:#855a00}.operations-state.state-cancelled{background:#f0f1f2;color:#60676b}.operations-state.state-attention,.operations-attention-badge{background:#fee9e9;color:#a53232}.operations-state.state-pending{background:#edf2fb;color:#3d5f8d}.operations-substitute-badge{margin-top:6px;background:#f0eafd;color:#5b3d8d}.operations-row-attention{background:#fffafa}.operations-row-actions{display:grid;gap:5px}.operations-table td>small,.operations-teacher-table td>small{display:block;margin-top:4px;color:var(--ink-400);font-size:.56rem;line-height:1.55}.operations-table td>strong{display:block}.operations-teacher-card{padding:18px;background:#fff;border:1px solid var(--line);border-radius:16px}.operations-teacher-card .schedule-section-heading{margin-bottom:12px}
@media(max-width:1380px){.operations-kpi-grid{grid-template-columns:repeat(5,minmax(0,1fr))}}
@media(max-width:1050px){.operations-filter-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.operations-kpi-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:650px){.operations-hero{align-items:flex-start;flex-direction:column;padding:20px}.operations-hero-actions{width:100%}.operations-filter-grid{grid-template-columns:1fr}.operations-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.operations-kpi-grid article:first-child{grid-column:1/-1}}

/* PHASE 4E - session closure */
.session-closure-hero { background: linear-gradient(135deg, #173f3a, #245d55); }
.session-closure-summary { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.session-closure-filter-grid { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.session-closure-table td { vertical-align: top; }
.session-closure-status {
    display: inline-flex;
    align-items: center;
    width: fit-content;
    padding: .32rem .62rem;
    border-radius: 999px;
    font-size: .78rem;
    font-weight: 800;
    margin-top: .3rem;
}
.session-closure-status.is-closed { background: #e8eef4; color: #24435d; }
.session-closure-status.is-ready { background: #e6f6ef; color: #176346; }
.session-closure-status.is-blocked { background: #fff0ed; color: #a53b2d; }
.session-closure-status.is-open { background: #fff7df; color: #7a5b08; }
.session-closure-actions { display: grid; gap: .45rem; min-width: 220px; }
.session-closure-inline-form { display: grid; gap: .4rem; margin-top: .4rem; }
.session-closure-inline-form input[type="text"] {
    min-width: 210px;
    border: 1px solid var(--border-color, #d9e1df);
    border-radius: 10px;
    padding: .62rem .72rem;
    background: #fff;
}
.compact-action-button { min-height: 36px; padding: .5rem .8rem; }
@media (max-width: 1000px) {
    .session-closure-summary,
    .session-closure-filter-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 640px) {
    .session-closure-summary,
    .session-closure-filter-grid { grid-template-columns: 1fr; }
}

/* PHASE 5A - simple student absence follow-up */
.absence-followup-inline-form {
    display: grid;
    grid-template-columns: minmax(150px, 0.7fr) minmax(220px, 1.5fr) auto;
    gap: .65rem;
    align-items: center;
    min-width: 520px;
}

.absence-followup-inline-form select,
.absence-followup-inline-form input[type="text"] {
    width: 100%;
}

.compact-button {
    white-space: nowrap;
    min-height: 42px;
}

@media (max-width: 900px) {
    .absence-followup-inline-form {
        grid-template-columns: 1fr;
        min-width: 260px;
    }
}

/* PHASE 5C - simple student follow-up inside the student file */
.student-followup-form {
    display: grid;
    grid-template-columns: minmax(150px, 220px) minmax(0, 1fr) auto;
    gap: 14px;
    align-items: end;
    margin-bottom: 20px;
}
.student-followup-form label { display: grid; gap: 7px; }
.student-followup-form label > span { font-weight: 700; }
.student-followup-form select,
.student-followup-form textarea { width: 100%; }
.student-followup-note-field { min-width: 0; }
.student-followup-timeline { display: grid; gap: 12px; }
.student-followup-card {
    border: 1px solid var(--line, #e6e8ec);
    border-radius: 14px;
    padding: 14px 16px;
    background: #fff;
}
.student-followup-card-head {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    align-items: center;
    margin-bottom: 8px;
}
.student-followup-card p { margin: 0 0 8px; white-space: pre-wrap; }
.student-followup-card small { color: var(--muted, #667085); }
@media (max-width: 800px) {
    .student-followup-form { grid-template-columns: 1fr; }
}

/* PHASE 5D - Simple user and account management */
.users-hero{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:16px;padding:25px 28px;color:#fff;background:linear-gradient(125deg,#4b2931,#8b3f50);border-radius:20px;box-shadow:0 18px 44px rgba(84,38,50,.18)}
.users-hero h2{margin:4px 0 7px;font-size:1.45rem}.users-hero p{max-width:760px;margin:0;color:rgba(255,255,255,.8);font-size:.72rem;line-height:1.8}.users-hero .eyebrow{color:#ffd6df}.users-hero-summary{min-width:180px;padding:14px 17px;text-align:center;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.16);border-radius:14px}.users-hero-summary span,.users-hero-summary small{display:block;color:rgba(255,255,255,.74);font-size:.62rem}.users-hero-summary strong{display:block;margin:4px 0;font-size:1.55rem}
.users-create-panel{margin-bottom:16px}.users-create-panel>summary{display:flex;align-items:center;gap:11px;cursor:pointer;list-style:none}.users-create-panel>summary::-webkit-details-marker{display:none}.users-create-panel>summary>span:last-child{display:grid}.users-create-panel>summary small{margin-top:3px;color:var(--ink-400);font-size:.62rem}.users-summary-icon{display:grid;place-items:center;width:38px;height:38px;color:#fff;background:#8b3f50;border-radius:11px;font-size:1.2rem;font-weight:900}
.users-create-form{margin-top:16px;padding-top:16px;border-top:1px solid var(--line)}.users-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}.users-form-grid .span-2{grid-column:span 2}.users-form-grid label,.primary-branch-field,.users-password-grid label,.reset-password-form label{display:grid;gap:6px;color:var(--ink-700);font-size:.62rem;font-weight:800}.users-form-grid input,.users-form-grid select,.primary-branch-field select,.users-password-grid input,.reset-password-form input,.users-filter-grid input,.users-filter-grid select{width:100%;min-height:42px;padding:9px 10px;color:var(--ink-800);background:#fff;border:1px solid var(--line);border-radius:9px;font:inherit}
.users-assignment-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:16px}.users-assignment-grid fieldset{min-width:0;margin:0;padding:13px;background:var(--canvas);border:1px solid var(--line);border-radius:12px}.users-assignment-grid legend{padding:0 6px;color:var(--ink-800);font-size:.7rem;font-weight:900}.users-assignment-grid fieldset>small{display:block;margin-bottom:9px;color:var(--ink-400);font-size:.58rem}.users-choice-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.users-choice{display:flex;align-items:center;gap:8px;padding:9px;background:#fff;border:1px solid var(--line);border-radius:9px;cursor:pointer}.users-choice input{width:16px;height:16px;accent-color:var(--green-700)}.users-choice span{min-width:0}.users-choice strong,.users-choice small{display:block}.users-choice strong{font-size:.63rem}.users-choice small{margin-top:2px;color:var(--ink-400);font-size:.53rem;overflow:hidden;text-overflow:ellipsis}.primary-branch-field{grid-column:1/-1;max-width:360px}
.users-password-box{margin-top:14px;padding:14px;background:#fff9ef;border:1px solid #eedfc2;border-radius:12px}.users-password-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.users-password-heading>span{display:grid}.users-password-heading small{margin-top:3px;color:#846c47;font-size:.57rem}.users-password-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:11px}
.users-filter-panel{margin-bottom:16px}.users-filter-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));align-items:end;gap:10px}.users-filter-grid .span-2{grid-column:span 2}.users-filter-grid label{display:grid;gap:6px;color:var(--ink-600);font-size:.61rem;font-weight:800}.users-check-filter{display:flex!important;align-items:center;gap:8px;min-height:42px;padding:0 8px}.users-check-filter input{width:16px;height:16px;min-height:0}.users-filter-grid .filter-actions{display:flex;gap:7px;margin:0}
.users-directory{display:grid;gap:8px}.user-directory-row{display:grid;grid-template-columns:minmax(230px,1.7fr) minmax(170px,1.2fr) minmax(150px,1fr) minmax(120px,.8fr) auto;align-items:center;gap:14px;padding:13px 15px;color:var(--ink-800);background:#fff;border:1px solid var(--line);border-radius:13px;text-decoration:none;transition:.16s ease}.user-directory-row:hover{transform:translateY(-1px);border-color:#d4b9c0;box-shadow:0 8px 22px rgba(57,33,39,.06)}.user-directory-row>div>small{display:block;margin-bottom:3px;color:var(--ink-400);font-size:.56rem}.user-directory-row>div>strong{display:block;font-size:.65rem}.user-directory-person{display:flex;align-items:center;gap:10px}.user-directory-person>span:last-child{min-width:0}.user-directory-person strong,.user-directory-person small{display:block}.user-directory-person strong{font-size:.7rem}.user-directory-person small{margin-top:3px;color:var(--ink-400);font-size:.56rem}.user-avatar,.user-file-avatar{display:grid;place-items:center;flex:0 0 auto;width:38px;height:38px;color:#fff;background:#8b3f50;border-radius:11px;font-size:.68rem;font-weight:900}.user-state-stack{display:flex!important;gap:5px;flex-wrap:wrap}.user-state{display:inline-flex;align-items:center;width:max-content;padding:5px 8px;border-radius:999px;font-size:.56rem;font-weight:900}.user-state.active{color:#147451;background:#e4f6ee}.user-state.inactive{color:#a53232;background:#fee9e9}.user-state.locked{color:#8d3a31;background:#fff0e9}.user-state.password{color:#76530a;background:#fff3da}.user-row-arrow{color:#8b3f50;font-size:1rem;font-weight:900}
.user-file-hero{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:16px;padding:23px 26px;color:#fff;background:linear-gradient(125deg,#4b2931,#8b3f50);border-radius:19px}.user-file-heading{display:flex;align-items:center;gap:12px}.user-file-heading h2{margin:4px 0;font-size:1.35rem}.user-file-heading p{margin:0;color:rgba(255,255,255,.75);font-size:.65rem}.user-file-avatar{width:48px;height:48px;background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.18)}.user-file-states{display:flex;justify-content:flex-end;gap:6px;flex-wrap:wrap}.user-file-states .user-state{border:1px solid rgba(255,255,255,.14)}.back-link{color:#fff;text-decoration:none;font-size:.65rem;font-weight:800;white-space:nowrap}
.user-file-grid{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(250px,.7fr);gap:14px;margin-bottom:14px}.user-basic-form{margin-top:10px}.user-account-meta dl,.user-readonly-list{display:grid;gap:8px;margin:12px 0 0}.user-account-meta dl div,.user-readonly-list div{padding:9px 10px;background:var(--canvas);border:1px solid var(--line);border-radius:9px}.user-account-meta dt,.user-readonly-list dt{color:var(--ink-400);font-size:.56rem}.user-account-meta dd,.user-readonly-list dd{margin:3px 0 0;color:var(--ink-800);font-size:.64rem;font-weight:800}.user-assignments-panel{margin-bottom:14px}.user-assignment-readonly{display:grid;grid-template-columns:1fr 1fr;gap:10px}.user-assignment-readonly>div{padding:12px;background:var(--canvas);border:1px solid var(--line);border-radius:10px}.user-assignment-readonly small,.user-assignment-readonly strong{display:block}.user-assignment-readonly small{color:var(--ink-400);font-size:.57rem}.user-assignment-readonly strong{margin-top:4px;font-size:.66rem}
.user-security-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.user-security-card{display:flex;flex-direction:column}.user-security-card h3{margin:5px 0}.user-security-card p{flex:1;margin:0 0 13px;color:var(--ink-400);font-size:.62rem;line-height:1.7}.reset-password-card{grid-column:auto}.reset-password-form{display:grid;gap:9px}.user-security-actions{display:flex;gap:8px;flex-wrap:wrap}.portal-alert{margin-bottom:12px;padding:11px 13px;border-radius:10px;font-size:.65rem;font-weight:800}.portal-alert.success{color:#176548;background:#e9f8f1;border:1px solid #cceadf}.portal-alert.error{color:#9b3838;background:#fff0f0;border:1px solid #f0d3d3}
@media(max-width:1100px){.users-filter-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.user-directory-row{grid-template-columns:minmax(220px,1.6fr) minmax(150px,1fr) minmax(130px,.9fr) auto}.user-directory-row>div:nth-child(3){display:none}.user-security-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.reset-password-card{grid-column:1/-1}}
@media(max-width:760px){.users-hero,.user-file-hero{align-items:flex-start;flex-direction:column;padding:20px}.users-hero-summary{width:100%}.users-form-grid,.users-assignment-grid,.users-password-grid,.users-filter-grid,.user-file-grid,.user-security-grid,.user-assignment-readonly{grid-template-columns:1fr}.users-form-grid .span-2,.users-filter-grid .span-2,.reset-password-card{grid-column:auto}.users-choice-list{grid-template-columns:1fr}.primary-branch-field{grid-column:auto;max-width:none}.users-password-heading{align-items:flex-start;flex-direction:column}.user-directory-row{grid-template-columns:1fr auto}.user-directory-row>div:nth-child(2),.user-directory-row>div:nth-child(3){display:none}.user-state-stack{grid-column:1/-1}.user-file-heading{align-items:flex-start;flex-wrap:wrap}.user-file-states{justify-content:flex-start}.users-filter-grid .filter-actions{grid-column:1/-1}.user-security-actions{flex-direction:column}.user-security-actions>*{width:100%}}

/* PHASE 6B - simple teacher management */
.teachers-hero,.teacher-file-hero{display:flex;align-items:center;justify-content:space-between;gap:22px;margin-bottom:18px;padding:24px 26px;color:#fff;background:linear-gradient(135deg,#5e3b77,#765091);border-radius:20px;box-shadow:0 16px 34px rgba(52,30,68,.12)}
.teachers-hero h1,.teacher-file-hero h1{margin:4px 0 7px;font-size:1.65rem}.teachers-hero p,.teacher-file-hero p{margin:0;color:rgba(255,255,255,.76);font-size:.74rem}.teachers-hero-stat{min-width:150px;padding:14px 18px;text-align:center;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.18);border-radius:15px}.teachers-hero-stat span,.teachers-hero-stat small{display:block;color:rgba(255,255,255,.7);font-size:.58rem}.teachers-hero-stat strong{display:block;margin:4px 0;font-size:1.6rem}.teacher-create-panel{margin-bottom:16px}.teacher-create-panel>summary{display:flex;align-items:center;gap:12px;cursor:pointer;list-style:none}.teacher-create-panel>summary::-webkit-details-marker{display:none}.teachers-summary-icon{display:grid;place-items:center;width:36px;height:36px;border-radius:10px;background:#efe5f6;color:#624178;font-size:1.15rem;font-weight:900}.teacher-create-panel summary strong,.teacher-create-panel summary small{display:block}.teacher-create-panel summary strong{font-size:.78rem}.teacher-create-panel summary small{margin-top:3px;color:var(--ink-400);font-size:.58rem}.teacher-create-hint{margin-top:14px;padding:12px 14px;color:#6d5312;background:#fff6dd;border:1px solid #f3dfaa;border-radius:11px;font-size:.65rem}.teacher-form{margin-top:18px}.teacher-form-grid,.teacher-filter-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.teacher-form-grid label,.teacher-filter-grid label{display:grid;gap:6px}.teacher-form-grid label>span,.teacher-filter-grid label>span{color:var(--ink-500);font-size:.6rem;font-weight:800}.teacher-form-grid .span-2,.teacher-filter-grid .span-2{grid-column:span 2}.teacher-form-grid textarea{resize:vertical}.teacher-filter-panel{margin-bottom:18px}.teachers-check-filter{display:flex!important;align-items:center;gap:8px;align-self:end;min-height:40px}.teachers-check-filter input{width:auto}.teacher-directory{display:grid;gap:8px}.teacher-directory-row{display:grid;grid-template-columns:minmax(230px,1.65fr) minmax(150px,1fr) minmax(130px,.85fr) minmax(110px,.7fr) auto auto;align-items:center;gap:13px;padding:13px 15px;color:var(--ink-800);background:#fff;border:1px solid var(--line);border-radius:13px;text-decoration:none;transition:.16s ease}.teacher-directory-row:hover{transform:translateY(-1px);border-color:#cbb8d8;box-shadow:0 8px 22px rgba(57,33,69,.06)}.teacher-directory-row>div>small{display:block;margin-bottom:3px;color:var(--ink-400);font-size:.56rem}.teacher-directory-row>div>strong{display:block;font-size:.65rem}.teacher-directory-person{display:flex;align-items:center;gap:10px}.teacher-directory-person strong,.teacher-directory-person small{display:block}.teacher-directory-person strong{font-size:.71rem}.teacher-directory-person small{margin-top:3px;color:var(--ink-400);font-size:.56rem}.teacher-avatar,.teacher-file-avatar{display:grid;place-items:center;flex:0 0 auto;width:40px;height:40px;color:#fff;background:#65447d;border-radius:12px;font-size:.68rem;font-weight:900}.teacher-state{display:inline-flex;align-items:center;width:max-content;padding:5px 8px;border-radius:999px;font-size:.56rem;font-weight:900}.teacher-state.active{color:#147451;background:#e4f6ee}.teacher-state.inactive{color:#a53232;background:#fee9e9}.teacher-row-arrow{color:#65447d;font-size:1rem;font-weight:900}.teacher-file-person{display:flex;align-items:center;gap:13px}.teacher-file-avatar{width:54px;height:54px;background:rgba(255,255,255,.17);border:1px solid rgba(255,255,255,.2);font-size:.82rem}.teacher-file-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.teacher-file-actions .secondary-button{background:#fff}.teacher-file-grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(260px,.8fr);gap:16px;margin-bottom:16px}.teacher-profile-panel,.teacher-contact-panel{margin:0}.teacher-readonly-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:0}.teacher-readonly-grid>div{padding:10px 12px;background:#faf9fb;border:1px solid var(--line);border-radius:10px}.teacher-readonly-grid .span-2{grid-column:span 2}.teacher-readonly-grid dt{margin-bottom:4px;color:var(--ink-400);font-size:.56rem}.teacher-readonly-grid dd{margin:0;color:var(--ink-800);font-size:.65rem;font-weight:800;overflow-wrap:anywhere}.teacher-readonly-grid.compact{grid-template-columns:1fr}.teacher-status-form{margin-top:14px}.teacher-relations-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.teacher-inline-add{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:8px;margin-bottom:12px}.inline-check{display:flex!important;align-items:center;gap:5px;font-size:.58rem}.inline-check input{width:auto}.teacher-relation-list{display:grid;gap:7px}.teacher-relation-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:9px;padding:10px 11px;background:#faf9fb;border:1px solid var(--line);border-radius:10px}.teacher-relation-row strong,.teacher-relation-row small{display:block}.teacher-relation-row strong{font-size:.65rem}.teacher-relation-row small{margin-top:2px;color:var(--ink-400);font-size:.54rem}.teacher-relation-row.muted-row{opacity:.67}.teacher-relation-row form{margin:0}.link-button{padding:0;color:#65447d;background:none;border:0;cursor:pointer;font-size:.58rem;font-weight:900}.alert-warning{margin-bottom:12px;padding:11px 13px;color:#76530a;background:#fff3da;border:1px solid #f1d89d;border-radius:11px;font-size:.64rem}.danger-button{display:inline-flex;align-items:center;justify-content:center;min-height:38px;padding:0 14px;color:#9b2e2e;background:#feeaea;border:1px solid #f3c6c6;border-radius:10px;font-size:.62rem;font-weight:900;cursor:pointer}
@media(max-width:980px){.teacher-form-grid,.teacher-filter-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.teacher-directory-row{grid-template-columns:minmax(200px,1.5fr) minmax(130px,1fr) auto}.teacher-directory-row>div:nth-of-type(3),.teacher-directory-row>div:nth-of-type(4){display:none}.teacher-file-grid,.teacher-relations-grid{grid-template-columns:1fr}}
@media(max-width:640px){.teachers-hero,.teacher-file-hero{align-items:flex-start;flex-direction:column}.teachers-hero-stat{width:100%}.teacher-form-grid,.teacher-filter-grid{grid-template-columns:1fr}.teacher-form-grid .span-2,.teacher-filter-grid .span-2{grid-column:auto}.teacher-directory-row{grid-template-columns:1fr auto auto}.teacher-directory-row>div:nth-of-type(2),.teacher-directory-row>div:nth-of-type(3),.teacher-directory-row>div:nth-of-type(4){display:none}.teacher-file-actions{width:100%}.teacher-readonly-grid{grid-template-columns:1fr}.teacher-readonly-grid .span-2{grid-column:auto}.teacher-inline-add{grid-template-columns:1fr}.teacher-relation-row{grid-template-columns:1fr auto}.teacher-relation-row form{grid-column:1/-1}}

/* PHASE 6F — simple student collections inside the student file */
.collection-accounts{display:grid;gap:18px}.collection-card{border:1px solid var(--line,#e3e7ec);border-radius:18px;padding:18px;background:var(--surface,#fff)}.collection-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:14px}.collection-card-head h3{margin:4px 0 0}.collection-summary-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:14px 0}.collection-summary-grid>div{border:1px solid #edf0f3;border-radius:12px;padding:12px}.collection-summary-grid span{display:block;color:#68717c;font-size:.82rem;margin-bottom:5px}.collection-inline-form,.collection-payment-form{display:flex;align-items:end;gap:10px;flex-wrap:wrap;padding:12px 0}.collection-inline-form .field-group,.collection-payment-form .field-group{min-width:150px}.collection-payment-form .grow-field{flex:1 1 220px}.collection-transactions{margin-top:14px;border:1px solid #e8ebef;border-radius:12px;overflow:visible}.collection-transaction{display:grid;grid-template-columns:110px 80px 110px 120px minmax(150px,1fr) minmax(110px,1fr);gap:8px;align-items:center;padding:10px 12px;border-top:1px solid #eef0f2;font-size:.9rem}.collection-transaction:first-child{border-top:0}.collection-transaction-head{font-weight:700;background:#f8f9fb;color:#525c67}.collection-transaction.is-refund{background:#fff8f8}.inline-refund-details summary{cursor:pointer;color:#a12b2b;font-weight:700}.refund-form{position:relative;z-index:2;margin-top:8px;display:grid;gap:8px;padding:12px;border:1px solid #efd3d3;border-radius:10px;background:#fff;min-width:260px}.refund-form label{display:grid;gap:4px;font-size:.82rem}.refund-form input{width:100%}.compact-empty{margin-top:10px;padding:12px}.collection-card .edit-disclosure{margin-top:10px}
@media(max-width:900px){.collection-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.collection-transaction{grid-template-columns:1fr 1fr}.collection-transaction-head{display:none}.collection-transaction>span,.collection-transaction>a,.collection-transaction>strong{min-width:0;overflow-wrap:anywhere}}

/* PHASE 6G FIX4 — payment links UI aligned with the portal design system */
.payment-links-hero{display:flex;align-items:center;justify-content:space-between;gap:22px;margin-bottom:18px;padding:24px 26px;color:#fff;background:radial-gradient(circle at 8% 0,rgba(238,117,30,.22),transparent 28%),linear-gradient(125deg,var(--green-950),var(--green-700));border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}
.payment-links-hero h1{margin:5px 0 0;font-size:1.5rem}.payment-links-hero p{max-width:720px;margin:8px 0 0;color:rgba(255,255,255,.72);font-size:.8rem;line-height:1.8}.payment-links-hero .eyebrow{color:#bde8d8}.payment-links-hero-meta{min-width:210px;padding:13px 15px;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.14);border-radius:14px}.payment-links-hero-meta span,.payment-links-hero-meta strong,.payment-links-hero-meta small{display:block}.payment-links-hero-meta span{color:rgba(255,255,255,.58);font-size:.63rem}.payment-links-hero-meta strong{margin-top:4px;font-size:.91rem}.payment-links-hero-meta small{margin-top:5px;color:rgba(255,255,255,.66);font-size:.64rem;direction:ltr;text-align:right}
.payment-alert{margin-bottom:14px;padding:12px 14px;border-radius:11px;font-size:.76rem}.alert-error.payment-alert{color:var(--danger);background:var(--danger-soft);border:1px solid #f2cbc6}.payment-panel-heading{margin-bottom:18px}.payment-filter-panel,.payment-create-panel{margin-bottom:18px}.payment-filter-grid{display:grid;grid-template-columns:minmax(150px,.9fr) repeat(2,minmax(140px,.75fr)) minmax(170px,1fr) minmax(220px,1.2fr) auto;gap:11px;align-items:end}.payment-filter-grid label,.payment-create-grid label,.payment-student-picker label{display:grid;gap:6px;min-width:0}.payment-filter-grid label>span,.payment-create-grid label>span,.payment-student-picker label>span{color:var(--ink-600);font-size:.64rem;font-weight:800}.payment-filter-grid input,.payment-filter-grid select,.payment-create-grid input,.payment-student-picker select{width:100%;min-height:44px;padding:0 12px;color:var(--ink-950);background:#fff;border:1px solid var(--line);border-radius:11px;outline:none}.payment-filter-grid input:focus,.payment-filter-grid select:focus,.payment-create-grid input:focus,.payment-student-picker select:focus{border-color:var(--green-600);box-shadow:0 0 0 3px rgba(37,139,109,.1)}.payment-search-field{grid-column:auto}.payment-filter-actions{display:flex;gap:8px;align-items:center}.payment-filter-actions .primary-button,.payment-filter-actions .secondary-button{white-space:nowrap}
.payment-create-form{display:grid;gap:16px}.payment-mode-switch{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;max-width:620px}.payment-mode-button{display:flex;align-items:flex-start;flex-direction:column;gap:3px;padding:12px 14px;text-align:right;color:var(--ink-600);background:#fff;border:1px solid var(--line);border-radius:12px;cursor:pointer}.payment-mode-button strong{font-size:.73rem}.payment-mode-button small{color:var(--ink-400);font-size:.6rem}.payment-mode-button.is-active{color:var(--green-800);background:var(--green-50);border-color:#baded1;box-shadow:inset 0 0 0 1px #d9eee6}.payment-mode-button.is-active small{color:var(--green-700)}
.payment-student-picker{display:grid;grid-template-columns:minmax(260px,1.4fr) minmax(260px,.8fr);gap:12px;align-items:end;padding:14px;background:#f8fbfa;border:1px solid #e2ece8;border-radius:13px}.payment-student-picker[hidden]{display:none}.payment-picker-note{display:flex;align-items:flex-start;gap:9px;min-height:44px;padding:9px 11px;color:var(--ink-600);background:#fff;border:1px dashed #d5e2dd;border-radius:10px}.payment-picker-note span{width:31px;height:31px;display:grid;place-items:center;flex:0 0 auto;color:var(--green-800);background:var(--green-50);border-radius:8px;font-size:.52rem;font-weight:900}.payment-picker-note p{margin:0;font-size:.62rem;line-height:1.65}.payment-create-grid{display:grid;grid-template-columns:minmax(230px,1.35fr) minmax(180px,.85fr) minmax(150px,.65fr) auto;gap:11px;align-items:end}.payment-create-grid input[readonly]{color:var(--ink-600);background:#f7f9f8}.payment-create-action{display:flex;align-items:end}.payment-create-action .primary-button{min-width:128px;white-space:nowrap}
.payment-report-section{margin-top:24px}.payment-mine-section{margin-bottom:10px}.payment-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:11px;margin-bottom:14px}.payment-summary-card{position:relative;overflow:hidden;padding:15px 16px;background:#fff;border:1px solid var(--line);border-radius:14px}.payment-summary-card::before{position:absolute;inset:0 auto 0 0;width:4px;content:"";background:#9aa6a1}.payment-summary-card span,.payment-summary-card strong,.payment-summary-card small{display:block}.payment-summary-card span{color:var(--ink-600);font-size:.63rem}.payment-summary-card strong{margin-top:5px;font-size:1.15rem}.payment-summary-card small{margin-top:2px;color:var(--ink-400);font-size:.59rem}.payment-summary-card.paid::before{background:var(--success)}.payment-summary-card.paid strong{color:var(--success)}.payment-summary-card.unpaid::before{background:var(--orange-500)}.payment-summary-card.unpaid strong{color:#bd4f0b}.payment-summary-card.review::before{background:#a27813}.payment-summary-card.review strong{color:#8c6611}.payment-summary-card.total::before{background:var(--green-700)}.payment-summary-card.total strong{color:var(--green-800)}
.payment-table-wrap{overflow:auto;background:#fff;border:1px solid var(--line);border-radius:15px;box-shadow:0 5px 18px rgba(16,45,38,.025)}.payment-table{width:100%;min-width:980px;border-collapse:collapse}.payment-table th{padding:11px 13px;text-align:right;color:var(--ink-600);background:#f8faf9;border-bottom:1px solid var(--line);font-size:.61rem;font-weight:900;white-space:nowrap}.payment-table td{padding:12px 13px;vertical-align:middle;border-bottom:1px solid #edf1ef;font-size:.67rem}.payment-table tbody tr:last-child td{border-bottom:0}.payment-table tbody tr:hover{background:#fbfdfc}.payment-table td strong,.payment-table td small{display:block}.payment-table td small{margin-top:3px;color:var(--ink-400);font-size:.57rem}.payment-date{white-space:nowrap}.payment-phone{direction:ltr;unicode-bidi:plaintext;white-space:nowrap}.payment-amount{color:var(--ink-800);white-space:nowrap}.payment-status{display:inline-flex;padding:6px 9px;border-radius:999px;white-space:nowrap;font-size:.59rem;font-weight:900}.payment-status.paid{color:var(--success);background:var(--success-soft)}.payment-status.unpaid{color:#a94d12;background:#fff0e4}.payment-status.review{color:#806011;background:#fbf2d7}.payment-status.failed{color:var(--danger);background:var(--danger-soft)}.payment-status.creating{color:#4c626a;background:#eaf0f1}.payment-row-actions{display:flex;align-items:center;flex-wrap:wrap;gap:5px}.payment-send-form{display:inline-flex;margin:0}.payment-action-link{min-height:30px;display:inline-flex;align-items:center;justify-content:center;padding:0 9px;color:var(--ink-700,var(--ink-800));background:#fff;border:1px solid var(--line);border-radius:8px;cursor:pointer;font:inherit;font-size:.57rem;font-weight:800;white-space:nowrap}.payment-action-link.primary{color:var(--green-800);background:var(--green-50);border-color:#cee6dd}.payment-action-link.whatsapp,.payment-action-link.callbell{color:var(--success);background:var(--success-soft);border-color:#c7e8db}.payment-empty{padding:30px 20px}
@media(max-width:1250px){.payment-filter-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.payment-search-field{grid-column:span 2}.payment-filter-actions{justify-content:flex-start}.payment-create-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.payment-create-action{grid-column:1/-1}.payment-create-action .primary-button{width:100%}}
@media(max-width:900px){.payment-links-hero{align-items:flex-start;flex-direction:column}.payment-links-hero-meta{width:100%}.payment-filter-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.payment-search-field{grid-column:1/-1}.payment-filter-actions{grid-column:1/-1}.payment-student-picker{grid-template-columns:1fr}.payment-create-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.payment-name-field{grid-column:1/-1}.payment-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){.payment-links-hero{padding:20px}.payment-filter-grid,.payment-create-grid,.payment-mode-switch{grid-template-columns:1fr}.payment-search-field,.payment-name-field{grid-column:auto}.payment-filter-actions{display:grid;grid-template-columns:1fr 1fr}.payment-summary-grid{grid-template-columns:1fr 1fr}.payment-table-wrap{overflow:visible;background:transparent;border:0;box-shadow:none}.payment-table{min-width:0;display:block}.payment-table thead{display:none}.payment-table tbody{display:grid;gap:10px}.payment-table tr{display:grid;padding:13px;background:#fff;border:1px solid var(--line);border-radius:13px}.payment-table td{display:grid;grid-template-columns:94px 1fr;gap:8px;padding:7px 0;border:0}.payment-table td::before{content:attr(data-label);color:var(--ink-400);font-size:.59rem;font-weight:800}.payment-row-actions{justify-content:flex-start}.payment-table td:last-child{grid-template-columns:1fr}.payment-table td:last-child::before{margin-bottom:3px}.payment-action-link{min-height:34px}.payment-summary-card{padding:13px}.payment-summary-card strong{font-size:1rem}}
