:root {
  --ink: #173147;
  --ink-2: #3f5668;
  --muted: #718190;
  --paper: #f7f6f1;
  --white: #ffffff;
  --line: #dfe5e4;
  --mint: #dcece5;
  --mint-strong: #4f8c75;
  --navy: #183a4a;
  --navy-dark: #102c3a;
  --coral: #e66d52;
  --amber: #e9a94b;
  --blue-soft: #e7eff7;
  --green-soft: #e3f0e8;
  --purple-soft: #eee9f7;
  --ochre-soft: #f5eedc;
  --coral-soft: #f8e7e1;
  --shadow: 0 18px 50px rgba(31, 53, 65, .09);
  --radius: 18px;
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  color: var(--ink);
  background: var(--paper);
}

* { box-sizing: border-box; }
[hidden] { display: none !important; }
html { min-width: 320px; }
body { margin: 0; min-height: 100vh; background: var(--paper); color: var(--ink); }
button, input, select, textarea { font: inherit; }
button, a, select { -webkit-tap-highlight-color: transparent; }
button { color: inherit; }
a { color: inherit; text-decoration: none; }
h1, h2, h3, p { margin-top: 0; }
h1 { letter-spacing: -.045em; }
h2 { letter-spacing: -.035em; }
.muted { color: var(--muted); }
.center { text-align: center; }
.wide { width: 100%; }
.eyebrow { margin-bottom: 8px; color: var(--mint-strong); font-size: 12px; font-weight: 800; letter-spacing: .11em; text-transform: uppercase; }

.brand { display: inline-flex; align-items: center; gap: 12px; }
.brand-mark { display: grid; width: 40px; height: 40px; place-items: center; border-radius: 12px; background: var(--navy); color: white; font-family: Georgia, serif; font-size: 22px; }
.brand strong, .brand small { display: block; }
.brand strong { font-size: 15px; letter-spacing: -.01em; }
.brand small { margin-top: 2px; color: var(--muted); font-size: 11px; }
.brand.light { color: white; }
.brand.light .brand-mark { background: rgba(255,255,255,.14); border: 1px solid rgba(255,255,255,.18); }
.brand.light small { color: rgba(255,255,255,.62); }

