/* Shared UI foundations and responsive refinements. */
:root{--ink:#182b39;--muted:#607283;--line:#e0e7ed;--accent:#187961;--accent-light:#edf7f3;--page:#f5f7fa;--radius:12px}
body{background:var(--page);color:var(--ink);font-size:14px;line-height:1.55;-webkit-font-smoothing:antialiased}
button,input,select{font:inherit}button,a,input,select{touch-action:manipulation}
:focus-visible{outline:3px solid #80c7b6;outline-offset:3px}
h1{font-size:27px;line-height:1.25;font-weight:700;letter-spacing:-.6px}h2{font-size:16px;line-height:1.4;font-weight:650}
small,.muted{color:var(--muted)}.required-mark{margin-left:3px}
.sidebar{width:245px;padding:25px 16px;overflow-y:auto;background:#fff}.sidebar .brand{padding:0 9px 30px;gap:10px}.brand{font-size:18px;letter-spacing:-.25px;flex-shrink:0}.brand small{font-size:9px;letter-spacing:1px;margin-top:3px;color:#667d87}.mark{width:38px;height:38px;border-radius:10px;background:var(--accent);flex-shrink:0}
.nav-title{font-size:10px;font-weight:700;color:#83939e;letter-spacing:1.5px;margin:15px 13px 10px}.nav-link{min-height:44px;font-size:13px;font-weight:500;padding:11px 13px;gap:12px;border-radius:8px;margin:4px 0;color:#506574}.nav-link.active{color:#126c56;background:#e7f3ed;font-weight:650}.nav-link:hover{background:#f0f5f4}.nav-icon{width:20px;height:20px;display:grid;place-items:center;flex-shrink:0}.nav-icon svg{width:19px;height:19px;stroke:currentColor;fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.sidebar-bottom{padding:20px 9px 0;margin-top:auto}.sidebar-bottom .link-button{padding-left:0;min-height:36px}
.header{height:72px;padding:0 32px;position:sticky;top:0;z-index:9;background:#ffffffed;backdrop-filter:blur(12px)}.header>span{font-size:12px}.profile{gap:10px;min-width:0}.profile strong{font-size:12px;line-height:1.3}.profile small{font-size:11px;margin-top:2px}.avatar{background:#e4f2eb;color:#187961;font-size:12px;width:36px;height:36px;flex-shrink:0}
.main{padding:30px 32px 40px;max-width:none;min-width:0}.user-main{padding:30px 32px 45px;max-width:1500px;min-width:0}.user-header{padding:18px 32px;position:sticky;top:0;z-index:9;background:#ffffffed;backdrop-filter:blur(12px)}
.title-row{align-items:center;gap:20px;margin-bottom:24px}.title-row>div:first-child{min-width:0}.title-row p{font-size:13px;line-height:1.6;color:var(--muted);margin-top:7px;max-width:750px}.page-actions{gap:9px;flex-shrink:0}.btn{min-height:40px;padding:9px 15px;font-size:12px;line-height:1.4;border-radius:8px;background:var(--accent);font-weight:600;border:1px solid transparent;white-space:nowrap;transition:background .15s,box-shadow .15s}.btn:hover{background:#12634f}.btn.secondary{color:#40596a;background:#fff;border-color:#d6e0e7}.btn.secondary:hover{background:#f3f7f8;border-color:#bdcdd5}.btn.destructive{background:#b83c40}.btn.destructive:hover{background:#982d32}.link-button{font-size:12px;min-height:32px;padding:6px 8px;border-radius:6px;color:var(--accent);font-weight:550}.link-button:hover{background:var(--accent-light)}.link-button.danger{color:#ac383e}.link-button.danger:hover{background:#fff0f0}.row-actions{gap:3px;min-width:135px}.row-actions .link-button{white-space:nowrap}button:disabled{opacity:.45;cursor:not-allowed}
.card{padding:22px;border-color:var(--line);border-radius:var(--radius);box-shadow:0 2px 4px #10283c03;min-width:0}.card-heading{gap:15px;flex-wrap:wrap;margin-bottom:18px}.card-heading small{font-size:12px}.card-heading a{font-size:12px;font-weight:600}
.stats{gap:16px;margin-bottom:24px}.stats .card{padding:22px 20px;position:relative;overflow:hidden}.stats .card:before{content:'';display:block;width:25px;height:3px;background:#a2d1c3;border-radius:3px;margin-bottom:16px}.stat-label{font-size:12px;font-weight:600;color:#536b7a;line-height:1.5;min-height:36px}.stat-number{font-size:32px;line-height:1.2;letter-spacing:-1px;font-weight:700;margin:8px 0 7px;font-variant-numeric:tabular-nums}.stats small{font-size:11px;line-height:1.5;display:block}.badge{font-size:11px;font-weight:600;line-height:1.5;border-radius:5px;padding:4px 9px;color:#16684f;background:#eaf5ed}.badge.orange{color:#94621c;background:#fff3df}
.info{font-size:12px;line-height:1.7;color:#4c6479;background:#edf3f8;border:1px solid #e0eaf2;border-radius:8px;padding:11px 15px;margin-bottom:22px}
.field{min-width:0;gap:7px;margin-bottom:18px}.field label{font-size:12px;font-weight:600;color:#374f60;line-height:1.5}.field small{font-size:11px;line-height:1.6}input:not([type=checkbox]),select{min-height:41px;border:1px solid #d6e0e7;border-radius:7px;padding:9px 11px;font-size:13px;line-height:1.5;min-width:0;background:#fff;color:#213c4e;transition:border-color .15s,box-shadow .15s}input::placeholder{color:#8798a4}input:hover,select:hover{border-color:#b3c7cf}input:focus,select:focus{border-color:#349c80;box-shadow:0 0 0 3px #25866f14;outline:none}input[readonly]{background:#f3f6f8;color:#71818c}input[type=file]{padding:8px;font-size:12px}input[type=file]::file-selector-button{border:0;border-radius:5px;background:#edf5f1;color:#256d55;padding:7px 10px;font:inherit;margin-right:10px;cursor:pointer}.password input{padding-right:60px}.password button{top:5px;right:7px;font-size:11px;min-height:30px;font-weight:600}.permission-check{width:18px;height:18px;margin:0;vertical-align:middle;cursor:pointer}.form-grid{gap:0 18px}
.institute-filters,.user-filters,.permission-filters,.upload-filters{gap:14px;padding:0 0 20px;border-bottom:1px solid #edf1f4;margin-bottom:20px;min-width:0;align-items:end}.permission-filters{margin-top:22px}.upload-filters{grid-template-columns:repeat(3,minmax(0,1fr))}.institute-filters{grid-template-columns:2fr 1fr 1fr 1fr auto}.user-filters{grid-template-columns:2fr 2fr 1fr auto}.permission-filters{grid-template-columns:2fr 1fr 1fr auto}
.table-wrap{border:1px solid #e6edf1;border-radius:9px;overflow:auto;max-width:100%;scrollbar-width:thin}table{font-size:12px;border-collapse:separate;border-spacing:0;line-height:1.6;min-width:100%}table.wide-table{min-width:780px}th{font-size:11px;font-weight:650;letter-spacing:.15px;color:#597080;background:#f5f8fa;padding:12px 14px;white-space:nowrap}td{padding:13px 14px;vertical-align:middle;color:#405869}td strong{font-weight:600;color:#243f51}td:first-child{min-width:160px}td small{font-size:10px;color:#748996}tbody tr:hover td{background:#fafcfd}tbody tr:last-child td{border-bottom:0}.table-wrap:focus-visible{outline-offset:3px}.file-download{font-size:12px;max-width:230px;line-height:1.5;color:#1e8067}.file-download small{font-size:10px}.user-file{max-width:250px;font-size:11px;line-height:1.6}.user-file>span{font-weight:550}.user-file .link-button{font-size:10px;padding:4px 6px;min-height:30px}
.question-settings-grid{gap:22px;grid-template-columns:repeat(2,minmax(0,1fr))}.question-settings-grid .card-heading{align-items:center}.question-settings-grid .card-heading small{display:block;margin-top:3px}.empty{padding:44px 16px;color:#718493}.empty h2{margin-bottom:10px}.error{font-size:12px;line-height:1.6;margin:8px 0;min-height:20px}.error:empty{margin:0;min-height:0}.footer-note{font-size:11px;margin-top:28px;color:#7a8e9b}.permission-save{gap:14px;padding-top:6px}.pagination{gap:12px;font-size:12px;color:#637b8a;padding-top:16px;border-top:1px solid #edf1f4}.pagination span{font-variant-numeric:tabular-nums}
dialog{max-height:calc(100dvh - 40px);overflow:auto;border:1px solid #d8e3e9;border-radius:14px;padding:26px;color:var(--ink);box-shadow:0 25px 90px #102f4330}dialog::backdrop{background:#0e273b73;backdrop-filter:blur(3px)}dialog h2{font-size:19px;margin-bottom:20px;letter-spacing:-.25px}dialog .dialog-actions{margin-top:20px;padding-top:17px;border-top:1px solid #e7edf1;gap:9px;flex-wrap:wrap}dialog .dialog-actions button{min-width:90px}dialog .info{margin-top:15px}dialog .table-wrap{margin-top:12px}dialog details{font-size:12px;line-height:1.8}dialog summary{cursor:pointer;font-weight:600;color:#36586b}.pdf-canvas-wrap{border:1px solid #e1e8ef;border-radius:8px;max-height:55dvh}#toast{bottom:24px;right:24px;max-width:min(420px,calc(100vw - 32px));font-size:12px;line-height:1.6;box-shadow:0 8px 25px #102e3926}
.login{background:#fff}.intro{background:linear-gradient(145deg,#143c35,#0c2d29);padding:48px 10%}.intro .brand small{color:#a7c8bd}.intro .mark{background:#2a8d73}.intro h1{font-size:43px;letter-spacing:-1px;line-height:1.25}.intro p{font-size:15px;line-height:1.9}.intro small{color:#93b7aa}.login-side{padding:44px}.login-card{width:min(100%,410px)}.login-card h1{font-size:30px;margin-top:18px}.login-card>.muted{font-size:13px}.login-card .field{margin-bottom:20px}.login-card .btn{min-height:44px;font-size:13px}.login-role-switch{margin:25px 0 0;padding:4px;background:#eef3f4}.role-tab{padding:9px;font-size:12px;font-weight:600}.demo-note{font-size:11px;line-height:1.8;background:#f5f9f7;border-color:#dfebe5;color:#537569;margin-top:25px}
.mobile-nav-backdrop{display:none}.mobile-menu{width:38px;height:38px;padding:0;border-radius:7px;align-items:center;justify-content:center;font-size:21px;color:#345267}.mobile-menu:hover{background:#eef4f4}
@media(min-width:1600px){.main{max-width:1550px}.user-main{max-width:1450px}}
@media(max-width:1150px){.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.title-row{align-items:flex-start;flex-wrap:wrap}.institute-filters,.user-filters,.permission-filters{grid-template-columns:repeat(2,minmax(0,1fr))}.main{padding:25px}.header{padding:0 25px}.page-actions{flex-wrap:wrap}}
@media(max-width:850px){.question-settings-grid{grid-template-columns:1fr}.upload-filters{grid-template-columns:repeat(2,minmax(0,1fr))}.intro h1{font-size:35px}.login-side{padding:30px}}
@media(max-width:760px){.main,.header{margin-left:0}.main,.user-main{padding:22px 16px 35px}.header{height:64px;padding:0 16px}.user-header{padding:15px 16px;position:relative}.mobile-menu{display:inline-flex}.sidebar{width:260px;padding:25px 16px;z-index:40}.sidebar.open{transform:translateX(0)}.sidebar.open~.mobile-nav-backdrop{display:block;position:fixed;inset:0;z-index:35;background:#112b4166;border-radius:0}.user-header .brand{font-size:16px}.user-header .profile{flex-wrap:nowrap}.user-header .profile>div{max-width:145px}.user-header .profile strong{display:block;overflow-wrap:anywhere}.user-header .brand small{font-size:8px}.user-header .btn{padding:8px 10px;min-height:36px;font-size:11px}.card{padding:18px}.title-row{gap:16px;margin-bottom:21px}h1{font-size:24px}.stats{gap:12px}.stats .card{padding:18px 16px}.stat-number{font-size:29px}.stat-label{font-size:11px;min-height:33px}.card-heading{gap:12px}.form-grid{grid-template-columns:1fr}dialog{padding:22px;width:calc(100% - 28px)!important;max-height:calc(100dvh - 28px)}.info{font-size:11px;padding:10px 12px}.table-wrap{border-radius:7px}.page-actions{width:100%}.page-actions .btn{flex:1;font-size:11px;padding:9px 10px}.login-side{padding:28px 22px}.login-card>.badge{margin-top:10px}.intro{display:none}}
@media(max-width:520px){.upload-filters,.institute-filters,.user-filters,.permission-filters{grid-template-columns:1fr}.user-header{flex-wrap:wrap;gap:14px}.user-header .profile{width:100%;justify-content:flex-start}.user-header .profile .btn{margin-left:auto}.permission-save{align-items:flex-start}.permission-save .btn{width:100%}.pagination .btn{padding:8px 10px;font-size:11px}.pagination{font-size:11px}.dialog-actions{gap:8px}.dialog-actions .btn{flex:1}input:not([type=checkbox]),select{font-size:16px;min-height:43px}.password button{top:7px}.title-row>.btn{width:100%}.brand .mark{width:34px;height:34px}.stats small{font-size:10px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition:none!important}}

.mobile-login-brand{display:none}@media(max-width:760px){.mobile-login-brand{display:block;margin-bottom:30px}}

.dashboard-filter-card{margin-bottom:24px}.dashboard-filter-card .upload-filters{margin-bottom:12px}.dashboard-stats{grid-template-columns:repeat(3,minmax(0,1fr))}.dashboard-stat{display:flex;flex-direction:column;text-align:left;align-items:flex-start;font:inherit;color:inherit;background:#fff;transition:border-color .15s,box-shadow .15s}.dashboard-stat:hover{border-color:#92bfb0;box-shadow:0 4px 16px #123d3510}.dashboard-stat .stat-number{display:block}.dashboard-stat-link{font-size:11px;color:#187961;font-weight:600;margin-top:14px}.dashboard-panels{display:grid;grid-template-columns:1.2fr 1fr;gap:22px}.dashboard-section{margin-top:24px}.attention-row{display:flex;align-items:center;justify-content:space-between;gap:15px;text-align:left;width:100%;background:none;color:#344f60;padding:15px 0;border-bottom:1px solid #edf1f4}.attention-row strong{display:block;font-size:12px}.attention-row small{display:block;font-size:11px;margin-top:4px}.attention-row b{font-size:18px;color:#94621c}.attention-row:hover{background:#fcfaf5}.dashboard-file{min-width:160px;max-width:230px;font-size:11px;overflow-wrap:anywhere}.dashboard-file+.dashboard-file{margin-top:7px}.dashboard-file>div{display:flex}.dashboard-file .link-button{font-size:11px}.dashboard-section .card-heading>div small{display:block;margin-top:4px}@media(max-width:1000px){.dashboard-panels{grid-template-columns:1fr}.dashboard-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:420px){.dashboard-stats{grid-template-columns:1fr}}


.upload-file-item{min-width:170px;max-width:250px;overflow-wrap:anywhere;padding:7px 0}.upload-file-item+.upload-file-item{border-top:1px solid #e7edf1}.upload-file-item>strong{display:block;font-size:11px;line-height:1.6}.upload-file-item>small{display:block;margin:2px 0 5px}.upload-file-item .row-actions{gap:4px}

.settings-header-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.settings-header-actions .btn{font-size:11px;padding:8px 11px;min-height:36px}.settings-csv-preview{max-height:320px;overflow:auto;margin-top:18px}.settings-csv-preview ul{padding-left:20px;font-size:12px;color:#93424a}@media(max-width:520px){.settings-header-actions{width:100%}.settings-header-actions .btn{flex:1}}




.dashboard-filter-toggle{cursor:pointer;font-size:13px;font-weight:600;color:#36586b;user-select:none}.dashboard-filter-card[open]>.dashboard-filter-toggle{margin-bottom:18px}.dashboard-filter-card:not([open]){padding-top:15px;padding-bottom:15px}

.dashboard-filter-button{flex-shrink:0}.dashboard-filter-button svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.dashboard-filter-card[hidden]{display:none!important}.dashboard-filter-card:not([hidden]){padding:22px}.dashboard-file{min-width:125px}.title-row>.dashboard-filter-button{width:auto}@media(max-width:520px){.title-row:has(.dashboard-filter-button){align-items:flex-start}.dashboard-filter-card:not([hidden]){padding:18px}}

.brand small{max-width:155px;font-size:8px;letter-spacing:.55px;line-height:1.6}.brand{font-size:20px}.user-header .brand small{max-width:180px}@media(max-width:760px){.user-header .brand small{font-size:8px;max-width:160px}}

.institute-filters{grid-template-columns:repeat(3,minmax(0,1fr))}.permission-filters{grid-template-columns:repeat(3,minmax(0,1fr))}@media(max-width:950px){.institute-filters,.permission-filters{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:600px){.institute-filters,.permission-filters{grid-template-columns:1fr}}

.class-subject-settings{margin-top:24px}.class-subject-settings .card-heading small{display:block;margin-top:5px}.mapping-check{width:18px;height:18px;accent-color:#187961;cursor:pointer}.mapping-footer{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-top:20px}.mapping-overview{margin-top:24px;padding-top:20px;border-top:1px solid #e3eaef}.mapping-overview h2{margin-bottom:15px}.class-subject-settings td:first-child{min-width:60px}.mapping-overview td:first-child{min-width:130px}@media(max-width:520px){.mapping-footer{align-items:stretch;flex-direction:column}}


.question-image-preview{max-height:65dvh;overflow:auto;background:#f3f6f8;border:1px solid #e1e8ef;border-radius:8px;padding:12px;text-align:center}.question-image-preview img{max-width:100%;height:auto;display:block;margin:auto}
