:root{--color-primary-50:#f0fdf4;--color-primary-100:#dcfce7;--color-primary-200:#bbf7d0;--color-primary-300:#86efac;--color-primary-400:#4ade80;--color-primary-500:#22c55e;--color-primary-600:#16a34a;--color-primary-700:#15803d;--color-primary-800:#166534;--color-primary-900:#14532d;--color-success:#10b981;--color-warning:#f59e0b;--color-error:#ef4444;--color-info:#3b82f6;--color-gray-50:#f8fafc;--color-gray-100:#f1f5f9;--color-gray-200:#e2e8f0;--color-gray-300:#cbd5e1;--color-gray-400:#94a3b8;--color-gray-500:#64748b;--color-gray-600:#475569;--color-gray-700:#334155;--color-gray-800:#1e293b;--color-gray-900:#0f172a;--bg:var(--color-gray-50);--surface:#fff;--surface-soft:#f7faf8;--surface-strong:#123a35;--text:#17352f;--muted:#667a72;--line:#d9e4dd;--line-strong:#c8ddd1;--accent:#2a7667;--accent-strong:#1d5548;--accent-soft:#eaf4ef;--accent-soft-2:#edf8f1;--warn:#9b6c27;--warn-soft:#fff7e9;--danger:#a24f4f;--danger-soft:#fff5f4;--shadow:0 14px 32px #1438300f;--shadow-strong:0 20px 46px #1438301a;--space-0:0;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-7:28px;--space-8:32px;--space-9:36px;--space-10:40px;--space-12:48px;--space-14:56px;--space-16:64px;--space-20:80px;--space-24:96px;--text-xs:12px;--text-sm:14px;--text-base:16px;--text-lg:18px;--text-xl:20px;--text-2xl:24px;--text-3xl:30px;--text-4xl:36px;--leading-none:1;--leading-tight:1.25;--leading-snug:1.375;--leading-normal:1.5;--leading-relaxed:1.625;--leading-loose:2;--font-light:300;--font-normal:400;--font-medium:500;--font-semibold:600;--font-bold:700;--font-extrabold:800;--font-black:900;--radius-none:0;--radius-sm:4px;--radius-md:6px;--radius-lg:8px;--radius-xl:12px;--radius-2xl:16px;--radius-3xl:24px;--radius-full:9999px;--shadow-xs:0 1px 2px 0 #0000000a;--shadow-sm:0 1px 3px 0 #0000000f, 0 1px 2px -1px #0000000f;--shadow-md:0 4px 6px -1px #00000014, 0 2px 4px -2px #0000000f;--shadow-lg:0 10px 15px -3px #00000014, 0 4px 6px -4px #0000000f;--shadow-xl:0 20px 25px -5px #00000014, 0 8px 10px -6px #0000000f;--shadow-2xl:0 25px 50px -12px #00000029;--shadow-inner:inset 0 2px 4px 0 #0000000a;--transition-fast:.15s cubic-bezier(.4, 0, .2, 1);--transition-base:.2s cubic-bezier(.4, 0, .2, 1);--transition-slow:.3s cubic-bezier(.4, 0, .2, 1);--z-dropdown:1000;--z-sticky:1020;--z-fixed:1030;--z-modal-backdrop:1040;--z-modal:1050;--z-popover:1060;--z-tooltip:1070;--z-toast:1080;--container-sm:640px;--container-md:768px;--container-lg:1024px;--container-xl:1280px;--container-2xl:1536px;color:var(--text);background:var(--bg);font-synthesis:none;font-family:Microsoft YaHei,PingFang SC,Arial,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--bg);min-width:320px;color:var(--text);margin:0}button,input,select,textarea{font:inherit}button{border:0}.public-home{min-height:100vh;color:var(--text);background:linear-gradient(#f6faf7 0%,#eef4ef 100%)}.public-home-main,.public-home-header,.public-home-footer{width:min(100% - 40px,1240px);margin:0 auto}.public-home-header{justify-content:space-between;align-items:center;gap:18px;padding:20px 0;display:flex}.public-home-brand{color:var(--text);align-items:center;gap:10px;text-decoration:none;display:inline-flex}.public-home-mark{background:var(--accent-strong);color:#f8fcf7;border-radius:10px;place-items:center;width:38px;height:38px;font-size:18px;font-weight:900;display:grid}.public-home-brand strong,.public-home-brand small{display:block}.public-home-brand strong{font-size:15px;line-height:1.1}.public-home-brand small{color:var(--muted);margin-top:3px;font-size:11px}.public-home-nav{flex-wrap:wrap;align-items:center;gap:24px;display:flex}.public-home-nav a{color:#5d726a;font-size:13px;font-weight:700;text-decoration:none}.public-home-nav a:hover{color:var(--accent-strong)}.public-home-login{border:1px solid var(--line-strong);background:#fff;border-radius:8px;padding:9px 14px}.public-home-login:hover{border-color:var(--accent);background:var(--accent-soft)}.public-home-main{padding-bottom:54px}.public-home-hero{grid-template-columns:minmax(0,1.06fr) minmax(320px,.94fr);align-items:stretch;gap:18px;padding:18px 0 0;display:grid}.public-home-hero-copy,.public-home-decision-panel,.public-home-band,.public-home-section,.public-home-cta{border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow);border-radius:18px}.public-home-hero-copy{background:linear-gradient(#fffffff5 0%,#fffffffa 100%),radial-gradient(circle at 100% 0,#2a76670d,#0000 35%);align-content:start;gap:0;padding:34px 32px 30px;display:grid}.public-home-kicker{color:var(--accent);letter-spacing:.02em;align-items:center;gap:7px;margin:0 0 12px;font-size:12px;font-weight:800;display:inline-flex}.public-home-hero h1{max-width:680px;color:var(--surface-strong);letter-spacing:0;margin:0;font-size:clamp(36px,5vw,56px);line-height:1.08}.public-home-hero h1 em{color:var(--accent);font-style:normal}.public-home-lead{color:#566961;max-width:620px;margin:18px 0 0;font-size:15px;line-height:1.85}.public-home-actions{flex-wrap:wrap;align-items:center;gap:12px;margin-top:24px;display:flex}.public-home-actions span{color:var(--muted);font-size:12px}.public-home-primary,.public-home-secondary,.public-home-light-button,.public-home-master-link{cursor:pointer;border-radius:8px;justify-content:center;align-items:center;gap:8px;min-height:42px;padding:10px 15px;font-size:13px;font-weight:800;text-decoration:none;display:inline-flex}.public-home-primary,.public-home-light-button{background:var(--accent);color:#fff;border:1px solid var(--accent);box-shadow:0 10px 20px #2a766729}.public-home-primary:hover,.public-home-light-button:hover{background:#236557}.public-home-secondary,.public-home-master-link{border:1px solid var(--line-strong);color:var(--surface-strong);background:#fff}.public-home-secondary:hover,.public-home-master-link:hover{border-color:var(--accent);background:var(--accent-soft)}.public-home-signals{flex-wrap:wrap;gap:10px;margin-top:18px;display:flex}.public-home-signals span{color:#4f6961;background:#fbfdfb;border:1px solid #dbe5de;border-radius:999px;align-items:center;gap:7px;padding:8px 10px;font-size:12px;font-weight:700;display:inline-flex}.public-home-decision-panel{background:var(--surface);gap:16px;padding:24px;display:grid}.public-home-panel-head{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.public-home-panel-head p{color:var(--muted);margin:0;font-size:12px}.public-home-panel-head strong{color:var(--surface-strong);margin-top:4px;font-size:16px;line-height:1.35;display:block}.public-home-panel-badge{color:var(--accent-strong);background:#eef7f2;border:1px solid #cfe1d7;border-radius:999px;flex:none;padding:7px 10px;font-size:11px;font-weight:800}.public-home-tabs{flex-wrap:wrap;gap:8px;display:flex}.public-home-tabs button{color:#577068;cursor:pointer;background:#fff;border:1px solid #d7e3dd;border-radius:999px;min-height:36px;padding:8px 12px;font-size:12px;font-weight:800}.public-home-tabs button:hover{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-strong)}.public-home-tabs button.is-selected{border-color:var(--accent);background:var(--accent);color:#fff}.public-home-panel-body{gap:14px;display:grid}.public-home-panel-focus{border:1px solid var(--line);background:var(--surface-soft);border-radius:14px;gap:6px;padding:16px 16px 14px;display:grid}.public-home-panel-focus p{color:var(--muted);margin:0;font-size:12px}.public-home-panel-focus h3{color:var(--surface-strong);margin:0;font-size:22px;line-height:1.2}.public-home-panel-focus span{color:var(--accent);font-size:12px;font-weight:800}.public-home-panel-note{color:#5a6d65;margin:0;font-size:13px;line-height:1.7}.public-home-panel-grid{gap:10px;display:grid}.public-home-panel-grid article{border:1px solid var(--line);background:#fff;border-radius:12px;gap:8px;padding:14px 15px;display:grid}.public-home-panel-grid span,.public-home-panel-grid p{color:var(--muted);margin:0;font-size:12px;line-height:1.6}.public-home-panel-grid span{color:#546b63;align-items:center;gap:6px;font-weight:800;display:inline-flex}.public-home-panel-grid strong{color:var(--surface-strong);font-size:14px;line-height:1.45}.public-home-band{grid-template-columns:repeat(3,minmax(0,1fr));margin-top:18px;display:grid;overflow:hidden}.public-home-band>div{border-right:1px solid var(--line);gap:6px;padding:18px 20px;display:grid}.public-home-band>div:last-child{border-right:0}.public-home-band strong{color:var(--surface-strong);font-size:14px}.public-home-band span{color:var(--muted);font-size:12px;line-height:1.6}.public-home-section{margin-top:18px;padding:26px 26px 24px}.public-home-section-head{justify-content:space-between;align-items:flex-end;gap:18px;margin-bottom:18px;display:flex}.public-home-section-head h2{color:var(--surface-strong);margin:0;font-size:clamp(24px,3.2vw,36px);line-height:1.22}.public-home-section-head p:last-child{max-width:470px;color:var(--muted);margin:0;font-size:13px;line-height:1.75}.public-home-master-layout{grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);gap:14px;display:grid}.public-home-master-story{background:linear-gradient(#fff 0%,#fbfdfb 100%);border:1px solid #d9e6de;border-radius:14px;gap:14px;padding:20px;display:grid}.public-home-master-label{color:var(--accent);margin:0;font-size:12px;font-weight:800}.public-home-master-story h3{color:var(--surface-strong);margin:0;font-size:26px;line-height:1.18}.public-home-master-story>p{color:#5d7168;margin:0;font-size:13px;line-height:1.85}.public-home-master-story ul{gap:10px;margin:0;padding:0;list-style:none;display:grid}.public-home-master-story li{color:#50665f;align-items:flex-start;gap:8px;font-size:13px;line-height:1.7;display:inline-flex}.public-home-master-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.public-home-master-grid article,.public-home-master-warning{border:1px solid var(--line);background:#fff;border-radius:14px;gap:10px;padding:18px;display:grid}.public-home-master-warning{background:var(--warn-soft);border-color:#efd5a7;grid-column:1/-1}.public-home-master-icon{background:var(--accent-soft);width:34px;height:34px;color:var(--accent-strong);border-radius:10px;justify-content:center;align-items:center;display:inline-flex}.public-home-master-grid strong,.public-home-master-warning strong{color:var(--surface-strong);font-size:15px}.public-home-master-grid p,.public-home-master-warning p{color:#5d7168;margin:0;font-size:13px;line-height:1.75}.public-home-master-link{white-space:nowrap}.public-home-service .public-home-section-head p:last-child{max-width:420px}.public-home-process{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;display:grid}.public-home-process article{border:1px solid var(--line);background:#fff;border-radius:14px;gap:10px;padding:18px;display:grid}.public-home-process span{color:var(--accent);font-size:12px;font-weight:900}.public-home-process strong{color:var(--surface-strong);font-size:15px}.public-home-process p{color:#5d7168;margin:0;font-size:12px;line-height:1.75}.public-home-cta{background:var(--surface-strong);color:#f4faf5;justify-content:space-between;align-items:center;gap:18px;margin-top:18px;padding:22px 24px;display:flex}.public-home-cta p,.public-home-cta h2{margin:0}.public-home-cta .public-home-kicker{color:#b8d5ca}.public-home-cta h2{font-size:clamp(24px,3vw,34px);line-height:1.18}.public-home-cta>div>p:last-child{color:#bed1c9;margin-top:10px;font-size:13px;line-height:1.7}.public-home-footer{color:#66786f;justify-content:space-between;align-items:center;gap:18px;padding:22px 0 0;font-size:12px;display:flex}.public-home-footer strong,.public-home-footer span{display:block}.public-home-footer strong{color:var(--surface-strong);font-size:14px}.public-home-footer a{color:#66786f;text-decoration:none;transition:color .2s}.public-home-footer a:hover{color:var(--color-primary-600,#2a7667)}.student-portal-page{width:min(100% - 40px,1280px);color:var(--text);margin:0 auto;padding:24px 0 52px}.portal-brand{color:var(--text);align-items:center;gap:10px;margin-bottom:12px;text-decoration:none;display:inline-flex}.portal-brand-mark{background:var(--accent-strong);color:#f8fcf7;border-radius:10px;place-items:center;width:38px;height:38px;font-size:18px;font-weight:900;display:grid}.portal-brand strong{font-size:15px;line-height:1.1;display:block}.portal-brand small{color:var(--muted);margin-top:3px;font-size:11px;display:block}.student-portal-header{justify-content:space-between;align-items:flex-start;gap:18px;margin-bottom:18px;padding:2px 0 0;display:flex}.student-portal-header h1{color:var(--surface-strong);margin:6px 0 0;font-size:clamp(26px,3.8vw,38px);line-height:1.15}.portal-kicker{color:var(--accent);letter-spacing:.02em;margin:0;font-size:12px;font-weight:800}.portal-header-subtitle{color:#5d726a;margin:10px 0 0;font-size:13px;line-height:1.65}.portal-header-subtitle span{color:#a0b0a8}.portal-header-status{justify-items:end;gap:8px;display:grid}.portal-header-status small{color:var(--muted);font-size:12px}.portal-hero-band{border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow);border-radius:18px;grid-template-columns:minmax(0,1.1fr) minmax(280px,.9fr);gap:16px;margin-bottom:16px;padding:20px;display:grid}.portal-hero-copy{align-items:flex-start;gap:14px;display:flex}.portal-hero-icon{background:var(--accent-soft);width:52px;height:52px;color:var(--accent-strong);border-radius:16px;flex:none;place-items:center;display:grid}.portal-hero-copy h2{color:var(--surface-strong);margin:4px 0 6px;font-size:24px;line-height:1.18}.portal-hero-copy p:last-child{color:#5d7168;margin:0;font-size:13px;line-height:1.7}.portal-progress-block{border:1px solid var(--line);background:var(--surface-soft);border-radius:14px;gap:8px;padding:16px;display:grid}.portal-progress-label{justify-content:space-between;align-items:center;gap:10px;display:flex}.portal-progress-label span{color:var(--muted);font-size:12px;font-weight:800}.portal-progress-label strong{color:var(--surface-strong);font-size:15px}.portal-progress-track{background:#dde7e1;border-radius:999px;height:8px;overflow:hidden}.portal-progress-track span{border-radius:inherit;background:linear-gradient(90deg, var(--accent) 0%, #4f9b86 100%);height:100%;display:block}.portal-progress-block small{color:var(--muted);font-size:12px}.portal-metric-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px;display:grid}.portal-metric{border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow);border-radius:14px;gap:7px;padding:16px 16px 15px;display:grid}.portal-metric svg{color:var(--accent)}.portal-metric span{color:var(--muted);font-size:12px;font-weight:800}.portal-metric strong{color:var(--surface-strong);font-size:26px;line-height:1}.portal-metric strong em{color:#758980;font-size:16px;font-style:normal}.portal-metric small{color:#6a7c74;font-size:11px;line-height:1.55}.portal-metric-accent{background:linear-gradient(#eef8f2 0%,#fff 100%)}.portal-section{border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow);border-radius:18px;margin-bottom:16px;padding:20px}.portal-section-heading{justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:14px;display:flex}.portal-section-heading.compact{margin-bottom:10px}.portal-section-heading h2{color:var(--surface-strong);align-items:center;gap:10px;margin:0;font-size:18px;line-height:1.35;display:flex}.portal-heading-icon{background:var(--accent-soft);width:30px;height:30px;color:var(--accent-strong);border-radius:10px;place-items:center;display:inline-grid}.portal-section-heading p{color:var(--muted);margin:4px 0 0;font-size:12px;line-height:1.65}.portal-section-count{color:#5a7269;background:#f8fbf9;border:1px solid #d7e4de;border-radius:999px;flex:none;padding:7px 10px;font-size:11px;font-weight:800}.portal-task-section,.portal-message-section,.portal-risk-section,.portal-material-resubmission,.portal-document-files,.portal-contract-files,.portal-graduation-material-files{background:var(--surface)}.portal-task-group{border:1px solid var(--line);background:var(--surface-soft);border-radius:14px;gap:12px;margin-top:12px;padding:14px;display:grid}.portal-task-group.overdue{background:#fff8f5;border-color:#efc9bf}.portal-task-group.soon{background:#fffaf0;border-color:#e7d2a8}.portal-task-group-heading{justify-content:space-between;align-items:center;gap:12px;display:flex}.portal-task-group-heading h3{color:var(--surface-strong);margin:0;font-size:15px}.portal-task-group-heading small,.portal-task-group-heading span{color:var(--muted);font-size:12px}.portal-task-list{gap:10px;display:grid}.portal-task-row{background:#fff;border:1px solid #dce5df;border-radius:12px;justify-content:space-between;align-items:center;gap:14px;padding:13px 14px;display:flex}.portal-task-row.completed{background:#f8fbf9}.portal-task-main{align-items:flex-start;gap:10px;min-width:0;display:flex}.portal-task-icon{background:var(--accent-soft);width:28px;height:28px;color:var(--accent-strong);border-radius:8px;flex:none;place-items:center;display:inline-grid}.portal-task-main strong,.portal-confirm-row strong,.portal-message-head strong,.portal-stage-row strong,.portal-result-row strong,.portal-milestone-row strong,.portal-risk-row strong,.portal-material-head strong{color:var(--surface-strong);font-size:14px;line-height:1.45}.portal-task-main small,.portal-confirm-row small,.portal-message-head small,.portal-stage-row small,.portal-result-row small,.portal-milestone-row small,.portal-material-head small,.portal-disclosure-copy p,.portal-risk-row small,.portal-empty-line,.portal-material-file-note{color:var(--muted);font-size:12px;line-height:1.6}.portal-task-main div,.portal-confirm-row span,.portal-message-head,.portal-stage-row>div,.portal-result-row>div,.portal-milestone-row>div,.portal-risk-row>div,.portal-material-head>div{min-width:0}.portal-task-button,.portal-primary-button,.portal-confirm-action,.portal-message-read-button{background:var(--accent);border:1px solid var(--accent);color:#fff;cursor:pointer;border-radius:8px;justify-content:center;align-items:center;gap:7px;min-height:36px;padding:8px 12px;font-size:12px;font-weight:800;text-decoration:none;display:inline-flex}.portal-task-button:hover,.portal-primary-button:hover,.portal-confirm-action:hover,.portal-message-read-button:hover{background:#236557}.portal-task-button:disabled,.portal-primary-button:disabled,.portal-confirm-action:disabled,.portal-message-read-button:disabled{cursor:not-allowed;opacity:.6}.portal-button-spinner,.portal-spinner{animation:1s linear infinite portal-spin}@keyframes portal-spin{to{transform:rotate(360deg)}}@keyframes public-fade-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes public-scale-in{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}@keyframes public-slide-up{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}.public-home-section,.portal-section,.portal-hero-band{animation:.4s ease-out both public-fade-in}.public-home-section:first-child,.portal-section:first-child{animation-delay:0s}.public-home-section:nth-child(2),.portal-section:nth-child(2){animation-delay:80ms}.public-home-section:nth-child(3),.portal-section:nth-child(3){animation-delay:.16s}.public-home-metric,.portal-metric{animation:.3s cubic-bezier(.4,0,.2,1) both public-scale-in}.portal-metric-grid .portal-metric:first-child,.public-home-metrics .public-home-metric:first-child{animation-delay:0s}.portal-metric-grid .portal-metric:nth-child(2),.public-home-metrics .public-home-metric:nth-child(2){animation-delay:60ms}.portal-metric-grid .portal-metric:nth-child(3),.public-home-metrics .public-home-metric:nth-child(3){animation-delay:.12s}.portal-metric-grid .portal-metric:nth-child(4),.public-home-metrics .public-home-metric:nth-child(4){animation-delay:.18s}.portal-task-row,.portal-material-item,.portal-disclosure-row{animation:.25s ease-out both public-fade-in}.portal-task-list .portal-task-row:first-child,.portal-material-list .portal-material-item:first-child{animation-delay:0s}.portal-task-list .portal-task-row:nth-child(2),.portal-material-list .portal-material-item:nth-child(2){animation-delay:40ms}.portal-task-list .portal-task-row:nth-child(3),.portal-material-list .portal-material-item:nth-child(3){animation-delay:80ms}.portal-task-list .portal-task-row:nth-child(4),.portal-material-list .portal-material-item:nth-child(4){animation-delay:.12s}.portal-task-list .portal-task-row:nth-child(5),.portal-material-list .portal-material-item:nth-child(5){animation-delay:.16s}.public-home-card,.portal-task-button,.portal-confirm-row,.portal-message-row{transition:transform var(--transition-fast), box-shadow var(--transition-fast)}.public-home-card:hover,.portal-task-button:hover,.portal-confirm-row:hover,.portal-message-row:hover{transform:translateY(-3px);box-shadow:0 12px 24px -6px #0000001f}.public-home-button:active,.portal-primary-button:active,.portal-secondary-button:active,.portal-task-button:active{transition:transform 50ms ease-out;transform:scale(.97)}.portal-primary-button,.public-home-button{position:relative;overflow:hidden}.portal-primary-button:before,.public-home-button:before{content:"";background:#fff3;border-radius:50%;width:0;height:0;transition:width .3s ease-out,height .3s ease-out;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.portal-primary-button:hover:before,.public-home-button:hover:before{width:300px;height:300px}.public-home-master-link,.portal-footer-link{position:relative}.public-home-master-link:after,.portal-footer-link:after{content:"";width:0;height:2px;transition:width var(--transition-base);background:currentColor;position:absolute;bottom:-2px;left:0}.public-home-master-link:hover:after,.portal-footer-link:hover:after{width:100%}.portal-progress-bar,.portal-progress-fill{transition:width var(--transition-slow) cubic-bezier(.4, 0, .2, 1)}.portal-form input,.portal-form select,.portal-form textarea{transition:border-color var(--transition-fast), box-shadow var(--transition-fast), transform 50ms ease-out}.portal-form input:focus,.portal-form select:focus,.portal-form textarea:focus{transform:translateY(-1px)}.portal-modal-backdrop{animation:.2s ease-out public-fade-in}.portal-modal{animation:.25s cubic-bezier(.4,0,.2,1) public-slide-up}.portal-disclosure-content{transition:max-height var(--transition-base), opacity var(--transition-fast);overflow:hidden}.portal-disclosure-toggle svg{transition:transform var(--transition-fast)}.portal-disclosure-row[aria-expanded=true] .portal-disclosure-toggle svg{transform:rotate(180deg)}@keyframes public-badge-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.1)}}.portal-notification-badge{animation:2s ease-in-out infinite public-badge-pulse}.portal-material-upload-area.drag-over{border-color:var(--color-primary-500);background:#10b9810d;animation:.15s ease-out public-scale-in}@keyframes public-status-flash{0%,to{background:0 0}50%{background:#10b9811a}}.portal-status-indicator.changed{animation:1.5s ease-in-out public-status-flash}.portal-hero-band{position:relative;overflow:hidden}.portal-hero-band:before{content:"";background:linear-gradient(90deg,#0000 0%,#ffffff1a 50%,#0000 100%);width:100%;height:100%;animation:3s ease-in-out infinite public-shimmer;position:absolute;top:0;left:-100%}@keyframes public-shimmer{0%{left:-100%}to{left:100%}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.public-home-section,.portal-section,.portal-hero-band,.public-home-metric,.portal-metric,.portal-task-row,.portal-material-item,.portal-disclosure-row,.portal-modal-backdrop,.portal-modal{animation:none!important}.public-home-card,.portal-task-button,.portal-confirm-row,.portal-message-row{transition:none!important}.public-home-card:hover,.portal-task-button:hover,.portal-confirm-row:hover,.portal-message-row:hover,.public-home-button:active,.portal-primary-button:active,.portal-secondary-button:active,.portal-task-button:active,.portal-form input:focus,.portal-form select:focus,.portal-form textarea:focus{transform:none!important}.portal-disclosure-toggle svg,.portal-disclosure-content{transition:none!important}.portal-hero-band:before,.portal-notification-badge{animation:none!important}}.portal-task-button{flex:none}.portal-all-done{color:var(--surface-strong);background:#f2faf4;border:1px solid #cde0d4;border-radius:14px;align-items:flex-start;gap:12px;margin-top:12px;padding:16px;display:flex}.portal-all-done span{color:var(--muted);font-size:12px;line-height:1.65;display:block}.portal-completed-tasks{border:1px solid var(--line);background:#fff;border-radius:14px;margin-top:12px;overflow:hidden}.portal-completed-tasks summary{color:var(--surface-strong);cursor:pointer;justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;font-size:13px;font-weight:800;list-style:none;display:flex}.portal-completed-tasks summary::-webkit-details-marker{display:none}.portal-completed-tasks .portal-task-list{padding:0 16px 16px}.portal-content-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.portal-stage-list,.portal-result-list,.portal-milestone-list,.portal-confirm-list,.portal-message-list,.portal-risk-list,.portal-material-list,.portal-disclosure-row,.portal-academic-subsection{gap:10px;display:grid}.portal-stage-row,.portal-result-row,.portal-milestone-row,.portal-confirm-row,.portal-risk-row,.portal-material-item,.portal-disclosure-row,.portal-message-row{border-top:1px solid #edf1ee;justify-content:space-between;align-items:center;gap:12px;padding:12px 0;display:flex}.portal-stage-list .portal-stage-row:first-child,.portal-result-list .portal-result-row:first-child,.portal-milestone-list .portal-milestone-row:first-child,.portal-confirm-list .portal-confirm-row:first-child,.portal-risk-list .portal-risk-row:first-child,.portal-material-list .portal-material-item:first-child,.portal-message-list .portal-message-row:first-child{border-top:0;padding-top:0}.portal-stage-marker{width:22px;height:22px;color:var(--accent-strong);background:#edf7f1;border-radius:999px;flex:none;place-items:center;margin-right:10px;display:inline-grid}.portal-stage-marker span{background:#9eb7ae;border-radius:999px;width:8px;height:8px;display:block}.portal-result-row,.portal-milestone-row,.portal-confirm-row,.portal-risk-row,.portal-material-head,.portal-message-head{align-items:flex-start}.portal-score{color:var(--surface-strong);font-size:14px;font-weight:900}.portal-pill{border:1px solid var(--line-strong);color:#5a7269;white-space:nowrap;background:#fff;border-radius:999px;justify-content:center;align-items:center;padding:5px 9px;font-size:11px;font-weight:800;display:inline-flex}.portal-pill-pending,.portal-pill-planned,.portal-pill-not_started{color:#677b74;background:#f3f5f4;border-color:#dde5e1}.portal-pill-in_progress,.portal-pill-waiting_student,.portal-pill-waiting_institution,.portal-pill-sent,.portal-pill-submitted,.portal-pill-reviewing,.portal-pill-writing,.portal-pill-registered,.portal-pill-materials_pending,.portal-pill-defense{color:#2a7667;background:#eef8f3;border-color:#cae1d5}.portal-pill-completed,.portal-pill-verified,.portal-pill-approved,.portal-pill-passed,.portal-pill-confirmed{color:#2f7a4d;background:#edf9eb;border-color:#cae4c8}.portal-pill-delayed,.portal-pill-rejected,.portal-pill-failed,.portal-pill-cancelled,.portal-pill-withdrawn{color:#a15545;background:#fff3ef;border-color:#f0d1c5}.portal-pill-unread{color:#3a6284;background:#eef7ff;border-color:#cfe0f3}.portal-confirm-row span,.portal-result-row>div,.portal-milestone-row>div,.portal-risk-row>div,.portal-message-head>div,.portal-stage-row>div,.portal-material-head>div{gap:4px;display:grid}.portal-confirm-status{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;display:flex}.portal-message-row{gap:10px;padding:14px 0;display:grid}.portal-message-row.unread{background:#f6fbf7;border:1px solid #cfe2d7;border-radius:12px;padding:14px}.portal-message-head{justify-content:space-between;align-items:flex-start;gap:14px;display:flex}.portal-message-head strong{font-size:14px}.portal-message-row p,.portal-disclosure-copy p{color:#5d7168;white-space:pre-wrap;overflow-wrap:anywhere;margin:0;font-size:13px;line-height:1.75}.portal-message-read-button{width:fit-content}.portal-message-read-state{color:var(--muted);font-size:12px;font-weight:800}.portal-inline-error{background:var(--danger-soft);color:var(--danger);border:1px solid #f0c9be;border-radius:10px;align-items:flex-start;gap:8px;margin-bottom:10px;padding:10px 12px;font-size:12px;line-height:1.6;display:flex}.portal-risk-row svg{color:#9f6534;flex:none}.portal-risk-row strong{font-size:13px}.portal-material-intro{color:#5d7168;margin:0 0 12px;font-size:13px;line-height:1.75}.portal-material-item,.portal-confirm-row,.portal-disclosure-row{align-items:center}.portal-material-head{flex:1}.portal-material-action{justify-items:end;gap:8px;display:grid}.portal-material-action label{color:var(--accent-strong);cursor:pointer;font-size:12px;font-weight:800}.portal-material-action input[type=file]{color:#5d7168;max-width:100%;font-size:12px}.portal-material-file-note{text-align:right}.portal-confirm-action{white-space:nowrap;min-width:118px}.portal-disclosure-row{align-items:flex-start;padding:14px 0}.portal-disclosure-copy{flex:1;gap:8px;display:grid}.portal-empty-line{padding:14px 0}.portal-section .portal-empty-line{padding-bottom:0}.portal-state-page{place-items:center;width:min(100% - 40px,1280px);min-height:100vh;margin:0 auto;padding:32px 0;display:grid}.portal-state-panel{border:1px solid var(--line);background:var(--surface);width:min(100%,460px);box-shadow:var(--shadow-strong);text-align:center;border-radius:18px;justify-items:center;gap:10px;padding:34px 28px;display:grid}.portal-state-panel h1{color:var(--surface-strong);margin:6px 0 0;font-size:24px;line-height:1.22}.portal-state-panel p{color:#5d7168;margin:0;font-size:13px;line-height:1.75}.portal-state-icon{width:48px;height:48px;color:var(--danger);background:#fff5f4;border-radius:16px;place-items:center;display:grid}.portal-spinner{color:var(--accent)}.portal-primary-button{margin-top:6px}.portal-state-home{color:var(--muted);align-items:center;gap:6px;font-size:12px;font-weight:700;text-decoration:none;display:inline-flex}.portal-state-home:hover{color:var(--accent-strong)}.portal-footer,.student-portal-footer{color:#6b7d76;justify-content:space-between;align-items:center;gap:16px;margin-top:16px;padding:0 2px;font-size:12px;display:flex}.student-portal-footer span,.portal-footer span{display:block}@media (width<=1100px){.public-home-process,.portal-metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.portal-content-grid{grid-template-columns:1fr}}@media (width<=900px){.public-home-main,.public-home-header,.public-home-footer,.student-portal-page,.portal-state-page{width:min(100% - 28px,1280px)}.public-home-hero,.public-home-master-layout,.portal-hero-band,.public-home-band{grid-template-columns:1fr}.public-home-band>div{border-right:0;border-bottom:1px solid var(--line)}.public-home-band>div:last-child{border-bottom:0}.public-home-section-head,.public-home-cta,.student-portal-header,.portal-section-heading,.portal-task-row,.portal-stage-row,.portal-result-row,.portal-milestone-row,.portal-confirm-row,.portal-message-head,.portal-material-item,.portal-disclosure-row{flex-direction:column;align-items:flex-start}.public-home-cta .public-home-light-button,.portal-task-button,.portal-confirm-action,.portal-message-read-button,.portal-primary-button{width:100%}.portal-header-status{justify-items:start}}@media (width<=720px){.public-home-main,.public-home-header,.public-home-footer,.student-portal-page,.portal-state-page{width:min(100% - 20px,1280px)}.public-home-header{padding:14px 0 10px}.public-home-nav a:not(.public-home-login){display:none}.public-home-hero-copy,.public-home-decision-panel,.public-home-section,.public-home-cta,.student-portal-page>.portal-section,.student-portal-page>.portal-hero-band,.portal-state-panel,.portal-section{border-radius:14px}.public-home-hero-copy,.public-home-decision-panel,.public-home-section,.public-home-cta,.portal-section,.portal-hero-band{padding-left:18px;padding-right:18px}.public-home-hero-copy{padding-top:24px;padding-bottom:22px}.public-home-hero h1{font-size:32px}.public-home-lead,.public-home-section-head p:last-child,.public-home-master-story>p,.public-home-master-grid p,.public-home-master-warning p,.public-home-process p,.portal-hero-copy p:last-child,.portal-progress-block small,.portal-section-heading p,.portal-task-group-heading small,.portal-task-group-heading span,.portal-task-main small,.portal-confirm-row small,.portal-message-head small,.portal-stage-row small,.portal-result-row small,.portal-milestone-row small,.portal-risk-row small,.portal-material-head small,.portal-empty-line,.portal-material-file-note{font-size:12px}.public-home-process,.public-home-master-grid,.portal-metric-grid{grid-template-columns:1fr}.public-home-master-story h3{font-size:22px}.public-home-master-link{width:100%}.portal-state-panel{padding:28px 20px}.portal-state-panel h1{font-size:22px}.portal-task-row,.portal-confirm-row,.portal-message-row.unread,.portal-material-item{padding:12px}.portal-completed-tasks summary{padding-left:12px;padding-right:12px}}@media (width<=560px){.public-home-actions,.portal-progress-label,.portal-section-heading,.portal-task-group-heading,.portal-message-head{flex-direction:column;align-items:flex-start}.public-home-primary,.public-home-secondary,.public-home-light-button,.public-home-master-link,.portal-task-button,.portal-confirm-action,.portal-message-read-button,.portal-primary-button,.public-home-signals,.public-home-tabs{width:100%}.public-home-tabs button{flex:1 1 0}.portal-task-main{width:100%}.portal-task-row,.portal-confirm-row,.portal-message-row,.portal-material-item,.portal-disclosure-row{gap:10px}.portal-material-action{justify-items:start;width:100%}.portal-material-file-note{text-align:left}.student-portal-footer,.public-home-footer,.portal-footer{flex-direction:column;align-items:flex-start}}@media (width<=1080px){.public-home-button,.portal-primary-button,.portal-task-button,.portal-confirm-action,.portal-message-read-button,.public-home-light-button,.public-home-master-link{min-width:44px;min-height:44px;padding:var(--space-2) var(--space-4)}.public-home-card,.portal-metric,.portal-section{padding:var(--space-4)}}@media (width<=760px){.public-home-header,.student-portal-header,.portal-header-status,.portal-hero-band{flex-direction:column!important;align-items:flex-start!important}.public-home-actions button,.portal-primary-button{width:100%}.portal-metric-grid{grid-template-columns:repeat(2,1fr)}.student-portal-page,.portal-state-page,.portal-section{padding:var(--space-4)}}@media (width<=560px){.public-home-process,.portal-metric-grid,.portal-content-grid,.portal-risk-grid{grid-template-columns:1fr!important}.public-home-main,.student-portal-page,.portal-state-page{width:100%!important;padding:var(--space-3)!important}.public-home-main h1{font-size:var(--text-xl)!important}.portal-state-panel h1{font-size:var(--text-lg)!important}.student-portal-footer,.public-home-footer,.portal-footer{align-items:flex-start!important;gap:var(--space-2)!important;flex-direction:column!important}.portal-material-item,.portal-disclosure-row,.portal-confirm-row,.portal-document-row{padding:var(--space-3)!important}.portal-task-row{grid-template-columns:1fr!important}.portal-task-row>*{width:100%!important}}@media (width<=375px){.public-home-brand span{width:36px!important;height:36px!important}.portal-metric strong{font-size:var(--text-lg)!important}.portal-section h2{font-size:var(--text-base)!important}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.portal-spinner{animation:none!important}}@media (prefers-contrast:high){.public-home-button,.portal-primary-button,.portal-metric,.portal-section{border-width:2px!important}}:focus-visible{outline:3px solid var(--color-primary-600);outline-offset:2px}.public-home-button:focus-visible,.portal-primary-button:focus-visible,.portal-secondary-button:focus-visible,.portal-task-button:focus-visible,.portal-message-read-button:focus-visible,.portal-confirm-action:focus-visible{outline:3px solid var(--color-primary-700);outline-offset:2px;box-shadow:0 0 0 6px #10b98133}.public-home-master-link:focus-visible,.portal-footer-link:focus-visible{outline:3px solid var(--color-primary-700);outline-offset:2px}:focus:not(:focus-visible){outline:none}.public-skip-link,.portal-skip-link{top:-100%;left:var(--space-4);z-index:10000;padding:var(--space-2) var(--space-4);background:var(--color-primary-600);color:#fff;font-weight:var(--font-semibold);transition:top var(--transition-fast);border-radius:0 0 8px 8px;position:absolute}.public-skip-link:focus,.portal-skip-link:focus{top:0}.student-portal-header{role:banner}.portal-main-content{role:main}.portal-footer{role:contentinfo}.portal-error-message{role:alert;aria-live:assertive;aria-atomic:true}.portal-success-message{role:status;aria-live:polite}.portal-spinner{role:status;aria-label:"加载中"}.portal-form input[aria-invalid=true],.portal-form select[aria-invalid=true],.portal-form textarea[aria-invalid=true]{border-color:var(--color-error);border-width:2px}.portal-form input[aria-invalid=true]:focus,.portal-form select[aria-invalid=true]:focus,.portal-form textarea[aria-invalid=true]:focus{box-shadow:0 0 0 3px #ef444433}.portal-form label[aria-required=true]:after{content:" *";color:var(--color-error)}.portal-task-list{role:list}.portal-task-row{role:listitem}.portal-message-list{role:list}.portal-message-row{role:listitem}.portal-upload-area{aria-label:"文件上传区域"}.portal-upload-area[aria-disabled=true]{opacity:.6;pointer-events:none}.portal-disclosure-row{aria-expanded:false}.portal-disclosure-row[aria-expanded=true]{aria-expanded:true}.portal-disclosure-toggle{aria-label:"展开/收起"}.portal-progress-bar{role:progressbar;aria-valuemin:0;aria-valuemax:100;aria-valuenow:0}.portal-notification-badge{role:status;aria-label:"新通知"}.portal-modal{role:dialog;aria-modal:true}.portal-search-input{aria-label:"搜索"}.portal-filter-select{aria-label:"筛选条件"}.portal-pagination{role:navigation;aria-label:"分页导航"}.portal-pagination button{aria-label:"上一页"}body,.public-home-main,.student-portal-page{color:var(--color-gray-900)}.public-home-subtitle,.portal-muted-text{color:var(--color-gray-600)}.public-home-button:disabled,.portal-primary-button:disabled,.portal-secondary-button:disabled{opacity:.5;cursor:not-allowed}.sr-only,.public-sr-only,.portal-sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.portal-live-region{clip:rect(0, 0, 0, 0);white-space:nowrap;aria-live:polite;aria-atomic:false;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.portal-table{role:table}.portal-table th{role:columnheader;scope:col}.portal-table td{role:cell}.portal-status-badge{role:status;aria-live:polite}.portal-button-group{role:group;aria-label:"操作按钮组"}[title]:focus-visible:after{content:attr(title);padding:var(--space-1) var(--space-2);background:var(--color-gray-900);color:#fff;font-size:var(--text-xs);white-space:nowrap;z-index:1000;border-radius:4px;position:absolute;bottom:100%;left:50%;transform:translate(-50%)}@media print{.public-home-header,.student-portal-header,.portal-footer,.public-home-footer,.student-portal-footer,.portal-primary-button,.public-home-button{display:none!important}.student-portal-page,.portal-state-page,.public-home-main{width:100%!important;padding:0!important}body{font-size:10pt!important}.portal-metric,.portal-section{break-inside:avoid!important}}.academic-grid{grid-template-columns:1fr 1fr;gap:16px;display:grid}.academic-row{border-top:1px solid #edf1ef;flex-direction:column;gap:5px;padding:13px 0;display:flex}.academic-row span{color:#72857e;font-size:12px}.large-status{color:#2c766a;margin:18px 0 8px;font-size:22px;font-weight:800}@media (width<=640px){.academic-grid{grid-template-columns:1fr}}.admin-shell{background:var(--color-gray-50);min-height:100vh;color:var(--color-gray-900);grid-template-columns:220px minmax(0,1fr);display:grid}.admin-sidebar{gap:var(--space-4);padding:var(--space-6) var(--space-4);border-right:1px solid var(--color-gray-200);background:var(--surface);flex-direction:column;min-height:0;display:flex;overflow-y:auto}.admin-brand{align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--radius-xl);background:linear-gradient(135deg, var(--color-primary-50) 0%, var(--color-primary-100) 100%);display:flex}.admin-brand span{border-radius:var(--radius-xl);background:linear-gradient(135deg, var(--color-success) 0%, #059669 100%);color:#fff;width:42px;height:42px;font-weight:var(--font-bold);font-size:var(--text-lg);box-shadow:var(--shadow-md);place-items:center;display:grid}.admin-brand strong,.admin-brand small{display:block}.admin-brand strong{font-size:var(--text-sm);color:var(--color-gray-900);font-weight:var(--font-semibold)}.admin-brand small{color:var(--color-gray-500);font-size:var(--text-xs);font-weight:var(--font-medium)}.admin-sidebar-section{color:var(--color-gray-400);text-transform:uppercase;letter-spacing:.05em;font-size:11px;font-weight:var(--font-semibold);padding:0 var(--space-3);margin-bottom:var(--space-2)}.admin-sidebar nav{gap:var(--space-1);display:grid}.admin-sidebar nav button{align-items:center;gap:var(--space-3);width:100%;min-height:44px;padding:0 var(--space-3);border-radius:var(--radius-xl);color:var(--color-gray-600);text-align:left;cursor:pointer;font-size:var(--text-sm);font-weight:var(--font-medium);transition:all var(--transition-fast);background:0 0;border:1px solid #0000;display:flex}.admin-sidebar nav button:hover{background:var(--color-gray-100);color:var(--color-gray-900)}.admin-sidebar nav button.active{background:linear-gradient(135deg, var(--color-success) 0%, #059669 100%);color:#fff;box-shadow:var(--shadow-md)}.admin-sidebar nav button.active span{color:#fff}.admin-sidebar nav button span{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.admin-sidebar-foot{align-items:center;gap:var(--space-2);padding:var(--space-3);border-radius:var(--radius-xl);background:var(--color-gray-50);color:var(--color-gray-500);font-size:13px;font-weight:var(--font-medium);margin-top:auto;display:flex}.admin-online-dot{border-radius:var(--radius-full);background:var(--color-success);width:8px;height:8px;box-shadow:0 0 8px #10b98166}.admin-offline-dot{border-radius:var(--radius-full);background:var(--color-warning);width:8px;height:8px}.admin-checking-spinner{color:var(--color-success);justify-self:center;animation:1s linear infinite admin-spin}@keyframes admin-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes admin-fade-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes admin-fade-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-8px)}}@keyframes admin-slide-up{0%{opacity:0;transform:translateY(20px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes admin-slide-down{0%{opacity:1;transform:translateY(0)scale(1)}to{opacity:0;transform:translateY(20px)scale(.98)}}@keyframes admin-scale-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes admin-scale-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.95)}}.admin-modal-backdrop{animation:.2s ease-out admin-fade-in}.admin-modal{animation:.25s cubic-bezier(.4,0,.2,1) admin-slide-up}.admin-content>*{animation:.3s ease-out admin-fade-in}.admin-panel{animation:.4s ease-out admin-fade-in}.admin-panel:first-child{animation-delay:0s}.admin-panel:nth-child(2){animation-delay:50ms}.admin-panel:nth-child(3){animation-delay:.1s}.admin-panel:nth-child(4){animation-delay:.15s}.admin-quick-card{animation:.3s cubic-bezier(.4,0,.2,1) both admin-scale-in}.admin-quick-grid .admin-quick-card:first-child{animation-delay:0s}.admin-quick-grid .admin-quick-card:nth-child(2){animation-delay:50ms}.admin-quick-grid .admin-quick-card:nth-child(3){animation-delay:.1s}.admin-quick-grid .admin-quick-card:nth-child(4){animation-delay:.15s}.admin-quick-grid .admin-quick-card:nth-child(5){animation-delay:.2s}.admin-quick-grid .admin-quick-card:nth-child(6){animation-delay:.25s}.admin-metric{animation:.3s cubic-bezier(.4,0,.2,1) both admin-scale-in}.admin-metric-grid .admin-metric:first-child{animation-delay:0s}.admin-metric-grid .admin-metric:nth-child(2){animation-delay:50ms}.admin-metric-grid .admin-metric:nth-child(3){animation-delay:.1s}.admin-metric-grid .admin-metric:nth-child(4){animation-delay:.15s}.admin-table tbody tr{animation:.2s ease-out both admin-fade-in}.admin-table tbody tr:first-child{animation-delay:0s}.admin-table tbody tr:nth-child(2){animation-delay:30ms}.admin-table tbody tr:nth-child(3){animation-delay:60ms}.admin-table tbody tr:nth-child(4){animation-delay:90ms}.admin-table tbody tr:nth-child(5){animation-delay:.12s}.admin-table tbody tr:nth-child(6){animation-delay:.15s}.admin-table tbody tr:nth-child(7){animation-delay:.18s}.admin-table tbody tr:nth-child(8){animation-delay:.21s}.admin-table tbody tr:nth-child(9){animation-delay:.24s}.admin-table tbody tr:nth-child(10){animation-delay:.27s}.admin-quick-card,.admin-inbox-item,.admin-detail-grid>div,.student-list-item,.collapsible-header{transition:transform var(--transition-fast), box-shadow var(--transition-fast)}.admin-quick-card:hover,.admin-inbox-item:hover,.admin-detail-grid>div:hover,.student-list-item:hover,.collapsible-header:hover{transform:translateY(-2px);box-shadow:0 8px 16px -4px #0000001a}.admin-btn:active{transition:transform 50ms ease-out;transform:scale(.97)}.admin-btn-primary:active{transform:scale(.97)}.admin-tabs{position:relative}.admin-tabs button{position:relative;overflow:hidden}.admin-tabs button:after{content:"";background:var(--color-primary-500);width:0;height:2px;transition:width var(--transition-base);position:absolute;bottom:0;left:50%;transform:translate(-50%)}.admin-tabs button.active:after,.admin-tabs button:hover:after{width:80%}.admin-progress-bar,.progress-fill{transition:width var(--transition-slow) cubic-bezier(.4, 0, .2, 1)}.admin-form input,.admin-form select,.admin-form textarea{transition:border-color var(--transition-fast), box-shadow var(--transition-fast), transform 50ms ease-out}.admin-form input:focus,.admin-form select:focus,.admin-form textarea:focus{transform:translateY(-1px)}@keyframes admin-pulse{0%,to{opacity:1}50%{opacity:.6}}.admin-status-badge.updated{animation:1s ease-in-out admin-pulse}@keyframes admin-shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.admin-skeleton{background:linear-gradient(90deg, var(--color-gray-100) 0%, var(--color-gray-200) 50%, var(--color-gray-100) 100%);background-size:200% 100%;animation:2s ease-in-out infinite admin-shimmer}@keyframes admin-toast-slide-in{0%{opacity:0;transform:translate(100%)scale(.9)}to{opacity:1;transform:translate(0)scale(1)}}@keyframes admin-toast-slide-out{0%{opacity:1;transform:translate(0)scale(1)}to{opacity:0;transform:translate(100%)scale(.9)}}.admin-toast{animation:.3s cubic-bezier(.4,0,.2,1) admin-toast-slide-in}.admin-toast.closing{animation:.2s ease-in admin-toast-slide-out}@keyframes admin-check-popcale{0%{transform:scale(0)}50%{transform:scale(1.2)}to{transform:scale(1)}}input[type=checkbox]:checked,input[type=radio]:checked{animation:.2s ease-out admin-check-bounce}@keyframes admin-dropdown-fade{0%{opacity:0;transform:translateY(-8px)scale(.95)}to{opacity:1;transform:translateY(0)scale(1)}}.admin-dropdown-menu{animation:.15s ease-out admin-dropdown-fade}.collapsible-content{transition:max-height var(--transition-base), opacity var(--transition-fast);overflow:hidden}.collapsible-content.expanding{opacity:1}.collapsible-content.collapsing{opacity:0}.admin-sidebar{transition:transform var(--transition-base), box-shadow var(--transition-base)}.admin-filter,.catalog-filter{transition:all var(--transition-fast)}.admin-filter:focus-within,.catalog-filter:focus-within{box-shadow:0 0 0 3px #10b9811a}.collapsible-toggle svg{transition:transform var(--transition-fast)}.collapsible-header[aria-expanded=true] .collapsible-toggle svg{transform:rotate(180deg)}.admin-spinner{animation:1s linear infinite admin-spin}.admin-chat-message{animation:.2s cubic-bezier(.4,0,.2,1) both admin-scale-in}.admin-chat-message:first-child{animation-delay:0s}.admin-chat-message:nth-child(2){animation-delay:50ms}.admin-chat-message:nth-child(3){animation-delay:.1s}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.admin-modal-backdrop,.admin-modal,.admin-content>*,.admin-panel,.admin-quick-card,.admin-metric,.admin-table tbody tr,.admin-chat-message,.admin-toast{animation:none!important}.admin-quick-card,.admin-inbox-item,.admin-detail-grid>div,.student-list-item,.collapsible-header{transition:none!important}.admin-quick-card:hover,.admin-inbox-item:hover,.admin-detail-grid>div:hover,.student-list-item:hover,.collapsible-header:hover,.admin-btn:active,.admin-btn-primary:active,.admin-form input:focus,.admin-form select:focus,.admin-form textarea:focus{transform:none!important}.collapsible-toggle svg,.collapsible-content{transition:none!important}}:focus-visible{outline:3px solid var(--color-primary-500);outline-offset:2px;border-radius:2px}button:focus-visible,.admin-btn:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible,[tabindex]:focus-visible{outline:3px solid var(--color-primary-600);outline-offset:2px;box-shadow:0 0 0 6px #10b98126}:focus:not(:focus-visible){box-shadow:none;outline:none}@media (prefers-contrast:high){*,:before,:after{border-color:var(--color-gray-900)!important;border-width:2px!important}.admin-btn,.admin-card,.admin-table td,.admin-table th{border-width:2px!important}.admin-text-muted{color:var(--color-gray-700)!important}input,select,textarea{border-width:2px!important}.admin-modal-backdrop{background:#000c!important}}.admin-skip-link{top:-100%;left:var(--space-4);z-index:10000;padding:var(--space-2) var(--space-4);background:var(--color-primary-600);color:#fff;font-weight:var(--font-semibold);transition:top var(--transition-fast);border-radius:0 0 8px 8px;position:absolute}.admin-skip-link:focus{top:0}.admin-sidebar{role:navigation;aria-label:"主导航"}.admin-main{role:main;aria-label:"主要内容区域"}.admin-topbar{role:banner}.admin-error,.admin-notice{role:alert;aria-live:assertive;aria-atomic:true}.admin-form input[aria-invalid=true],.admin-form select[aria-invalid=true],.admin-form textarea[aria-invalid=true]{border-color:var(--color-error);border-width:2px}.admin-form input[aria-invalid=true]:focus,.admin-form select[aria-invalid=true]:focus,.admin-form textarea[aria-invalid=true]:focus{box-shadow:0 0 0 3px #ef444433}.admin-form label[for]:after{content:""}.admin-form label[aria-required=true]:after{content:" *";color:var(--color-error)}.admin-table{role:table}.admin-table thead,.admin-table tbody{role:rowgroup}.admin-table tr{role:row}.admin-table th{role:columnheader;scope:col}.admin-table td{role:cell}.admin-table-row-clickable{cursor:pointer}.admin-table-row-clickable:focus-visible{outline:3px solid var(--color-primary-600);outline-offset:-3px}.admin-status-badge{role:status;aria-live:polite}.admin-spinner,.portal-spinner{role:status;aria-label:"加载中"}[aria-busy=true]{opacity:.6;pointer-events:none}[title]{position:relative}.admin-btn[title]:focus-visible:after{content:attr(title);padding:var(--space-1) var(--space-2);background:var(--color-gray-900);color:#fff;font-size:var(--text-xs);white-space:nowrap;z-index:1000;border-radius:4px;position:absolute;bottom:100%;left:50%;transform:translate(-50%)}.admin-modal{role:dialog;aria-modal:true}.admin-tabs{role:tablist;aria-label:"功能选项卡"}.admin-tabs button{role:tab;aria-selected:false}.admin-tabs button.active{aria-selected:true}input[type=checkbox]+label,input[type=radio]+label{cursor:pointer;-webkit-user-select:none;user-select:none}.collapsible-header{aria-expanded:false;aria-controls:collapsible-content}.collapsible-header[aria-expanded=true]{aria-expanded:true}.admin-pagination{role:navigation;aria-label:"分页导航"}.admin-pagination button{aria-label:"上一页"}.admin-search{role:search}.admin-search input{aria-label:"搜索"}.admin-filter{role:search;aria-label:"筛选条件"}.admin-breadcrumb{role:navigation;aria-label:"面包屑导航"}[role=progressbar]{aria-valuemin:0;aria-valuemax:100;aria-valuenow:0}.admin-alert{role:alert;aria-live:assertive}.admin-alert-success{aria-label:"成功提示"}.admin-alert-error{aria-label:"错误提示"}.admin-alert-warning{aria-label:"警告提示"}img{alt:""}img:not([alt]){outline:2px dashed red}.admin-text-muted,.admin-section-title span,.admin-detail-grid span{color:var(--color-gray-600)}body,.admin-content{color:var(--color-gray-900)}a{color:var(--color-primary-700)}a:hover{color:var(--color-primary-900);text-decoration:underline}.admin-btn:disabled,.admin-btn[aria-disabled=true]{opacity:.5;cursor:not-allowed}.sr-only,.admin-sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.admin-live-region{clip:rect(0, 0, 0, 0);white-space:nowrap;aria-live:polite;aria-atomic:false;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}kbd{background:var(--color-gray-100);border:1px solid var(--color-gray-300);border-radius:4px;padding:2px 6px;font-family:monospace;font-size:.85em}label[for]{cursor:pointer}@media print{*,:before,:after{color:#000!important;box-shadow:none!important;text-shadow:none!important;background:0 0!important}a,a:visited{color:#000;text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.admin-sidebar,.admin-topbar,.admin-btn,.admin-modal-backdrop{display:none!important}.admin-content{width:100%!important}@page{margin:2cm}tr,img{page-break-inside:avoid}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}}.admin-main{grid-template-rows:auto 1fr;min-width:0;display:grid}.admin-topbar{justify-content:space-between;align-items:center;gap:var(--space-4);min-height:72px;padding:0 var(--space-6);border-bottom:1px solid var(--color-gray-200);background:var(--surface);box-shadow:var(--shadow-sm);display:flex}.admin-topbar>div:nth-child(2){gap:var(--space-1);min-width:0;display:grid}.admin-topbar strong{color:var(--color-gray-900);font-size:var(--text-lg);font-weight:var(--font-semibold)}.admin-topbar span{color:var(--color-gray-500);font-size:var(--text-sm);font-weight:var(--font-medium)}.admin-menu-btn{border:1px solid var(--color-gray-200);border-radius:var(--radius-xl);background:var(--surface);width:40px;height:40px;color:var(--color-gray-600);cursor:pointer;transition:all var(--transition-fast);place-items:center;display:none}.admin-menu-btn:hover{background:var(--color-gray-50);border-color:var(--color-gray-300)}.admin-user{align-items:center;gap:var(--space-3);display:flex}.admin-user small{color:var(--color-gray-500);font-size:var(--text-xs);font-weight:var(--font-medium)}.admin-user button,.admin-menu-btn{cursor:pointer}.admin-user button{border:1px solid var(--color-gray-200);border-radius:var(--radius-xl);background:var(--surface);width:40px;height:40px;color:var(--color-gray-600);transition:all var(--transition-fast);place-items:center;display:grid}.admin-user button:hover{background:var(--color-gray-50);border-color:var(--color-gray-300);color:var(--color-gray-900)}.admin-content{min-width:0;padding:var(--space-6)}.admin-page-header{justify-content:space-between;align-items:flex-start;gap:var(--space-5);margin-bottom:var(--space-6);padding:var(--space-6);border-radius:var(--radius-2xl);background:linear-gradient(135deg, var(--surface) 0%, var(--color-gray-50) 100%);border:1px solid var(--color-gray-200);box-shadow:var(--shadow-sm);display:flex}.admin-page-header h1{margin:var(--space-2) 0 0;color:var(--color-gray-900);font-size:var(--text-3xl);font-weight:var(--font-bold);letter-spacing:-.02em}.admin-page-header p{margin:var(--space-2) 0 0;color:var(--color-gray-500);font-size:var(--text-sm);line-height:var(--leading-relaxed);font-weight:var(--font-medium)}.admin-page-kicker{color:var(--color-success);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.05em;font-weight:var(--font-semibold)}.admin-header-actions{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.admin-btn{justify-content:center;align-items:center;gap:var(--space-2);min-height:40px;padding:0 var(--space-4);border:1px solid var(--color-gray-200);border-radius:var(--radius-xl);background:var(--surface);color:var(--color-gray-600);cursor:pointer;font:inherit;font-size:var(--text-sm);font-weight:var(--font-medium);transition:all var(--transition-fast);box-shadow:var(--shadow-xs);display:inline-flex}.admin-btn:hover{background:var(--color-gray-50);border-color:var(--color-gray-300);color:var(--color-gray-900);box-shadow:var(--shadow-sm)}.admin-btn-primary{border-color:var(--color-success);background:linear-gradient(135deg, var(--color-success) 0%, #059669 100%);color:#fff;box-shadow:var(--shadow-md)}.admin-btn-primary:hover{background:linear-gradient(135deg,#059669 0%,#047857 100%);border-color:#059669;box-shadow:0 4px 6px #10b9814d}.admin-btn-secondary{background:var(--surface)}.admin-btn-danger{color:#dc2626;background:#fef2f2;border-color:#fca5a5}.admin-btn-danger:hover{background:#fee2e2;border-color:#f87171}.admin-btn:disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.admin-panel{padding:var(--space-5);border:1px solid var(--color-gray-200);border-radius:var(--radius-xl);background:var(--surface);box-shadow:var(--shadow-sm)}.admin-panel-head{justify-content:space-between;align-items:center;gap:var(--space-4);margin-bottom:var(--space-5);padding-bottom:var(--space-4);border-bottom:1px solid var(--color-gray-100);display:flex}.admin-panel-head h2,.admin-panel-head h3{color:var(--color-gray-900);font-size:var(--text-lg);font-weight:var(--font-semibold);margin:0}.admin-panel-head p{margin:var(--space-1) 0 0;color:var(--color-gray-500);font-size:13px;font-weight:var(--font-medium)}.admin-tabs{gap:var(--space-2);margin-bottom:var(--space-5);padding:var(--space-1);background:var(--color-gray-50);border-radius:var(--radius-xl);border:1px solid var(--color-gray-200);flex-wrap:wrap;display:flex}.admin-tabs button{color:#64748b;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;min-height:36px;padding:0 16px;font-size:14px;font-weight:500;transition:all .15s}.admin-tabs button:hover{color:#0f172a;background:#fff}.admin-tabs button.active{color:#10b981;background:#fff;border-color:#e2e8f0;box-shadow:0 1px 3px #0000000f}.admin-table-wrap{background:#fff;border:1px solid #e2e8f0;border-radius:12px;max-height:70vh;position:relative;overflow:auto;box-shadow:0 1px 3px #0000000a}.admin-table{border-collapse:collapse;width:100%;min-width:760px}.admin-table th,.admin-table td{text-align:left;vertical-align:middle;border-bottom:1px solid #f1f5f9;padding:14px 16px;font-size:14px}.admin-table th{color:#64748b;text-transform:uppercase;letter-spacing:.025em;z-index:10;background:#f8fafc;font-size:13px;font-weight:600;position:sticky;top:0;box-shadow:0 2px 4px #0000000a}.admin-table th:after{content:"";background:linear-gradient(90deg,#0000,#e2e8f0,#0000);height:1px;position:absolute;bottom:0;left:0;right:0}.admin-table-row-clickable{cursor:pointer;transition:background .15s}.admin-table-row-clickable:hover{background:#f8fafc}.admin-status{color:#10b981;background:#f0fdf4;border-radius:8px;align-items:center;min-height:28px;padding:0 12px;font-size:13px;font-weight:600;display:inline-flex}.admin-status.good{color:#16a34a;background:#dcfce7}.admin-status.warn{color:#d97706;background:#fef3c7}.admin-status.muted{color:#64748b;background:#f1f5f9}.admin-empty{color:#94a3b8;text-align:center;background:#f8fafc;border:2px dashed #e2e8f0;border-radius:12px;place-items:center;min-height:200px;padding:24px;font-size:14px;font-weight:500;display:grid}.admin-error{color:#dc2626;background:#fef2f2;border:1px solid #fecaca;border-radius:10px;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;padding:14px 16px;font-size:14px;font-weight:500;display:flex}.admin-success,.admin-notice{color:#16a34a;background:#f0fdf4;border:1px solid #bbf7d0;border-radius:10px;margin-bottom:16px;padding:14px 16px;font-size:14px;font-weight:500}.admin-warning{color:#d97706;background:#fffbeb;border:1px solid #fde68a;border-radius:10px;align-items:center;gap:10px;margin-bottom:16px;padding:14px 16px;font-size:14px;font-weight:500;display:flex}.admin-filter{align-items:center;gap:12px;margin-bottom:20px;display:flex}.admin-search{background:#fff;border:1px solid #e2e8f0;border-radius:10px;flex:1;align-items:center;gap:10px;min-width:0;padding:0 16px;transition:all .15s;display:flex;box-shadow:0 1px 2px #0000000a}.admin-search:focus-within{border-color:#10b981;box-shadow:0 0 0 3px #10b9811a}.admin-search input{min-width:0;min-height:40px;font:inherit;color:#0f172a;border:0;outline:0;flex:1;font-size:14px}.admin-search input::placeholder{color:#94a3b8}.admin-search-clear{color:#94a3b8;cursor:pointer;background:0 0;border:0;border-radius:6px;place-items:center;width:24px;height:24px;padding:0;transition:all .15s;display:grid}.admin-search-clear:hover{color:#0f172a;background:#f1f5f9}.admin-filter .admin-btn{flex:none}.admin-metric-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:24px;display:grid}.admin-metric{background:#fff;border:1px solid #e2e8f0;border-radius:12px;min-width:0;padding:20px;transition:all .15s;box-shadow:0 1px 3px #0000000a}.admin-metric:hover{box-shadow:0 4px 6px #0000000f}.admin-metric span{color:#64748b;text-transform:uppercase;letter-spacing:.025em;font-size:13px;font-weight:500}.admin-metric strong{color:#0f172a;overflow-wrap:anywhere;margin-top:8px;font-size:28px;font-weight:700;display:block}.admin-metric small{color:#94a3b8;margin-top:6px;font-size:12px;font-weight:500;display:block}.admin-dashboard-grid{grid-template-columns:1.2fr .8fr;gap:20px;display:grid}.admin-quick-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.admin-quick-card{color:#0f172a;text-align:left;cursor:pointer;background:#fff;border:1px solid #e2e8f0;border-radius:12px;gap:8px;padding:18px;transition:all .15s;display:grid;box-shadow:0 1px 3px #0000000a}.admin-quick-card:hover{border-color:#10b981;transform:translateY(-2px);box-shadow:0 4px 6px #10b9811a}.admin-quick-card strong{font-size:15px;font-weight:600}.admin-quick-card span{color:#64748b;font-size:13px;font-weight:500}.admin-focus-list{gap:12px;display:grid}.admin-focus-list>div{background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;align-items:center;gap:12px;padding:14px 16px;transition:all .15s;display:flex}.admin-focus-list>div:hover{background:#f0fdf4;border-color:#bbf7d0}.admin-login-page{background:linear-gradient(135deg,#f0fdf4 0%,#dcfce7 100%);place-items:center;min-height:100vh;padding:24px;display:grid}.admin-login-card{background:#fff;border:1px solid #e2e8f0;border-radius:16px;gap:16px;width:min(440px,100%);padding:32px;display:grid;box-shadow:0 20px 60px -15px #0000001a}.admin-login-brand{align-items:center;gap:14px;display:flex}.admin-login-brand span{color:#fff;background:linear-gradient(135deg,#10b981 0%,#059669 100%);border-radius:12px;place-items:center;width:48px;height:48px;font-size:20px;font-weight:700;display:grid;box-shadow:0 4px 6px -1px #10b98133}.admin-login-card h1{color:#0f172a;margin:8px 0 0;font-size:26px;font-weight:700}.admin-login-card p{color:#64748b;margin:0;font-size:14px;font-weight:500;line-height:1.6}.admin-login-card label{color:#475569;gap:8px;font-size:13px;font-weight:600;display:grid}.admin-login-card input{min-height:44px;font:inherit;border:1px solid #e2e8f0;border-radius:10px;padding:0 16px;font-size:14px;transition:all .15s}.admin-login-card input:focus{border-color:#10b981;outline:none;box-shadow:0 0 0 3px #10b9811a}.admin-modal-backdrop{z-index:40;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0f172a99;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.admin-modal{background:#fff;border-radius:16px;width:min(960px,100%);max-height:min(90vh,1000px);padding:24px;overflow:auto;box-shadow:0 25px 50px -12px #00000040}.admin-modal-head{border-bottom:1px solid #f1f5f9;justify-content:space-between;align-items:center;gap:16px;margin-bottom:20px;padding-bottom:16px;display:flex}.admin-modal-head h2{color:#0f172a;margin:0;font-size:20px;font-weight:700}.admin-modal-head button{color:#64748b;cursor:pointer;background:#fff;border:1px solid #e2e8f0;border-radius:10px;place-items:center;width:40px;height:40px;transition:all .15s;display:grid}.admin-modal-head button:hover{color:#0f172a;background:#f8fafc;border-color:#cbd5e1}.admin-modal-actions{border-top:1px solid #f1f5f9;justify-content:flex-end;gap:10px;margin-top:24px;padding-top:20px;display:flex}.admin-form{gap:16px;display:grid}.admin-form label{color:#475569;gap:8px;font-size:13px;font-weight:600;display:grid}.admin-form input,.admin-form select,.admin-form textarea{box-sizing:border-box;color:#0f172a;width:100%;min-height:42px;font:inherit;background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:10px 14px;font-size:14px;transition:all .15s}.admin-form input:focus,.admin-form select:focus,.admin-form textarea:focus{border-color:#10b981;outline:none;box-shadow:0 0 0 3px #10b9811a}.admin-form textarea{resize:vertical;min-height:100px}.admin-pagination{color:#64748b;border-top:1px solid #f1f5f9;justify-content:space-between;align-items:center;gap:16px;margin-top:20px;padding-top:20px;font-size:13px;font-weight:500;display:flex}.admin-pagination>div{gap:10px;display:flex}.admin-detail-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-bottom:20px;display:grid}.admin-detail-grid>div{background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;gap:6px;padding:14px 16px;transition:all .15s;display:grid}.admin-detail-grid>div:hover{background:#f0fdf4;border-color:#bbf7d0}.admin-detail-grid span,.admin-section-title span{color:#64748b;text-transform:uppercase;letter-spacing:.025em;font-size:12px;font-weight:600}.admin-detail-grid strong{color:#0f172a;font-size:14px;font-weight:600}.admin-detail-section{border-top:1px solid #f1f5f9;margin-top:20px;padding-top:20px}.admin-section-title{justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px;display:flex}.admin-section-title h3{color:#0f172a;margin:0;font-size:16px;font-weight:700}.admin-control-row{grid-template-columns:1fr 1fr;gap:12px;display:grid}.admin-control-row label{color:#475569;gap:6px;font-size:13px;font-weight:500;display:grid}.admin-control-row select,.admin-role-select{color:#0f172a;min-height:40px;font:inherit;background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:8px 14px;font-size:14px;transition:all .15s}.admin-control-row select:focus,.admin-role-select:focus{border-color:#10b981;outline:none;box-shadow:0 0 0 3px #10b9811a}.admin-inline-form{gap:10px;display:flex}.admin-inline-form input{min-width:0;min-height:40px;font:inherit;border:1px solid #e2e8f0;border-radius:10px;outline:0;flex:1;padding:8px 14px;font-size:14px;transition:all .15s}.admin-inline-form input:focus{border-color:#10b981;outline:none;box-shadow:0 0 0 3px #10b9811a}.admin-permission-tags{flex-wrap:wrap;gap:8px;display:flex}.admin-permission-tags span{color:#16a34a;background:#f0fdf4;border:1px solid #bbf7d0;border-radius:6px;padding:6px 10px;font-size:12px;font-weight:500}.admin-permission-groups{gap:16px;display:grid}.admin-permission-group{background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;padding:18px}.admin-permission-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.admin-permission-option{cursor:pointer;background:#fff;border:1px solid #e2e8f0;border-radius:8px;align-items:flex-start;gap:10px;min-height:56px;padding:10px 12px;transition:all .15s;display:flex}.admin-permission-option:hover{background:#f8fafc;border-color:#cbd5e1}.admin-permission-option.checked{background:#f0fdf4;border-color:#10b981}.admin-permission-option input{accent-color:#10b981;margin-top:3px}.admin-permission-option span{gap:4px;display:grid}.admin-permission-option strong{color:#0f172a;font-size:13px;font-weight:500;line-height:1.4}.admin-readable-permissions{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.admin-readable-permissions>div{background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;gap:4px;min-width:0;padding:10px 12px;display:grid}.admin-readable-permissions strong{color:#0f172a;overflow-wrap:anywhere;font-size:13px;font-weight:500;line-height:1.4}.admin-readable-permissions span{color:#94a3b8;font-size:12px}.admin-ai-panel{max-width:1100px}.admin-ai-panel .admin-panel-head{align-items:flex-start}.admin-ai-panel select{color:#0f172a;min-width:250px;min-height:40px;font:inherit;background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:8px 14px;font-size:14px;transition:all .15s}.admin-ai-panel select:focus{border-color:#10b981;outline:none;box-shadow:0 0 0 3px #10b9811a}.admin-chat-log{background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;gap:14px;min-height:360px;max-height:520px;padding:20px;display:grid;overflow:auto}.admin-chat-message{background:#fff;border:1px solid #e2e8f0;border-radius:12px;grid-template-columns:38px minmax(0,1fr);align-items:start;gap:12px;max-width:82%;padding:14px 16px;display:grid;box-shadow:0 1px 2px #0000000a}.admin-chat-message.user{background:linear-gradient(135deg,#f0fdf4 0%,#dcfce7 100%);border-color:#bbf7d0;justify-self:end}.admin-chat-message strong{color:#10b981;font-size:13px;font-weight:600}.admin-chat-message p{color:#334155;white-space:pre-wrap;overflow-wrap:anywhere;margin:0;font-size:14px;line-height:1.6}.admin-chat-compose{grid-template-columns:minmax(0,1fr) auto;gap:12px;margin-top:16px;display:grid}.admin-chat-compose textarea{resize:vertical;min-height:88px;font:inherit;border:1px solid #e2e8f0;border-radius:10px;outline:0;padding:12px 14px;font-size:14px;transition:all .15s}.admin-chat-compose textarea:focus{border-color:#10b981;outline:none;box-shadow:0 0 0 3px #10b9811a}.admin-sidebar-section+nav{margin-bottom:4px}.admin-mobile-mask{display:none}@media (width<=1080px){.admin-shell{grid-template-columns:1fr}.admin-sidebar{z-index:30;background:#fff;width:min(84vw,300px);transition:transform .2s;position:fixed;inset:0 auto 0 0;transform:translate(-102%);box-shadow:12px 0 40px #0f172a26}.admin-sidebar.open{transform:translate(0)}.admin-mobile-mask{z-index:20;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0f172a80;border:0;display:block;position:fixed;inset:0}.admin-menu-btn{display:grid}.admin-metric-grid,.admin-dashboard-grid{grid-template-columns:1fr 1fr}}@media (width<=760px){.admin-content{padding:14px}.admin-page-header,.admin-panel-head,.admin-filter{flex-direction:column;align-items:stretch}.admin-header-actions{justify-content:stretch}.admin-header-actions .admin-btn,.admin-header-actions .admin-user button{width:100%}.admin-metric-grid,.admin-dashboard-grid,.admin-quick-grid{grid-template-columns:1fr}.admin-table{min-width:640px}.admin-modal{padding:14px}.admin-modal-actions{flex-direction:column;align-items:stretch}.admin-modal-actions .admin-btn{width:100%}}@media (width<=560px){.admin-page-header h1{font-size:22px}.admin-metric strong{font-size:20px}.admin-sidebar{width:min(90vw,320px)}.admin-detail-grid,.admin-control-row{grid-template-columns:1fr}.admin-inline-form{flex-direction:column;align-items:stretch}.admin-permission-grid,.admin-readable-permissions{grid-template-columns:1fr}.admin-row-actions{justify-content:flex-start}.admin-chat-message{max-width:96%}.admin-chat-compose{grid-template-columns:1fr}}@media (width<=900px){.admin-permission-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=560px){.admin-user-toolbar{flex-direction:column;align-items:stretch}.admin-user-toolbar .admin-filter{width:100%}.admin-detail-grid,.admin-control-row{grid-template-columns:1fr}.admin-inline-form{flex-direction:column;align-items:stretch}.admin-permission-grid{grid-template-columns:1fr}.admin-row-actions{justify-content:flex-start}.admin-inline-action .admin-btn{flex:120px}}.admin-row-action{flex-wrap:wrap}@media (width<=760px){.admin-row-action{flex-direction:column;align-items:flex-start;min-width:0}.admin-row-action .admin-btn{width:100%}}.admin-inbox-filter{align-items:end;gap:12px;margin-bottom:16px;display:flex}.admin-inbox-filter label{color:#475569;gap:6px;min-width:170px;font-size:13px;font-weight:500;display:grid}.admin-inbox-filter select{box-sizing:border-box;color:#0f172a;width:100%;min-height:40px;font:inherit;background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:0 14px;font-size:14px;transition:all .15s}.admin-inbox-filter select:focus{border-color:#10b981;outline:none;box-shadow:0 0 0 3px #10b9811a}.admin-inbox-panel{min-width:0}.admin-inbox-list{gap:12px;display:grid}.admin-inbox-item{background:#fff;border:1px solid #e2e8f0;border-radius:12px;grid-template-columns:minmax(0,1fr) auto;gap:20px;padding:18px;transition:all .15s;display:grid;box-shadow:0 1px 3px #0000000a}.admin-inbox-item:hover{border-color:#cbd5e1;box-shadow:0 4px 6px #0000000f}.admin-inbox-item.unread{background:linear-gradient(135deg,#f0fdf4 0%,#fff 100%);border-color:#bbf7d0}.admin-inbox-item-main{min-width:0}.admin-inbox-item-head{justify-content:space-between;align-items:flex-start;gap:14px;display:flex}.admin-inbox-item-head>div{color:#334155;align-items:flex-start;gap:8px;min-width:0;display:flex}.admin-inbox-item-head strong{color:#0f172a;overflow-wrap:anywhere;min-width:0;font-size:15px;font-weight:600;line-height:1.45}.admin-inbox-item-head time{color:#94a3b8;white-space:nowrap;flex:none;font-size:12px;font-weight:500}.admin-inbox-item p{color:#475569;overflow-wrap:anywhere;white-space:pre-wrap;max-width:72ch;margin:10px 0 8px;font-size:14px;line-height:1.65}.admin-inbox-item small{color:#94a3b8;font-size:12px;font-weight:500}.admin-inbox-actions{flex-wrap:wrap;justify-content:flex-end;align-self:center;align-items:center;gap:8px;min-width:0;display:flex}.admin-inbox-actions .admin-btn{white-space:nowrap}@media (width<=760px){.admin-inbox-item{grid-template-columns:1fr;gap:12px}.admin-inbox-actions{justify-content:flex-start}}@media (width<=560px){.admin-inbox-filter,.admin-inbox-filter label{width:100%}.admin-inbox-filter{flex-direction:column;align-items:stretch}.admin-inbox-item{padding:14px 12px}.admin-inbox-item-head{flex-direction:column;gap:5px}.admin-inbox-item-head time{white-space:normal}.admin-inbox-actions{flex-direction:column;align-items:stretch}.admin-inbox-actions .admin-btn{width:100%}}.admin-audit-filter{align-items:flex-start}.admin-audit-filter>.admin-filter{flex:1;margin-bottom:0}.admin-audit-advanced{background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;grid-template-columns:repeat(3,minmax(180px,1fr));align-items:end;padding:16px;display:grid}.admin-filter-field{color:#475569;gap:6px;min-width:0;font-size:13px;font-weight:500;display:grid}.admin-filter-field input,.admin-filter-field select{box-sizing:border-box;color:#0f172a;width:100%;min-width:0;min-height:40px;font:inherit;background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:8px 14px;font-size:14px;transition:all .15s}.admin-filter-field input:focus,.admin-filter-field select:focus{border-color:#10b981;outline:none;box-shadow:0 0 0 3px #10b9811a}.admin-audit-filter-actions{align-items:center;gap:10px;display:flex}.crm-appointment-filter{flex-wrap:wrap;align-items:flex-end}.crm-appointment-filter>.admin-filter{flex:320px;margin-bottom:0}.crm-appointment-filter>.admin-role-select{min-width:128px}.crm-appointment-filter>.admin-filter-field{flex:0 150px}.crm-appointment-filter>.admin-btn{flex:none}.admin-detail-value-wrap{overflow-wrap:anywhere}.admin-security-grid{grid-template-columns:minmax(0,1.25fr) minmax(300px,.75fr);align-items:start;gap:20px;display:grid}.admin-session-list{gap:10px;display:grid}.admin-session-item{background:#fff;border:1px solid #e2e8f0;border-radius:10px;justify-content:space-between;align-items:center;gap:16px;padding:14px 16px;transition:all .15s;display:flex;box-shadow:0 1px 2px #0000000a}.admin-session-item:hover{border-color:#cbd5e1;box-shadow:0 2px 4px #0000000f}.admin-session-item>div:first-child{gap:4px;min-width:0;display:grid}.admin-session-item>div:last-child{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;display:flex}.admin-session-item strong{color:#0f172a;font-size:14px;font-weight:600}.admin-session-item span{color:#94a3b8;overflow-wrap:anywhere;font-size:12px;font-weight:500}@media (width<=980px){.admin-audit-advanced{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-security-grid{grid-template-columns:1fr}}@media (width<=560px){.admin-audit-filter{align-items:stretch}.admin-audit-filter>.admin-filter{width:100%}.admin-audit-advanced{grid-template-columns:1fr}.admin-audit-filter-actions,.admin-audit-filter-actions .admin-btn{width:100%}.admin-audit-filter-actions .admin-btn{flex:1}.admin-pagination{flex-direction:column;align-items:stretch}.admin-pagination>div,.admin-pagination .admin-btn{width:100%}.admin-pagination .admin-btn{flex:1}.admin-session-item{flex-direction:column;align-items:stretch}.admin-session-item>div:last-child{justify-content:space-between}.admin-session-item .admin-btn{width:100%}}@media (width<=760px){.crm-appointment-filter{flex-direction:column;align-items:stretch}.crm-appointment-filter>.admin-filter,.crm-appointment-filter>.admin-role-select,.crm-appointment-filter>.admin-filter-field,.crm-appointment-filter>.admin-btn{flex:auto;width:100%;max-width:none}}.crm-appointment-filter>.admin-filter-field,.crm-appointment-filter>.admin-filter-field input,.admin-form label,.admin-form input,.admin-form select,.admin-form textarea,.admin-history-item>div,.admin-history-item>span{min-width:0}.catalog-filter{flex-wrap:wrap;align-items:flex-end;gap:8px;margin-bottom:14px;display:flex}.catalog-filter>.admin-filter{flex:300px;margin-bottom:0}.catalog-filter>.admin-role-select{min-width:132px}.catalog-filter>.admin-btn{flex:none}@media (width<=760px){.catalog-filter{flex-direction:column;align-items:stretch}.catalog-filter>.admin-filter,.catalog-filter>.admin-role-select,.catalog-filter>.admin-btn{flex:auto;width:100%;max-width:none}}.admin-history-item>div:first-child strong,.admin-history-item>div:first-child small,.admin-history-item>span{overflow-wrap:anywhere}.admin-history-item .admin-btn{flex:none}@media (width<=760px){.admin-modal-actions{align-items:stretch}.admin-modal-actions .admin-btn{min-width:0}.admin-history-item>span{width:100%}}.admin-finance-page{gap:20px;min-width:0;display:grid}.admin-finance-page>.admin-tabs{margin-bottom:0}.admin-finance-page .admin-panel,.admin-finance-page .admin-page-header{min-width:0}.admin-finance-lookup{gap:12px;display:grid}.admin-finance-lookup .admin-panel-head{margin-bottom:0}.admin-finance-summary{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.admin-finance-summary .admin-metric{background:#fff;border:1px solid #e2e8f0;border-radius:12px;min-width:0;padding:18px;box-shadow:0 1px 3px #0000000a}.admin-finance-summary .admin-metric span,.admin-finance-summary .admin-metric strong{display:block}.admin-finance-summary .admin-metric span{color:#64748b;font-size:13px;font-weight:500}.admin-finance-summary .admin-metric strong{color:#0f172a;overflow-wrap:anywhere;margin-top:8px;font-size:24px;font-weight:700}.admin-finance-summary .admin-metric small{color:#94a3b8;margin-top:6px;font-size:12px;line-height:1.4;display:block}.admin-finance-detail{gap:12px;display:grid}.admin-finance-detail h3{color:#0f172a;margin:10px 0 0;font-size:15px;font-weight:600}.admin-reconciliation-form{grid-template-columns:repeat(3,minmax(160px,1fr)) auto auto;align-items:end;display:grid}.admin-reconciliation-form label{color:#475569;gap:6px;min-width:0;font-size:13px;font-weight:500;display:grid}.admin-reconciliation-form input{box-sizing:border-box;color:#0f172a;width:100%;min-height:40px;font:inherit;background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:8px 14px;font-size:14px;transition:all .15s}.admin-reconciliation-form input:focus{border-color:#10b981;outline:none;box-shadow:0 0 0 3px #10b9811a}.admin-finance-page .admin-table-wrap{overscroll-behavior-inline:contain;scrollbar-gutter:stable;max-width:100%}.admin-finance-page .admin-row-action{gap:6px;min-width:190px;display:flex}.admin-finance-page .admin-row-action .admin-btn{white-space:nowrap}.admin-finance-page .admin-error{justify-content:space-between;align-items:center;gap:12px;display:flex}.admin-finance-page .admin-error button{color:inherit;cursor:pointer;background:0 0;border:0;text-decoration:underline}.admin-batch-select-all{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--color-primary-50);border:1px solid var(--color-primary-200);border-radius:var(--radius-lg);margin-bottom:var(--space-4);display:flex}.admin-batch-select-all label{align-items:center;gap:var(--space-2);font-size:var(--text-sm);font-weight:var(--font-medium);color:var(--color-gray-700);cursor:pointer;display:flex}.admin-batch-select-all input[type=checkbox]{cursor:pointer;width:18px;height:18px;accent-color:var(--color-primary-600)}.admin-batch-info{font-size:var(--text-xs);color:var(--color-gray-600);flex:1}.admin-batch-actions-bar{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:linear-gradient(135deg, var(--color-gray-50) 0%, #fff 100%);border:1px solid var(--color-gray-200);border-radius:var(--radius-lg);margin-bottom:var(--space-4);box-shadow:var(--shadow-sm);display:flex}.admin-batch-counter{align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-3);background:var(--color-primary-600);color:#fff;border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:var(--font-semibold);display:inline-flex}.admin-table tbody tr.selected{background:var(--color-primary-50);transition:background var(--transition-fast)}.admin-table tbody tr.selected:hover{background:var(--color-primary-100)}.admin-table tbody tr input[type=checkbox]{cursor:pointer;width:16px;height:16px;accent-color:var(--color-primary-600)}.admin-virtual-scroll-container{max-height:60vh;position:relative;overflow-y:auto}.admin-virtual-scroll-spacer{pointer-events:none;position:absolute;top:0;left:0;right:0}.admin-virtual-scroll-content{will-change:transform;position:relative}.admin-table-wrap.loading{position:relative}.admin-table-wrap.loading:after{content:"";border:3px solid var(--color-gray-200);border-top-color:var(--color-primary-600);border-radius:50%;width:32px;height:32px;margin:-16px 0 0 -16px;animation:.8s linear infinite admin-spin;position:absolute;top:50%;left:50%}.admin-table-wrap{scroll-behavior:smooth;scrollbar-width:thin;scrollbar-color:var(--color-gray-400) transparent}.admin-table-wrap::-webkit-scrollbar{width:8px;height:8px}.admin-table-wrap::-webkit-scrollbar-track{background:0 0}.admin-table-wrap::-webkit-scrollbar-thumb{background:var(--color-gray-300);border-radius:var(--radius-full);transition:background var(--transition-fast)}.admin-table-wrap::-webkit-scrollbar-thumb:hover{background:var(--color-gray-400)}.admin-table th.sticky-left,.admin-table td.sticky-left{z-index:5;background:inherit;position:sticky;left:0}.admin-table th.sticky-left{z-index:15}.admin-table-skeleton-row{align-items:center;gap:var(--space-4);padding:var(--space-4);background:var(--surface);border-bottom:1px solid var(--color-gray-100);display:flex}.admin-table-skeleton-cell{background:linear-gradient(90deg, var(--color-gray-200) 25%, var(--color-gray-100) 50%, var(--color-gray-200) 75%);border-radius:var(--radius-md);background-size:200% 100%;height:20px;animation:1.5s ease-in-out infinite admin-skeleton-pulse}@keyframes admin-skeleton-pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes admin-batch-success{0%{opacity:0;transform:scale(.8)}50%{transform:scale(1.05)}to{opacity:1;transform:scale(1)}}.admin-batch-success-toast{animation:.4s ease-out admin-batch-success}.admin-pagination{justify-content:space-between;align-items:center;gap:var(--space-4);padding:var(--space-4) var(--space-5);background:var(--surface);border:1px solid var(--color-gray-200);border-radius:var(--radius-xl);margin-top:var(--space-5);box-shadow:var(--shadow-sm);display:flex}.admin-pagination span{font-size:var(--text-sm);color:var(--color-gray-600);font-weight:var(--font-medium)}.admin-pagination>div{align-items:center;gap:var(--space-2);display:flex}.admin-pagination-jump{align-items:center;gap:var(--space-2);margin-left:var(--space-4);display:flex}.admin-pagination-jump input{width:60px;padding:var(--space-1) var(--space-2);border:1px solid var(--color-gray-300);border-radius:var(--radius-md);text-align:center;font-size:var(--text-sm);transition:all var(--transition-fast)}.admin-pagination-jump input:focus{border-color:var(--color-primary-600);outline:none;box-shadow:0 0 0 3px #10b9811a}.admin-finance-filters{background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;gap:12px;padding:16px 18px;display:grid}.admin-finance-filter-grid{grid-template-columns:minmax(220px,1.6fr) repeat(3,minmax(150px,1fr));align-items:end;gap:10px;display:grid}.admin-finance-filter-grid .admin-filter-field{align-content:start}.admin-finance-keyword .admin-search{box-sizing:border-box;width:100%;max-width:none;min-height:36px}.admin-finance-keyword .admin-search input{min-width:0}.admin-finance-filter-actions{justify-content:flex-end;gap:8px;display:flex}.admin-finance-filter-actions .admin-btn{min-width:104px}.admin-finance-filters .admin-text-button{margin-top:4px}.admin-rule-tabs{justify-self:start;margin-top:-8px}@media (width<=1050px){.admin-reconciliation-form{grid-template-columns:repeat(3,minmax(0,1fr))}.admin-reconciliation-form .admin-btn{width:100%}}@media (width<=900px){.admin-finance-filter-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-finance-keyword{grid-column:1/-1}}@media (width<=760px){.admin-finance-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-finance-page .admin-table{min-width:680px}.admin-finance-page .admin-row-action{min-width:120px}.admin-reconciliation-form{grid-template-columns:1fr 1fr}.admin-reconciliation-form label:last-of-type{grid-column:1/-1}.admin-finance-page .admin-error{flex-direction:column;align-items:flex-start}.admin-finance-filter-grid{grid-template-columns:1fr 1fr}.admin-finance-filter-actions{justify-content:stretch}.admin-finance-filter-actions .admin-btn{flex:1}}@media (width<=560px){.admin-finance-summary,.admin-reconciliation-form{grid-template-columns:1fr}.admin-reconciliation-form label:last-of-type{grid-column:auto}.admin-finance-summary .admin-metric{padding:12px 13px}.admin-finance-summary .admin-metric strong{font-size:19px}.admin-finance-page .admin-row-action{flex-flow:wrap}.admin-finance-page .admin-row-action .admin-btn{flex:92px;width:auto}.admin-finance-page .admin-inline-form:not(.admin-reconciliation-form) .admin-btn{width:100%}.admin-finance-filters{padding:12px}.admin-finance-filter-grid{grid-template-columns:1fr}.admin-finance-keyword{grid-column:auto}.admin-finance-filter-actions{flex-direction:column}.admin-finance-filter-actions .admin-btn{width:100%}}.student-workspace{grid-template-columns:minmax(200px,240px) minmax(0,1fr);align-items:start;gap:16px;display:grid}.student-list-panel{min-height:560px}.student-list{flex-direction:column;gap:4px;margin-top:8px;display:flex}.student-list-item{text-align:left;color:#0f172a;cursor:pointer;background:#fff;border:1px solid #e2e8f0;border-radius:8px;grid-template-columns:1fr auto;align-items:center;gap:6px;width:100%;padding:10px 12px;transition:all .15s;display:grid;overflow:hidden;box-shadow:0 1px 2px #0000000a}.student-list-item strong{text-overflow:ellipsis;white-space:nowrap;grid-column:1;font-size:14px;overflow:hidden}.student-list-item span{display:none}.student-list-item small{text-overflow:ellipsis;white-space:nowrap;grid-column:1/-1;font-size:11px;overflow:hidden}.student-list-item:hover{background:#f8fafc;border-color:#cbd5e1;box-shadow:0 2px 4px #0000000f}.student-list-item.active{background:linear-gradient(135deg,#f0fdf4 0%,#fff 100%);border-color:#10b981;box-shadow:0 2px 4px #10b9811a}.student-list-item:focus-visible,.student-error-dismiss:focus-visible,.student-portal-link input:focus-visible{outline-offset:2px;outline:3px solid #10b98133}.student-list-item span,.student-list-item small,.student-detail-row small{color:#94a3b8;font-size:12px;font-weight:500}.student-workspace-detail{gap:20px;min-width:0;display:grid}.student-error-dismiss{float:right;color:inherit;cursor:pointer;font:inherit;background:0 0;border:0;font-size:12px;text-decoration:underline}.student-empty{text-align:center;place-content:center;min-height:260px;display:grid}.student-profile{justify-content:space-between;align-items:center;gap:16px;display:flex}.student-profile-content,.student-profile-edit{flex:1;min-width:0}.student-assessment-context .admin-panel-head{align-items:flex-start}.student-assessment-context .admin-panel-head p{color:#94a3b8;margin:4px 0 0;font-size:13px}.student-assessment-summary{grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;display:grid}.student-assessment-summary div{background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;min-width:0;padding:12px 14px}.student-assessment-summary span,.student-assessment-summary strong{display:block}.student-assessment-summary span{color:#64748b;font-size:12px;font-weight:500}.student-assessment-summary strong{overflow-wrap:anywhere;color:#0f172a;margin-top:6px;font-size:14px;font-weight:600;line-height:1.45}.student-assessment-empty{color:#94a3b8;padding:12px 0 2px;font-size:13px}.student-profile-facts{color:#64748b;flex-wrap:wrap;gap:8px 18px;margin-top:10px;font-size:13px;display:flex}.student-profile-edit{gap:16px;display:grid}.student-profile-title{justify-content:space-between;align-items:center;gap:12px;display:flex}.student-profile-title h2{margin:0}.student-profile-edit-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.student-profile-edit-grid label,.student-create-form label{color:#475569;gap:6px;font-size:13px;font-weight:500;display:grid}.student-region-error{color:#d97706;grid-column:1/-1;justify-content:space-between;align-items:center;gap:10px;font-size:13px;line-height:1.5;display:flex}.student-region-error button{color:inherit;cursor:pointer;font:inherit;white-space:nowrap;background:0 0;border:0;padding:0;text-decoration:underline}.student-profile-edit-grid input,.student-profile-edit-grid select,.student-create-form input,.student-create-form select{box-sizing:border-box;color:#0f172a;width:100%;min-height:40px;font:inherit;background:#fff;border:1px solid #e2e8f0;border-radius:10px;outline:0;padding:8px 14px;font-size:14px;transition:all .15s}.student-profile-edit-grid input:focus,.student-profile-edit-grid select:focus,.student-create-form input:focus,.student-create-form select:focus{border-color:#10b981;box-shadow:0 0 0 3px #10b9811a}.student-profile-edit-actions{justify-content:flex-end;gap:10px;display:flex}.student-create-form{gap:16px}.student-contact-editor{align-items:center;gap:10px;margin-top:12px;display:flex}.student-contact-editor input{min-width:220px;min-height:40px;font:inherit;border:1px solid #e2e8f0;border-radius:10px;outline:0;padding:8px 14px;font-size:14px;transition:all .15s}.student-contact-editor input:focus{border-color:#10b981;box-shadow:0 0 0 3px #10b9811a}.student-contacts-panel .admin-panel-head p,.student-documents-panel .admin-panel-head p{color:#94a3b8;margin:4px 0 0;font-size:13px}.student-contact-compose,.student-document-compose{grid-template-columns:minmax(130px,.55fr) minmax(180px,1fr) auto auto auto;align-items:center;gap:10px;margin:12px 0 4px;display:grid}.student-contact-compose select,.student-contact-compose input,.student-document-compose input{color:#0f172a;min-width:0;min-height:40px;font:inherit;background:#fff;border:1px solid #e2e8f0;border-radius:10px;outline:0;padding:8px 14px;font-size:14px;transition:all .15s}.student-contact-compose select:focus,.student-contact-compose input:focus,.student-document-compose input:focus{border-color:#10b981;box-shadow:0 0 0 3px #10b9811a}.student-check-label{color:#475569;white-space:nowrap;align-items:center;gap:6px;font-size:13px;display:inline-flex}.student-check-label input{accent-color:#10b981}.student-contact-list,.student-document-list{display:grid}.student-contact-compose .admin-btn,.student-document-compose .admin-btn{white-space:nowrap;min-height:34px}.student-document-compose{grid-template-columns:minmax(180px,1fr) minmax(180px,.8fr) auto}.student-documents-panel .student-file-button,.student-contacts-panel .admin-btn{min-height:34px}.student-portal-access-panel .admin-panel-head{align-items:flex-start}.student-portal-link{background:linear-gradient(135deg,#f0fdf4 0%,#fff 100%);border:1px solid #bbf7d0;border-radius:10px;gap:8px;margin:12px 0 4px;padding:14px;display:grid}.student-portal-link label,.student-portal-link small{color:#475569;font-size:12px;font-weight:500}.student-portal-link>div{gap:10px;min-width:0;display:flex}.student-portal-link input{color:#0f172a;min-width:0;font:inherit;border:1px solid #e2e8f0;border-radius:10px;flex:1;padding:8px 14px;font-size:14px;transition:all .15s}.student-portal-link input:focus{border-color:#10b981;outline:none;box-shadow:0 0 0 3px #10b9811a}.student-portal-access-list{display:grid}.student-enrollment-panel .admin-panel-head{align-items:flex-start}.student-enrollment-panel .admin-panel-head p{color:#94a3b8;margin:4px 0 0;font-size:13px}.student-enrollment-compose{grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(120px,.7fr) minmax(130px,.75fr) minmax(150px,1.2fr) auto;gap:10px;margin:12px 0 4px;display:grid}.student-enrollment-compose select,.student-enrollment-compose input{color:#0f172a;min-width:0;min-height:40px;font:inherit;background:#fff;border:1px solid #e2e8f0;border-radius:10px;outline:0;padding:8px 14px;font-size:14px;transition:all .15s}.student-enrollment-compose select:focus,.student-enrollment-compose input:focus{border-color:#10b981;box-shadow:0 0 0 3px #10b9811a}.student-enrollment-compose .admin-btn{white-space:nowrap;min-height:40px}.student-contract-compose{grid-template-columns:minmax(220px,1fr) auto auto auto;gap:10px;margin-top:12px;display:grid}.student-contract-compose .admin-btn{white-space:nowrap;min-height:40px}.student-contract-panel .admin-panel-head p{color:#94a3b8;margin:4px 0 0;font-size:13px}.student-row-actions{justify-content:flex-end;align-items:center;gap:8px;display:flex}.student-row-actions .admin-btn{min-height:32px;padding:6px 10px;font-size:13px}.student-academic-panel .admin-panel-head{align-items:flex-start}.student-academic-panel .admin-panel-head p{color:#94a3b8;margin:4px 0 0;font-size:13px}.student-academic-summary{grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;display:grid}.student-academic-summary div{background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;min-width:0;padding:12px 14px}.student-academic-summary span,.student-academic-summary strong{display:block}.student-academic-summary span{color:#64748b;font-size:12px;font-weight:500}.student-academic-summary strong{overflow-wrap:anywhere;color:#0f172a;margin-top:6px;font-size:14px;font-weight:600;line-height:1.45}.student-academic-columns{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;display:grid}.student-academic-column-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.student-academic-column-head h4{color:#0f172a;margin:0;font-size:15px;font-weight:600}.student-academic-subheading{color:#94a3b8;margin-top:10px;font-size:12px}.student-message-list,.student-task-compose,.student-academic-pager,.student-plan-stage-compose{gap:10px;display:grid}.student-message{background:#fff;border:1px solid #e2e8f0;border-radius:10px;gap:8px;padding:14px;display:grid;box-shadow:0 1px 2px #0000000a}.student-message>div{justify-content:space-between;gap:10px;display:flex}.student-message p{color:#334155;margin:0;font-size:14px;line-height:1.6}.student-task-compose{grid-template-columns:1fr 140px 160px 160px auto;align-items:center}.student-task-compose input,.student-task-compose select{border:1px solid #e2e8f0;border-radius:10px;min-height:40px;padding:8px 14px;transition:all .15s}.student-task-compose input:focus,.student-task-compose select:focus{border-color:#10b981;outline:none;box-shadow:0 0 0 3px #10b9811a}.student-action-row{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;display:grid}.student-plan-stage-compose .admin-btn{min-height:40px}.student-plan-compose .admin-btn,.student-plan-edit .student-row-actions{grid-column:1/-1}@media (width<=900px){.student-workspace,.student-academic-columns{grid-template-columns:1fr}.student-assessment-summary,.student-academic-summary{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=760px){.student-contact-compose,.student-document-compose{grid-template-columns:1fr 1fr;align-items:stretch}.student-contact-compose .student-check-label{grid-column:1/-1}.student-contact-compose .admin-btn,.student-document-compose .admin-btn{width:100%}.student-enrollment-compose{grid-template-columns:1fr 1fr}.student-enrollment-compose .admin-btn{width:100%}.student-contract-compose{grid-template-columns:1fr 1fr;align-items:stretch}.student-contract-compose .student-file-button,.student-contract-compose .admin-btn{box-sizing:border-box;width:100%}.student-profile-edit-grid{grid-template-columns:1fr}.student-profile-title{flex-direction:column;align-items:flex-start}.student-profile-edit-actions{justify-content:stretch}.student-profile-edit-actions .admin-btn{flex:1}.student-region-error{flex-direction:column;align-items:flex-start}.student-task-compose{grid-template-columns:1fr 1fr}.student-task-compose .admin-btn{width:100%}.student-plan-compose .admin-btn,.student-plan-edit .student-row-actions{grid-column:auto}}@media (width<=560px){.student-action-row{grid-template-columns:1fr}.student-row-actions{justify-content:flex-start}.student-profile,.student-contact-editor{flex-direction:column;align-items:stretch}.student-contact-editor input{width:100%;min-width:0}.student-message>div{flex-direction:column;align-items:flex-start}.student-portal-link>div{flex-direction:column;align-items:stretch}.student-portal-link .admin-btn{width:100%}.student-academic-pager{flex-direction:column;align-items:flex-start}.student-academic-pager>div{width:100%}.student-academic-pager button{flex:1}.student-profile-edit-grid{grid-template-columns:1fr}.student-profile-title{flex-direction:column;align-items:flex-start}.student-profile-edit-actions{justify-content:stretch}.student-profile-edit-actions .admin-btn{flex:1}.student-region-error{flex-direction:column;align-items:flex-start}.student-assessment-summary,.student-academic-summary{grid-template-columns:1fr}}.student-collapsible-section{padding:0}.collapsible-header{cursor:pointer;-webkit-user-select:none;user-select:none;background:linear-gradient(135deg,#f8fafc 0%,#f1f5f9 100%);border-radius:12px;justify-content:space-between;align-items:center;gap:16px;padding:16px 20px;transition:all .15s;display:flex}.collapsible-header:hover{background:linear-gradient(135deg,#f1f5f9 0%,#e2e8f0 100%)}.collapsible-title{flex:1;min-width:0}.collapsible-title h3{color:#0f172a;margin:0;font-size:16px;font-weight:600}.collapsible-title p{color:#64748b;margin:4px 0 0;font-size:13px;font-weight:500}.collapsible-toggle{color:#475569;cursor:pointer;background:#fff;border:1px solid #e2e8f0;border-radius:8px;justify-content:center;align-items:center;width:32px;height:32px;transition:all .15s;display:flex}.collapsible-toggle:hover{color:#0f172a;background:#f8fafc;border-color:#cbd5e1}.collapsible-content{gap:16px;margin-top:16px;display:grid}@media (width<=1080px){.admin-btn,.admin-menu-btn,.admin-tabs button,.admin-permission-option,.admin-quick-card,.student-list-item,.collapsible-header,input[type=checkbox],input[type=radio]{min-width:44px;min-height:44px}.admin-btn{padding:var(--space-2) var(--space-4)}.admin-table-row-clickable td{padding:var(--space-3) var(--space-4)}}@media (width<=760px){.admin-content{overflow-x:hidden}.catalog-filter,.crm-appointment-filter,.admin-audit-filter,.admin-finance-filter-grid,.admin-inline-form,.admin-control-row,.admin-user-toolbar{flex-direction:column!important;align-items:stretch!important}.catalog-filter>*,.crm-appointment-filter>*,.admin-audit-filter>*,.admin-finance-filter-grid>*,.admin-inline-form>*,.admin-control-row>*,.admin-user-toolbar>*{flex:auto!important;width:100%!important;max-width:none!important}.admin-modal-actions,.admin-row-action,.admin-inbox-actions,.admin-session-item>div:last-child{flex-direction:column!important;align-items:stretch!important}.admin-modal-actions .admin-btn,.admin-row-action .admin-btn,.admin-inbox-actions .admin-btn,.admin-session-item .admin-btn{width:100%!important}.admin-table tbody td{padding:var(--space-2) var(--space-3);font-size:var(--text-sm)}.admin-pagination{flex-direction:column!important;align-items:stretch!important}.admin-pagination>div,.admin-pagination .admin-btn{width:100%}.admin-pagination .admin-btn{flex:1}}@media (width<=560px){.admin-detail-grid,.admin-metric-grid,.admin-dashboard-grid,.admin-quick-grid,.admin-finance-summary,.student-assessment-summary,.student-academic-summary,.portal-metric-grid,.portal-content-grid{grid-template-columns:1fr!important}.admin-content{padding:var(--space-3)}.admin-panel,.admin-section{padding:var(--space-4)}.admin-page-header h1{font-size:var(--text-xl)}.admin-section-title h3{font-size:var(--text-base)}.admin-detail-grid>div{padding:var(--space-2) 0;border-bottom:1px solid var(--color-gray-100)}.admin-inbox-filter,.admin-inbox-filter label{width:100%!important}.admin-inbox-filter{flex-direction:column!important}.admin-inbox-item{padding:var(--space-3) var(--space-2)}.admin-inbox-item-head{gap:var(--space-1);flex-direction:column!important}.admin-inbox-item-head time{white-space:normal!important}.admin-session-item{flex-direction:column!important;align-items:stretch!important}.admin-session-item>div:last-child{justify-content:space-between!important}.admin-audit-advanced{grid-template-columns:1fr!important}.admin-audit-filter-actions,.admin-audit-filter-actions .admin-btn{width:100%!important}.admin-audit-filter-actions .admin-btn{flex:1}.admin-reconciliation-form{grid-template-columns:1fr!important}.admin-reconciliation-form .admin-btn{width:100%}.student-workspace,.student-academic-columns{grid-template-columns:1fr!important}.student-profile-edit-grid,.student-region-error{flex-direction:column!important;align-items:flex-start!important}.student-profile-edit-actions .admin-btn,.student-portal-link .admin-btn{width:100%!important}.student-task-compose{grid-template-columns:1fr!important}.student-task-compose .admin-btn{width:100%!important}.student-action-row{grid-template-columns:1fr!important}.student-row-actions{justify-content:flex-start!important}.student-contact-editor{flex-direction:column!important}.student-contact-editor input{width:100%!important;min-width:0!important}.student-message>div,.student-academic-pager{flex-direction:column!important;align-items:flex-start!important}.student-academic-pager>div{width:100%!important}.student-academic-pager button{flex:1}}@media (width<=375px){.admin-brand span{width:36px;height:36px;font-size:var(--text-base)}.admin-brand strong{font-size:var(--text-sm)}.admin-brand small{font-size:var(--text-2xs)}.admin-metric strong{font-size:var(--text-xl)}.admin-metric span{font-size:var(--text-xs)}}@media print{.admin-sidebar,.admin-mobile-mask,.admin-menu-btn,.admin-topbar,.admin-btn,.admin-modal{display:none!important}.admin-shell{grid-template-columns:1fr!important}.admin-content{padding:0!important}.admin-table{font-size:10pt}.admin-table th{color:#000!important;background:#f0f0f0!important}}@media (prefers-contrast:high){.admin-btn{border-width:2px}.admin-table th{border-bottom-width:2px}.admin-sidebar{border-right-width:2px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.admin-loading-fallback{justify-content:center;align-items:center;gap:var(--space-4);padding:var(--space-16);min-height:400px;color:var(--color-gray-500);flex-direction:column;display:flex}.admin-page-loader{color:var(--color-primary-600);animation:1s linear infinite admin-spin}.admin-loading-fallback p{font-size:var(--font-size-base);font-weight:var(--font-medium);margin:0}.virtual-list-container{will-change:transform;contain:strict;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.virtual-list-loading,.virtual-list-empty{justify-content:center;align-items:center;gap:var(--space-3);color:var(--color-gray-500);flex-direction:column;display:flex}.virtual-list-spinner{border:3px solid var(--color-gray-200);border-top-color:var(--color-primary-600);border-radius:50%;width:32px;height:32px;animation:1s linear infinite admin-spin}.virtual-table-wrapper{border:1px solid var(--color-gray-200);border-radius:var(--radius-lg);overflow:hidden}.virtual-table-header{background:var(--color-gray-50);border-bottom:2px solid var(--color-gray-200);z-index:10;position:sticky;top:0}.virtual-table-row{border-bottom:1px solid var(--color-gray-100);transition:background-color var(--transition-fast);align-items:center;display:flex}.virtual-table-row:hover{background:var(--color-gray-50)}.virtual-table-row-clickable{cursor:pointer}.virtual-table-row-clickable:hover{background:var(--color-primary-50)}.virtual-table-row[aria-selected=true]{background:var(--color-primary-100)}.virtual-table-cell,.virtual-table-header-cell{padding:var(--space-3) var(--space-4);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.virtual-table-header-cell{font-weight:var(--font-semibold);color:var(--color-gray-700);font-size:var(--font-size-sm);text-transform:uppercase;letter-spacing:.05em}.collapsible-content .admin-panel{box-shadow:none;border:1px solid #e2e8f0}.btn{justify-content:center;align-items:center;gap:var(--space-2);border-radius:var(--radius-xl);font:inherit;font-weight:var(--font-medium);cursor:pointer;transition:all var(--transition-fast);box-shadow:var(--shadow-xs);border:1px solid #0000;display:inline-flex;position:relative}.btn:focus-visible{outline:2px solid var(--color-success);outline-offset:2px}.btn:disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.btn-sm{min-height:32px;padding:0 var(--space-3);font-size:var(--text-sm)}.btn-md{min-height:40px;padding:0 var(--space-4);font-size:var(--text-sm)}.btn-lg{min-height:48px;padding:0 var(--space-6);font-size:var(--text-base)}.btn-primary{background:linear-gradient(135deg, var(--color-success) 0%, #059669 100%);color:#fff;border-color:var(--color-success);box-shadow:var(--shadow-md)}.btn-primary:hover:not(:disabled){background:linear-gradient(135deg,#059669 0%,#047857 100%);box-shadow:0 4px 6px #10b9814d}.btn-secondary{background:var(--surface);color:var(--color-gray-600);border-color:var(--color-gray-200)}.btn-secondary:hover:not(:disabled){background:var(--color-gray-50);border-color:var(--color-gray-300);color:var(--color-gray-900);box-shadow:var(--shadow-sm)}.btn-danger{color:#dc2626;background:#fef2f2;border-color:#fca5a5}.btn-danger:hover:not(:disabled){background:#fee2e2;border-color:#f87171}.btn-ghost{color:var(--color-gray-600);box-shadow:none;background:0 0;border-color:#0000}.btn-ghost:hover:not(:disabled){background:var(--color-gray-50);color:var(--color-gray-900)}.btn-outline{color:var(--color-success);border-color:var(--color-success);background:0 0}.btn-outline:hover:not(:disabled){background:var(--color-primary-50);color:#059669}.btn-full-width{width:100%}.btn-icon{justify-content:center;align-items:center;display:inline-flex}.btn-icon-left{margin-right:var(--space-1)}.btn-icon-right{margin-left:var(--space-1)}.btn-loading{pointer-events:none}.btn-spinner{border-radius:var(--radius-full);border:2px solid;border-top-color:#0000;width:16px;height:16px;animation:.6s linear infinite btn-spin}@keyframes btn-spin{to{transform:rotate(360deg)}}.btn-content{align-items:center;gap:var(--space-2);display:inline-flex}.toast-container{top:var(--space-6);right:var(--space-6);z-index:var(--z-toast);gap:var(--space-3);pointer-events:none;flex-direction:column;width:100%;max-width:420px;display:flex;position:fixed}.toast{align-items:center;gap:var(--space-3);padding:var(--space-4) var(--space-5);background:var(--surface);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);pointer-events:auto;transition:all var(--transition-base);animation:.3s ease-out toast-slide-in;display:flex}.toast.toast-exit{animation:.3s ease-in forwards toast-slide-out}@keyframes toast-slide-in{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}@keyframes toast-slide-out{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(100%)}}.toast-icon{flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.toast-message{font-size:var(--text-sm);font-weight:var(--font-medium);color:var(--color-gray-900);line-height:var(--leading-normal);flex:1}.toast-close{width:28px;height:28px;color:var(--color-gray-400);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);background:0 0;border:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.toast-close:hover{background:var(--color-gray-100);color:var(--color-gray-600)}.toast-success{border-left:4px solid var(--color-success)}.toast-success .toast-icon{color:var(--color-success)}.toast-error{border-left:4px solid var(--color-error)}.toast-error .toast-icon{color:var(--color-error)}.toast-warning{border-left:4px solid var(--color-warning)}.toast-warning .toast-icon{color:var(--color-warning)}.toast-info{border-left:4px solid var(--color-info)}.toast-info .toast-icon{color:var(--color-info)}@media (width<=768px){.toast-container{top:auto;bottom:var(--space-6);left:var(--space-4);right:var(--space-4);max-width:none}}.empty-state{justify-content:center;align-items:center;gap:var(--space-4);padding:var(--space-12) var(--space-6);text-align:center;flex-direction:column;display:flex}.empty-state-icon{border-radius:var(--radius-full);background:var(--color-gray-50);width:80px;height:80px;color:var(--color-gray-300);justify-content:center;align-items:center;display:inline-flex}.empty-state-title{font-size:var(--text-lg);font-weight:var(--font-semibold);color:var(--color-gray-700);margin:0}.empty-state-description{font-size:var(--text-sm);color:var(--color-gray-500);line-height:var(--leading-relaxed);max-width:320px;margin:0}.empty-state-action{margin-top:var(--space-2)}.loading-spinner{justify-content:center;align-items:center;gap:var(--space-3);flex-direction:column;display:inline-flex}.loading-spinner-fullscreen{z-index:var(--z-modal);justify-content:center;align-items:center;gap:var(--space-4);background:#fffffff2;flex-direction:column;display:flex;position:fixed;inset:0}.loading-spinner-icon{color:var(--color-success);animation:1s linear infinite loading-spin}@keyframes loading-spin{to{transform:rotate(360deg)}}.loading-spinner-text{font-size:var(--text-sm);color:var(--color-gray-500);font-weight:var(--font-medium);margin:0}
