:root {
    --bg: #f4f7fb;
    --surface: #ffffff;
    --ink: #142033;
    --muted: #637086;
    --line: #dfe6ef;
    --primary: #1457d9;
    --primary-dark: #0e43aa;
    --danger-bg: #fff0f0;
    --danger: #a52626;
    --warning-bg: #fff8df;
    --warning: #785c00;
    --success-bg: #eaf8f0;
    --success: #17613a;
    --soft: #f8fafc;
    --shell: #0c1c35;
    --shell-ink: #edf2f9;
    --shell-muted: #9db0c9;
    --sidebar-width: 260px;
    --sidebar-collapsed-width: 72px;
    --topbar-height: 64px;
    font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}
html[data-theme="dark"] {
    --bg: #0b1220;
    --surface: #121a2b;
    --ink: #e7eefc;
    --muted: #9aabc4;
    --line: #243247;
    --primary: #4d8dff;
    --primary-dark: #2f6fe0;
    --danger-bg: #3a1a1a;
    --danger: #ff8f8f;
    --warning-bg: #3a3014;
    --warning: #f0d27a;
    --success-bg: #143525;
    --success: #7ddea8;
    --soft: #172033;
    --shell: #070d18;
    --shell-ink: #edf2f9;
    --shell-muted: #8fa3bf;
}
* { box-sizing: border-box; }
body { margin: 0; background: var(--bg); color: var(--ink); }
a { color: inherit; }
.visually-hidden { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); border: 0; }
.mobile-only { display: none !important; }
.desktop-only { display: inline-flex !important; }
@media (max-width: 960px) {
    .mobile-only { display: inline-flex !important; }
    .desktop-only { display: none !important; }
}

