.button{min-height:40px;border:1px solid transparent;border-radius:9px;padding:0 13px;display:inline-flex;align-items:center;justify-content:center;gap:7px;font-weight:600;font-size:12px;transition:all var(--transition);white-space:nowrap}.button--primary{background:var(--color-primary);color:#fff}.button--primary:hover{background:var(--color-primary-hover);transform:translateY(-1px)}.button--accent{background:var(--color-accent);color:#30270c;box-shadow:0 5px 12px rgba(212,167,44,.18)}.button--accent:hover{background:#c79a22;transform:translateY(-1px)}.button--secondary{border-color:var(--color-border);background:#fff;color:#344054}.button--secondary:hover{border-color:#c8ced8;background:#f9fafb}.button--ghost{background:transparent;color:var(--color-text-secondary);padding-inline:9px}.button--ghost:hover{background:#f2f4f7;color:var(--color-text)}.button--danger{background:var(--color-danger);color:#fff}.button--whatsapp{background:#16866e;color:#fff}.button--whatsapp:hover{background:#146f5c;transform:translateY(-1px)}.choice-quick-actions{display:flex;gap:6px;margin-right:8px}.mini-action--quick-positive{color:var(--color-success);border-color:#bfe3cb}.mini-action--quick-positive.is-active{background:var(--color-success);color:#fff;border-color:var(--color-success)}.mini-action--quick-negative{color:var(--color-danger);border-color:#f3c6c6}.mini-action--quick-negative.is-active{background:var(--color-danger);color:#fff;border-color:var(--color-danger)}.mini-action--quick-waiting{color:#9a6a00;border-color:#f3dfb0}.mini-action--quick-waiting.is-active{background:var(--color-warning);color:#fff;border-color:var(--color-warning)}.icon-button{width:40px;height:40px;border:1px solid var(--color-border);border-radius:9px;display:grid;place-items:center;background:#fff;color:#475467;font-size:18px}.icon-button:hover{background:#f8fafc;color:var(--color-text)}.notification-button{position:relative}.notification-button i{position:absolute;right:7px;top:7px;width:7px;height:7px;border:2px solid #fff;border-radius:50%;background:var(--color-danger)}.avatar{width:36px;height:36px;flex:0 0 36px;border-radius:10px;display:grid;place-items:center;background:#edf1f7;color:var(--color-primary);font-size:11px;font-weight:700}.avatar--profile{background:var(--color-primary);color:#fff}.stat-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:15px 16px;display:flex;align-items:center;gap:12px;min-width:0}.stat-card__icon{width:34px;height:34px;flex:0 0 34px;border-radius:9px;display:grid;place-items:center;background:#eef2f7;color:var(--color-primary);font-size:16px}.stat-card[data-tone="gold"] .stat-card__icon{background:var(--color-accent-soft);color:#9a6a00}.stat-card[data-tone="blue"] .stat-card__icon{background:#e8f0ff;color:var(--color-info)}.stat-card[data-tone="orange"] .stat-card__icon{background:#fff1de;color:var(--color-warning)}.stat-card[data-tone="green"] .stat-card__icon{background:#e8f7ee;color:var(--color-success)}.stat-card strong,.stat-card span{display:block}.stat-card strong{font-size:20px;line-height:1.1;letter-spacing:-.03em}.stat-card span{font-size:10px;color:var(--color-text-secondary);margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.badge{display:inline-flex;align-items:center;gap:5px;max-width:160px;border-radius:999px;padding:5px 8px;font-size:10px;font-weight:600;white-space:nowrap}.badge::before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor}.badge--new,.badge--info{background:#eaf1ff;color:#245bb8}.badge--consult,.badge--review{background:#eeeafb;color:#6941c6}.badge--waiting,.badge--payment{background:#fff4e5;color:#b35f00}.badge--selection,.badge--docs{background:#e9f6f4;color:#18766b}.badge--presented{background:var(--color-primary);color:#fff;font-weight:700}.badge--selected,.badge--contract{background:#e7f5f9;color:#176b87}.badge--sent{background:#edf2ff;color:#3e54a3}.badge--accepted{background:#e8f7ee;color:#15803d}.badge--deferred{background:#f6f0e8;color:#8a5a16}.badge--rejected,.badge--closed{background:#fcebec;color:#b42318}.filter-chip{border:1px solid #c8d8fa;background:#f3f7ff;color:#315a9b;border-radius:999px;padding:5px 8px 5px 10px;display:inline-flex;align-items:center;gap:6px;font-size:10px;font-weight:600}.filter-chip button{width:16px;height:16px;border:0;background:transparent;color:inherit;padding:0;border-radius:50%}.filter-count{min-width:18px;height:18px;border-radius:999px;display:grid;place-items:center;background:var(--color-primary);color:#fff;font-size:9px}.state-panel{min-height:340px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:40px}.state-panel p{margin-top:10px;color:var(--color-text-secondary)}.state-panel--error span,.confirm-icon{width:44px;height:44px;display:grid;place-items:center;border-radius:50%;background:#fcebec;color:var(--color-danger);font-size:20px;font-weight:700;margin-bottom:14px}.state-panel--error h3{font-size:16px}.state-panel--error .button{margin-top:18px}.spinner{width:32px;height:32px;border:3px solid #e4e7ec;border-top-color:var(--color-primary);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.modal-layer{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:24px}.modal-backdrop{position:absolute;inset:0;background:rgba(10,20,38,.58);backdrop-filter:blur(3px)}.modal{position:relative;z-index:1;width:min(880px,100%);max-height:calc(100vh - 48px);display:flex;flex-direction:column;background:#fff;border-radius:18px;box-shadow:var(--shadow-modal);overflow:hidden}.modal--confirm{width:min(420px,100%);align-items:center;text-align:center;padding:28px}.modal--confirm h2{font-size:19px}.modal--confirm p{color:var(--color-text-secondary);line-height:1.6;margin:10px 0 22px}.modal__header{display:flex;justify-content:space-between;gap:20px;padding:22px 24px 18px;border-bottom:1px solid var(--color-border)}.modal__header h2{font-size:21px;margin:3px 0 6px}.modal__header>div>p:last-child{color:var(--color-text-secondary);font-size:12px}.modal__body{padding:20px 24px;overflow-y:auto}.modal__footer{padding:16px 24px;border-top:1px solid var(--color-border);display:flex;align-items:center;justify-content:space-between;gap:12px;background:#fafbfc}.modal__footer>div,.confirm-actions{display:flex;gap:8px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.form-grid__full{grid-column:1/-1}.form-grid label em{color:var(--color-danger);font-style:normal}.form-grid textarea{resize:vertical;min-height:84px}.form-grid label.has-error input,.form-grid label.has-error select{border-color:var(--color-danger);box-shadow:0 0 0 3px rgba(220,38,38,.08)}.field-error{display:block;min-height:14px;margin-top:3px;color:var(--color-danger);font-size:9px;font-weight:500}.toast-region{position:fixed;right:22px;bottom:22px;z-index:150;display:grid;gap:8px}.toast{width:min(360px,calc(100vw - 32px));display:flex;align-items:flex-start;gap:10px;padding:13px 14px;border:1px solid var(--color-border);border-left:3px solid var(--color-success);border-radius:10px;background:#fff;box-shadow:0 12px 32px rgba(16,24,40,.14);animation:toast-in .22s ease}.toast--warning{border-left-color:var(--color-warning)}.toast--danger{border-left-color:var(--color-danger)}.toast strong,.toast span{display:block}.toast strong{font-size:12px}.toast span{font-size:10px;color:var(--color-text-secondary);margin-top:3px}.toast button{margin-left:auto;border:0;background:transparent;color:#98a2b3}@keyframes toast-in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.quick-add-panel{margin-top:10px;padding:14px;border:1px dashed var(--color-border);border-radius:10px;background:#f9fafb}.quick-add-panel .form-grid{gap:10px}.quick-add-panel__actions{display:flex;justify-content:flex-end;gap:8px;margin-top:10px}
/* Session 22, §7/§10 — per-row review-status quick-set control on the Programs table (see
   programs-page.js reviewStatusSelectHtml()); sized to sit comfortably inside a dense table cell
   next to .mini-action buttons without changing row height. */
.mini-select{height:32px;font-size:10px;border:1px solid var(--color-border);border-radius:8px;padding:0 6px;background:#fff;color:#344054;max-width:150px}
.choice-group{margin-top:18px}.choice-group:first-child{margin-top:0}.choice-group h3{display:flex;align-items:center;gap:5px;margin:0 0 8px;font-size:12px;color:var(--color-text)}.choice-group h3 span{color:var(--color-text-secondary);font-weight:500}.choice-row__more{position:relative}.choice-row__more>summary{list-style:none;cursor:pointer;min-width:32px;justify-content:center;font-size:18px;line-height:1}.choice-row__more>summary::-webkit-details-marker{display:none}.choice-row__more-menu{position:absolute;right:0;top:calc(100% + 5px);z-index:5;width:220px;padding:10px;border:1px solid var(--color-border);border-radius:10px;background:#fff;box-shadow:0 12px 28px rgba(16,24,40,.15)}.choice-row__more-menu label{display:block;margin-bottom:8px;font-size:10px;font-weight:600;color:var(--color-text-secondary)}.choice-row__more-menu select{width:100%;margin-top:5px}.choice-row__more-menu button{width:100%;justify-content:flex-start;margin-top:4px}.choice-row__admin-meta{margin:8px 0 0;font-size:9px;line-height:1.45;color:var(--color-text-secondary)}
.applicant-hero__more{position:relative}.applicant-hero__more>summary{list-style:none;cursor:pointer;min-width:40px;padding-inline:10px;font-size:18px}.applicant-hero__more>summary::-webkit-details-marker{display:none}.applicant-hero__more-menu{position:absolute;right:0;top:calc(100% + 6px);z-index:8;min-width:170px;padding:6px;border:1px solid var(--color-border);border-radius:10px;background:#fff;box-shadow:0 12px 28px rgba(16,24,40,.15)}.applicant-hero__more-menu .mini-action{width:100%;justify-content:flex-start}.admission-case-header__more{position:relative}.admission-case-header__more>summary{list-style:none;cursor:pointer}.admission-case-header__more>summary::-webkit-details-marker{display:none}.admission-case-header__more-menu{position:absolute;right:0;top:calc(100% + 6px);z-index:7;display:grid;min-width:190px;padding:6px;border:1px solid var(--color-border);border-radius:10px;background:#fff;box-shadow:0 12px 28px rgba(16,24,40,.15)}.admission-case-header__more-menu .mini-action{justify-content:flex-start}
.documents-summary-strip{margin:0 0 var(--space-3);padding:11px 13px;border:1px solid var(--color-border);border-radius:10px;background:var(--color-surface-muted);font-size:11px;color:var(--color-text-secondary)}.documents-summary-strip span{margin:0 4px;color:var(--color-border-strong)}
body.modal-open{overflow:hidden}.view-toggle{display:inline-flex;gap:6px}.detail-value{margin-top:3px;font-size:13px;color:var(--color-text)}
/* Session 22 acceptance correction — "MULTIPLE EDUCATION INTENTS" (New Applicant modal's
   İstiqamət/İxtisas picker + "Selected interests" list — see modal.js mountCanonicalIntentFields()
   and index.html's #formIntentsList). Reuses .quick-add-panel's existing visual language (dashed
   border, #f9fafb surface) rather than inventing a new container style. */
.intent-picker{display:grid;grid-template-columns:1fr 1fr auto;gap:12px;align-items:end}
.intent-picker__add{height:40px;white-space:nowrap}
/* SESSION 28.5, §10 — .intent-picker had no narrow-viewport rule anywhere (unlike
   .discovery-extra-filters__grid, which already collapses to 1fr under 768px). At modal/mobile
   widths the fixed 3-column "1fr 1fr auto" squeezes the İstiqamət/İxtisas searchable-selects below
   their dropdown panel's own 240px min-width, so an open dropdown could bleed sideways into the
   neighboring column/button instead of staying inside its own field — this is the layout half of the
   dropdown-overflow bug reported in §10 (the other half, panel height, is fixed in
   .searchable-select__panel itself). Stacking to one column removes that width constraint entirely. */
@media (max-width:640px){.intent-picker{grid-template-columns:1fr}.intent-picker__add{width:100%}}
.intent-list{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:6px}
.intent-list:empty{display:none}
.intent-list__item{display:flex;align-items:center;gap:10px;padding:9px 12px;border:1px solid var(--color-border);border-radius:9px;background:#fff}
.intent-list__star{color:#cbd2dc;font-size:14px;flex:0 0 auto}
.intent-list__item--primary .intent-list__star{color:var(--color-accent)}
.intent-list__text{flex:1 1 auto;font-size:12px;color:var(--color-text);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.intent-list__text small{display:block;color:var(--color-text-secondary);font-size:10px;margin-top:2px}
.intent-list__remove{border:0;background:transparent;color:var(--color-danger);font-size:11px;font-weight:600;padding:4px 6px;flex:0 0 auto}
.intent-list__remove:hover{text-decoration:underline}
/* SESSION 23 LIVE ACCEPTANCE FIX — the saved-intents list is now the AUTHORITATIVE visible state
   (rendered before the add-picker, see index.html's own comment on the reorder). These two labels
   distinguish "what's already saved" from "add another" so the list is never mistaken for
   decorative filler next to the picker. Same small-caps caption style as .discovery-budget__title
   elsewhere in this codebase — not a new visual language. */
.intent-section-label{margin:10px 0 4px;font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--color-text-secondary)}
.intent-section-label--add{margin-top:16px}
/* Shown in #formIntentsList while edit mode's initial GET /canonical-intents is in flight, so the
   list is never a blank/empty moment an operator could mistake for "no saved interests" — see
   modal.js mountCanonicalIntentFields()'s docblock on why this was root cause E, not a data-loss
   bug (the data was always there; the async gap plus the old below-the-picker position was what
   made it easy to miss). */
.intent-list__loading{padding:9px 12px;font-size:12px;color:var(--color-text-secondary);font-style:italic;border:1px dashed var(--color-border);border-radius:9px}
/* SESSION 25 LIVE ACCEPTANCE FIX, §6 — the third explicit state (loading/empty/non-empty — see
   modal.js renderList()'s own docblock). Same dashed-border "placeholder row" language as
   .intent-list__loading immediately above so the two read as siblings, but NOT italic — this is a
   settled fact ("nothing added yet"), not a transient in-progress state. */
.intent-list__empty{padding:9px 12px;font-size:12px;color:var(--color-text-secondary);border:1px dashed var(--color-border);border-radius:9px}
.finance-page__kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--space-3);margin-bottom:var(--space-4)}.finance-page__kpis>article{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-3);min-height:112px}.finance-page__kpis>article>span{display:block;color:var(--color-text-muted);font-size:var(--font-size-sm);margin-bottom:var(--space-2)}.finance-page__kpis>article>strong{font-size:var(--font-size-xl)}.finance-page__kpis small{display:block;color:var(--color-text-muted);margin-top:var(--space-2)}.finance-page__money-list{list-style:none;margin:0;padding:0;display:grid;gap:2px}.finance-page__money-list li{display:flex;justify-content:space-between;gap:var(--space-2)}.finance-page__empty-value{color:var(--color-text-muted)}.finance-page__filters{display:flex;flex-wrap:wrap;align-items:end;gap:var(--space-3);margin-bottom:var(--space-4)}.finance-page__filters label{display:grid;gap:var(--space-1);font-size:var(--font-size-sm)}.finance-page__filters input,.finance-page__filters select{min-height:38px}.finance-page__filter-actions{display:flex;gap:var(--space-2)}.finance-page__pagination{display:flex;justify-content:center;align-items:center;gap:var(--space-3);margin-top:var(--space-3)}@media(max-width:900px){.finance-page__kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:560px){.finance-page__kpis{grid-template-columns:1fr}.finance-page__filters{display:grid}.finance-page__filter-actions{display:flex}}

/* Phase E1 — compact employee-only response inbox; this reuses the existing topbar bell,
   rather than introducing a second notification workspace. */
.employee-notifications{position:relative}.employee-notification-panel{position:absolute;z-index:90;right:0;top:calc(100% + 8px);width:min(360px,calc(100vw - 24px));max-height:min(480px,calc(100vh - 88px));overflow:auto;border:1px solid var(--color-border);border-radius:12px;background:#fff;box-shadow:0 14px 36px rgba(16,24,40,.18)}.employee-notification-panel>header{padding:12px 14px;border-bottom:1px solid var(--color-border);font-size:12px}.employee-notification-list{display:grid}.employee-notification-item{width:100%;border:0;border-bottom:1px solid #edf0f4;background:#fff;padding:12px 14px;text-align:left;color:inherit;cursor:pointer}.employee-notification-item:last-child{border-bottom:0}.employee-notification-item:hover{background:#f8fafc}.employee-notification-item.is-unread{border-left:3px solid var(--color-accent);padding-left:11px}.employee-notification-item strong,.employee-notification-item span{display:block}.employee-notification-item strong{font-size:12px}.employee-notification-item span{margin-top:3px;color:var(--color-text-secondary);font-size:11px;line-height:1.45;white-space:pre-line}.employee-notification-empty{padding:18px 14px;color:var(--color-text-secondary);font-size:12px;text-align:center}