/* Public */
.public-header { display: flex; max-width: 1240px; margin: 0 auto; padding: 26px 32px; align-items: center; justify-content: space-between; }
.header-meta { display: flex; align-items: center; gap: 8px; color: var(--muted); font-size: 12px; }
.status-dot { width: 8px; height: 8px; border-radius: 50%; background: #5ba47f; box-shadow: 0 0 0 4px rgba(91,164,127,.12); }
.public-shell { max-width: 1240px; margin: 0 auto; padding: 34px 32px 70px; }
.public-intro { display: flex; min-height: 172px; align-items: end; justify-content: space-between; padding: 34px 40px; border-radius: 28px; background: var(--navy); color: white; overflow: hidden; position: relative; }
.public-intro::after { content: ""; position: absolute; width: 340px; height: 340px; right: 16%; top: -200px; border: 68px solid rgba(255,255,255,.05); border-radius: 50%; }
.public-intro h1 { margin-bottom: 8px; font-family: Georgia, serif; font-weight: 500; font-size: clamp(34px, 5vw, 54px); }
.public-intro .eyebrow { color: #9ed3bf; }
.intro-copy { max-width: 590px; margin-bottom: 0; color: rgba(255,255,255,.68); line-height: 1.55; }
.date-card { z-index: 1; display: flex; min-width: 255px; align-items: center; gap: 16px; padding: 17px 20px; border: 1px solid rgba(255,255,255,.12); border-radius: 18px; background: rgba(255,255,255,.08); backdrop-filter: blur(8px); }
.date-day { font-family: Georgia, serif; font-size: 46px; line-height: 1; }
.date-card strong, .date-card small { display: block; }
.date-card small { margin-top: 4px; color: rgba(255,255,255,.6); font-size: 11px; }
.view-switcher { display: inline-flex; margin: 28px 0 18px; padding: 5px; border: 1px solid var(--line); border-radius: 14px; background: white; }
.view-tab { min-width: 130px; padding: 11px 20px; border: 0; border-radius: 10px; background: transparent; color: var(--muted); cursor: pointer; font-weight: 700; }
.view-tab.active { background: var(--navy); color: white; box-shadow: 0 7px 18px rgba(24,58,74,.18); }
.view-panel { padding: 30px; border: 1px solid var(--line); border-radius: 24px; background: white; box-shadow: var(--shadow); }
.view-panel[hidden] { display: none; }
.panel-heading { display: flex; align-items: end; justify-content: space-between; gap: 24px; margin-bottom: 24px; }
.panel-heading h2 { margin-bottom: 0; font-size: 28px; }
.compact-select { color: var(--muted); font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; }
.compact-select select, .admin-toolbar select { display: block; min-width: 190px; margin-top: 7px; padding: 10px 34px 10px 12px; border: 1px solid var(--line); border-radius: 10px; background: white; color: var(--ink); font-size: 13px; font-weight: 650; text-transform: none; letter-spacing: 0; }
.notice-row { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-bottom: 28px; }
.notice { display: flex; align-items: flex-start; gap: 13px; padding: 16px; border-radius: 14px; }
.notice.warm { background: #fbf1df; }
.notice.cool { background: #eaf3f1; }
.notice-icon { display: grid; width: 28px; height: 28px; flex: 0 0 auto; place-items: center; border-radius: 50%; background: rgba(255,255,255,.7); font-weight: 900; }
.notice strong { font-size: 13px; }
.notice p { margin: 3px 0 0; color: var(--ink-2); font-size: 12px; line-height: 1.45; }
.today-layout { display: grid; grid-template-columns: 290px minmax(0, 1fr); gap: 28px; }
.section-label { margin-bottom: 12px; color: var(--muted); font-size: 11px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.bell-list { margin: 0; padding: 0; list-style: none; border: 1px solid var(--line); border-radius: 14px; overflow: hidden; }
.bell-list li { display: grid; grid-template-columns: 32px 1fr auto; align-items: center; min-height: 47px; padding: 0 13px; border-bottom: 1px solid var(--line); font-size: 12px; }
.bell-list li:last-child { border-bottom: 0; }
.bell-list li > span { color: var(--muted); font-weight: 800; }
.bell-list li > small { color: var(--coral); font-weight: 800; }
.bell-list li.special { background: var(--ochre-soft); }
.changes-column { min-width: 0; }
.change-card { display: grid; grid-template-columns: 62px minmax(0, 1fr) auto; align-items: center; gap: 16px; min-height: 76px; padding: 13px 4px; border-bottom: 1px solid var(--line); }
.change-card[hidden] { display: none; }
.change-card time { color: var(--muted); font-size: 13px; font-weight: 700; }
.change-main { display: grid; grid-template-columns: auto 1fr; align-items: center; gap: 7px; min-width: 0; }
.change-main p { grid-column: 2; margin: -2px 0 0; color: var(--muted); font-size: 12px; }
.change-main strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 13px; }
.class-chip { display: inline-flex; min-width: 30px; height: 26px; align-items: center; justify-content: center; border-radius: 8px; background: var(--blue-soft); font-size: 11px; font-weight: 850; }
.tag { padding: 6px 9px; border-radius: 8px; font-size: 10px; font-weight: 800; }
.tag.event { background: var(--purple-soft); color: #765b9b; }
.tag.moved { background: var(--green-soft); color: #39745d; }
.tag.cancelled { background: var(--coral-soft); color: #ad4f3c; }
.tag.room { background: var(--blue-soft); color: #527392; }
.schedule-heading { align-items: center; }
.control-row { display: flex; align-items: end; gap: 12px; }
.mini-switch { display: flex; padding: 4px; border: 1px solid var(--line); border-radius: 11px; background: #f4f6f5; }
.mini-switch button { padding: 8px 11px; border: 0; border-radius: 8px; background: transparent; color: var(--muted); cursor: pointer; font-size: 11px; font-weight: 750; }
.mini-switch button.active { background: white; color: var(--ink); box-shadow: 0 3px 10px rgba(28,50,62,.08); }
.schedule-key { display: flex; gap: 18px; margin-bottom: 12px; color: var(--muted); font-size: 11px; }
.schedule-key span { display: flex; align-items: center; gap: 6px; }
.dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; }
.dot.profile { background: #8b72b4; }
.dot.changed { background: var(--coral); }
.table-wrap { overflow-x: auto; border: 1px solid var(--line); border-radius: 14px; }
.public-schedule { width: 100%; min-width: 900px; border-collapse: collapse; table-layout: fixed; }
.public-schedule th { height: 44px; padding: 0 10px; border-right: 1px solid var(--line); background: #f3f5f3; color: var(--muted); font-size: 11px; text-align: left; }
.public-schedule th:first-child { width: 74px; text-align: center; }
.public-schedule td { height: 76px; padding: 10px; border-top: 1px solid var(--line); border-right: 1px solid var(--line); vertical-align: top; font-size: 12px; }
.public-schedule td:last-child, .public-schedule th:last-child { border-right: 0; }
.public-schedule td.period { padding-top: 13px; background: #fafaf7; color: var(--muted); text-align: center; }
.public-schedule td.period strong, .public-schedule td.period small { display: block; }
.public-schedule td.period strong { color: var(--ink); font-size: 14px; }
.public-schedule td strong, .public-schedule td span, .public-schedule td small { display: block; }
.public-schedule td span { margin-top: 5px; color: var(--ink-2); font-size: 11px; }
.public-schedule td small { margin-top: 3px; color: var(--muted); }
.public-schedule td.profile-cell { background: linear-gradient(90deg, var(--purple-soft), white); }
.public-schedule td.changed-cell { box-shadow: inset 3px 0 var(--coral); }
.teacher-summary { display: flex; gap: 34px; margin: -4px 0 18px; padding: 14px 18px; border-radius: 12px; background: #f3f6f4; color: var(--muted); font-size: 12px; }
.teacher-summary strong { margin-right: 5px; color: var(--ink); font-size: 16px; }
.public-footer { display: flex; max-width: 1240px; margin: 0 auto; padding: 0 32px 34px; justify-content: space-between; color: var(--muted); font-size: 11px; }
.public-footer a:hover { color: var(--ink); }

/* Login */
.login-body { display: grid; min-height: 100vh; place-items: center; padding: 40px; background: #edf0ec; }
.back-link { position: fixed; top: 22px; left: 26px; color: var(--muted); font-size: 12px; font-weight: 700; }
.login-shell { display: grid; width: min(1040px, 100%); min-height: 630px; grid-template-columns: 1.15fr .85fr; border-radius: 28px; background: white; box-shadow: 0 28px 90px rgba(20,44,58,.16); overflow: hidden; }
.login-visual { position: relative; display: flex; flex-direction: column; justify-content: space-between; padding: 42px; background: var(--navy); color: white; overflow: hidden; }
.login-visual::before { content: ""; position: absolute; width: 460px; height: 460px; right: -210px; bottom: -190px; border: 90px solid rgba(255,255,255,.045); border-radius: 50%; }
.login-message { z-index: 1; max-width: 430px; margin: auto 0; }
.login-message .eyebrow { color: #9ed3bf; }
.login-message h1 { margin-bottom: 20px; font-family: Georgia, serif; font-size: 49px; font-weight: 400; line-height: 1.04; }
.login-message > p:last-child { color: rgba(255,255,255,.64); line-height: 1.6; }
.visual-grid { display: grid; width: 270px; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.visual-grid span { height: 42px; border-radius: 8px; background: rgba(255,255,255,.09); }
.visual-grid span:nth-child(2), .visual-grid span:nth-child(6) { background: rgba(158,211,191,.24); }
.login-panel { display: grid; place-items: center; padding: 56px; }
.login-form { width: 100%; max-width: 320px; }
.login-form h2 { margin-bottom: 8px; font-size: 28px; }
.login-form > div { margin-bottom: 34px; }
.login-form label, .modal-form label { display: block; margin-bottom: 18px; color: var(--ink-2); font-size: 12px; font-weight: 750; }
.login-form input, .modal-form input, .modal-form select, .modal-form textarea { width: 100%; margin-top: 8px; padding: 12px 13px; border: 1px solid var(--line); border-radius: 10px; outline: none; color: var(--ink); background: white; }
.login-form input:focus, .modal-form input:focus, .modal-form select:focus, .modal-form textarea:focus { border-color: var(--mint-strong); box-shadow: 0 0 0 3px rgba(79,140,117,.1); }
.primary-button, .secondary-button, .text-button, .icon-button { border: 0; cursor: pointer; font-weight: 750; }
.button-link { display: inline-flex; align-items: center; justify-content: center; }
.primary-button { padding: 11px 17px; border-radius: 10px; background: var(--coral); color: white; box-shadow: 0 7px 18px rgba(230,109,82,.2); }
.primary-button:hover { background: #d96047; }
.secondary-button { padding: 10px 14px; border: 1px solid var(--line); border-radius: 10px; background: white; color: var(--ink); }
.secondary-button:hover { background: #f5f6f3; }
.danger-button { padding: 10px 14px; border: 1px solid #efc1b7; border-radius: 10px; background: #fff5f2; color: var(--coral); cursor: pointer; font-weight: 800; }
.danger-button:hover { background: var(--coral-soft); }
.compact-button { padding: 8px 10px; font-size: 9px; white-space: nowrap; }
.profile-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 7px; margin-left: auto; }
.text-button { padding: 11px; background: transparent; color: var(--muted); }
.login-form .text-button { display: block; margin: 6px auto 0; font-size: 11px; }

/* Admin */
.admin-body { min-height: 100vh; padding-left: 236px; background: #f1f3ef; }
.admin-sidebar { position: fixed; z-index: 5; top: 0; bottom: 0; left: 0; display: flex; width: 236px; flex-direction: column; padding: 25px 17px 18px; background: var(--navy-dark); color: white; }
.sidebar-brand { margin: 0 8px 28px; }
.admin-nav { display: flex; flex: 1; flex-direction: column; gap: 3px; }
.admin-nav a { display: grid; grid-template-columns: 23px 1fr auto; align-items: center; min-height: 39px; padding: 0 11px; border-radius: 9px; color: rgba(255,255,255,.62); font-size: 12px; font-weight: 650; }
.admin-nav a:hover { background: rgba(255,255,255,.055); color: white; }
.admin-nav a.active { background: rgba(158,211,191,.14); color: #bde0d3; }
.admin-nav a > span { font-size: 15px; }
.admin-nav a i { display: grid; min-width: 19px; height: 19px; place-items: center; border-radius: 7px; background: rgba(255,255,255,.1); color: white; font-size: 9px; font-style: normal; }
.admin-nav a i.amber { background: var(--amber); color: #51390f; }
.nav-divider { margin: 18px 11px 8px; color: rgba(255,255,255,.28); font-size: 9px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; }
.sidebar-user { display: grid; grid-template-columns: 36px 1fr auto; align-items: center; gap: 9px; padding: 12px 9px 0; border-top: 1px solid rgba(255,255,255,.09); }
.avatar { display: grid; width: 34px; height: 34px; place-items: center; border-radius: 10px; background: #9ed3bf; color: var(--navy-dark); font-size: 10px; font-weight: 850; }
.sidebar-user strong, .sidebar-user small { display: block; }
.sidebar-user strong { font-size: 10px; }
.sidebar-user small { margin-top: 2px; color: rgba(255,255,255,.4); font-size: 9px; }
.sidebar-user > a { color: rgba(255,255,255,.42); }
.admin-main { min-width: 0; }
.admin-topbar { display: flex; min-height: 91px; align-items: center; justify-content: space-between; padding: 18px 30px; border-bottom: 1px solid var(--line); background: white; }
.breadcrumbs { margin-bottom: 5px; color: var(--muted); font-size: 10px; }
.admin-topbar h1 { margin: 0; font-size: 25px; }
.topbar-actions { display: flex; gap: 8px; align-items: center; }
.generation-quality-control { display: flex; flex-direction: column; gap: 4px; color: var(--muted); font-size: 8px; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; }
.generation-quality-control select,
.generation-quality-control input { height: 34px; border: 1px solid var(--line); border-radius: 9px; padding: 0 8px; background: white; color: var(--ink); font-size: 9px; font-weight: 700; letter-spacing: 0; text-transform: none; }
.generation-quality-control select { min-width: 122px; }
.generation-quality-control input { width: 86px; }
.generation-quality-control.generation-auto-approve { flex-direction: row; align-items: center; max-width: 190px; font-size: 8px; line-height: 1.3; }
.generation-quality-control.generation-auto-approve input[type="checkbox"] { width: 17px; height: 17px; flex: 0 0 17px; padding: 0; accent-color: var(--accent); }
.class-hour-rules-panel { margin-top: 14px; padding: 14px; border: 1px solid var(--line); border-radius: 16px; background: #fff; display: grid; gap: 12px; }
.class-hour-rules-heading { display: flex; justify-content: space-between; gap: 12px; align-items: start; }
.class-hour-rules-heading h3 { margin: 2px 0 0; font-size: 14px; }
.class-hour-rules-heading small { max-width: 210px; color: var(--muted); line-height: 1.35; }
.class-hour-rule-form { display: grid; grid-template-columns: 1.2fr .8fr .8fr .7fr 1fr .75fr .75fr auto; gap: 7px; align-items: end; }
.class-hour-rule-form input,
.class-hour-rule-form select { height: 34px; border: 1px solid var(--line); border-radius: 9px; padding: 0 8px; font-size: 10px; background: #fff; }
.class-hour-rule-list { display: grid; gap: 8px; }
.class-hour-rule-item { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 9px 10px; border: 1px solid var(--line); border-radius: 12px; background: #fafbf8; }
.class-hour-rule-item div { display: grid; gap: 2px; }
.class-hour-rule-item strong { font-size: 12px; }
.class-hour-rule-item span,
.class-hour-rule-item small { color: var(--muted); font-size: 9px; }
.admin-toolbar { display: flex; align-items: end; justify-content: space-between; padding: 15px 30px; border-bottom: 1px solid var(--line); background: #fafbf8; }
.toolbar-group { display: flex; align-items: end; gap: 11px; }
.admin-toolbar label { color: var(--muted); font-size: 9px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; }
.admin-toolbar select { min-width: 150px; margin-top: 5px; padding-top: 8px; padding-bottom: 8px; font-size: 11px; }
.admin-toolbar label:first-child select { min-width: 210px; }
.admin-week button { padding: 7px 10px; }
.icon-button { display: grid; width: 34px; height: 34px; place-items: center; border: 1px solid var(--line); border-radius: 9px; background: white; color: var(--muted); }
.workspace { display: grid; grid-template-columns: minmax(0, 1fr) 250px; gap: 16px; padding: 22px 20px 40px; }
.editor-card, .inspector-card { border: 1px solid var(--line); border-radius: 15px; background: white; box-shadow: 0 10px 30px rgba(31,53,65,.055); }
.editor-card { min-width: 0; overflow: hidden; }
.editor-meta { display: flex; min-height: 51px; align-items: center; justify-content: space-between; padding: 0 15px; border-bottom: 1px solid var(--line); color: var(--muted); font-size: 10px; }
.editor-meta > div { display: flex; align-items: center; gap: 9px; }
.version-badge { padding: 5px 8px; border-radius: 7px; background: var(--ochre-soft); color: #83652f; font-weight: 800; }
.quality strong { color: var(--mint-strong); font-size: 14px; }
.quality i { display: block; width: 70px; height: 5px; border-radius: 4px; background: linear-gradient(90deg, var(--mint-strong) var(--score), #e6e9e6 var(--score)); }
.editor-grid { display: grid; min-width: 680px; grid-template-columns: 52px repeat(5, minmax(124px, 1fr)); }
.grid-corner, .day-head, .time-cell, .lesson-card, .empty-slot { min-height: 66px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.grid-corner { display: flex; flex-direction: column; justify-content: center; padding: 9px; background: #f5f6f3; }
.grid-corner span { font-size: 15px; font-weight: 850; }
.grid-corner small { color: var(--muted); font-size: 8px; }
.day-head { display: flex; flex-direction: column; justify-content: center; padding: 10px 12px; background: #f5f6f3; }
.day-head strong { font-size: 11px; }
.day-head small { margin-top: 3px; color: var(--muted); font-size: 8px; }
.day-head.special-day { background: var(--ochre-soft); }
.time-cell { display: flex; flex-direction: column; align-items: center; justify-content: center; background: #fafbf9; }
.time-cell strong { font-size: 13px; }
.time-cell small { margin-top: 3px; color: var(--muted); font-size: 8px; }
.lesson-card, .empty-slot { position: relative; padding: 9px 11px; border-top: 0; border-left: 0; background: white; text-align: left; cursor: pointer; }
.lesson-card::before { content: ""; position: absolute; top: 10px; bottom: 10px; left: 0; width: 3px; border-radius: 0 3px 3px 0; background: currentColor; opacity: .72; }
.lesson-card strong, .lesson-card span, .lesson-card small { display: block; }
.lesson-card strong { overflow: hidden; color: var(--ink); font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }
.lesson-card span { margin-top: 7px; color: var(--ink-2); font-size: 8px; }
.lesson-card small { margin-top: 3px; color: var(--muted); font-size: 8px; }
.lesson-card:hover, .lesson-card.selected { z-index: 1; box-shadow: inset 0 0 0 2px currentColor; }
.lesson-card.blue { color: #7594ae; background: var(--blue-soft); }
.lesson-card.green { color: #67a283; background: var(--green-soft); }
.lesson-card.purple { color: #967fba; background: var(--purple-soft); }
.lesson-card.ochre { color: #b19051; background: var(--ochre-soft); }
.lesson-card.coral { color: #d37a62; background: var(--coral-soft); }
.lesson-card.moved-demo::after, .lesson-card.cancelled-demo::after { position: absolute; top: 7px; right: 6px; padding: 3px 5px; border-radius: 5px; color: white; font-size: 7px; font-weight: 850; text-transform: uppercase; }
.lesson-card.moved-demo::after { content: "перенос"; background: var(--mint-strong); }
.lesson-card.cancelled-demo { opacity: .48; text-decoration: line-through; }
.lesson-card.cancelled-demo::after { content: "отмена"; background: var(--coral); text-decoration: none; }
.empty-slot { color: #9ba7a5; font-size: 9px; text-align: center; }
.empty-slot:hover { background: #f6f8f5; color: var(--mint-strong); }
.inspector-card { align-self: start; padding: 16px; }
.inspector-top { display: flex; align-items: center; justify-content: space-between; }
.inspector-top .section-label { margin: 0; }
.inspector-top .icon-button { width: 28px; height: 28px; border: 0; }
.score-ring { display: grid; width: 96px; height: 96px; margin: 20px auto 13px; place-content: center; border: 7px solid var(--mint); border-top-color: var(--mint-strong); border-radius: 50%; text-align: center; transform: rotate(25deg); }
.score-ring > * { transform: rotate(-25deg); }
.score-ring strong { font-size: 25px; line-height: 1; }
.score-ring span { margin-top: 3px; color: var(--muted); font-size: 8px; }
.inspector-card h3 { margin-bottom: 7px; text-align: center; font-size: 16px; }
.inspector-card > p { font-size: 10px; line-height: 1.5; }
.issue-list { margin: 18px 0; border-top: 1px solid var(--line); }
.issue { display: grid; width: 100%; grid-template-columns: 25px 1fr; gap: 8px; align-items: start; padding: 12px 2px; border: 0; border-bottom: 1px solid var(--line); background: transparent; text-align: left; cursor: pointer; }
.issue > span { display: grid; width: 22px; height: 22px; place-items: center; border-radius: 7px; background: var(--blue-soft); color: #617f98; font-size: 10px; font-weight: 850; }
.issue.warn > span { background: var(--coral-soft); color: var(--coral); }
.issue strong, .issue small { display: block; }
.issue strong { font-size: 9px; }
.issue small { margin-top: 4px; color: var(--muted); font-size: 8px; }

/* Modal */
.modal-backdrop { position: fixed; z-index: 20; inset: 0; display: grid; place-items: center; padding: 28px; background: rgba(10,30,42,.5); backdrop-filter: blur(5px); }
.modal-backdrop[hidden] { display: none; }
.modal { position: relative; width: min(500px, 100%); padding: 30px; border-radius: 20px; background: white; box-shadow: 0 30px 100px rgba(10,30,42,.3); }
.modal-close { position: absolute; top: 15px; right: 15px; width: 30px; height: 30px; border: 0; border-radius: 8px; background: #f1f3f0; color: var(--muted); cursor: pointer; }
.modal h2 { margin-bottom: 8px; }
.modal > .muted { margin-bottom: 23px; font-size: 12px; line-height: 1.55; }
.two-fields { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.impact-preview { display: flex; flex-direction: column; gap: 4px; margin: 4px 0 22px; padding: 14px; border-radius: 11px; background: var(--ochre-soft); font-size: 11px; }
.impact-preview span { color: var(--muted); }
.modal-actions { display: flex; align-items: center; justify-content: flex-end; gap: 8px; }
.toast { position: fixed; z-index: 30; right: 24px; bottom: 24px; display: flex; gap: 11px; width: 330px; padding: 15px; border-radius: 13px; background: var(--navy); color: white; box-shadow: 0 20px 50px rgba(16,44,58,.3); opacity: 0; pointer-events: none; transform: translateY(12px); transition: .25s ease; }
.toast.show { opacity: 1; transform: translateY(0); }
.toast > span { display: grid; width: 27px; height: 27px; flex: 0 0 auto; place-items: center; border-radius: 50%; background: #9ed3bf; color: var(--navy); font-weight: 900; }
.toast strong, .toast small { display: block; }
.toast strong { font-size: 11px; }
.toast small { margin-top: 4px; color: rgba(255,255,255,.58); font-size: 9px; }

/* Admin day view */
.day-filter-panel { display: flex; align-items: end; gap: 22px; padding: 16px 30px; border-bottom: 1px solid var(--line); background: #fafbf8; }
.day-source-switch { display: flex; flex: 0 0 auto; padding: 4px; border: 1px solid var(--line); border-radius: 11px; background: #eef1ed; }
.day-source-button { padding: 9px 16px; border: 0; border-radius: 8px; background: transparent; color: var(--muted); cursor: pointer; font-size: 11px; font-weight: 800; }
.day-source-button.active { background: var(--navy); color: white; box-shadow: 0 5px 14px rgba(24,58,74,.17); }
.day-filter-fields { display: flex; min-width: 0; flex: 1; align-items: end; gap: 10px; flex-wrap: wrap; }
.day-field { color: var(--muted); font-size: 9px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; }
.day-field select, .day-field input { display: block; min-width: 140px; height: 36px; margin-top: 5px; padding: 0 31px 0 10px; border: 1px solid var(--line); border-radius: 9px; outline: 0; background: white; color: var(--ink); font-size: 11px; font-weight: 650; text-transform: none; letter-spacing: 0; }
.day-field input:focus, .day-field select:focus { border-color: var(--mint-strong); box-shadow: 0 0 0 3px rgba(79,140,117,.09); }
.day-content { padding: 25px 30px 48px; }
.day-summary-row { display: flex; align-items: end; justify-content: space-between; gap: 24px; margin-bottom: 20px; }
.day-summary-row h2 { margin-bottom: 6px; font-size: 27px; }
.day-summary-copy { margin-bottom: 0; color: var(--muted); font-size: 11px; }
.day-stats { display: flex; gap: 10px; }
.day-stats span { min-width: 92px; padding: 11px 13px; border: 1px solid var(--line); border-radius: 11px; background: white; color: var(--muted); font-size: 9px; }
.day-stats strong { display: block; margin-bottom: 2px; color: var(--ink); font-size: 17px; }
.day-stats .date-change-stat { border-color: #efc6bb; background: var(--coral-soft); }
.day-stats .date-change-stat strong { color: var(--coral); }
.day-notice { display: flex; align-items: flex-start; gap: 12px; margin: -3px 0 18px; padding: 13px 15px; border: 1px solid #cbded7; border-radius: 12px; background: #eaf3f0; }
.day-notice > span { display: grid; width: 25px; height: 25px; flex: 0 0 auto; place-items: center; border-radius: 50%; background: white; color: var(--mint-strong); font-weight: 900; }
.day-notice strong { font-size: 11px; }
.day-notice p { margin: 3px 0 0; color: var(--muted); font-size: 9px; }
.day-board-card { border: 1px solid var(--line); border-radius: 15px; background: white; box-shadow: 0 10px 30px rgba(31,53,65,.055); overflow: hidden; }
.day-board-topline { display: flex; min-height: 48px; align-items: center; justify-content: space-between; padding: 0 13px 0 16px; border-bottom: 1px solid var(--line); }
.day-legend { display: flex; align-items: center; gap: 17px; color: var(--muted); font-size: 9px; }
.day-legend span { display: flex; align-items: center; gap: 6px; }
.legend-mark { width: 8px; height: 8px; border-radius: 3px; }
.legend-mark.standard { background: #8ca7bb; }
.legend-mark.block { background: #947db7; }
.legend-mark.changed { background: var(--coral); }
.day-table-wrap { overflow-x: auto; }
.day-schedule-table { width: 100%; min-width: 820px; border-collapse: collapse; table-layout: fixed; }
.day-schedule-table th { height: 54px; padding: 8px 11px; border-right: 1px solid var(--line); background: #f5f6f3; text-align: left; }
.day-schedule-table th:first-child { width: 82px; text-align: center; }
.day-schedule-table th strong, .day-schedule-table th small { display: block; }
.day-schedule-table th strong { font-size: 12px; }
.day-schedule-table th small { margin-top: 3px; color: var(--muted); font-size: 8px; font-weight: 500; }
.day-schedule-table th:last-child, .day-schedule-table td:last-child { border-right: 0; }
.day-schedule-table td { height: 83px; padding: 0; border-top: 1px solid var(--line); border-right: 1px solid var(--line); vertical-align: top; }
.day-period-cell { background: #fafbf8; text-align: center; }
.day-period-cell strong, .day-period-cell span { display: block; }
.day-period-cell strong { margin-top: 17px; font-size: 14px; }
.day-period-cell span { margin-top: 4px; color: var(--muted); font-size: 8px; }
.day-lesson { position: relative; min-height: 82px; padding: 12px 12px 9px 15px; }
.day-lesson::before { content: ""; position: absolute; top: 12px; bottom: 12px; left: 0; width: 3px; border-radius: 0 3px 3px 0; background: #87a4b8; }
.day-lesson strong, .day-lesson span, .day-lesson small { display: block; }
.day-lesson strong { overflow: hidden; font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }
.day-lesson span { margin-top: 7px; color: var(--ink-2); font-size: 8px; }
.day-lesson small { margin-top: 3px; color: var(--muted); font-size: 8px; }
.day-lesson .day-cancelled-inline { margin-top: 6px; color: #b55f4c; font-weight: 800; }
.day-lesson.block { background: var(--purple-soft); }
.day-lesson.block::before { background: #957eb8; }
.day-lesson.changed { background: var(--green-soft); }
.day-lesson.changed::before { background: var(--mint-strong); }
.day-lesson.changed::after, .day-lesson.cancelled::after { position: absolute; top: 7px; right: 7px; padding: 3px 5px; border-radius: 5px; color: white; font-size: 7px; font-weight: 850; text-transform: uppercase; }
.day-lesson.changed::after { content: "перенос"; background: var(--mint-strong); }
.day-lesson.cancelled { background: var(--coral-soft); color: #9d6a5f; }
.day-lesson.cancelled::before { background: var(--coral); }
.day-lesson.cancelled::after { content: "отмена"; background: var(--coral); }
.day-lesson.cancelled strong, .day-lesson.cancelled span { text-decoration: line-through; }
.day-lesson.empty { display: grid; place-items: center; color: #a4aeab; font-size: 9px; }
.day-lesson.empty::before { display: none; }

/* Teacher directory */
.teacher-directory { display: grid; grid-template-columns: 310px minmax(0, 1fr); gap: 18px; padding: 22px 30px 45px; }
.teacher-list-card, .teacher-profile-card { min-height: calc(100vh - 158px); border: 1px solid var(--line); border-radius: 15px; background: white; box-shadow: 0 10px 30px rgba(31,53,65,.055); }
.teacher-list-card { overflow: hidden; }
.teacher-list-heading { display: flex; min-height: 67px; align-items: center; justify-content: space-between; padding: 14px 17px; border-bottom: 1px solid var(--line); }
.teacher-list-heading .section-label { margin: 0 0 3px; }
.teacher-list-heading strong { display: block; font-size: 13px; }
.teacher-search { position: relative; display: block; margin: 14px; }
.teacher-search span { position: absolute; top: 50%; left: 12px; color: var(--muted); transform: translateY(-50%); }
.teacher-search input { width: 100%; height: 39px; padding: 0 12px 0 34px; border: 1px solid var(--line); border-radius: 10px; outline: 0; background: #fafbf8; color: var(--ink); font-size: 11px; }
.teacher-search input:focus { border-color: var(--mint-strong); box-shadow: 0 0 0 3px rgba(79,140,117,.09); }
.teacher-list { max-height: calc(100vh - 275px); padding: 0 8px 10px; overflow-y: auto; }
.teacher-list-item { display: grid; width: 100%; grid-template-columns: 38px 1fr auto; align-items: center; gap: 10px; padding: 10px; border: 0; border-radius: 10px; background: transparent; color: var(--ink); text-align: left; cursor: pointer; }
.teacher-list-item:hover { background: #f5f7f4; }
.teacher-list-item.active { background: #e9f2ef; box-shadow: inset 3px 0 var(--mint-strong); }
.teacher-list-avatar, .teacher-avatar { display: grid; place-items: center; border-radius: 11px; background: var(--blue-soft); color: #5e7a90; font-weight: 850; }
.teacher-list-avatar { width: 36px; height: 36px; font-size: 9px; }
.teacher-list-item strong, .teacher-list-item small { display: block; }
.teacher-list-item strong { font-size: 10px; }
.teacher-list-item small { margin-top: 4px; color: var(--muted); font-size: 8px; }
.teacher-list-load { color: var(--muted); font-size: 8px; text-align: right; }
.teacher-list-load b { display: block; color: var(--ink); font-size: 11px; }
.teacher-loading { padding: 20px; color: var(--muted); font-size: 11px; text-align: center; }
.teacher-profile-card { padding: 24px; }
.teacher-profile-empty { display: grid; min-height: 480px; place-content: center; text-align: center; }
.teacher-profile-empty > span { display: grid; width: 55px; height: 55px; margin: 0 auto 14px; place-items: center; border-radius: 17px; background: var(--green-soft); color: var(--mint-strong); font-size: 24px; }
.teacher-profile-empty h2 { margin-bottom: 6px; }
.teacher-profile-empty p { color: var(--muted); font-size: 11px; }
.teacher-profile-header { display: flex; align-items: center; justify-content: space-between; gap: 20px; padding-bottom: 22px; border-bottom: 1px solid var(--line); }
.teacher-profile-title { display: flex; align-items: center; gap: 14px; }
.teacher-avatar { width: 52px; height: 52px; background: var(--green-soft); color: var(--mint-strong); font-size: 13px; }
.teacher-profile-title .eyebrow { margin-bottom: 4px; }
.teacher-profile-title h2 { margin: 0 0 3px; font-size: 21px; }
.teacher-profile-title .muted { font-size: 9px; }
.status-chip { padding: 6px 9px; border-radius: 20px; background: var(--green-soft); color: var(--mint-strong); font-size: 8px; font-weight: 850; text-transform: uppercase; }
.status-chip.warning { background: var(--ochre-soft); color: #936a1c; }
.teacher-facts { display: grid; grid-template-columns: repeat(3, 1fr); gap: 11px; margin: 18px 0; }
.teacher-facts article { padding: 14px; border: 1px solid var(--line); border-radius: 12px; background: #fafbf9; }
.teacher-facts span, .teacher-facts strong, .teacher-facts small { display: block; }
.teacher-facts span { color: var(--muted); font-size: 8px; font-weight: 750; text-transform: uppercase; }
.teacher-facts strong { margin: 7px 0 4px; font-size: 16px; }
.teacher-facts small { color: var(--muted); font-size: 8px; line-height: 1.35; }
.teacher-profile-grid { display: grid; grid-template-columns: minmax(220px, .7fr) minmax(380px, 1.3fr); gap: 14px; }
.teacher-settings-section { padding: 17px; border: 1px solid var(--line); border-radius: 13px; }
.section-heading h3 { margin-top: 3px; font-size: 14px; }
.teacher-rules { margin: 13px 0 0; }
.teacher-rules > div { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 0; border-top: 1px solid var(--line); }
.teacher-rules dt { color: var(--muted); font-size: 9px; }
.teacher-rules dd { margin: 0; font-size: 10px; font-weight: 850; }
.availability-list { display: flex; flex-direction: column; gap: 7px; margin: 13px 0; }
.availability-empty { padding: 12px; border: 1px dashed var(--line); border-radius: 10px; color: var(--muted); font-size: 9px; text-align: center; }
.availability-item { display: grid; grid-template-columns: 1fr auto; gap: 10px; padding: 10px 11px; border-radius: 10px; background: var(--coral-soft); }
.availability-item.undesirable { background: var(--ochre-soft); }
.availability-item strong, .availability-item span, .availability-item small { display: block; }
.availability-item strong { font-size: 9px; }
.availability-item span { margin-top: 3px; color: var(--muted); font-size: 8px; }
.availability-item small { align-self: center; padding: 4px 6px; border-radius: 7px; background: rgba(255,255,255,.7); color: var(--coral); font-size: 7px; font-weight: 850; text-transform: uppercase; }
.availability-item.undesirable small { color: #927132; }
.availability-form { margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--line); }
.availability-form > p strong, .availability-form > p span { display: block; }
.availability-form > p strong { font-size: 10px; }
.availability-form > p span { margin-top: 3px; color: var(--muted); font-size: 8px; }
.availability-fields { display: grid; grid-template-columns: 1.15fr 1fr .8fr .8fr 1.15fr; gap: 7px; margin-top: 11px; }
.availability-fields label { color: var(--muted); font-size: 7px; font-weight: 800; text-transform: uppercase; }
.availability-fields input, .availability-fields select { width: 100%; height: 34px; margin-top: 4px; padding: 0 7px; border: 1px solid var(--line); border-radius: 8px; background: white; color: var(--ink); font-size: 9px; text-transform: none; }
.availability-note-field { grid-column: 1 / -1; }
.availability-actions { display: flex; min-height: 38px; align-items: center; justify-content: space-between; gap: 12px; margin-top: 8px; }
.availability-actions small { color: var(--coral); font-size: 8px; }
.availability-actions .primary-button { padding: 8px 12px; font-size: 9px; }

/* Class directory */
.class-filter-row { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin: 14px 14px 0; }
.class-filter-row label { color: var(--muted); font-size: 7px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; }
.class-filter-row select { width: 100%; height: 35px; margin-top: 4px; padding: 0 8px; border: 1px solid var(--line); border-radius: 9px; outline: 0; background: #fafbf8; color: var(--ink); font-size: 9px; text-transform: none; }
.class-list-item .teacher-list-avatar { background: var(--green-soft); color: var(--mint-strong); }
.class-profile-grid { grid-template-columns: minmax(280px, .82fr) minmax(420px, 1.18fr); }
.class-settings-form { display: grid; gap: 10px; margin-top: 13px; }
.class-settings-form label { color: var(--muted); font-size: 8px; font-weight: 800; text-transform: uppercase; }
.class-settings-form input, .class-settings-form select { width: 100%; height: 36px; margin-top: 5px; padding: 0 9px; border: 1px solid var(--line); border-radius: 9px; outline: 0; background: white; color: var(--ink); font-size: 10px; text-transform: none; }
.class-settings-form input:focus, .class-settings-form select:focus, .class-group-fields input:focus, .class-group-fields select:focus { border-color: var(--mint-strong); box-shadow: 0 0 0 3px rgba(79,140,117,.09); }
.class-checkbox { display: flex !important; align-items: center; gap: 8px; padding: 9px 10px; border: 1px solid var(--line); border-radius: 10px; background: #fafbf8; color: var(--ink-2) !important; text-transform: none !important; }
.class-checkbox input { width: 15px !important; height: 15px !important; margin: 0 !important; accent-color: var(--mint-strong); }
.class-group-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin-top: 13px; }
.group-category { display: flex; min-width: 0; flex-direction: column; gap: 8px; }
.group-category h4 { margin: 0; color: var(--muted); font-size: 8px; font-weight: 900; letter-spacing: .06em; text-transform: uppercase; }
.class-group-card { padding: 11px; border: 1px solid var(--line); border-radius: 11px; background: #fafbf8; }
.class-group-card.profile { background: var(--purple-soft); border-color: #dfd4ef; }
.class-group-card strong, .class-group-card span, .class-group-card small { display: block; }
.class-group-card strong { font-size: 10px; }
.class-group-card span { margin-top: 4px; color: var(--muted); font-size: 8px; }
.class-group-card small { margin-top: 6px; color: var(--ink-2); font-size: 8px; line-height: 1.35; }
.class-group-card-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; }
.danger-icon-button { display: grid; width: 22px; height: 22px; flex: 0 0 auto; place-items: center; border: 1px solid #efc1b7; border-radius: 7px; background: white; color: var(--coral); cursor: pointer; font-size: 14px; font-weight: 900; line-height: 1; }
.danger-icon-button:hover { background: var(--coral-soft); }
.class-group-tags { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 8px; }
.class-group-tags em { padding: 4px 6px; border-radius: 7px; background: rgba(255,255,255,.75); color: var(--mint-strong); font-size: 7px; font-style: normal; font-weight: 850; text-transform: uppercase; }
.class-group-empty { padding: 14px; border: 1px dashed var(--line); border-radius: 11px; color: var(--muted); font-size: 9px; text-align: center; }
.class-group-fields { display: grid; grid-template-columns: 1.2fr 1fr 1fr .72fr; gap: 7px; margin-top: 11px; }
.class-group-fields label { color: var(--muted); font-size: 7px; font-weight: 800; text-transform: uppercase; }
.class-group-fields input, .class-group-fields select { width: 100%; height: 34px; margin-top: 4px; padding: 0 7px; border: 1px solid var(--line); border-radius: 8px; background: white; color: var(--ink); font-size: 9px; text-transform: none; }
.class-group-fields label:nth-child(5), .class-group-fields label:nth-child(6) { grid-column: span 2; }
.class-group-fields .class-group-wide { grid-column: span 2; min-height: 34px; margin-top: 4px; }
.group-form-hint, .panel-hint { margin: 9px 0 0; color: var(--muted); font-size: 8px; line-height: 1.45; }
.muted-control { opacity: .55; }

/* Room directory */
.room-create-panel { margin: 18px 30px 0; padding: 19px; border: 1px solid #cbded7; border-radius: 15px; background: #eaf3f0; box-shadow: 0 10px 30px rgba(31,53,65,.045); }
.room-create-panel form { display: grid; grid-template-columns: 230px minmax(0, 1fr) auto; align-items: end; gap: 18px; }
.room-create-panel h2 { margin-bottom: 5px; font-size: 18px; }
.room-create-panel p:last-child { margin-bottom: 0; color: var(--muted); font-size: 9px; line-height: 1.4; }
.room-create-fields { display: grid; grid-template-columns: 1fr 1.25fr 1.1fr .75fr .75fr; gap: 8px; }
.room-create-fields label, .room-inline-form label, .room-transition-card label { color: var(--muted); font-size: 7px; font-weight: 800; text-transform: uppercase; }
.room-create-fields input, .room-create-fields select, .room-inline-form input, .room-inline-form select, .room-transition-card input { width: 100%; height: 35px; margin-top: 4px; padding: 0 8px; border: 1px solid var(--line); border-radius: 8px; outline: 0; background: white; color: var(--ink); font-size: 9px; text-transform: none; }
.room-create-fields .class-checkbox { align-self: end; min-height: 35px; }
.room-notes-field { grid-column: 1 / -1; }
.room-create-actions { display: flex; align-items: center; justify-content: flex-end; gap: 7px; }
.room-create-actions small { color: var(--coral); font-size: 8px; }
.room-building-summary { display: grid; grid-template-columns: 1fr 1fr; gap: 7px; padding: 12px 14px 0; }
.room-building-card { padding: 10px; border: 1px solid var(--line); border-radius: 10px; background: #fafbf8; }
.room-building-card strong, .room-building-card span, .room-building-card small { display: block; }
.room-building-card strong { font-size: 9px; }
.room-building-card span { margin-top: 5px; color: var(--ink); font-size: 14px; font-weight: 850; }
.room-building-card small { margin-top: 2px; color: var(--muted); font-size: 7px; }
.room-list-item .teacher-list-avatar { background: var(--ochre-soft); color: #9a7436; }
.room-avatar { min-width: 52px; padding: 0 6px; background: var(--ochre-soft); color: #9a7436; }
.room-profile-grid { grid-template-columns: minmax(280px, .76fr) minmax(430px, 1.24fr); }
.room-subheading { margin: 15px 0 8px; color: var(--ink-2); font-size: 10px; }
.room-rule-list, .room-teacher-list { display: flex; flex-direction: column; gap: 7px; }
.room-rule-item, .room-teacher-item { display: grid; grid-template-columns: 1fr auto; align-items: center; gap: 10px; padding: 10px 11px; border-radius: 10px; background: #f4f6f3; }
.room-rule-item.strict { background: var(--coral-soft); }
.room-rule-item strong, .room-rule-item span, .room-teacher-item strong, .room-teacher-item span { display: block; }
.room-rule-item strong, .room-teacher-item strong { font-size: 9px; }
.room-rule-item span, .room-teacher-item span { margin-top: 3px; color: var(--muted); font-size: 8px; }
.room-rule-item small, .room-teacher-item small { padding: 4px 6px; border-radius: 7px; background: white; color: var(--mint-strong); font-size: 7px; font-weight: 850; text-transform: uppercase; }
.room-rule-item.strict small { color: var(--coral); }
.room-inline-form { display: grid; grid-template-columns: 1.25fr 1fr auto; align-items: end; gap: 7px; margin-top: 8px; }
.room-inline-form small { grid-column: 1 / -1; color: var(--coral); font-size: 8px; }
.teacher-assignment-form { grid-template-columns: 1.3fr 1fr auto; }
.teacher-assignment-form .class-checkbox { min-height: 35px; }
.room-transition-card { display: flex; align-items: center; justify-content: space-between; gap: 25px; margin-top: 15px; padding: 16px 18px; border: 1px solid #d7cdea; border-radius: 13px; background: var(--purple-soft); }
.room-transition-card h3 { margin-bottom: 5px; font-size: 14px; }
.room-transition-card p:last-child { margin-bottom: 0; color: var(--muted); font-size: 9px; }
.room-transition-card form { display: grid; grid-template-columns: 110px auto; align-items: end; gap: 8px; }
.room-transition-card form small { grid-column: 1 / -1; color: var(--coral); font-size: 8px; }

/* Calendar and bell schedules */
.bell-filter-panel { display: flex; align-items: end; gap: 22px; padding: 16px 30px; border-bottom: 1px solid var(--line); background: #fafbf8; }
.bell-filter-fields { display: flex; align-items: end; gap: 10px; flex-wrap: wrap; }
.bell-page { padding: 22px 30px 48px; }
.bell-summary-strip { display: grid; grid-template-columns: 1fr 1fr 1.45fr; gap: 12px; margin-bottom: 18px; }
.bell-summary-strip article { display: flex; min-height: 68px; align-items: center; gap: 11px; padding: 13px 15px; border: 1px solid var(--line); border-radius: 13px; background: white; }
.bell-summary-strip strong, .bell-summary-strip small { display: block; }
.bell-summary-strip strong { font-size: 11px; }
.bell-summary-strip small { margin-top: 3px; color: var(--muted); font-size: 8px; line-height: 1.45; }
.bell-building-icon, .bell-summary-accent > span { display: grid; width: 32px; height: 32px; flex: 0 0 auto; place-items: center; border-radius: 10px; background: var(--purple-soft); color: #6f5896; font-size: 11px; font-weight: 900; }
.bell-building-icon.primary { background: var(--mint-soft); color: var(--mint-strong); }
.bell-summary-strip .bell-summary-accent { border-color: #d3e1dc; background: #f0f6f3; }
.bell-summary-accent > span { background: white; color: var(--mint-strong); }
.bell-editor-grid { display: grid; grid-template-columns: minmax(560px, 1.45fr) minmax(300px, .72fr); gap: 18px; align-items: start; }
.bell-editor-card, .bell-settings-card { border: 1px solid var(--line); border-radius: 15px; background: white; box-shadow: 0 10px 30px rgba(31,53,65,.055); }
.bell-card-heading { display: flex; min-height: 102px; align-items: center; justify-content: space-between; gap: 18px; padding: 20px 22px; border-bottom: 1px solid var(--line); }
.bell-card-heading h2, .bell-settings-card h2 { margin: 2px 0 4px; font-size: 18px; }
.bell-card-heading p:last-child { margin: 0; color: var(--muted); font-size: 9px; }
#bell-schedule-form { padding-bottom: 18px; }
.bell-table-heading, .bell-slot-row { display: grid; grid-template-columns: 62px minmax(100px, 1fr) minmax(100px, 1fr) minmax(120px, 1.2fr) 32px; align-items: center; gap: 9px; }
.bell-table-heading { min-height: 42px; padding: 0 18px; border-bottom: 1px solid var(--line); background: #f6f7f4; color: var(--muted); font-size: 8px; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; }
.bell-slot-row { min-height: 61px; padding: 8px 18px; border-bottom: 1px solid var(--line); }
.bell-slot-number { display: flex; align-items: center; gap: 8px; color: var(--ink); font-size: 11px; font-weight: 900; }
.bell-slot-number span { display: grid; width: 29px; height: 29px; place-items: center; border-radius: 9px; background: var(--purple-soft); color: #6b568c; }
.bell-slot-row input { width: 100%; height: 36px; padding: 0 10px; border: 1px solid var(--line); border-radius: 9px; outline: 0; background: white; color: var(--ink); font: inherit; font-size: 11px; font-weight: 700; }
.bell-slot-row input:focus { border-color: var(--mint-strong); box-shadow: 0 0 0 3px rgba(79,140,117,.09); }
.bell-break-value { padding: 9px 11px; border-radius: 9px; background: #f3f5f2; color: var(--muted); font-size: 9px; }
.bell-break-value.error { background: var(--coral-soft); color: var(--coral); }
.bell-remove-slot { width: 29px; height: 29px; border: 0; border-radius: 8px; background: transparent; color: #a4aba9; cursor: pointer; font-size: 16px; }
.bell-remove-slot:hover { background: var(--coral-soft); color: var(--coral); }
.bell-form-actions { display: flex; align-items: center; gap: 9px; padding: 17px 18px 0; }
.bell-form-actions .bell-form-status { min-width: 0; flex: 1; color: var(--coral); font-size: 9px; }
.danger-outline { border-color: #e6bbb2; color: var(--coral); }
.bell-settings-card { padding: 21px; }
.bell-settings-card > div:first-child { padding-bottom: 16px; border-bottom: 1px solid var(--line); }
.bell-settings-card > div:first-child p:last-child { margin: 5px 0 0; font-size: 9px; line-height: 1.5; }
#bell-settings-form { display: grid; gap: 14px; padding: 18px 0; }
#bell-settings-form > label:not(.class-checkbox), .bell-class-hour-fields label { color: var(--muted); font-size: 9px; font-weight: 800; }
#bell-settings-form input[type="text"], #bell-settings-form input[type="time"], #bell-settings-form select { display: block; width: 100%; height: 37px; margin-top: 6px; padding: 0 10px; border: 1px solid var(--line); border-radius: 9px; outline: 0; background: white; color: var(--ink); font: inherit; font-size: 10px; }
#bell-settings-form label small { display: block; margin-top: 6px; color: var(--muted); font-size: 8px; font-weight: 500; line-height: 1.45; }
.bell-class-hour-toggle { padding: 12px; border-radius: 10px; background: var(--purple-soft); }
.bell-class-hour-fields { display: grid; grid-template-columns: 1.2fr 1fr 1fr; gap: 8px; }
.bell-settings-note { display: flex; align-items: flex-start; gap: 9px; padding: 11px; border-radius: 10px; background: #f3f5f2; }
.bell-settings-note span { display: grid; width: 20px; height: 20px; flex: 0 0 auto; place-items: center; border-radius: 50%; background: white; color: var(--mint-strong); font-size: 9px; font-weight: 900; }
.bell-settings-note p { margin: 0; color: var(--muted); font-size: 8px; line-height: 1.55; }
.bell-preview { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 8px; padding-top: 17px; border-top: 1px solid var(--line); }
.bell-preview .eyebrow { grid-column: 1 / -1; }
.bell-preview > div { padding: 10px; border-radius: 10px; background: #f6f7f4; }
.bell-preview span, .bell-preview strong { display: block; }
.bell-preview span { color: var(--muted); font-size: 7px; }
.bell-preview strong { margin-top: 4px; font-size: 13px; }

/* Curriculum */
.curriculum-filter-panel { display: flex; align-items: end; gap: 22px; padding: 16px 30px; border-bottom: 1px solid var(--line); background: #fafbf8; }
.curriculum-filter-fields { display: flex; min-width: 0; flex: 1; align-items: end; gap: 10px; flex-wrap: wrap; }
.curriculum-search { min-width: 240px; margin-left: auto; }
.curriculum-search input { min-width: 210px; }
.curriculum-page { padding: 22px 30px 48px; }
.curriculum-editor { margin-bottom: 18px; border: 1px solid #cbded7; border-radius: 15px; background: #f3f8f6; box-shadow: 0 10px 30px rgba(31,53,65,.045); overflow: hidden; }
.curriculum-editor > header { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; padding: 18px 20px 14px; border-bottom: 1px solid #d9e5e1; }
.curriculum-editor h2 { margin: 2px 0 4px; font-size: 18px; }
.curriculum-editor header p:last-child { margin: 0; color: var(--muted); font-size: 9px; }
.curriculum-editor form { padding: 17px 20px 18px; }
.curriculum-form-grid { display: grid; grid-template-columns: repeat(4, minmax(130px, 1fr)); gap: 12px; }
.curriculum-form-grid > label:not(.class-checkbox) { color: var(--muted); font-size: 8px; font-weight: 800; letter-spacing: .03em; text-transform: uppercase; }
.curriculum-form-grid input, .curriculum-form-grid select { display: block; width: 100%; height: 37px; margin-top: 5px; padding: 0 10px; border: 1px solid var(--line); border-radius: 9px; outline: 0; background: white; color: var(--ink); font: inherit; font-size: 10px; font-weight: 650; letter-spacing: 0; text-transform: none; }
.curriculum-form-grid input:focus, .curriculum-form-grid select:focus { border-color: var(--mint-strong); box-shadow: 0 0 0 3px rgba(79,140,117,.09); }
.curriculum-remainder { align-self: end; min-height: 37px; padding: 10px 11px; border-radius: 9px; background: white; }
.curriculum-editor .availability-actions { margin-top: 15px; }
.curriculum-summary { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-bottom: 18px; }
.curriculum-summary article { padding: 14px 16px; border: 1px solid var(--line); border-radius: 13px; background: white; }
.curriculum-summary span, .curriculum-summary strong, .curriculum-summary small { display: block; }
.curriculum-summary span { color: var(--muted); font-size: 8px; font-weight: 750; text-transform: uppercase; }
.curriculum-summary strong { margin: 5px 0 3px; font-size: 21px; }
.curriculum-summary small { color: var(--muted); font-size: 8px; line-height: 1.4; }
.curriculum-table-card { border: 1px solid var(--line); border-radius: 15px; background: white; box-shadow: 0 10px 30px rgba(31,53,65,.055); overflow: hidden; }
.curriculum-table-header { display: flex; min-height: 92px; align-items: center; justify-content: space-between; gap: 20px; padding: 18px 20px; border-bottom: 1px solid var(--line); }
.curriculum-table-header h2 { margin: 2px 0 4px; font-size: 18px; }
.curriculum-table-header p:last-child { margin: 0; color: var(--muted); font-size: 9px; }
.curriculum-legend { color: var(--muted); font-size: 8px; }
.curriculum-legend span { display: flex; align-items: center; gap: 6px; }
.inherit-mark { width: 9px; height: 9px; border-radius: 3px; background: var(--purple-soft); }
.curriculum-table-wrap { overflow-x: auto; }
.curriculum-table { width: 100%; min-width: 1040px; border-collapse: collapse; }
.curriculum-table th { height: 40px; padding: 0 11px; border-bottom: 1px solid var(--line); background: #f6f7f4; color: var(--muted); font-size: 8px; letter-spacing: .04em; text-align: left; text-transform: uppercase; }
.curriculum-table td { min-height: 58px; padding: 11px; border-bottom: 1px solid var(--line); font-size: 9px; vertical-align: middle; }
.curriculum-table tr:last-child td { border-bottom: 0; }
.curriculum-table tr.inherited { background: #fbf9fd; }
.curriculum-subject-cell strong, .curriculum-subject-cell span { display: block; }
.curriculum-subject-cell strong { font-size: 10px; }
.curriculum-subject-cell span { margin-top: 3px; color: var(--muted); font-size: 8px; }
.curriculum-scope-tag, .curriculum-week-tag, .curriculum-double-tag { display: inline-flex; padding: 5px 7px; border-radius: 20px; background: #eef2f0; color: var(--muted); font-size: 8px; font-style: normal; font-weight: 750; white-space: nowrap; }
.curriculum-scope-tag.inherited { background: var(--purple-soft); color: #6d5792; }
.curriculum-week-tag.alternating { background: var(--ochre-soft); color: #8b671f; }
.curriculum-double-tag.required { background: #e8f2ed; color: var(--mint-strong); }
.curriculum-edit-button { width: 30px; height: 30px; border: 1px solid var(--line); border-radius: 8px; background: white; color: var(--navy); cursor: pointer; font-size: 12px; }
.curriculum-edit-button:hover { border-color: var(--mint-strong); background: var(--mint-soft); }
.danger-mini-button { margin-left: 5px; border-color: #efc1b7; color: var(--coral); }
.danger-mini-button:hover { border-color: #efc1b7; background: var(--coral-soft); }
.curriculum-empty { height: 160px; color: var(--muted); text-align: center; }

/* Rules, generation, changes and approvals */
.rules-page, .generation-page, .changes-page, .approvals-page { padding: 22px 30px 48px; }
.rules-tabs, .approval-filter { display: flex; gap: 5px; margin-bottom: 18px; padding: 4px; border: 1px solid var(--line); border-radius: 11px; background: #eef1ed; width: max-content; }
.rules-tabs button, .approval-filter button { padding: 9px 14px; border: 0; border-radius: 8px; background: transparent; color: var(--muted); cursor: pointer; font-size: 9px; font-weight: 800; }
.rules-tabs button.active, .approval-filter button.active { background: var(--navy); color: white; }
.rules-summary, .changes-summary, .generation-stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin-bottom: 18px; }
.rules-summary article, .changes-summary article, .generation-stats article { padding: 14px 16px; border: 1px solid var(--line); border-radius: 13px; background: white; }
.rules-summary strong, .changes-summary strong, .generation-stats strong { display: block; font-size: 21px; }
.rules-summary span, .changes-summary span, .generation-stats span { color: var(--muted); font-size: 8px; }
.rule-card-list { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.rule-card { display: grid; grid-template-columns: 42px 1fr auto; gap: 12px; align-items: start; padding: 16px; border: 1px solid var(--line); border-radius: 13px; background: white; }
.rule-icon { display: grid; width: 38px; height: 38px; place-items: center; border-radius: 10px; background: var(--mint-soft); color: var(--mint-strong); font-weight: 900; }
.rule-card.confirm .rule-icon { background: var(--ochre-soft); color: #8f691d; }
.rule-card.soft .rule-icon { background: var(--purple-soft); color: #735c99; }
.rule-card h3 { margin: 1px 0 4px; font-size: 11px; }
.rule-card p { margin: 0 0 8px; color: var(--muted); font-size: 8px; line-height: 1.5; }
.rule-meta { display: flex; gap: 6px; flex-wrap: wrap; }
.rule-meta span { padding: 4px 6px; border-radius: 10px; background: #f2f4f1; color: var(--muted); font-size: 7px; }
.rule-controls { display: grid; gap: 6px; min-width: 125px; }
.rule-controls select, .rule-controls input { width: 100%; height: 31px; padding: 0 7px; border: 1px solid var(--line); border-radius: 8px; background: white; font-size: 8px; }
.rule-switch { display: flex; align-items: center; gap: 5px; color: var(--muted); font-size: 8px; }
.linked-block-list { display: grid; grid-template-columns: repeat(3, 1fr); gap: 13px; }
.linked-block-card { border: 1px solid var(--line); border-radius: 14px; background: white; overflow: hidden; }
.linked-block-card header { padding: 15px; border-bottom: 1px solid var(--line); }
.linked-block-card h3 { margin: 2px 0 4px; font-size: 12px; }
.linked-block-card header small { color: var(--muted); font-size: 8px; }
.block-line { padding: 11px 14px; border-bottom: 1px solid var(--line); }
.block-line:last-child { border-bottom: 0; }
.block-line strong, .block-line span { display: block; }
.block-line strong { font-size: 9px; }
.block-line span { margin-top: 3px; color: var(--muted); font-size: 8px; }
.block-editor, .event-editor { margin-bottom: 18px; border: 1px solid #cbded7; border-radius: 14px; background: #f3f8f6; overflow: hidden; }
.block-editor > header, .event-editor > header { display: flex; align-items: start; justify-content: space-between; padding: 16px 18px; border-bottom: 1px solid #d9e5e1; }
.block-editor h2, .event-editor h2 { margin: 2px 0 3px; font-size: 17px; }
.block-editor header p:last-child { margin: 0; color: var(--muted); font-size: 8px; }
.block-editor form, .event-editor form { padding: 16px 18px; }
.block-editor-grid, .event-form-grid { display: grid; grid-template-columns: 2fr 1fr 1fr; gap: 10px; }
.block-editor label, .event-editor label { color: var(--muted); font-size: 8px; font-weight: 800; }
.block-editor input, .block-editor select, .event-editor input, .event-editor select { display: block; width: 100%; height: 35px; margin-top: 5px; padding: 0 9px; border: 1px solid var(--line); border-radius: 8px; background: white; font: inherit; font-size: 9px; }
.block-lines-editor { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 12px; }
.block-lines-editor article { display: grid; grid-template-columns: auto 1fr 1fr; align-items: end; gap: 8px; padding: 11px; border-radius: 10px; background: white; }
.block-lines-editor article > strong { align-self: center; font-size: 9px; }
.block-checkboxes { display: flex; gap: 10px; margin-top: 11px; }
.generation-hero { display: flex; align-items: center; gap: 16px; padding: 22px; border: 1px solid var(--line); border-radius: 15px; background: linear-gradient(120deg,#f2f8f5,#f8f5fb); }
.generation-hero > div:nth-child(2) { min-width: 0; flex: 1; }
.generation-hero h2 { margin: 3px 0 6px; font-size: 22px; }
.generation-hero p:last-child { margin: 0; color: var(--muted); font-size: 9px; }
.generation-orbit { display: grid; width: 52px; height: 52px; place-items: center; border-radius: 50%; background: var(--navy); color: white; font-size: 20px; box-shadow: 0 0 0 8px rgba(79,140,117,.09); }
.generation-progress { display: grid; grid-template-columns: 1fr auto; align-items: center; gap: 14px; margin-top: 14px; padding: 13px 16px; border: 1px solid var(--line); border-radius: 13px; background: white; }
.generation-progress-track { height: 12px; overflow: hidden; border-radius: 999px; background: #e8eeeb; box-shadow: inset 0 1px 2px rgba(31,52,46,.08); }
.generation-progress-track span { display: block; width: 0; height: 100%; border-radius: inherit; background: linear-gradient(90deg,var(--mint-strong),#69b793); transition: width .45s ease; }
.generation-progress > div:last-child { display: grid; min-width: 210px; grid-template-columns: auto 1fr; align-items: center; gap: 10px; }
.generation-progress strong { color: var(--navy); font-size: 15px; }
.generation-progress small { color: var(--muted); font-size: 8px; }
.generation-page.is-running .generation-orbit { animation: generation-pulse 1.4s ease-in-out infinite; }
@keyframes generation-pulse { 50% { transform: scale(1.06); box-shadow: 0 0 0 13px rgba(79,140,117,.06); } }
.generation-stats { grid-template-columns: repeat(4,1fr); margin-top: 14px; }
.generation-flow { display: flex; align-items: center; gap: 9px; margin: 18px 0; padding: 16px; border: 1px solid var(--line); border-radius: 14px; background: white; }
.generation-flow article { display: flex; min-width: 0; flex: 1; align-items: center; gap: 9px; }
.generation-flow article > span { display: grid; width: 28px; height: 28px; flex: 0 0 auto; place-items: center; border-radius: 50%; background: #eef1ed; color: var(--muted); font-size: 9px; font-weight: 900; }
.generation-flow article.done > span { background: var(--mint-soft); color: var(--mint-strong); }
.generation-flow strong, .generation-flow small { display: block; }
.generation-flow strong { font-size: 9px; }.generation-flow small { margin-top: 3px; color: var(--muted); font-size: 7px; }
.generation-flow > i { color: #c2c9c6; font-style: normal; }
.generation-issues-card { border: 1px solid var(--line); border-radius: 14px; background: white; overflow: hidden; }
.generation-issues-card > header { display: flex; align-items: center; justify-content: space-between; padding: 16px 18px; border-bottom: 1px solid var(--line); }
.generation-issues-card h2 { margin-top: 2px; font-size: 16px; }
.generation-issue { display: grid; grid-template-columns: 28px 1fr auto; gap: 10px; padding: 13px 18px; border-bottom: 1px solid var(--line); }
.generation-issue:last-child { border-bottom: 0; }
.generation-issue > span { display: grid; width: 25px; height: 25px; place-items: center; border-radius: 50%; background: var(--coral-soft); color: var(--coral); font-size: 9px; font-weight: 900; }
.generation-issue.warning > span { background: var(--ochre-soft); color: #8b671f; }
.generation-issue strong, .generation-issue small { display: block; }.generation-issue strong { font-size: 9px; }.generation-issue small { margin-top: 3px; color: var(--muted); font-size: 8px; }
.drafts-section { margin: 18px 0; }
.draft-card-list { display: grid; grid-template-columns: repeat(3,1fr); gap: 12px; margin-top: 12px; }
.draft-card { padding: 15px; border: 1px solid var(--line); border-radius: 14px; background: white; cursor: pointer; text-align: left; }
.draft-card:hover, .draft-card.active { border-color: var(--mint-strong); box-shadow: 0 8px 24px rgba(45,92,76,.09); }
.draft-card.published { border-color: #9bc8b7; background: #f1f8f5; }
.draft-card h3 { margin: 4px 0 7px; font-size: 12px; }
.draft-card > p { margin: 0 0 10px; color: var(--muted); font-size: 8px; line-height: 1.5; }
.draft-card-metrics { display: grid; grid-template-columns: repeat(5,1fr); gap: 6px; }
.draft-card-metrics span { padding: 7px; border-radius: 8px; background: #f4f6f3; color: var(--muted); font-size: 7px; }
.draft-card-metrics strong { display: block; margin-bottom: 2px; color: var(--ink); font-size: 12px; }
.draft-preview-card { margin: 18px 0; border: 1px solid var(--line); border-radius: 15px; background: white; overflow: hidden; }
.draft-preview-card > header { display: flex; align-items: center; justify-content: space-between; gap: 18px; padding: 17px 19px; border-bottom: 1px solid var(--line); }
.draft-preview-card h2 { margin: 2px 0 4px; font-size: 18px; }.draft-preview-card header p:last-child { margin: 0; color: var(--muted); font-size: 8px; }
.draft-preview-filters { display: flex; gap: 9px; padding: 12px 16px; border-bottom: 1px solid var(--line); background: #f8f9f7; }
.draft-preview-filters label { color: var(--muted); font-size: 8px; font-weight: 800; }.draft-preview-filters select { display: block; min-width: 145px; height: 32px; margin-top: 4px; padding: 0 8px; border: 1px solid var(--line); border-radius: 8px; background: white; font-size: 9px; }
.draft-exception-list { display: grid; grid-template-columns: repeat(2,1fr); gap: 8px; max-height: 430px; overflow: auto; padding: 13px 16px; border-bottom: 1px solid var(--line); }
.draft-exception-summary { grid-column: 1 / -1; display: flex; align-items: baseline; justify-content: space-between; gap: 12px; padding: 2px 1px 6px; }
.draft-exception-summary strong { font-size: 10px; }.draft-exception-summary small { color: var(--muted); font-size: 8px; }
.draft-exception { display: grid; grid-template-columns: 1fr minmax(150px,.8fr) auto auto; align-items: end; gap: 7px; padding: 10px; border-radius: 10px; background: var(--ochre-soft); }
.draft-exception.approved { background: #eaf4ef; }.draft-exception.rejected { background: var(--coral-soft); }
.draft-exception strong, .draft-exception small { display: block; }.draft-exception strong { font-size: 8px; }.draft-exception small { margin-top: 3px; color: var(--muted); font-size: 7px; }
.draft-exception input { height: 30px; padding: 0 8px; border: 1px solid var(--line); border-radius: 7px; background: white; font-size: 8px; }.draft-exception button { padding: 7px 8px; }
.changes-filter { display: flex; align-items: end; gap: 18px; padding: 15px 30px; border-bottom: 1px solid var(--line); background: #fafbf8; }
.changes-filter > div strong, .changes-filter > div span { display: block; }.changes-filter > div strong { font-size: 11px; }.changes-filter > div span { margin-top: 3px; color: var(--muted); font-size: 8px; }
.event-form-grid { grid-template-columns: 2fr 1fr 1.3fr .7fr .7fr 1.5fr; }
.changes-columns { display: grid; grid-template-columns: repeat(3,1fr); gap: 14px; }
.changes-columns > section { min-height: 260px; padding: 16px; border: 1px solid var(--line); border-radius: 14px; background: white; }
.change-list { display: grid; gap: 8px; margin-top: 12px; }
.change-list-item { padding: 11px; border-radius: 10px; background: #f5f7f4; }
.change-list-item strong, .change-list-item span, .change-list-item small { display: block; }.change-list-item strong { font-size: 9px; }.change-list-item span { margin-top: 4px; color: var(--muted); font-size: 8px; }.change-list-item small { margin-top: 5px; color: var(--coral); font-size: 7px; }
.approval-filter strong { margin-left: 4px; }
.approval-notice { display: flex; gap: 12px; margin-bottom: 17px; padding: 14px 16px; border: 1px solid #ecd5a6; border-radius: 12px; background: var(--ochre-soft); }
.approval-notice > span { display: grid; width: 28px; height: 28px; flex: 0 0 auto; place-items: center; border-radius: 50%; background: white; color: #8b671f; font-weight: 900; }.approval-notice strong { font-size: 10px; }.approval-notice p { margin: 4px 0 0; color: var(--muted); font-size: 8px; }
.approval-list { display: grid; gap: 12px; }
.approval-card { display: grid; grid-template-columns: 42px 1fr minmax(280px,.7fr); gap: 13px; padding: 16px; border: 1px solid var(--line); border-radius: 14px; background: white; }
.approval-card > span { display: grid; width: 38px; height: 38px; place-items: center; border-radius: 11px; background: var(--ochre-soft); color: #8a661e; font-weight: 900; }
.approval-card h3 { margin: 1px 0 5px; font-size: 11px; }.approval-card p { margin: 0; color: var(--muted); font-size: 8px; line-height: 1.5; }.approval-card .scope { display: inline-block; margin-top: 8px; padding: 4px 7px; border-radius: 12px; background: #f1f3f0; color: var(--muted); font-size: 7px; }
.approval-decision { display: grid; grid-template-columns: 1fr auto auto; align-items: end; gap: 7px; }.approval-decision input { height: 34px; padding: 0 9px; border: 1px solid var(--line); border-radius: 8px; font-size: 8px; }.approval-decision .primary-button, .approval-decision .secondary-button { padding: 9px 10px; }
.approval-result { align-self: center; color: var(--muted); font-size: 8px; }
.directory-create-panel { margin: 18px 30px 0; border: 1px solid #cbded7; border-radius: 14px; background: #f3f8f6; }
.directory-create-panel form { padding: 17px 19px; }
.directory-create-panel h2 { margin: 2px 0 12px; font-size: 17px; }
.directory-create-grid { display: grid; grid-template-columns: repeat(5,minmax(120px,1fr)); gap: 9px; }
.directory-create-grid > label:not(.class-checkbox), .profile-student-add label { color: var(--muted); font-size: 8px; font-weight: 800; }
.directory-create-grid input, .directory-create-grid select, .profile-student-add input { display: block; width: 100%; height: 35px; margin-top: 5px; padding: 0 9px; border: 1px solid var(--line); border-radius: 8px; background: white; font: inherit; font-size: 9px; }
.directory-create-grid .class-checkbox { align-self: end; min-height: 35px; padding: 9px; border-radius: 8px; background: white; }
.profile-students-section { margin: 18px; padding: 16px; border: 1px solid var(--line); border-radius: 13px; background: #fafbf9; }
.profile-student-list { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-top: 12px; }
.profile-student-card { padding: 11px; border: 1px solid var(--line); border-radius: 10px; background: white; }
.profile-student-card strong { display: block; font-size: 9px; }.profile-student-card span { display: block; margin-top: 4px; color: var(--muted); font-size: 8px; }
.profile-choice-form { display: grid; grid-template-columns: 1fr 1fr 95px auto; gap: 6px; margin-top: 8px; }.profile-choice-form select, .profile-choice-form input { min-width: 0; height: 30px; border: 1px solid var(--line); border-radius: 7px; background: white; font-size: 8px; }.profile-choice-form button { padding: 7px 8px; }
.profile-student-add { display: grid; grid-template-columns: minmax(220px,1fr) auto; align-items: end; gap: 8px; margin-top: 12px; }.profile-student-add small { grid-column: 1 / -1; color: var(--coral); font-size: 8px; }
.import-page { display: grid; gap: 14px; padding: 16px 18px 28px; }
.import-hero, .import-upload-card, .import-result, .import-history-card { border: 1px solid var(--line); border-radius: 14px; background: var(--paper); box-shadow: var(--shadow); }
.import-hero { display: flex; align-items: center; justify-content: space-between; gap: 24px; padding: 20px 22px; background: linear-gradient(135deg,#f2f6f1,#fff9ed); }.import-hero h2 { margin: 3px 0 7px; font-size: 20px; }.import-hero p { max-width: 670px; color: var(--muted); }.import-hero > span { padding: 10px 14px; border-radius: 999px; background: var(--green); color: white; font-size: 9px; font-weight: 800; }
.import-upload-card { display: grid; grid-template-columns: 1.7fr 1fr; gap: 18px; padding: 17px; }#import-form { display: grid; grid-template-columns: 1fr 1fr; gap: 11px; align-items: end; }#import-form label { display: grid; gap: 5px; color: var(--muted); font-size: 8px; font-weight: 700; }#import-form select, #import-form input { min-height: 36px; border: 1px solid var(--line); border-radius: 9px; background: white; padding: 0 10px; color: var(--ink); }
.import-file-label { grid-column: 1 / -1; position: relative; padding: 13px; border: 1px dashed #9daf9f; border-radius: 11px; background: #f7faf7; cursor: pointer; }.import-file-label input { position: absolute; width: 1px; height: 1px; opacity: 0; }.import-file-label span { color: var(--ink); font-size: 9px; font-weight: 600; }.import-hint { padding: 15px; border-radius: 11px; background: var(--blue-soft); }.import-hint strong { font-size: 10px; }.import-hint p { margin-top: 7px; color: var(--muted); font-size: 8px; line-height: 1.55; }
.import-result > header, .import-history-card > header { display: flex; align-items: center; justify-content: space-between; padding: 15px 17px; border-bottom: 1px solid var(--line); }.import-result h2, .import-history-card h2 { margin-top: 2px; font-size: 15px; }.import-result header p { margin-top: 4px; color: var(--muted); font-size: 8px; }
.import-stats { display: grid; grid-template-columns: repeat(4,1fr); gap: 8px; padding: 12px 16px; }.import-stats article { padding: 10px; border-radius: 10px; background: #f5f7f4; }.import-stats span { display: block; color: var(--muted); font-size: 7px; }.import-stats strong { display: block; margin-top: 4px; font-size: 18px; }.import-messages { display: grid; gap: 6px; padding: 0 16px 12px; }.import-message { display: flex; gap: 9px; padding: 8px 10px; border-radius: 8px; background: var(--ochre-soft); font-size: 8px; }.import-message.error { background: var(--coral-soft); }.import-message strong { min-width: 56px; }
.import-preview-table th, .import-preview-table td { min-width: 95px; font-size: 8px; }.import-preview-table th:first-child, .import-preview-table td:first-child { min-width: 52px; }#import-history { display: grid; gap: 7px; padding: 12px 16px 16px; }.import-history-row { display: grid; grid-template-columns: 1.2fr .8fr .6fr .6fr auto; gap: 10px; align-items: center; padding: 9px 10px; border-radius: 9px; background: #f5f7f4; font-size: 8px; }.import-history-row small { color: var(--muted); }.import-history-row .status-chip { justify-self: end; }

@media (max-width: 1120px) {
  .teacher-directory { grid-template-columns: 260px minmax(0, 1fr); padding-left: 20px; padding-right: 20px; }
  .teacher-profile-grid { grid-template-columns: 1fr; }
  .class-profile-grid { grid-template-columns: 1fr; }
  .class-group-list { grid-template-columns: 1fr; }
  .room-create-panel { margin-left: 20px; margin-right: 20px; }
  .room-create-panel form { grid-template-columns: 1fr; }
  .room-create-fields { grid-template-columns: repeat(3, 1fr); }
  .room-profile-grid { grid-template-columns: 1fr; }
  .bell-editor-grid { grid-template-columns: 1fr; }
  .curriculum-form-grid { grid-template-columns: repeat(3, 1fr); }
  .linked-block-list { grid-template-columns: 1fr 1fr; }
  .draft-card-list { grid-template-columns: 1fr; }
  .draft-exception-list { grid-template-columns: 1fr; }
  .event-form-grid { grid-template-columns: repeat(3,1fr); }
  .changes-columns { grid-template-columns: 1fr; }
  .directory-create-grid { grid-template-columns: repeat(3,1fr); }
  .import-upload-card { grid-template-columns: 1fr; }.import-history-row { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 900px) {
  .public-header, .public-shell, .public-footer { padding-left: 18px; padding-right: 18px; }
  .public-intro { align-items: flex-start; flex-direction: column; gap: 26px; padding: 28px; }
  .date-card { min-width: 0; }
  .notice-row, .today-layout { grid-template-columns: 1fr; }
  .bell-column { display: none; }
  .panel-heading, .schedule-heading { align-items: flex-start; flex-direction: column; }
  .login-body { padding: 16px; }
  .login-shell { grid-template-columns: 1fr; }
  .login-visual { min-height: 290px; }
  .login-message h1 { font-size: 35px; }
  .visual-grid { display: none; }
  .login-panel { padding: 42px 28px; }
  .day-filter-panel, .day-summary-row { align-items: flex-start; flex-direction: column; }
  .teacher-directory { grid-template-columns: 1fr; }
  .teacher-list-card, .teacher-profile-card { min-height: 0; }
  .teacher-list { max-height: 360px; }
  .class-group-fields { grid-template-columns: 1fr 1fr; }
  .room-create-fields { grid-template-columns: 1fr 1fr; }
  .room-transition-card { align-items: flex-start; flex-direction: column; }
  .bell-filter-panel { align-items: flex-start; flex-direction: column; }
  .bell-summary-strip { grid-template-columns: 1fr; }
  .curriculum-filter-panel { align-items: flex-start; flex-direction: column; }
  .curriculum-filter-fields { width: 100%; }
  .curriculum-search { margin-left: 0; }
  .curriculum-form-grid { grid-template-columns: repeat(2, 1fr); }
  .curriculum-summary { grid-template-columns: 1fr 1fr; }
  .rule-card-list { grid-template-columns: 1fr; }
  .generation-flow { align-items: flex-start; flex-direction: column; }
  .generation-flow > i { transform: rotate(90deg); }
  .generation-progress { grid-template-columns: 1fr; }
  .generation-progress > div:last-child { min-width: 0; }
  .approval-card { grid-template-columns: 42px 1fr; }
  .approval-decision, .approval-result { grid-column: 1 / -1; }
}

@media (max-width: 620px) {
  .header-meta { display: none; }
  .public-shell { padding-top: 16px; }
  .public-intro { min-height: 0; }
  .date-card { width: 100%; }
  .view-switcher { display: flex; width: 100%; }
  .view-tab { min-width: 0; flex: 1; padding-left: 8px; padding-right: 8px; }
  .view-panel { padding: 19px; }
  .notice-row { grid-template-columns: 1fr; }
  .change-card { grid-template-columns: 48px 1fr; }
  .change-card .tag { display: none; }
  .control-row { width: 100%; align-items: stretch; flex-direction: column; }
  .compact-select select { width: 100%; }
  .teacher-summary { flex-direction: column; gap: 8px; }
  .public-footer { gap: 18px; flex-direction: column; }
  .room-create-fields, .room-inline-form, .teacher-assignment-form { grid-template-columns: 1fr; }
  .room-notes-field, .room-inline-form small { grid-column: auto; }
  .room-transition-card form { grid-template-columns: 1fr; width: 100%; }
  .bell-page { padding-left: 16px; padding-right: 16px; }
  .bell-table-heading { display: none; }
  .bell-slot-row { grid-template-columns: 45px 1fr 1fr 30px; }
  .bell-break-value { display: none; }
  .bell-form-actions { align-items: stretch; flex-direction: column; }
  .bell-form-actions .bell-form-status { min-height: 12px; }
  .bell-form-actions button { width: 100%; }
  .bell-class-hour-fields { grid-template-columns: 1fr; }
  .curriculum-page { padding-left: 16px; padding-right: 16px; }
  .curriculum-form-grid, .curriculum-summary { grid-template-columns: 1fr; }
  .curriculum-filter-fields { align-items: stretch; flex-direction: column; }
  .curriculum-search, .curriculum-search input { width: 100%; min-width: 0; }
  .rules-page, .generation-page, .changes-page, .approvals-page { padding-left: 16px; padding-right: 16px; }
  .rules-summary, .changes-summary, .generation-stats, .linked-block-list { grid-template-columns: 1fr; }
  .block-editor-grid, .block-lines-editor, .event-form-grid { grid-template-columns: 1fr; }
  .block-lines-editor article { grid-template-columns: 1fr; }
  .approval-card { grid-template-columns: 1fr; }
  .approval-decision { grid-template-columns: 1fr; }
  .directory-create-panel { margin-left: 16px; margin-right: 16px; }
  .directory-create-grid, .profile-student-list { grid-template-columns: 1fr; }
  .profile-choice-form { grid-template-columns: 1fr; }
  .draft-preview-filters { align-items: stretch; flex-direction: column; }
  .draft-preview-filters select { width: 100%; }
  .draft-exception { grid-template-columns: 1fr; }
  .import-hero { align-items: flex-start; flex-direction: column; }.import-page { padding-left: 16px; padding-right: 16px; }.import-stats, #import-form { grid-template-columns: 1fr; }.import-file-label { grid-column: auto; }
}
.day-lesson-editable {
  cursor: pointer;
  transition: box-shadow .16s ease, transform .16s ease;
}

.day-lesson-editable:hover,
.day-lesson-editable:focus-visible {
  box-shadow: 0 0 0 2px rgba(35, 105, 85, .24);
  outline: none;
  transform: translateY(-1px);
}

.day-line-picker {
  border: 1px solid var(--border, #dce4df);
  border-radius: 12px;
  margin: 0;
  padding: 10px 12px;
}

.day-line-picker legend {
  color: var(--muted, #65736c);
  font-size: 12px;
  padding: 0 5px;
}

.day-line-option {
  align-items: center;
  display: flex !important;
  flex-direction: row !important;
  gap: 10px;
  padding: 7px 0;
}

.day-line-option input {
  flex: 0 0 auto;
  width: auto !important;
}

.day-line-option span {
  display: grid;
  gap: 2px;
}

.day-line-option small {
  color: var(--muted, #65736c);
}

.change-list-item {
  position: relative;
}

.change-list-item > .bell-remove-slot {
  position: absolute;
  right: 8px;
  top: 8px;
}