.topbar { min-height: 68px; padding: 0 28px; display: none; align-items: center; justify-content: space-between; background: #0c1c35; color: white; box-shadow: 0 5px 24px rgba(12, 28, 53, .16); }
.brand a { text-decoration: none; font-weight: 750; letter-spacing: .01em; }
.topbar-actions { display: flex; gap: 16px; align-items: center; }
.topbar-actions form { margin: 0; }
.link-button { border: 0; background: transparent; color: inherit; cursor: pointer; font: inherit; padding: 0; }
.page-shell { max-width: 1180px; margin: 0 auto; padding: 34px 24px 60px; }
.guest-shell { min-height: calc(100vh - 72px); display: grid; place-items: center; }
.app-footer { padding: 16px 24px 22px; text-align: center; color: var(--muted); font-size: .82rem; border-top: 1px solid var(--line); background: transparent; }
.app-footer p { margin: 0; line-height: 1.5; }
.auth-card, .content-card, .hero-card, .module-card { background: var(--surface); border: 1px solid var(--line); border-radius: 18px; box-shadow: 0 14px 44px rgba(30, 52, 86, .08); }
.auth-card { width: min(440px, 100%); padding: 38px; }
.setup-card { width: min(560px, 100%); }
.setup-reasons { margin: 12px 0 0; padding-left: 1.2rem; }
.setup-migration-panel { margin: 0 0 20px; }
.setup-migration-list { margin: 8px 0 16px; padding-left: 1.1rem; max-height: 220px; overflow: auto; }
.setup-migration-list code { font-size: .92rem; }
.auth-card a.primary-button { display: inline-flex; text-decoration: none; }
.auth-heading h1, .content-card h1, .hero-card h1 { margin: 6px 0 10px; letter-spacing: -.025em; }
.auth-heading p, .content-card p, .hero-card p, .module-card p { color: var(--muted); line-height: 1.6; }
.eyebrow { color: var(--primary); font-weight: 750; font-size: .78rem; letter-spacing: .11em; text-transform: uppercase; }
.form-stack { display: grid; gap: 18px; margin-top: 26px; }
.form-stack label { display: grid; gap: 8px; font-weight: 650; font-size: .92rem; }
input, select { width: 100%; min-height: 46px; border: 1px solid var(--line); border-radius: 10px; padding: 10px 12px; font: inherit; background: var(--surface); color: var(--ink); }
/* Native choice controls must not inherit the full-width text-input geometry. */
input[type="checkbox"], input[type="radio"] {
    width: 18px;
    min-width: 18px;
    height: 18px;
    min-height: 18px;
    padding: 0;
    margin: 0;
    flex: 0 0 18px;
    accent-color: var(--primary);
}
.checkbox-field {
    display: flex !important;
    align-items: center;
    gap: 10px !important;
    min-height: 38px;
}
input:focus, select:focus { outline: 3px solid rgba(20, 87, 217, .14); border-color: var(--primary); }
.primary-button, .secondary-button { min-height: 46px; display: inline-flex; align-items: center; justify-content: center; border-radius: 10px; padding: 0 18px; font: inherit; font-weight: 750; cursor: pointer; text-decoration: none; }
.primary-button { border: 1px solid var(--primary); color: white; background: var(--primary); }
.primary-button:hover { background: var(--primary-dark); }
.secondary-button { border: 1px solid var(--line); background: var(--surface); color: var(--ink); }
.alert { margin: 20px 0; padding: 13px 15px; border-radius: 10px; line-height: 1.45; }
.alert-danger { background: var(--danger-bg); color: var(--danger); border: 1px solid #f0caca; }
.alert-warning { background: var(--warning-bg); color: var(--warning); border: 1px solid #eadb9d; }
.narrow-card { max-width: 620px; margin: 40px auto; padding: 34px; }
.hero-card { padding: 30px; display: flex; align-items: center; justify-content: space-between; gap: 24px; }
.module-grid { margin-top: 24px; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; }
.module-card { padding: 22px; }
.module-card h2 { margin: 8px 0; font-size: 1.08rem; }
.module-status { display: inline-block; padding: 5px 9px; border-radius: 999px; background: #edf3ff; color: var(--primary); font-size: .73rem; font-weight: 750; text-transform: uppercase; }
code, .debug-box { background: #edf1f6; border-radius: 6px; padding: 3px 6px; }
.debug-box { white-space: pre-wrap; overflow: auto; padding: 14px; font-size: .8rem; }
@media (max-width: 800px) {
    .module-grid { grid-template-columns: 1fr; }
    .hero-card { align-items: flex-start; flex-direction: column; }
    .topbar { padding: 14px 18px; align-items: flex-start; gap: 12px; }
    .topbar-actions { flex-wrap: wrap; justify-content: flex-end; }
    .user-name { display: none; }
}

/* Phase 2 administration and operations */
.alert-success { background: var(--success-bg); color: var(--success); border: 1px solid #bce5cd; }
.alert ul { margin: 0; padding-left: 20px; }
.page-heading { margin-bottom: 22px; display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; }
.page-heading h1 { margin: 6px 0 6px; letter-spacing: -.03em; }
.page-heading p { margin: 0; color: var(--muted); }
.settings-subnav {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px 14px;
    margin: 0 0 20px;
    padding: 10px 12px;
    border: 1px solid var(--line);
    border-radius: 12px;
    background: var(--surface);
}
.settings-subnav-hub {
    font-weight: 700;
    color: var(--ink);
    text-decoration: none;
    padding-right: 12px;
    border-right: 1px solid var(--line);
    white-space: nowrap;
}
.settings-subnav-hub:hover { color: var(--primary); }
.settings-subnav-links {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    flex: 1;
    min-width: 0;
}
.settings-subnav-link {
    display: inline-flex;
    align-items: center;
    padding: 6px 11px;
    border-radius: 999px;
    border: 1px solid transparent;
    color: var(--muted);
    text-decoration: none;
    font-size: .88rem;
    font-weight: 600;
}
.settings-subnav-link:hover {
    color: var(--ink);
    background: var(--bg, #f4f6fa);
}
.settings-subnav-link.is-active {
    color: var(--primary);
    border-color: color-mix(in srgb, var(--primary) 28%, transparent);
    background: color-mix(in srgb, var(--primary) 10%, transparent);
}
.content-card { padding: 24px; margin-bottom: 22px; }
.portal-useful-links { margin-top: 24px; }
.content-card h2 { margin: 0 0 18px; font-size: 1.12rem; }
.content-card h3 { margin: 22px 0 10px; }
.form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }
.form-grid label, .two-column label { display: grid; gap: 7px; font-weight: 650; font-size: .91rem; }
.guardian-cnic-row { display: flex; gap: 8px; align-items: stretch; }
.guardian-cnic-row input { flex: 1; min-width: 0; }
.guardian-cnic-row .secondary-button { flex: 0 0 auto; min-height: 42px; padding: 0 14px; white-space: nowrap; }
.text-success { color: #19643d; }
.text-danger { color: #932929; }
.full-width { grid-column: 1 / -1; }
textarea { width: 100%; border: 1px solid #cbd5e3; border-radius: 10px; padding: 11px 12px; font: inherit; resize: vertical; color: var(--ink); }
textarea:focus { outline: 3px solid rgba(20, 87, 217, .14); border-color: var(--primary); }
small { color: var(--muted); font-weight: 450; }
.form-actions { display: flex; gap: 12px; align-items: center; justify-content: flex-end; margin-top: 4px; }
.check-label { display: flex !important; grid-template-columns: none !important; align-items: center; gap: 10px !important; min-height: 46px; }
.check-label input { width: 18px; min-height: 18px; height: 18px; flex: 0 0 auto; }
.two-column { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.table-card { overflow-x: auto; }
table { width: 100%; border-collapse: collapse; min-width: 720px; }
th, td { padding: 13px 12px; border-bottom: 1px solid var(--line); text-align: left; vertical-align: top; }
th { color: #4d5a70; text-transform: uppercase; letter-spacing: .055em; font-size: .72rem; background: var(--soft); }
tbody tr:hover { background: #fbfdff; }
.empty-state { color: var(--muted); text-align: center; padding: 32px; }
.spaced-table { margin-top: 28px; }
.status, .badge { display: inline-flex; align-items: center; padding: 5px 9px; border-radius: 999px; background: #edf1f6; color: #46556b; font-size: .74rem; font-weight: 750; text-transform: capitalize; }
.status-active, .status-approved, .status-registered, .status-open { background: #e7f7ed; color: #19643d; }
.status-suspended, .status-inactive, .status-closed, .status-archived, .status-cancelled, .status-rejected { background: #fff0f0; color: #932929; }
.status-submitted, .status-under_review, .status-pending, .status-planned, .status-draft { background: #fff7da; color: #755900; }
.large-status { font-size: .85rem; padding: 8px 12px; }
.filter-bar { display: flex; gap: 12px; margin: 0 0 18px; align-items: flex-end; flex-wrap: wrap; }

/* List search bars: bare text/status controls as direct children */
.filter-bar > input[type="search"],
.filter-bar > input[type="text"],
.filter-bar > input:not([type]) {
  width: auto;
  flex: 1 1 220px;
  max-width: 420px;
  min-width: 180px;
}
.filter-bar > select {
  width: max-content;
  max-width: 280px;
  min-width: 0;
  flex: 0 0 auto;
  field-sizing: content;
}
.filter-bar > .search-select {
  width: max-content;
  max-width: 280px;
  flex: 0 0 auto;
}
.filter-bar > .search-select-input {
  width: auto;
  min-width: 140px;
}

/* Wide account/book pickers on ledger-style report bars */
.filter-bar.ledger-filter > select,
.filter-bar > select[name="account"],
.filter-bar > select[name="book"],
.filter-bar > select[name="bank"] {
  width: auto;
  flex: 1 1 280px;
  max-width: 420px;
  field-sizing: fixed;
}

/* Date wrappers as direct children (General Ledger / Cash Book style) */
.filter-bar > .date-pk {
  width: 210px;
  min-width: 190px;
  max-width: 240px;
  flex: 0 0 auto;
}

/* Report / labeled controls (From/To, As of, voucher type) */
.filter-bar > label {
  display: grid;
  gap: 6px;
  font-weight: 650;
  font-size: .91rem;
  flex: 0 0 auto;
  width: auto;
  min-width: 0;
}
.filter-bar > label > select {
  width: 200px;
  max-width: 220px;
  min-width: 160px;
  field-sizing: fixed;
}
.filter-bar > label > .date-pk,
.filter-bar > label > input[type="date"] {
  width: 210px;
  min-width: 190px;
  max-width: 240px;
}
/* Never stretch the calendar-button half of the Pakistani date control */
.filter-bar input.date-pk-native,
.filter-bar .date-pk-native {
  width: 40px !important;
  min-width: 40px !important;
  max-width: 40px !important;
  flex: none !important;
}
.filter-bar .date-pk-input {
  width: 100%;
  min-width: 0;
  max-width: none;
  flex: none;
}
.admin-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; }
.permission-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.permission-item { display: flex; align-items: flex-start; gap: 10px; padding: 12px; border: 1px solid var(--line); border-radius: 10px; background: var(--soft); }
.permission-item input { width: 17px; min-height: 17px; height: 17px; margin-top: 3px; }
.permission-item span { display: grid; gap: 3px; }
.detail-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; }
.detail-list { display: grid; grid-template-columns: minmax(120px, 36%) 1fr; gap: 0; margin: 0; }
.detail-list dt, .detail-list dd { padding: 10px 0; border-bottom: 1px solid var(--line); margin: 0; }
.detail-list dt { color: var(--muted); font-size: .87rem; }
.detail-list dd { font-weight: 600; }
.inline-form { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.inline-form input, .inline-form select { width: auto; min-width: 180px; }
.button-row { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; }
.danger-button { min-height: 46px; border: 1px solid #b42c2c; border-radius: 10px; padding: 0 18px; background: #b42c2c; color: white; font: inherit; font-weight: 750; cursor: pointer; }
.danger-text { color: #a52626; }
.sub-card { padding: 14px; background: var(--soft); border: 1px solid var(--line); border-radius: 12px; margin-bottom: 10px; }
.sub-card p { margin: 8px 0 0; }
.badge { margin-left: 6px; background: #e9f1ff; color: var(--primary); }

@media (max-width: 1050px) {
    .main-nav { order: 3; width: 100%; justify-content: flex-start; overflow-x: auto; flex-wrap: nowrap; }
}
@media (max-width: 800px) {
    .form-grid, .admin-grid, .permission-grid, .detail-grid { grid-template-columns: 1fr; }
    .full-width { grid-column: auto; }
    .page-heading, .filter-bar { flex-direction: column; align-items: stretch; }
    .filter-bar > input,
    .filter-bar > select,
    .filter-bar > .date-pk,
    .filter-bar > label,
    .filter-bar > label > select,
    .filter-bar > label > .date-pk,
    .filter-bar > label > input[type="date"] {
      max-width: none;
      width: 100%;
      min-width: 0;
      flex: none;
    }
    .filter-bar input.date-pk-native,
    .filter-bar .date-pk-native {
      width: 40px !important;
      min-width: 40px !important;
      max-width: 40px !important;
    }
    .two-column { grid-template-columns: 1fr; }
    .page-shell { padding: 24px 14px 50px; }
    .content-card { padding: 18px; }
}
.module-link { display: block; text-decoration: none; transition: transform .15s ease, box-shadow .15s ease; }
.module-link:hover { transform: translateY(-2px); box-shadow: 0 18px 48px rgba(30, 52, 86, .12); }

/* Phase 3 accounting */
.metric-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; margin-bottom: 24px; }
.metric-card { background: var(--surface); border: 1px solid var(--line); border-radius: 14px; padding: 20px; box-shadow: 0 10px 30px rgba(30,52,86,.06); }
.metric-card span { display: block; color: var(--muted); font-size: .82rem; margin-bottom: 8px; }
.metric-card strong { font-size: 1.45rem; letter-spacing: -.025em; }

/* Fee-bill workspace: keep frequent register work prominent and disclose bulk tools on demand. */
.fee-page-tabs{display:flex;gap:8px;margin:-4px 0 20px;padding:6px;border:1px solid var(--line);border-radius:14px;background:var(--surface);overflow-x:auto}
.fee-page-tabs>a{display:flex;align-items:center;gap:8px;padding:10px 14px;border-radius:9px;color:var(--ink);font-weight:700;text-decoration:none;white-space:nowrap}
.fee-page-tabs>a:hover,.fee-page-tabs>a:focus-visible,.fee-page-tabs>a.is-active{background:var(--soft)}.fee-page-tabs>a.is-active{color:var(--primary);box-shadow:inset 0 0 0 1px var(--line)}
.fee-tab-count{padding:3px 7px;border-radius:999px;background:var(--soft);color:var(--muted);font-size:.72rem}.fee-tab-count.is-warning{background:#fff0db;color:#8a4b08}
.fee-operation-panel{padding:0;overflow:hidden;scroll-margin-top:90px}.fee-operation-panel>summary{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:18px 20px;cursor:pointer;list-style:none}.fee-operation-panel>summary::-webkit-details-marker{display:none}.fee-operation-panel>summary>span:first-child{display:grid;gap:4px}.fee-operation-panel>summary small{color:var(--muted);font-weight:400}.fee-operation-panel[open]>summary{border-bottom:1px solid var(--line);background:var(--soft)}.fee-operation-panel[open]>summary .secondary-button{display:none}.fee-operation-body{padding:20px}.fee-operation-body>h2:first-child{margin-top:0}
.fee-register-heading{display:flex;align-items:end;justify-content:space-between;margin:30px 0 12px;scroll-margin-top:90px}.fee-register-heading h2{margin:.25rem 0}.fee-register-heading p{margin:0}
.manual-operation-options{margin-top:4px;border-top:1px solid var(--line);padding-top:12px}.manual-operation-options>summary{width:max-content;color:var(--muted);font-size:.88rem;font-weight:700;cursor:pointer}.manual-operation-options>div{margin-top:12px;padding:14px;border-radius:10px;background:var(--soft)}.manual-operation-options p{margin-top:0}
.payroll-run-tabs{margin-top:0}.payroll-employee-filter{margin-top:14px}.pagination{display:flex;align-items:center;justify-content:center;gap:14px;margin-top:18px}.pagination span{color:var(--muted);font-size:.88rem;font-weight:700}
.guardian-match-card{margin-top:16px;padding:16px;border:1px solid var(--line);border-radius:12px;background:var(--soft)}.guardian-match-card>p{margin:.35rem 0}.guardian-match-card ul{margin:.5rem 0 1rem;padding-left:1.25rem}.guardian-match-card small{display:block;margin-top:10px;color:var(--muted);font-weight:700}
.guardian-household-choices{display:grid;gap:8px;margin:8px 0 14px}.guardian-household-choices label{display:flex;align-items:flex-start;gap:9px;padding:10px;border:1px solid var(--line);border-radius:9px;background:var(--surface);cursor:pointer}.guardian-household-choices input{margin-top:3px}
.guardian-diff-table{width:100%;margin:8px 0 12px}.guardian-diff-table td{padding:7px;border-bottom:1px solid var(--line)}.guardian-diff-table td:first-child{text-transform:capitalize;font-weight:700}.guardian-master-update{display:flex;gap:8px;margin:12px 0;flex-wrap:wrap}.guardian-master-update input{flex:1 1 260px}
.fee-bill-filter{padding:14px;border:1px solid var(--line);border-radius:14px;background:var(--surface)}
.fee-more-filters{flex:1 1 100%}.fee-more-filters>summary{width:max-content;min-height:42px;padding:10px 34px 10px 12px;border:1px solid var(--line);border-radius:9px;background:var(--surface);cursor:pointer;list-style:none;white-space:nowrap}.fee-more-filters>summary::-webkit-details-marker{display:none}.fee-more-filters>div{display:grid;grid-template-columns:repeat(2,minmax(220px,1fr));gap:12px;margin-top:12px;padding:14px;border:1px solid var(--line);border-radius:12px;background:var(--soft)}.fee-more-filters label{display:grid;gap:6px}.fee-more-filters select{width:100%}
html[data-theme="dark"] .fee-tab-count.is-warning{background:#4b321b;color:#ffd49b}
@media(max-width:760px){.fee-operation-panel>summary{align-items:flex-start}.fee-more-filters{width:100%}.fee-more-filters>summary{width:100%}.fee-more-filters>div{grid-template-columns:1fr;margin-top:8px}.fee-bill-filter>input,.fee-bill-filter>select,.fee-bill-filter>button{width:100%}}
.callout-card { border-left: 5px solid var(--primary); }
.option-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px 14px; }
.period-action { display: grid; grid-template-columns: minmax(140px, .8fr) minmax(180px, 1fr) minmax(190px, 1fr) auto; gap: 8px; min-width: 720px; }
.period-action input, .period-action select { min-height: 40px; }
.numeric { text-align: right; font-variant-numeric: tabular-nums; }
.numeric-input { text-align: right; min-width: 105px; }
.compact-input { margin-top: 7px; min-height: 38px; }
.voucher-lines table { min-width: 1180px; }
.voucher-lines select { min-width: 210px; }
.total-row { background: var(--soft); }
.workflow-grid { display: grid; gap: 14px; align-items: start; }
.workflow-grid form { margin: 0; }
.ledger-filter select { max-width: 420px; }
.accounting-links { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.bulk-options-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); max-width: 720px; }
.status-posted, .status-reopened { background: #e7f7ed; color: #19643d; }
.status-approved { background: #e9f1ff; color: #1457d9; }
.status-reversed { background: #f2eaff; color: #65329a; }
@media (max-width: 1000px) {
    .metric-grid, .accounting-links { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .period-action { grid-template-columns: 1fr; min-width: 260px; }
}
@media (max-width: 650px) {
    .metric-grid, .accounting-links, .option-grid { grid-template-columns: 1fr; }
}
.mini-status-form { display: grid; gap: 6px; margin-top: 10px; }
.mini-status-form input, .mini-status-form button { min-height: 36px; font-size: .8rem; }
.row-check { width: 18px; height: 18px; min-height: 18px; }
button:disabled { opacity: .55; cursor: not-allowed; }

/* Phase 4.2 client-presentable forms, searchable selects, photos, and print actions */
.checkbox-row { display:flex !important; align-items:center; gap:10px !important; min-height:46px; font-weight:650; }
.checkbox-row input { width:18px; min-height:18px; height:18px; flex:0 0 auto; }
.form-grid > .primary-button, .form-grid > .secondary-button { align-self:end; }
.compact { margin-bottom:12px; }
.form-section-title { grid-column:1/-1; margin:6px 0 -2px; padding-bottom:8px; border-bottom:1px solid var(--line); }
.action-cell { white-space:nowrap; }
.table-actions { display:flex; gap:7px; align-items:center; flex-wrap:wrap; }
.small-button { min-height:34px; padding:0 11px; border-radius:8px; font-size:.82rem; }
.student-photo, .admission-photo {
    width: 132px;
    height: 170px;
    border-radius: 4px;
    object-fit: fill;
    object-position: center center;
    border: 1px solid var(--line);
    background: #eef2f7;
    display: block;
}
.student-photo[hidden], .admission-photo[hidden], .organization-logo[hidden],
.photo-placeholder[hidden], .logo-placeholder[hidden] { display: none !important; }
.photo-placeholder {
    width: 132px;
    height: 170px;
    border-radius: 4px;
    display: grid;
    place-items: center;
    text-align: center;
    padding: 12px;
    color: var(--muted);
    background: #eef2f7;
    border: 1px dashed #aeb9c9;
}
.profile-header { display:flex; gap:22px; align-items:flex-start; }
.photo-upload { display:grid; gap:10px; justify-items:start; }
.print-actions { display:flex; gap:10px; align-items:center; flex-wrap:wrap; }

/* Admission form guided workflow; the original single form remains the no-JS fallback. */
.admission-stepper { display:none; }
.admission-step-actions { display:flex;align-items:center;justify-content:flex-end;gap:12px;margin-top:4px; }
.admission-step-actions [data-admission-back],.admission-step-actions [data-admission-next],.admission-step-actions [data-admission-progress],.admission-step-actions [data-employee-back],.admission-step-actions [data-employee-next],.admission-step-actions [data-employee-progress] { display:none; }
.admission-step-actions [hidden],.admission-form-step[hidden],form[data-admission-form] [data-admission-step][hidden] { display:none !important; }
form[data-admission-form].is-stepped .admission-stepper,form[data-employee-form].is-stepped .admission-stepper { position:sticky;top:72px;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:20px;padding:12px 16px;border:1px solid var(--line);border-radius:14px;background:color-mix(in srgb,var(--surface) 94%,transparent);box-shadow:0 8px 24px rgba(20,32,51,.08);backdrop-filter:blur(10px); }
.admission-step-list { display:flex;align-items:center;gap:6px;min-width:0; }
.admission-step-list button { display:flex;align-items:center;gap:7px;padding:8px 10px;border:0;border-radius:9px;background:transparent;color:var(--muted);font:inherit;font-size:.84rem;cursor:pointer;white-space:nowrap; }
.admission-step-list button span { display:grid;width:24px;height:24px;place-items:center;border:1px solid var(--line);border-radius:50%;background:var(--surface);font-size:.76rem;font-weight:750; }
.admission-step-list button.is-active { background:var(--soft);color:var(--primary);font-weight:750; }
.admission-step-list button.is-active span { border-color:var(--primary);background:var(--primary);color:#fff; }
.admission-step-list button.is-complete span { border-color:var(--success);background:var(--success-bg);color:var(--success); }
.admission-show-all { flex:0 0 auto;color:var(--primary);font-weight:700; }
form[data-admission-form].is-stepped .admission-step-actions,form[data-employee-form].is-stepped .admission-step-actions { position:sticky;bottom:12px;z-index:20;padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:color-mix(in srgb,var(--surface) 94%,transparent);box-shadow:0 8px 28px rgba(20,32,51,.14);backdrop-filter:blur(10px); }
form[data-admission-form].is-stepped .admission-step-actions [data-admission-back],form[data-admission-form].is-stepped .admission-step-actions [data-admission-next],form[data-employee-form].is-stepped .admission-step-actions [data-employee-back],form[data-employee-form].is-stepped .admission-step-actions [data-employee-next] { display:inline-flex; }
form[data-admission-form].is-stepped .admission-step-actions [data-admission-progress],form[data-employee-form].is-stepped .admission-step-actions [data-employee-progress] { display:inline;margin-right:auto;color:var(--muted);font-size:.86rem;font-weight:650; }
.admission-review-grid { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px; }
.admission-review-grid>div { display:grid;gap:4px;padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--soft); }
.admission-review-grid span { color:var(--muted);font-size:.78rem; }
.admission-review-grid strong { overflow-wrap:anywhere; }
@media(max-width:900px){form[data-admission-form].is-stepped .admission-stepper,form[data-employee-form].is-stepped .admission-stepper{top:64px;align-items:flex-start;overflow-x:auto}.admission-step-list button{padding:7px}.admission-step-list button:not(.is-active){font-size:0}.admission-step-list button span{font-size:.76rem}.admission-show-all{align-self:center}.admission-review-grid{grid-template-columns:1fr}}

.search-select-native { position:absolute !important; width:1px !important; height:1px !important; min-height:1px !important; opacity:0 !important; pointer-events:none; }
.search-select { position:relative; width:100%; font-weight:400; }
.search-select-input, .select-filter-input { width:100%; min-height:46px; border:1px solid #cbd5e3; border-radius:10px; padding:10px 38px 10px 12px; font:inherit; background:#fff; color:var(--ink); }
.search-select::after { content:'⌄'; position:absolute; right:13px; top:10px; color:var(--muted); pointer-events:none; font-size:1.2rem; }
.search-select-input:focus, .select-filter-input:focus { outline:3px solid rgba(20,87,217,.14); border-color:var(--primary); }
.search-select-menu { display:none; position:absolute; z-index:1000; left:0; right:0; top:calc(100% + 5px); max-height:260px; overflow:auto; background:#fff; border:1px solid #cbd5e3; border-radius:10px; box-shadow:0 16px 36px rgba(20,32,51,.16); padding:5px; }
.search-select.is-open .search-select-menu { display:block; }
.search-select-option { width:100%; border:0; background:#fff; color:var(--ink); padding:10px 11px; border-radius:7px; text-align:left; cursor:pointer; font:inherit; }
.search-select-option:hover, .search-select-option.is-selected { background:#edf3ff; color:var(--primary-dark); }
.search-select-option.is-placeholder { color:var(--muted); }
.search-select-empty { padding:12px; color:var(--muted); }
.select-filter-input { margin-bottom:7px; }
select[multiple] { min-height:128px; }

.fees-configuration-grid { align-items:start; }
.fees-option-card { overflow:visible; }
.fees-option-card .form-grid { align-items:end; }
.fees-option-card textarea { min-height:88px; }
.fees-table td { vertical-align:middle; }

@media (max-width:700px) {
    .profile-header { flex-direction:column; }
    .student-photo, .admission-photo, .photo-placeholder { width: 112px; height: 144px; }
}

/* Phase 4.2 controlled CRUD editors */
.record-grid { display:grid; gap:12px; }
.record-editor { border:1px solid var(--line); border-radius:12px; background:#fff; overflow:visible; }
.record-editor > summary { list-style:none; cursor:pointer; padding:14px 16px; display:flex; align-items:center; justify-content:space-between; gap:14px; background:#fafcff; border-radius:12px; }
.record-editor > summary::-webkit-details-marker { display:none; }
.record-editor[open] > summary { border-bottom:1px solid var(--line); border-radius:12px 12px 0 0; }
.record-editor form { margin:0; padding:16px; }
.status-chip { display:inline-flex; align-items:center; border-radius:999px; padding:5px 9px; background:#edf3ff; color:var(--primary-dark); font-size:.75rem; font-weight:750; white-space:nowrap; }
#other-guardian-section.is-emphasized { outline:2px solid rgba(20,87,217,.18); outline-offset:2px; }
.compact-form { margin-top:0; }
.three-column { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; }
.four-column { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; }
.action-row { display:flex; align-items:center; gap:10px; flex-wrap:wrap; grid-column:1/-1; }
.danger-zone { border-top:1px dashed #ecc7c7; padding-top:12px !important; }
.card-heading-row { display:flex; justify-content:space-between; gap:18px; align-items:flex-start; }
.muted { color:var(--muted); }
.policy-line-editors { margin:16px 0 22px; }
@media (max-width:900px) { .three-column,.four-column { grid-template-columns:1fr 1fr; } }
@media (max-width:620px) { .three-column,.four-column { grid-template-columns:1fr; } .record-editor > summary { align-items:flex-start; flex-direction:column; } }
.organization-logo { width:160px; height:100px; object-fit:contain; border:1px solid var(--line); border-radius:12px; background:#fff; padding:8px; }
.logo-placeholder { width:160px; height:100px; display:grid; place-items:center; border:1px dashed #aeb9c9; border-radius:12px; color:var(--muted); background:#f7f9fc; }
.inline-form .search-select { min-width:220px; flex:1 1 220px; }
.form-grid .search-select, .form-stack .search-select { min-width:0; }
.inline-form .student-search { flex:1 1 280px; min-width:220px; }
.student-search .search-select-option.is-selected { background:#edf3ff; }

/* Bulk bill print — multi recipient (email To-style) */
.bulk-print-stack { display: flex; flex-direction: column; gap: 20px; max-width: 920px; }
.bulk-print-card { max-width: none; width: 100%; }
.bulk-print-label { display:block; font-weight:600; margin-bottom:8px; }
.recipient-field {
    position: relative;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px;
    min-height: 52px;
    padding: 8px 10px;
    border: 1px solid #cbd5e3;
    border-radius: 10px;
    background: #fff;
}
.recipient-field:focus-within {
    outline: 3px solid rgba(20,87,217,.14);
    border-color: var(--primary);
}
.recipient-chips { display: contents; }
.recipient-chip {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    max-width: 100%;
    padding: 5px 8px 5px 10px;
    border-radius: 999px;
    background: #edf3ff;
    color: var(--primary-dark, #0f3e9d);
    font-size: .92rem;
    line-height: 1.2;
}
.recipient-chip-label {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    max-width: 280px;
}
.recipient-chip-remove {
    border: 0;
    background: transparent;
    color: inherit;
    cursor: pointer;
    font: inherit;
    line-height: 1;
    padding: 0 2px;
    opacity: .75;
}
.recipient-chip-remove:hover { opacity: 1; }
.recipient-input {
    flex: 1 1 180px;
    min-width: 160px;
    border: 0;
    outline: none;
    font: inherit;
    padding: 6px 4px;
    background: transparent;
    color: var(--ink);
}
.recipient-menu {
    display: none;
    position: absolute;
    z-index: 1000;
    left: 0;
    right: 0;
    top: calc(100% + 5px);
    max-height: 280px;
    overflow: auto;
    background: #fff;
    border: 1px solid #cbd5e3;
    border-radius: 10px;
    box-shadow: 0 16px 36px rgba(20,32,51,.16);
    padding: 5px;
}
.recipient-field.is-open .recipient-menu { display: block; }
.recipient-menu .search-select-option {
    width: 100%;
    border: 0;
    background: #fff;
    color: var(--ink);
    padding: 10px 11px;
    border-radius: 7px;
    text-align: left;
    cursor: pointer;
    font: inherit;
    display: block;
}
.recipient-menu .search-select-option:hover,
.recipient-menu .search-select-option.is-selected {
    background: #edf3ff;
    color: var(--primary-dark, #0f3e9d);
}
.recipient-menu .search-select-empty { padding: 12px; color: var(--muted); }
.bulk-print-hint { margin-top: 10px; }
.bulk-print-actions { margin-top: 16px; align-items: center; flex-wrap: wrap; gap: 10px; }
#bulk-print-message.alert { margin-top: 12px; }

/* Pakistani date entry DD-MM-YYYY */
.date-pk { position:relative; display:grid; grid-template-columns:minmax(0,1fr) 40px; gap:6px; align-items:center; width:100%; }
.date-pk-input { width:100%; min-height:46px; border:1px solid #cbd5e3; border-radius:10px; padding:10px 12px; font:inherit; background:#fff; color:var(--ink); font-variant-numeric:tabular-nums; letter-spacing:.02em; }
.date-pk-input:focus { outline:3px solid rgba(20,87,217,.14); border-color:var(--primary); }
.date-pk-native {
    -webkit-appearance: none;
    appearance: none;
    width:40px;
    min-width:40px;
    max-width:40px;
    min-height:46px;
    padding:0;
    margin:0;
    border:1px solid #cbd5e3;
    border-radius:10px;
    background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%23637086' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='18' rx='2'/%3E%3Cline x1='16' y1='2' x2='16' y2='6'/%3E%3Cline x1='8' y1='2' x2='8' y2='6'/%3E%3Cline x1='3' y1='10' x2='21' y2='10'/%3E%3C/svg%3E") center / 18px 18px no-repeat;
    color:transparent;
    cursor:pointer;
    overflow:hidden;
    position:relative;
}
.date-pk-native:hover,
.date-pk-native:focus {
    border-color:var(--primary);
    outline:3px solid rgba(20,87,217,.14);
}
.date-pk-native::-webkit-datetime-edit,
.date-pk-native::-webkit-datetime-edit-fields-wrapper,
.date-pk-native::-webkit-datetime-edit-text,
.date-pk-native::-webkit-datetime-edit-month-field,
.date-pk-native::-webkit-datetime-edit-day-field,
.date-pk-native::-webkit-datetime-edit-year-field,
.date-pk-native::-webkit-inner-spin-button,
.date-pk-native::-webkit-clear-button {
    display:none !important;
    color:transparent;
    width:0;
    max-width:0;
    padding:0;
    margin:0;
}
.date-pk-native::-webkit-calendar-picker-indicator {
    position:absolute;
    inset:0;
    width:100%;
    height:100%;
    margin:0;
    padding:0;
    opacity:0;
    cursor:pointer;
}
.inline-form .date-pk {
    width: 210px;
    min-width: 190px;
    max-width: 240px;
    flex: 0 1 210px;
}
.inline-form .date-pk-input {
    min-width: 0;
    width: 100%;
}
.inline-form input.date-pk-native,
.form-grid input.date-pk-native,
.form-stack input.date-pk-native,
.workflow-grid input.date-pk-native {
    width: 40px !important;
    min-width: 40px !important;
    max-width: 40px !important;
    flex: 0 0 40px;
}

/* App shell: sidebar + topbar */
.app-frame {
    min-height: 100vh;
    display: grid;
    grid-template-columns: var(--sidebar-width) minmax(0, 1fr);
    transition: grid-template-columns .2s ease;
}
.app-frame.is-collapsed {
    grid-template-columns: var(--sidebar-collapsed-width) minmax(0, 1fr);
}
.app-sidebar {
    position: sticky;
    top: 0;
    height: 100vh;
    display: flex;
    flex-direction: column;
    background: var(--shell);
    color: var(--shell-ink);
    border-right: 1px solid rgba(255,255,255,.06);
    z-index: 40;
}
.sidebar-brand {
    display: flex;
    gap: 12px;
    align-items: center;
    padding: 18px 16px;
    min-height: var(--topbar-height);
    border-bottom: 1px solid rgba(255,255,255,.08);
}
.sidebar-brand-mark {
    width: 40px;
    height: 40px;
    border-radius: 12px;
    display: grid;
    place-items: center;
    background: linear-gradient(145deg, #3d7dff, #1457d9);
    font-weight: 800;
    flex: 0 0 auto;
}
.sidebar-brand-text {
    min-width: 0;
    display: grid;
    gap: 2px;
}
.sidebar-org {
    font-size: .78rem;
    color: var(--shell-muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.sidebar-product {
    font-weight: 750;
    letter-spacing: .01em;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.sidebar-nav {
    flex: 1;
    overflow: auto;
    padding: 12px 10px 18px;
    display: grid;
    gap: 4px;
    align-content: start;
}
.nav-item {
    width: 100%;
    display: flex;
    align-items: center;
    gap: 12px;
    min-height: 42px;
    padding: 0 12px;
    border: 0;
    border-radius: 10px;
    background: transparent;
    color: var(--shell-muted);
    text-decoration: none;
    font: inherit;
    font-weight: 600;
    cursor: pointer;
    text-align: left;
}
.nav-item:hover {
    background: rgba(255,255,255,.07);
    color: var(--shell-ink);
}
.nav-item.is-active {
    background: rgba(77, 141, 255, .22);
    color: #fff;
    box-shadow: inset 3px 0 0 #4d8dff;
}
.nav-icon {
    width: 20px;
    height: 20px;
    flex: 0 0 auto;
    display: grid;
    place-items: center;
}
.nav-icon svg { width: 18px; height: 18px; display: block; }
.nav-label { flex: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.nav-caret {
    width: 8px;
    height: 8px;
    border-right: 2px solid currentColor;
    border-bottom: 2px solid currentColor;
    transform: rotate(-45deg);
    transition: transform .18s ease;
    opacity: .7;
}
.nav-group.is-expanded > .nav-parent .nav-caret {
    transform: rotate(45deg);
}
.nav-children {
    display: none;
    gap: 2px;
    padding: 2px 0 8px 12px;
}
.nav-group.is-expanded > .nav-children {
    display: grid;
}
.nav-children[hidden] {
    display: none !important;
}
.nav-child {
    min-height: 36px;
    padding-left: 44px;
    font-weight: 550;
    font-size: .9rem;
}
.nav-group.is-search-hidden,
.nav-item.is-search-hidden {
    display: none !important;
}
.sidebar-collapse-btn {
    margin: 8px 10px 14px;
    display: flex;
    align-items: center;
    gap: 12px;
    min-height: 40px;
    padding: 0 12px;
    border: 1px solid rgba(255,255,255,.1);
    border-radius: 10px;
    background: transparent;
    color: var(--shell-muted);
    cursor: pointer;
    font: inherit;
}
.app-frame.is-collapsed .sidebar-brand-text,
.app-frame.is-collapsed .nav-label,
.app-frame.is-collapsed .nav-caret,
.app-frame.is-collapsed .nav-children,
.app-frame.is-collapsed .sidebar-collapse-btn .nav-label {
    display: none !important;
}
.app-frame.is-collapsed .nav-item,
.app-frame.is-collapsed .sidebar-collapse-btn {
    justify-content: center;
    padding-inline: 0;
}
.app-frame.is-collapsed .sidebar-brand { justify-content: center; }
.app-main { min-width: 0; display: flex; flex-direction: column; min-height: 100vh; }
.app-topbar {
    position: sticky;
    top: 0;
    z-index: 30;
    min-height: var(--topbar-height);
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 0 18px;
    background: color-mix(in srgb, var(--surface) 92%, transparent);
    backdrop-filter: blur(10px);
    border-bottom: 1px solid var(--line);
}
.topbar-left, .topbar-right { display: flex; align-items: center; gap: 10px; flex: 0 0 auto; }
.topbar-center { flex: 1; min-width: 0; display: flex; justify-content: center; }
.topbar-search input { min-height: 40px; background: var(--soft); width: 100%; }
.icon-button {
    width: 40px;
    height: 40px;
    border: 1px solid var(--line);
    border-radius: 10px;
    background: var(--surface);
    color: var(--ink);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
}
.icon-button svg { width: 18px; height: 18px; }
.notification-menu{position:relative}.notification-menu>summary{list-style:none}.notification-menu>summary::-webkit-details-marker{display:none}.notification-bell{position:relative}.notification-badge{position:absolute;top:-5px;right:-7px;min-width:18px;height:18px;padding:0 4px;border-radius:999px;background:#c62828;color:#fff;font-size:.65rem;font-weight:800;line-height:18px;text-align:center}.notification-menu-panel{position:absolute;z-index:80;right:0;top:calc(100% + 10px);width:min(380px,calc(100vw - 24px));max-height:440px;overflow:auto;border:1px solid var(--border);border-radius:14px;background:var(--surface);box-shadow:0 18px 50px rgba(24,39,75,.18)}.notification-menu-heading{display:flex;justify-content:space-between;align-items:center;padding:14px 16px;border-bottom:1px solid var(--border)}.notification-menu-item{display:grid;gap:4px;padding:12px 16px;border-bottom:1px solid var(--border);color:var(--text);text-decoration:none}.notification-menu-item span{font-size:.8rem;color:var(--muted)}.notification-menu-item.is-unread{background:var(--primary-soft)}.notification-menu-empty{padding:22px 16px;color:var(--muted);text-align:center}.notification-list{display:grid}.notification-row{display:grid;grid-template-columns:10px minmax(0,1fr) auto;gap:14px;align-items:start;padding:18px 4px;border-bottom:1px solid var(--border)}.notification-row h2{margin:0 0 5px;font-size:1rem}.notification-row p{margin:0 0 7px}.notification-row.is-unread{background:var(--primary-soft)}.notification-dot{width:8px;height:8px;margin-top:7px;border-radius:50%;background:transparent}.notification-row.is-unread .notification-dot{background:var(--primary)}
html[data-theme="light"] [data-theme-toggle] .icon-sun { display: none !important; }
html[data-theme="light"] [data-theme-toggle] .icon-moon { display: none !important; }
html[data-theme="dark"] [data-theme-toggle] .icon-sun { display: none !important; }
html[data-theme="dark"] [data-theme-toggle] .icon-moon { display: block; }
html[data-theme="light"] [data-theme-toggle]::before { content: "\2600"; display: block; font-size: 21px; line-height: 1; }
.scope-pill {
    text-decoration: none;
    border: 1px solid var(--line);
    background: var(--soft);
    color: var(--ink);
    padding: 8px 12px;
    border-radius: 999px;
    font-size: .86rem;
    max-width: 220px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.user-menu { position: relative; }
.user-menu-trigger {
    list-style: none;
    display: flex;
    align-items: center;
    gap: 10px;
    min-height: 40px;
    padding: 4px 10px 4px 4px;
    border: 1px solid var(--line);
    border-radius: 999px;
    background: var(--surface);
    cursor: pointer;
}
.user-menu-trigger::-webkit-details-marker { display: none; }
.user-avatar {
    width: 30px;
    height: 30px;
    border-radius: 999px;
    display: grid;
    place-items: center;
    background: var(--primary);
    color: white;
    font-weight: 750;
    font-size: .85rem;
}
.user-name { font-weight: 650; font-size: .9rem; color: var(--ink); }
.user-menu-panel {
    position: absolute;
    right: 0;
    top: calc(100% + 8px);
    width: 220px;
    padding: 8px;
    border: 1px solid var(--line);
    border-radius: 12px;
    background: var(--surface);
    box-shadow: 0 18px 40px rgba(0,0,0,.16);
    display: grid;
    gap: 4px;
    z-index: 50;
}
.user-menu-heading { padding: 8px 10px 10px; border-bottom: 1px solid var(--line); margin-bottom: 4px; }
.user-menu-panel a,
.user-menu-panel button {
    display: block;
    width: 100%;
    text-align: left;
    border: 0;
    background: transparent;
    color: var(--ink);
    text-decoration: none;
    padding: 10px 12px;
    border-radius: 8px;
    font: inherit;
    cursor: pointer;
}
.user-menu-panel a:hover,
.user-menu-panel button:hover { background: var(--soft); }
.page-shell { max-width: 1180px; margin: 0 auto; padding: 28px 24px 48px; width: 100%; }
.guest-shell { min-height: calc(100vh - 72px); display: grid; place-items: center; }
.app-footer { padding: 16px 24px 22px; text-align: center; color: var(--muted); font-size: .82rem; border-top: 1px solid var(--line); }
.app-footer p { margin: 0; line-height: 1.5; }
.sidebar-backdrop {
    position: fixed;
    inset: 0;
    background: rgba(8, 14, 28, .45);
    z-index: 35;
}
.pwa-install-banner {
    position: fixed;
    left: 16px;
    right: 16px;
    bottom: 16px;
    z-index: 60;
    display: flex;
    gap: 16px;
    align-items: center;
    justify-content: space-between;
    padding: 16px 18px;
    border: 1px solid var(--line);
    border-radius: 14px;
    background: var(--surface);
    box-shadow: 0 18px 50px rgba(0,0,0,.2);
}
.pwa-install-banner[hidden] {
    display: none !important;
}
.pwa-install-banner p { margin: 4px 0 0; color: var(--muted); }
.topbar-search-results {
    position: absolute;
    left: 0;
    right: 0;
    top: calc(100% + 6px);
    max-height: 320px;
    overflow: auto;
    margin: 0;
    padding: 6px;
    list-style: none;
    border: 1px solid var(--line);
    border-radius: 12px;
    background: var(--surface);
    box-shadow: 0 16px 36px rgba(0,0,0,.16);
    z-index: 70;
}
.topbar-search-results[hidden] { display: none !important; }
.topbar-search-results button {
    width: 100%;
    border: 0;
    background: transparent;
    color: var(--ink);
    text-align: left;
    padding: 10px 12px;
    border-radius: 8px;
    font: inherit;
    cursor: pointer;
}
.topbar-search-results button:hover,
.topbar-search-results button.is-active {
    background: var(--soft);
}
.topbar-search-results .search-result-meta {
    display: block;
    color: var(--muted);
    font-size: .8rem;
    margin-top: 2px;
}
.topbar-search { position: relative; width: min(420px, 100%); }
html[data-theme="dark"] .auth-card,
html[data-theme="dark"] .content-card,
html[data-theme="dark"] .hero-card,
html[data-theme="dark"] .module-card {
    box-shadow: 0 14px 44px rgba(0, 0, 0, .28);
}
html[data-theme="dark"] th { background: var(--soft); color: var(--muted); }
html[data-theme="dark"] tbody tr:hover { background: rgba(255,255,255,.03); }
html[data-theme="dark"] textarea { background: var(--surface); border-color: var(--line); color: var(--ink); }
@media (max-width: 960px) {
    .app-frame,
    .app-frame.is-collapsed {
        grid-template-columns: 1fr;
    }
    .app-sidebar {
        position: fixed;
        left: 0;
        top: 0;
        width: min(var(--sidebar-width), 86vw);
        transform: translateX(-105%);
        transition: transform .2s ease;
        box-shadow: 18px 0 40px rgba(0,0,0,.28);
    }
    .app-frame.is-drawer-open .app-sidebar {
        transform: translateX(0);
    }
    .app-frame.is-collapsed .sidebar-brand-text,
    .app-frame.is-collapsed .nav-label,
    .app-frame.is-collapsed .nav-caret,
    .app-frame.is-collapsed .sidebar-collapse-btn .nav-label {
        display: initial;
    }
    .app-frame.is-collapsed .nav-children {
        display: none !important;
    }
    .app-frame.is-collapsed.is-drawer-open .nav-group.is-expanded > .nav-children {
        display: grid !important;
    }
    .app-frame.is-collapsed .nav-item,
    .app-frame.is-collapsed .sidebar-collapse-btn {
        justify-content: flex-start;
        padding-inline: 12px;
    }
    .sidebar-collapse-btn { display: none; }
    .user-name { display: none; }
    .topbar-center { display: none; }
    .pwa-install-banner { flex-direction: column; align-items: stretch; }
}

.audit-json {
    margin: 0;
    padding: 12px;
    overflow: auto;
    max-height: 420px;
    font-size: 12px;
    line-height: 1.45;
    white-space: pre-wrap;
    word-break: break-word;
    background: rgba(15, 23, 42, 0.04);
    border: 1px solid rgba(15, 23, 42, 0.08);
    border-radius: 8px;
}

.pre-line {
    white-space: pre-line;
}

/* Feed-first student portal */
.portal-welcome{display:flex;justify-content:space-between;gap:24px;align-items:center;padding:24px 28px;margin-bottom:24px;border:1px solid #dfe5f2;border-radius:18px;background:linear-gradient(120deg,#f3f7ff,#fff8e8)}
.portal-welcome h1,.portal-section-heading h2,.portal-widget h2{margin:.2rem 0}.portal-news{margin-bottom:26px}.portal-section-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:14px}.portal-news-rail{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(230px,1fr);gap:14px;overflow-x:auto;padding:2px 2px 12px;scroll-snap-type:x mandatory}.portal-news-card{display:flex;min-height:210px;flex-direction:column;padding:18px;border:1px solid #dfe3ec;border-radius:16px;background:#fff;color:inherit;text-decoration:none;scroll-snap-align:start}.portal-news-card.is-pinned{background:linear-gradient(145deg,#eef2ff,#fff)}.portal-news-card h3{margin:14px 0 8px}.portal-news-card p{flex:1}.portal-card-meta{display:flex;justify-content:space-between;text-transform:uppercase;font-size:.76rem;color:var(--color-primary,#1457d9)}.portal-dashboard-grid{display:grid;grid-template-columns:minmax(210px,280px) minmax(420px,1fr) minmax(220px,300px);gap:20px;align-items:start}.portal-side-stack,.portal-feed{display:grid;gap:18px}.portal-widget,.portal-post{padding:18px;border:1px solid #dfe3ec;border-radius:16px;background:var(--surface,#fff);box-shadow:0 4px 18px rgba(30,45,75,.05)}.portal-money{display:block;font-size:1.55rem;margin:10px 0}.portal-mini-row,.portal-event-row,.portal-useful-row{display:flex;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px solid #e8ebf1;color:inherit;text-decoration:none}.portal-event-row time{font-weight:700;color:var(--color-primary,#1457d9)}.portal-event-row span,.portal-useful-row{display:grid}.portal-event-row small,.portal-useful-row small,.portal-post-header small{display:block;color:#6b7280}.portal-filter-row{display:flex;gap:8px;overflow:auto}.portal-filter-row a{padding:8px 18px;border-radius:999px;background:#eef0f5;color:inherit;text-decoration:none;white-space:nowrap}.portal-filter-row a.is-active{background:var(--color-primary,#1457d9);color:#fff}.portal-post-header{display:grid;grid-template-columns:44px 1fr auto;align-items:center;gap:10px}.portal-publisher-avatar{display:grid;width:44px;height:44px;place-items:center;border-radius:50%;background:#e6eafe;color:#253fa8;font-weight:800}.portal-post-type,.portal-subject-pill{padding:5px 10px;border-radius:999px;background:#dff6f5;color:#176b71;font-size:.75rem}.portal-subject-pill{display:inline-block;margin-top:14px;background:#eef0f5;color:#4b5563}.portal-post-body{line-height:1.55}.portal-media-grid{display:grid;grid-template-columns:2fr 1fr;grid-auto-rows:150px;gap:6px;margin:14px 0;overflow:hidden;border-radius:14px}.portal-media-grid>a{position:relative;min-height:100px;background:#eef0f4}.portal-media-grid>a:first-child{grid-row:span 2}.portal-media-grid img{width:100%;height:100%;object-fit:cover}.portal-media-more{position:absolute;inset:0;display:grid;place-items:center;background:#0008;color:#fff;font-size:1.7rem}.portal-file-card{display:flex;align-items:center;justify-content:center;padding:15px}.portal-reaction-summary{display:flex;gap:15px;padding:10px 0;color:#4b5563;border-bottom:1px solid #e5e7eb}.portal-reactions{display:flex;justify-content:space-around;gap:4px;padding-top:8px}.portal-reactions button,.portal-mark-read button{border:0;background:transparent;padding:9px;color:#5e6572;cursor:pointer}.portal-reactions button.is-active{color:var(--color-primary,#1457d9);font-weight:700}.portal-mark-read{text-align:right}.portal-quick-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.portal-quick-grid a{padding:12px;border-radius:10px;background:#f2f5fb;text-align:center;text-decoration:none}.portal-empty{text-align:center;padding:40px}
@media(max-width:1180px){.portal-dashboard-grid{grid-template-columns:220px minmax(0,1fr)}.portal-dashboard-grid>.portal-side-stack:last-child{grid-column:1/-1;grid-template-columns:repeat(3,1fr)}}
@media(max-width:760px){.portal-welcome{align-items:flex-start;flex-direction:column}.portal-dashboard-grid{grid-template-columns:1fr}.portal-dashboard-grid>.portal-side-stack:last-child{grid-column:auto;grid-template-columns:1fr}.portal-dashboard-grid>.portal-side-stack:first-child{order:2}.portal-feed{order:1}.portal-dashboard-grid>.portal-side-stack:last-child{order:3}.portal-news-rail{grid-auto-columns:82%}.portal-post{padding:14px}.portal-post-header{grid-template-columns:40px 1fr}.portal-post-type{grid-column:2}.portal-media-grid{grid-auto-rows:110px}.portal-reactions{overflow-x:auto;justify-content:flex-start}.portal-reactions button{white-space:nowrap}}

/* Student-only application shell */
.portal-shell{min-height:100vh;background:var(--bg);color:var(--ink)}
.portal-topbar{position:sticky;top:0;z-index:50;display:grid;grid-template-columns:minmax(190px,1fr) auto minmax(190px,1fr);align-items:center;gap:22px;min-height:68px;padding:8px 28px;border-bottom:1px solid rgba(255,255,255,.18);background:#273eb7;color:#fff;box-shadow:0 4px 20px rgba(22,35,110,.18)}
.portal-brand{display:flex;align-items:center;gap:10px;color:#fff;text-decoration:none;min-width:0}.portal-brand-mark{display:grid;width:38px;height:38px;place-items:center;border-radius:12px;background:#fff2;font-size:1.15rem;font-weight:800}.portal-brand span:last-child{display:grid;min-width:0}.portal-brand strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.portal-brand small{color:#dce3ff}
.portal-primary-nav{display:flex;align-items:center;gap:5px}.portal-primary-nav>a,.portal-more>summary{display:block;padding:10px 13px;border-radius:10px;color:#e9edff;text-decoration:none;white-space:nowrap;cursor:pointer;list-style:none}.portal-primary-nav>a:hover,.portal-primary-nav>a.is-active,.portal-more>summary:hover,.portal-more>summary.is-active{background:#fff2;color:#fff}.portal-more{position:relative}.portal-more>summary::-webkit-details-marker{display:none}.portal-more>div{position:absolute;top:calc(100% + 10px);right:0;display:grid;min-width:190px;padding:8px;border:1px solid var(--line);border-radius:12px;background:var(--surface,#fff);color:var(--ink);box-shadow:0 14px 35px #10182826}.portal-more>div a{padding:10px;border-radius:8px;color:var(--ink);text-decoration:none}.portal-more>div a:hover,.portal-more>div a:focus-visible{background:var(--soft);color:var(--ink)}
html[data-theme="dark"] .portal-news-card{border-color:var(--line);background:var(--surface)}
html[data-theme="dark"] .portal-news-card.is-pinned{background:linear-gradient(145deg,#172554,var(--surface))}
html[data-theme="dark"] .portal-welcome{border-color:var(--line);background:linear-gradient(120deg,#14213a,#2a2418)}
html[data-theme="dark"] .portal-widget,html[data-theme="dark"] .portal-post{border-color:var(--line);background:var(--surface);box-shadow:0 4px 18px #0005}
html[data-theme="dark"] .portal-mini-row,html[data-theme="dark"] .portal-event-row,html[data-theme="dark"] .portal-useful-row,html[data-theme="dark"] .portal-reaction-summary{border-color:var(--line)}
html[data-theme="dark"] .portal-filter-row a,html[data-theme="dark"] .portal-quick-grid a,html[data-theme="dark"] .portal-subject-pill{background:var(--soft);color:var(--ink)}
html[data-theme="dark"] .portal-post-type{background:#123b40;color:#8ee3e8}
html[data-theme="dark"] .portal-event-row small,html[data-theme="dark"] .portal-useful-row small,html[data-theme="dark"] .portal-post-header small{color:var(--muted)}
html[data-theme="dark"] .portal-publisher-avatar{background:#24345f;color:#c7d2fe}
html[data-theme="dark"] .portal-media-grid>a{background:var(--soft)}
html[data-theme="dark"] .portal-reaction-summary,html[data-theme="dark"] .portal-reactions button,html[data-theme="dark"] .portal-mark-read button{color:var(--muted)}
html[data-theme="dark"] .portal-reactions button:hover,html[data-theme="dark"] .portal-mark-read button:hover{color:var(--ink);background:var(--soft)}
html[data-theme="dark"] .portal-reactions button.is-active{color:var(--primary)}
html[data-theme="dark"] .portal-more>div,html[data-theme="dark"] .portal-mobile-nav{border-color:var(--line);background:var(--surface);color:var(--ink);box-shadow:0 14px 35px #0008}
html[data-theme="dark"] .portal-footer{color:var(--muted)}
html[data-theme="dark"]{color-scheme:dark}
html[data-theme="light"]{color-scheme:light}
.portal-shell .stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px;margin:0 0 22px}
.portal-shell .stat-card{display:grid;gap:7px;padding:18px;border:1px solid var(--line);border-radius:14px;background:var(--surface);box-shadow:0 4px 18px rgba(30,45,75,.05)}
.portal-shell .stat-card span{color:var(--muted);font-size:.85rem}
.portal-shell .stat-card strong{font-size:1.35rem}
html[data-theme="dark"] .portal-shell .stat-card{box-shadow:0 4px 18px #0005}
html[data-theme="dark"] .portal-shell .status,html[data-theme="dark"] .portal-shell .badge{background:var(--soft);color:var(--muted)}
html[data-theme="dark"] .portal-shell .status-active,html[data-theme="dark"] .portal-shell .status-approved,html[data-theme="dark"] .portal-shell .status-registered,html[data-theme="dark"] .portal-shell .status-open{background:var(--success-bg);color:var(--success)}
html[data-theme="dark"] .portal-shell .status-suspended,html[data-theme="dark"] .portal-shell .status-inactive,html[data-theme="dark"] .portal-shell .status-closed,html[data-theme="dark"] .portal-shell .status-archived,html[data-theme="dark"] .portal-shell .status-cancelled,html[data-theme="dark"] .portal-shell .status-rejected{background:var(--danger-bg);color:var(--danger)}
html[data-theme="dark"] .portal-shell .status-submitted,html[data-theme="dark"] .portal-shell .status-under_review,html[data-theme="dark"] .portal-shell .status-pending,html[data-theme="dark"] .portal-shell .status-planned,html[data-theme="dark"] .portal-shell .status-draft{background:var(--warning-bg);color:var(--warning)}
html[data-theme="dark"] .portal-shell .alert-success{border-color:var(--success)}
html[data-theme="dark"] .portal-shell .alert-danger{border-color:var(--danger)}
html[data-theme="dark"] .portal-shell .alert-warning{border-color:var(--warning)}
html[data-theme="dark"] .portal-shell input,html[data-theme="dark"] .portal-shell select,html[data-theme="dark"] .portal-shell textarea{background:var(--surface);border-color:var(--line);color:var(--ink)}
html[data-theme="dark"] .portal-shell tbody tr:hover{background:rgba(255,255,255,.03)}
html[data-theme="dark"] .portal-shell code{background:var(--soft);color:var(--ink)}
.portal-account{display:flex;align-items:center;justify-content:flex-end;gap:8px}.portal-account .icon-button{color:#fff}.portal-account .user-menu-trigger{color:#fff}.portal-page-shell{max-width:1440px;padding-top:28px}.portal-footer{margin-top:20px}.portal-mobile-nav{display:none}
@media(max-width:1050px){.portal-topbar{grid-template-columns:auto 1fr auto;padding-inline:16px}.portal-brand span:last-child{display:none}.portal-primary-nav{justify-content:center}.portal-primary-nav>a,.portal-more>summary{padding-inline:10px}.portal-account .user-name{display:none}}
@media(max-width:700px){.portal-topbar{position:sticky;grid-template-columns:1fr auto;min-height:58px;padding:7px 12px}.portal-brand span:last-child{display:grid}.portal-primary-nav{display:none}.portal-page-shell{padding:18px 12px 92px}.portal-account .user-name{display:none}.portal-mobile-nav{position:fixed;right:0;bottom:0;left:0;z-index:60;display:grid;grid-template-columns:repeat(5,1fr);padding:7px 5px max(7px,env(safe-area-inset-bottom));border-top:1px solid var(--line);background:var(--surface,#fff);box-shadow:0 -5px 20px #10182818}.portal-mobile-nav a{display:grid;gap:2px;justify-items:center;color:var(--muted);font-size:.69rem;text-decoration:none}.portal-mobile-nav a span{font-size:1.15rem}.portal-mobile-nav a.is-active{color:var(--color-primary,#1457d9);font-weight:700}.portal-footer{display:none}}

/* Governed document/card designer */
.designer-shell{display:grid;grid-template-columns:220px minmax(420px,1fr) 260px;gap:16px;align-items:start;margin-bottom:20px}.designer-panel{display:grid;gap:10px;padding:16px;border:1px solid var(--line);border-radius:14px;background:var(--surface)}.designer-panel h2{margin:4px 0}.designer-tool-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px}.designer-tool-grid button,.designer-side-tabs button{padding:9px;border:1px solid var(--line);border-radius:8px;background:var(--soft);cursor:pointer}.designer-side-tabs{display:grid;grid-template-columns:1fr 1fr;gap:6px}.designer-side-tabs button.is-active{background:var(--primary);color:#fff}.designer-stage{min-height:520px;padding:18px;overflow:auto;border:1px solid var(--line);border-radius:14px;background:#dfe3e9}.designer-ruler{margin-bottom:12px;color:#4b5563;font-size:.8rem}.designer-canvas{position:relative;margin:auto;background:#fff;box-shadow:0 8px 30px #10182830;touch-action:none}.designer-element{position:absolute;display:flex;align-items:center;justify-content:center;overflow:hidden;border:1px dashed transparent;cursor:move;user-select:none;text-align:center}.designer-element:hover,.designer-element.is-selected{border-color:#2563eb;background:#2563eb10}.designer-element.type-photo{border:1px solid #aab2c0;background:#eef0f4;color:#737b88}.designer-element.type-rectangle{border:2px solid #27364b}.designer-element.type-line{border:0;border-top:2px solid #27364b}.designer-element.type-qr,.designer-element.type-barcode{font-family:monospace;font-size:18px}.designer-properties .danger-button{width:100%}@media(max-width:1100px){.designer-shell{grid-template-columns:190px minmax(380px,1fr)}.designer-properties{grid-column:1/-1}}@media(max-width:720px){.designer-shell{grid-template-columns:1fr}.designer-stage{min-height:400px}.designer-properties{grid-column:auto}}

/* Issued-document register and lifecycle */
.issued-document-filter{padding:16px 18px;border:1px solid var(--line);border-radius:14px;background:var(--surface)}
.issued-document-filter label:first-child{flex:1 1 300px}.issued-document-filter label:first-child input{width:100%;min-width:240px}.issued-document-filter .button-row{margin-left:auto}
.issued-document-table table{min-width:1040px}.issued-document-number{display:inline-block;font-weight:750;white-space:nowrap}.table-secondary{display:block;margin-top:4px;line-height:1.35;overflow-wrap:anywhere}
.status-issued{background:#e7f7ed;color:#19643d}.status-replaced{background:#f2eaff;color:#65329a}.status-revoked{background:#fff0f0;color:#932929}.status-expired{background:#edf1f6;color:#58667a}
.issued-document-summary .content-card{margin-bottom:0}.issued-document-actions{margin-top:22px}.issued-document-actions .form-stack{margin-top:0;align-content:start}.issued-document-actions .form-actions{margin-top:auto}.issued-document-danger{border-color:#efc7c7}
@media(max-width:800px){.issued-document-filter .button-row{width:100%;margin-left:0}.issued-document-filter .button-row>*{flex:1 1 auto;justify-content:center}.issued-document-summary .content-card{margin-bottom:0}}

/* Public document verification */
.document-verification-card{max-width:680px}.verification-mark{display:grid;width:72px;height:72px;margin:0 auto 18px;place-items:center;border-radius:50%;font-size:2rem;font-weight:850}.verification-mark.is-valid{background:#e7f7ed;color:#19643d}.verification-mark.is-invalid{background:#fff0f0;color:#932929}.verification-details{margin-top:24px}.verification-notice{margin:24px 0 0;padding:14px;border-radius:10px;background:var(--soft);color:var(--muted);font-size:.88rem;line-height:1.5}
.artifact-checksum{display:inline-block;max-width:100%;overflow-wrap:anywhere;font-size:.78rem}
.document-asset-grid{grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}.document-asset-card{display:grid;gap:12px}.document-asset-preview{display:grid;height:150px;place-items:center;overflow:hidden;border:1px solid var(--line);border-radius:12px;background:repeating-conic-gradient(#f5f6f8 0 25%,#fff 0 50%) 50%/18px 18px}.document-asset-preview img{max-width:100%;max-height:100%;object-fit:contain}.document-asset-card h2,.document-asset-card p{margin:0}.document-asset-card form{margin-top:auto}

/* Interactive document designer */
.designer-commandbar{position:sticky;top:8px;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:16px;padding:10px 12px;border:1px solid var(--line);border-radius:14px;background:color-mix(in srgb,var(--surface) 94%,transparent);box-shadow:0 8px 24px #10182814;backdrop-filter:blur(10px)}.designer-view-tabs,.designer-zoom,.designer-layer-buttons{display:flex;gap:6px;align-items:center}.designer-view-tabs button,.designer-zoom button,.designer-layer-buttons button,.designer-commandbar .button-row button{min-height:36px;padding:0 11px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink);cursor:pointer}.designer-view-tabs button.is-active{border-color:var(--primary);background:var(--primary);color:#fff}.designer-commandbar button:disabled{opacity:.45;cursor:not-allowed}.designer-zoom output{min-width:48px;text-align:center;font-size:.82rem;font-weight:700}.designer-layer-buttons{display:grid;grid-template-columns:1fr 1fr}.designer-layer-buttons button{font-size:.78rem}.compact-grid{gap:8px}.designer-element.is-selected{overflow:visible}.designer-resize{position:absolute;width:10px;height:10px;border:1px solid #fff;border-radius:2px;background:var(--primary);box-shadow:0 0 0 1px var(--primary)}.handle-nw{top:-5px;left:-5px;cursor:nwse-resize}.handle-ne{top:-5px;right:-5px;cursor:nesw-resize}.handle-sw{bottom:-5px;left:-5px;cursor:nesw-resize}.handle-se{right:-5px;bottom:-5px;cursor:nwse-resize}.designer-code-view{margin-top:0}.designer-code-view textarea{min-height:540px;resize:vertical;background:#111827;color:#dbeafe;border-color:#334155;border-radius:12px;font:13px/1.55 Consolas,"Courier New",monospace;tab-size:2}.designer-code-view textarea:focus{border-color:#60a5fa;outline:3px solid #2563eb40}.page-heading.compact{margin-bottom:14px}.page-heading.compact h2{margin-bottom:4px}
@media(max-width:800px){.designer-commandbar{position:static;align-items:stretch;flex-direction:column}.designer-commandbar>*,.designer-view-tabs,.designer-zoom{justify-content:center}.designer-code-view textarea{min-height:420px}}

/* Shared final normalization: keep native checkboxes/radios compact everywhere. */
input[type="checkbox"], input[type="radio"] {
    width: 18px;
    min-width: 18px;
    max-width: 18px;
    height: 18px;
    min-height: 18px;
    max-height: 18px;
    padding: 0;
    margin: 0;
    flex: 0 0 18px;
}

/* Comprehensive document designer */
.designer-shell{grid-template-columns:250px minmax(480px,1fr) 320px}.designer-panel{max-height:calc(100vh - 150px);overflow:auto}.designer-panel h3{margin:10px 0 2px;font-size:.82rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.designer-panel details{padding:8px 0;border-bottom:1px solid var(--line)}.designer-panel summary{cursor:pointer;font-weight:700;margin-bottom:8px}.designer-canvas.show-grid{background-color:#fff;background-image:linear-gradient(to right,#94a3b826 1px,transparent 1px),linear-gradient(to bottom,#94a3b826 1px,transparent 1px)}.designer-element{box-sizing:border-box;white-space:pre-wrap;padding:1px}.designer-element.is-locked{cursor:not-allowed}.designer-element.is-locked::after{content:'🔒';position:absolute;right:2px;top:1px;font-size:10px}.designer-element.type-rounded_rectangle,.designer-element.type-circle,.designer-element.type-ellipse,.designer-element.type-triangle,.designer-element.type-arrow{border-style:solid}.designer-properties input[type=color]{width:100%;height:38px;padding:3px}.designer-properties textarea{min-height:58px}.designer-tool-grid button:hover{border-color:var(--primary);color:var(--primary)}@media(max-width:1250px){.designer-shell{grid-template-columns:220px minmax(420px,1fr)}.designer-properties{grid-column:1/-1;max-height:none}}@media(max-width:760px){.designer-shell{grid-template-columns:1fr}.designer-panel{max-height:none}}
.designer-context-menu{position:fixed;z-index:1000;display:none;width:230px;max-height:calc(100vh - 16px);overflow:auto;padding:6px;border:1px solid var(--line);border-radius:10px;background:var(--surface);box-shadow:0 16px 45px #10182838}.designer-context-menu.is-open{display:block}.designer-context-menu>div{display:grid}.designer-context-menu>div[hidden]{display:none!important}.designer-context-menu button{display:flex;min-height:34px;align-items:center;justify-content:space-between;padding:6px 9px;border:0;border-radius:6px;background:transparent;color:var(--ink);text-align:left;cursor:pointer}.designer-context-menu button:hover:not(:disabled){background:var(--soft);color:var(--primary)}.designer-context-menu button:disabled{opacity:.4;cursor:not-allowed}.designer-context-menu hr{width:100%;margin:5px 0;border:0;border-top:1px solid var(--line)}.designer-context-menu kbd{color:var(--muted);font:11px/1.2 Consolas,monospace}

