/* Shared UI foundation: tokens, typography, controls and reusable components. */
:root{--ink:#35203f;--primary:#7c3aed;--primary-hover:#6d28d9;--muted:#6b5a73;--line:#e8dfec;--canvas:#fdfaff;--surface:#fff;--accent:#be185d;--button-ink:#62318b;--button-gradient:linear-gradient(115deg,#eadcff,#f9ddec);--button-gradient-hover:linear-gradient(115deg,#dcc8f5,#f1c9df);--brand-gradient:linear-gradient(115deg,#7c3aed,#be185d);--brand-gradient-hover:linear-gradient(115deg,#6d28d9,#9d174d);--hero-gradient:linear-gradient(115deg,#ede5ff 0%,#ffe4ef 65%,#fff4df 100%);--radius:20px;--shadow:0 12px 32px #35203f09;--motion:200ms ease;--bs-primary:#7c3aed;--bs-primary-rgb:124,58,237;--bs-body-color:var(--ink);--bs-body-bg:var(--canvas);--bs-secondary-color:var(--muted);--bs-border-color:var(--line);--bs-link-color:var(--primary);--bs-link-hover-color:var(--primary-hover);--bs-body-font-family:'Prompt',system-ui,-apple-system,sans-serif}
*{box-sizing:border-box}body{font-family:var(--bs-body-font-family);font-size:16px;line-height:1.8;color:var(--ink);background:var(--canvas);font-synthesis:none}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4,h5,h6{font-weight:600;line-height:1.45;letter-spacing:normal;overflow-wrap:anywhere}h1{font-size:clamp(1.8rem,3vw,2.5rem)}h2{font-size:1.5rem}p{overflow-wrap:anywhere}.text-secondary{color:var(--muted)!important}.ui-icon{display:inline-block;width:1.25em;height:1.25em;vertical-align:-.22em;flex-shrink:0}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:3px solid #7c3aed;outline-offset:4px}.skip-link{position:fixed;top:-100px;left:1rem;z-index:20;background:white;padding:12px;border-radius:10px}.skip-link:focus{top:12px}.eyebrow{font-size:11px;letter-spacing:1.4px;font-weight:600;color:var(--muted);margin-bottom:10px}
.btn{border-radius:12px;min-height:44px;font-weight:500;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 18px;transition:background-color var(--motion),border-color var(--motion),box-shadow var(--motion);line-height:1.5}.btn:hover{text-decoration:none}.btn-primary{--bs-btn-bg:var(--primary);--bs-btn-border-color:var(--primary);--bs-btn-hover-bg:var(--primary-hover);--bs-btn-hover-border-color:var(--primary-hover);--bs-btn-active-bg:var(--primary-hover);--bs-btn-active-border-color:var(--primary-hover);--bs-btn-disabled-bg:var(--primary);--bs-btn-disabled-border-color:var(--primary);--bs-btn-focus-shadow-rgb:124,58,237}.btn-outline-primary{--bs-btn-color:var(--primary);--bs-btn-border-color:#b98bb8;--bs-btn-hover-bg:var(--primary);--bs-btn-hover-border-color:var(--primary);--bs-btn-active-bg:var(--primary);--bs-btn-active-border-color:var(--primary)}.btn-outline-warning{--bs-btn-color:#82530c;--bs-btn-border-color:#bc9556;--bs-btn-hover-bg:#fff1c8;--bs-btn-hover-color:#74450c;--bs-btn-hover-border-color:#bc9556}.btn-light{--bs-btn-bg:#f1eaf5;--bs-btn-border-color:#f1eaf5;--bs-btn-color:var(--ink);--bs-btn-hover-bg:#e6d7ed;--bs-btn-hover-border-color:#e6d7ed}.btn-sm{font-size:13px;padding:8px 12px;min-height:44px}.btn-lg{font-size:16px;min-height:50px}.form-label{font-size:14px;font-weight:500;margin-bottom:8px}.form-control,.form-select{min-height:46px;border-color:#cabbcf;border-radius:10px;background-color:white;line-height:1.6;color:var(--ink)}.form-control::placeholder{color:#77667c}.form-control:focus,.form-select:focus{border-color:var(--primary);box-shadow:0 0 0 3px #62205e17}.form-control-lg,.form-select-lg{font-size:15px;min-height:50px}.form-check-input:checked{background-color:var(--primary);border-color:var(--primary)}.form-check-label{cursor:pointer}.form-text{color:var(--muted);line-height:1.7}.required{color:#ac3930}.panel,.detail-panel{background:white;border:1px solid var(--line);border-radius:var(--radius);padding:28px;box-shadow:var(--shadow)}.ui-tone-teal{--tone-ink:#0b665e;--tone-bg:#e0f4ea}.ui-tone-blue{--tone-ink:#315b96;--tone-bg:#e9f0ff}.ui-tone-amber{--tone-ink:#79500b;--tone-bg:#fff2cb}.ui-tone-coral{--tone-ink:#a33e34;--tone-bg:#ffebe4}.ui-tone-neutral{--tone-ink:#52635e;--tone-bg:#f2eef4}.ui-badge{display:inline-flex;align-items:center;gap:5px;padding:5px 9px;border-radius:8px;color:var(--tone-ink);background:var(--tone-bg);font-size:12px;font-weight:500;line-height:1.6}.ui-badge .ui-icon{width:16px;height:16px}.app-icon{width:58px;height:58px;color:var(--tone-ink);background:var(--tone-bg);border-radius:17px;display:grid;place-items:center;font-size:26px;font-weight:600;flex-shrink:0}.app-icon img{width:100%;height:100%;object-fit:contain;border-radius:inherit}.app-icon.large{width:85px;height:85px;font-size:40px}.stat-card{background:white;border:1px solid var(--line);border-radius:var(--radius);padding:24px;box-shadow:var(--shadow)}.stat-top{display:flex;justify-content:space-between;align-items:center;gap:8px;color:var(--muted);font-size:14px}.stat-top .ui-badge{padding:10px}.stat-top .ui-icon{width:21px;height:21px}.stat-card strong{display:block;font-size:42px;line-height:1.4;font-weight:600;margin-top:14px}.stat-unit{color:var(--muted);font-size:12px}.table{--bs-table-bg:white;--bs-table-color:var(--ink);--bs-table-border-color:var(--line)}.table th{background:#f5f0f8;font-size:13px;padding:16px;white-space:nowrap;font-weight:500}.table td{padding:16px;font-size:14px}.alert{border-radius:14px;line-height:1.8}.pagination-links{display:flex;flex-wrap:wrap;gap:7px;margin-top:25px}.discovery-select{max-width:220px}pre{white-space:pre-wrap;word-break:break-word;max-width:500px;font-size:12px}dialog{max-width:440px;width:calc(100% - 32px);border:1px solid var(--line);border-radius:20px;padding:28px;color:var(--ink)}dialog::backdrop{background:#35203f80}@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important;scroll-behavior:auto!important}.app-card:hover{transform:none}}

.ui-tone-purple{--tone-ink:#6d28d9;--tone-bg:#efe7ff}
.college-logo{display:block;width:52px;height:auto;object-fit:contain;flex-shrink:0}.login-logo{width:80px;margin:0 auto}.footer-brand .college-logo{width:42px}

.btn-primary{--bs-btn-color:var(--button-ink);--bs-btn-hover-color:var(--button-ink);--bs-btn-active-color:var(--button-ink);--bs-btn-disabled-color:var(--button-ink);background-image:var(--button-gradient);border-color:#d9c4ee}.btn-primary:hover,.btn-primary:active{background-image:var(--button-gradient-hover);border-color:#c5a7e1}
