:root{color-scheme:dark;--bg:#050a12;--surface:#0c1626;--surface-2:#111e31;--line:#24384c;--text:#f3f8fc;--muted:#a4b8c9;--cyan:#50c8ee;--green:#3ed0a1;--amber:#f2bd67;--rose:#f38c9b;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif}
*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;background:var(--bg);color:var(--text)}body{overflow:hidden;background:radial-gradient(ellipse 1100px 650px at 50% -10%,#11273b 0%,transparent 74%),#050a12;font-variant-numeric:tabular-nums}
button,select{font:inherit}button{cursor:pointer}.screen-shell{width:100vw;height:100vh;display:flex;align-items:center;justify-content:center;overflow:hidden}.dashboard{width:1920px;height:1080px;flex:none;transform-origin:center center;display:grid;grid-template-rows:82px 126px minmax(0,1fr) 38px;gap:12px;padding:18px 22px;background:radial-gradient(circle at 76% 18%,rgba(46,133,171,.12),transparent 35%),linear-gradient(180deg,#081320 0%,#07111d 100%)}
.masthead{display:flex;align-items:center;justify-content:space-between;gap:28px;border-bottom:1px solid var(--line);padding:0 4px 10px}.masthead-brand{display:flex;align-items:center;gap:18px;min-width:0}.brand-symbol{display:grid;place-items:center;width:54px;height:54px;flex:none;border:1px solid #48b9df;color:#b9efff;font-size:22px;font-weight:800;letter-spacing:-.03em;background:#0d3145;clip-path:polygon(0 0,86% 0,100% 25%,100% 100%,14% 100%,0 75%)}.masthead h1{font-size:30px;letter-spacing:-.025em;line-height:1.15;margin:0;font-weight:700}.masthead-brand p{color:var(--muted);font-size:14px;margin:7px 0 0}.masthead-controls{display:flex;align-items:center;gap:12px}.live-status{height:42px;min-width:180px;padding:0 14px;display:flex;align-items:center;gap:10px;border:1px solid #315669;color:#d5f3fa;background:#102838;border-radius:8px;font-size:13px;white-space:nowrap}.live-status.error{border-color:#95465a;color:#ffe5ea;background:#40202c}.status-dot{width:8px;height:8px;background:var(--green);border-radius:50%;box-shadow:0 0 0 4px rgba(62,208,161,.14)}.live-status.error .status-dot{background:var(--rose);box-shadow:0 0 0 4px rgba(243,140,155,.14)}.select-control{display:flex;align-items:center;gap:9px;height:42px;padding:0 12px;border:1px solid var(--line);border-radius:8px;color:var(--muted);font-size:13px;white-space:nowrap;background:#0a1725}.select-control select{min-width:104px;background:transparent;border:0;color:var(--text);outline:0;cursor:pointer}.select-control option{background:#102033}.icon-button{display:grid;place-items:center;width:42px;height:42px;color:var(--text);background:#0a1725;border:1px solid var(--line);border-radius:8px}.icon-button:hover,.icon-button:focus-visible{border-color:var(--cyan);color:var(--cyan)}.icon-button svg{width:17px;height:17px}button:focus-visible,select:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}
.scope-line{display:flex;align-items:center;justify-content:space-between;padding:0 4px;color:var(--muted);font-size:13px}.scope-line>div{display:flex;align-items:center;gap:12px}.scope-line strong{color:var(--text);font-weight:600}.scope-prefix{color:var(--cyan);font-weight:650}.scope-divider{height:12px;border-left:1px solid var(--line)}.scope-time{white-space:nowrap}
.metric-band{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));background:#0d1c2e;border:1px solid #284056;border-radius:12px;overflow:hidden}.metric{padding:18px 22px;min-width:0;display:flex;flex-direction:column;align-items:flex-start;justify-content:space-between;position:relative}.metric:not(:last-child)::after{content:"";position:absolute;right:0;top:20px;bottom:20px;border-right:1px solid #284056}.metric span{color:var(--muted);font-size:14px}.metric strong{font-size:36px;line-height:1;letter-spacing:-.03em;font-weight:700}.metric small{font-size:12px;color:#9fb5c7;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}.metric.emphasized{background:linear-gradient(160deg,rgba(17,74,90,.62),rgba(8,29,45,.35))}.metric.emphasized strong{color:#a9f0e0}
.analysis-grid{min-height:0;display:grid;grid-template-columns:1.32fr .95fr .92fr;gap:12px}.analysis-column{min-height:0;display:grid;gap:12px}.course-column{grid-template-rows:minmax(0,1fr) 224px}.insight-column{grid-template-rows:1fr 1fr}.asset-column{grid-template-rows:1fr 238px 132px}.surface{background:rgba(12,22,38,.91);border:1px solid var(--line);border-radius:12px;min-width:0;min-height:0;padding:19px 21px;overflow:hidden}.surface-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:15px}.surface-heading h2{font-size:20px;line-height:1.2;letter-spacing:-.02em;margin:0;font-weight:650}.surface-heading p{font-size:12px;color:var(--muted);margin:5px 0 0}.heading-tag{display:inline-flex;align-items:center;justify-content:center;min-height:28px;padding:0 10px;white-space:nowrap;color:#bdeaf6;background:#113247;border:1px solid #2c5870;border-radius:5px;font-size:12px}
.course-surface{display:flex;flex-direction:column}.course-list{display:grid;grid-template-rows:repeat(6,minmax(0,1fr));gap:3px;flex:1;margin-top:15px;min-height:0}.course-row{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr) 70px;align-items:center;gap:18px;border-top:1px solid rgba(116,156,185,.16);min-height:0}.course-row:first-child{border-top:1px solid var(--line)}.course-name{min-width:0}.course-name strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:600}.course-name small{display:block;color:var(--muted);font-size:11px;margin-top:5px}.course-completion{display:flex;align-items:center;gap:8px}.course-completion .track{height:7px;flex:1;border-radius:5px;background:#26364a;overflow:hidden}.course-completion .fill{display:block;height:100%;background:linear-gradient(90deg,#2d94b9,#54cde5);border-radius:5px}.course-completion strong{width:42px;text-align:right;font-size:14px;color:#a9e4f4}.course-score{text-align:right}.course-score strong{font-size:21px;font-weight:650}.course-score small{display:block;color:var(--muted);font-size:11px;margin-top:2px}.course-row:hover{background:rgba(73,145,182,.07)}
.class-table{border-collapse:collapse;width:100%;margin-top:16px;font-size:14px}.class-table th{text-align:right;padding:0 7px 11px;color:var(--muted);font-size:12px;font-weight:500;white-space:nowrap}.class-table th:first-child,.class-table td:first-child{text-align:left}.class-table td{padding:11px 7px;text-align:right;border-top:1px solid rgba(116,156,185,.18);white-space:nowrap}.class-table td:first-child{font-weight:700;color:var(--cyan)}
.attendance-surface,.grade-surface,.trend-surface{display:flex;flex-direction:column}.chart{min-height:0;width:100%;flex:1}.attendance-chart{margin-top:5px}.attendance-legend{display:flex;justify-content:space-between;gap:8px;padding:0 5px 1px}.legend-item{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:12px;white-space:nowrap}.legend-dot{width:8px;height:8px;border-radius:2px;flex:none}.legend-item strong{color:var(--text);font-weight:600}.grade-chart{margin-top:15px}.trend-chart{margin-top:12px}.trend-total{display:flex;align-items:baseline;gap:10px;border-top:1px solid var(--line);padding-top:10px;color:var(--muted);font-size:12px}.trend-total strong{font-size:24px;color:var(--text);line-height:1}.trend-total small{color:var(--muted);font-size:12px}
.asset-surface{display:flex;flex-direction:column}.asset-hero{display:flex;align-items:baseline;gap:12px;margin:12px 0 15px}.asset-hero strong{font-size:54px;letter-spacing:-.05em;line-height:1;color:#a4e7f7}.asset-hero span{color:var(--muted);font-size:14px}.asset-stat-row{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);padding-top:12px}.asset-stat-row div{display:flex;flex-direction:column;gap:3px}.asset-stat-row strong{font-size:22px;font-weight:650}.asset-stat-row span{font-size:11px;color:var(--muted)}.provenance-surface{background:#102337}.provenance-surface p{font-size:12px;color:#c4d7e3;line-height:1.45;margin:9px 0 0}.provenance-method{color:var(--muted)!important}.empty{color:var(--muted);font-size:14px;padding-top:20px}
.footer{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:0 4px;border-top:1px solid var(--line);font-size:11px;color:var(--muted);white-space:nowrap}.footer strong{color:#f3ca88;font-weight:500}.footer-mark{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--cyan);margin-right:8px}.footer-divider{padding:0 6px;color:#50667b}kbd{font:inherit;color:var(--text);border:1px solid var(--line);padding:1px 4px;border-radius:3px}
@media(max-width:900px){html,body{height:auto;min-height:100%;overflow:auto}.screen-shell{width:100%;height:auto;display:block;overflow:visible}.dashboard{width:100%;height:auto;min-height:100vh;transform:none!important;display:flex;flex-direction:column;padding:18px;gap:18px}.masthead{height:auto;align-items:flex-start;flex-wrap:wrap;padding-bottom:15px}.masthead h1{font-size:23px}.masthead-controls{flex-wrap:wrap}.live-status{min-width:unset}.scope-line{height:auto;align-items:flex-start;gap:8px;flex-wrap:wrap}.metric-band{grid-template-columns:repeat(2,minmax(0,1fr))}.metric{min-height:115px;padding:15px}.metric strong{font-size:31px}.metric:nth-child(2n)::after{display:none}.metric small{white-space:normal}.analysis-grid{display:flex;flex-direction:column}.analysis-column{display:flex;flex-direction:column}.surface{min-height:260px}.course-surface{min-height:570px}.course-list{grid-template-rows:repeat(6,1fr)}.class-surface{min-height:245px}.attendance-surface,.grade-surface,.trend-surface{min-height:345px}.asset-surface{min-height:225px}.provenance-surface{min-height:130px}.footer{flex-wrap:wrap;white-space:normal;padding:12px 0;line-height:1.5}.class-table{font-size:12px}.class-table th,.class-table td{padding-left:3px;padding-right:3px}}
.course-column{grid-template-rows:minmax(0,1fr) 258px}

/* Executive display: restrained telemetry lighting and stronger data hierarchy. */
:root{--bg:#050b16;--surface:#0b1a2b;--line:#284159;--text:#f1f8ff;--muted:#aec5d6;--cyan:#64d9f5;--green:#5ae2b8;--amber:#f2ca83;--rose:#f391a1}
body{background:#050b16}
.dashboard{position:relative;isolation:isolate;overflow:hidden;grid-template-rows:94px 140px minmax(0,1fr);gap:16px;padding:20px 24px 22px;background:radial-gradient(ellipse 850px 520px at 76% 1%,rgba(16,91,134,.24),transparent 76%),radial-gradient(ellipse 620px 510px at -8% 102%,rgba(0,116,149,.14),transparent 72%),linear-gradient(145deg,#081526,#06111e 58%,#071423)}
.dashboard::before{content:"";position:absolute;inset:0;z-index:-1;opacity:.22;pointer-events:none;background-image:radial-gradient(circle,rgba(114,187,219,.32) 1px,transparent 1.5px);background-size:30px 30px;mask-image:linear-gradient(90deg,transparent,black 30%,black 75%,transparent)}
.dashboard::after{content:"";position:absolute;left:24px;right:24px;top:0;height:2px;pointer-events:none;background:linear-gradient(90deg,transparent,#37badc 23%,#82e7fa 50%,#37badc 77%,transparent);box-shadow:0 7px 28px rgba(53,195,235,.35)}
.masthead{gap:28px;padding:0 4px 15px}.masthead-brand{gap:19px}
.brand-symbol{width:64px;height:64px;position:relative;color:#d4f8ff;background:linear-gradient(145deg,#143e54,#0b2438);border:1px solid #4fc8e9;clip-path:polygon(0 0,79% 0,100% 21%,100% 100%,21% 100%,0 79%);box-shadow:inset 0 0 20px rgba(67,207,237,.18)}
.brand-symbol::before{content:"";position:absolute;inset:6px;border:1px solid rgba(140,227,247,.32);clip-path:inherit}.brand-symbol span{position:relative;font-size:22px;font-weight:800;letter-spacing:-.04em}
.masthead h1{font-size:31px;font-weight:750}.masthead-brand p{display:flex;align-items:center;gap:15px;margin:10px 0 0;font-size:13px;letter-spacing:.03em}.masthead-brand p strong{color:#8deaff;font-size:15px;font-weight:650;letter-spacing:.08em}.masthead-brand p span{border-left:1px solid #3c7090;padding-left:15px}
.board-time{display:flex;flex-direction:column;align-items:flex-end;padding-right:18px;border-right:1px solid var(--line);white-space:nowrap}.board-time time{color:#e8faff;font-size:27px;font-weight:650;letter-spacing:.08em;line-height:1}.board-time span{margin-top:6px;color:var(--muted);font-size:10px;letter-spacing:.16em}
.live-status{height:44px;min-width:164px;color:#daf8f6;background:rgba(22,76,83,.31);border-color:#388276;border-radius:6px}.live-status.error{color:#ffe4e9;background:#3d1f30;border-color:#a55569}.status-dot{background:var(--green);box-shadow:0 0 0 4px rgba(90,226,184,.14),0 0 12px rgba(90,226,184,.7);animation:heartbeat 2.4s ease-in-out infinite}.live-status.error .status-dot{background:var(--rose);animation:none}
.icon-button{width:44px;height:44px;background:rgba(12,33,51,.8);border-color:var(--line);border-radius:6px;transition:color .2s,border-color .2s,background .2s,transform .2s}.icon-button:hover{color:var(--cyan);border-color:var(--cyan);background:#12334a;transform:translateY(-2px)}.icon-button:focus-visible{outline:2px solid var(--cyan);outline-offset:3px}.icon-button svg{width:18px;height:18px}
.metric-band{position:relative;overflow:hidden;background:linear-gradient(180deg,rgba(15,40,61,.86),rgba(9,26,43,.9));border-color:#31516a;border-radius:8px;box-shadow:0 24px 48px -36px rgba(45,187,225,.52)}.metric-band::before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,rgba(100,217,245,.05),rgba(100,217,245,.75) 46%,rgba(100,217,245,.05))}
.metric{padding:22px 22px 18px}.metric:not(:last-child)::after{top:25px;bottom:25px;border-color:#31516a}.metric span{color:#bed5e3;font-size:15px}.metric strong{font-size:46px;font-weight:680;letter-spacing:-.035em;text-shadow:0 5px 24px rgba(85,209,237,.1)}.metric small{color:var(--muted)}.metric.emphasized{background:radial-gradient(ellipse at 50% 130%,rgba(30,199,167,.28),transparent 75%),rgba(23,95,100,.19)}.metric.emphasized strong{color:#9af5db;text-shadow:0 0 22px rgba(51,229,175,.2)}
.analysis-grid{grid-template-columns:1.3fr .96fr .9fr;gap:16px}.analysis-column{gap:16px}.course-column{grid-template-rows:minmax(0,1fr) 246px}.asset-column{grid-template-rows:minmax(0,1fr) 316px}
.surface{position:relative;padding:22px 23px;background:linear-gradient(152deg,rgba(14,37,57,.94),rgba(9,25,42,.95) 68%);border-color:#2a4963;border-radius:8px;box-shadow:0 20px 36px -30px rgba(0,0,0,.8)}.surface::before{content:"";position:absolute;top:0;left:23px;width:82px;height:2px;background:var(--cyan);box-shadow:0 3px 18px rgba(71,210,242,.48)}.surface::after{content:"";position:absolute;width:15px;height:15px;top:10px;right:10px;border-top:1px solid rgba(100,217,245,.55);border-right:1px solid rgba(100,217,245,.55);pointer-events:none}
.surface-heading h2{font-size:22px;font-weight:670}.surface-heading p{margin-top:6px;color:var(--muted)}.heading-tag{color:#c4f2fb;background:#173b50;border-color:#42748d;border-radius:4px}
.course-list{margin-top:18px;gap:0}.course-row{border-color:rgba(116,161,190,.2);transition:background .2s}.course-row:first-child{border-color:#35516a}.course-row:hover{background:rgba(87,184,218,.07)}.course-name strong{font-weight:630}.course-completion .track{background:#233c51}.course-completion .fill{background:linear-gradient(90deg,#2b93bf,#77e6f7);box-shadow:0 0 10px rgba(100,217,245,.4)}.course-completion strong{color:#b4eafb}.course-score strong{font-size:22px;font-weight:670}
.class-table{margin-top:18px}.class-table th,.class-table td{border-color:rgba(116,161,190,.2)}.class-table td:first-child{color:var(--cyan)}
.trend-total{border-color:var(--line)}.trend-total strong{font-size:26px}
.asset-surface{background:radial-gradient(circle at 83% 37%,rgba(20,129,159,.21),transparent 49%),linear-gradient(152deg,#112d43,#0a1e31 67%)}.asset-hero{position:relative;flex:1;min-height:0;align-items:center;margin:0;padding:12px 0}.asset-hero::before{content:"";position:absolute;width:135px;height:135px;left:5px;top:50%;transform:translateY(-50%);border:1px solid rgba(104,216,245,.36);border-radius:50%;box-shadow:inset 0 0 25px rgba(74,181,218,.11),0 0 22px rgba(74,181,218,.09)}.asset-hero::after{content:"";position:absolute;width:157px;height:157px;left:-6px;top:50%;transform:translateY(-50%);border:1px dashed rgba(104,216,245,.28);border-radius:50%;pointer-events:none}.asset-hero strong{position:relative;z-index:1;width:145px;flex:none;text-align:center;color:#a5efff;font-size:57px;font-weight:670;text-shadow:0 0 26px rgba(80,214,248,.33)}.asset-hero span{color:#d4e9f3;font-size:15px}.asset-stat-row{border-color:#39617a;padding-top:14px}.asset-stat-row strong{font-size:26px}.asset-stat-row span{font-size:12px}
@keyframes heartbeat{50%{box-shadow:0 0 0 7px rgba(90,226,184,.06),0 0 16px rgba(90,226,184,.45)}}
@media (prefers-reduced-motion:reduce){.status-dot{animation:none}.icon-button,.course-row{transition:none}}
@media (max-width:1280px){html,body{height:auto;min-height:100%}body{overflow:auto}.screen-shell{width:100%;height:auto;display:block;overflow:visible}.dashboard{width:100%;height:auto;min-height:100vh;display:flex;flex-direction:column;gap:18px;padding:18px;transform:none!important;overflow:visible}.masthead{height:auto;flex-wrap:wrap;padding-bottom:18px}.metric-band{grid-template-columns:repeat(3,minmax(0,1fr))}.metric{min-height:126px}.metric:nth-child(3)::after{display:none}.metric:nth-child(-n+3){border-bottom:1px solid var(--line)}.analysis-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.analysis-column{display:flex;flex-direction:column}.course-column{grid-column:1/-1}.course-surface{min-height:580px}.class-surface{min-height:265px}.attendance-surface,.grade-surface,.trend-surface{min-height:360px}.asset-surface{min-height:316px}}
@media (max-width:700px){.dashboard{padding:17px;gap:17px}.masthead-brand{gap:13px}.brand-symbol{width:53px;height:53px}.brand-symbol span{font-size:19px}.masthead h1{font-size:21px;line-height:1.25}.masthead-brand p{flex-wrap:wrap;gap:7px;margin-top:6px;font-size:11px}.masthead-brand p strong{font-size:12px}.masthead-brand p span{padding-left:9px}.masthead-controls{width:100%;flex-wrap:wrap}.board-time{margin-right:auto}.board-time time{font-size:22px}.live-status{min-width:0;padding:0 10px}.metric-band{grid-template-columns:repeat(2,minmax(0,1fr))}.metric{min-height:112px;padding:15px}.metric:nth-child(3)::after{display:block}.metric:nth-child(2n)::after{display:none}.metric:nth-child(-n+4){border-bottom:1px solid var(--line)}.metric strong{font-size:34px}.metric span{font-size:13px}.metric small{white-space:normal;font-size:11px}.analysis-grid{display:flex;flex-direction:column}.analysis-column{display:flex;flex-direction:column}.surface{padding:19px}.surface-heading h2{font-size:20px}.course-surface{min-height:610px}.course-row{grid-template-columns:minmax(0,1.5fr) minmax(0,.9fr) 57px;gap:8px}.course-name strong{font-size:13px}.course-name small{font-size:10px}.course-completion strong{width:37px;font-size:12px}.course-score strong{font-size:18px}.class-table{font-size:12px}.class-table th,.class-table td{padding-left:3px;padding-right:3px}.attendance-surface,.grade-surface,.trend-surface{min-height:360px}.asset-surface{min-height:315px}}

/* Data wall composition: centered command title and time-stamped database heartbeat. */
.masthead{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:22px;position:relative}
.masthead::after{content:"";position:absolute;bottom:-1px;left:calc(50% - 230px);width:460px;height:1px;background:linear-gradient(90deg,transparent,#7ee5f8 50%,transparent);box-shadow:0 0 14px rgba(100,217,245,.7)}
.masthead-signal{display:flex;align-items:center;gap:15px;min-width:0}.masthead-signal .live-status{min-width:178px;max-width:100%;font-size:12px}
.masthead-title{text-align:center;position:relative;padding:0 28px;white-space:nowrap}
.masthead-title::before,.masthead-title::after{content:"";position:absolute;top:20px;width:34px;height:26px;border-color:#4d9ab5;opacity:.8}
.masthead-title::before{left:-12px;border-top:1px solid;border-left:1px solid;transform:skewX(-18deg)}
.masthead-title::after{right:-12px;border-top:1px solid;border-right:1px solid;transform:skewX(18deg)}
.masthead-title h1{font-size:39px;line-height:1.08;font-weight:760;letter-spacing:.015em;text-shadow:0 6px 28px rgba(89,204,237,.19)}
.masthead-title p{display:flex;align-items:center;justify-content:center;gap:16px;margin:9px 0 0;color:#9fc5d6;font-size:12px;letter-spacing:.18em}
.masthead-title p span{width:5px;height:5px;transform:rotate(45deg);background:#4ba6bf;box-shadow:0 0 8px rgba(74,196,226,.6)}
.masthead-controls{justify-self:end}.masthead-controls .board-time{padding-left:0}.brand-symbol{width:58px;height:58px}.brand-symbol span{font-size:21px}
.analysis-grid{grid-template-columns:1.18fr 1.12fr .90fr}.insight-column{grid-template-rows:1.13fr .87fr}
.attendance-surface{background:radial-gradient(circle at 50% 59%,rgba(25,124,156,.19),transparent 45%),linear-gradient(152deg,rgba(14,37,57,.94),rgba(9,25,42,.95) 68%)}
.trend-surface{background:radial-gradient(ellipse at 75% 85%,rgba(22,133,162,.13),transparent 62%),linear-gradient(152deg,rgba(14,37,57,.94),rgba(9,25,42,.95) 68%)}
.table-meter{display:inline-block;position:relative;min-width:58px;padding-bottom:7px;text-align:right;white-space:nowrap}
.table-meter::before,.table-meter::after{content:"";position:absolute;left:0;bottom:0;height:3px;border-radius:2px}
.table-meter::before{width:100%;background:#254357}.table-meter::after{width:var(--meter);background:linear-gradient(90deg,#1b84ac,#80e4f1);box-shadow:0 0 8px rgba(100,217,245,.38)}
@media (max-width:1280px){.masthead{display:grid;grid-template-columns:1fr auto;gap:16px}.masthead-title{grid-column:1/-1;grid-row:1;padding:0 20px}.masthead-title h1{font-size:33px}.masthead-signal{grid-column:1;grid-row:2}.masthead-controls{grid-column:2;grid-row:2}.analysis-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.insight-column{display:flex}}
@media (max-width:700px){.masthead{display:flex;flex-direction:column;align-items:stretch;gap:15px}.masthead::after{left:15%;width:70%}.masthead-title{order:0;white-space:normal;padding:0 15px}.masthead-title h1{font-size:24px;line-height:1.2;letter-spacing:0}.masthead-title p{flex-wrap:wrap;gap:8px;font-size:10px;letter-spacing:.06em}.masthead-title::before,.masthead-title::after{top:12px;width:12px;height:14px}.masthead-signal{order:1;justify-content:center}.masthead-controls{order:2;justify-content:center;width:100%}.board-time{margin-right:0}.brand-symbol{width:45px;height:45px}.brand-symbol span{font-size:17px}.analysis-grid{display:flex}.table-meter{min-width:43px}}
.surface-heading p{font-size:13px}.heading-tag{font-size:13px}.metric small{font-size:13px}
.course-name strong{font-size:17px}.course-name small{font-size:12px}.course-completion strong{font-size:15px}.course-score small{font-size:12px}
.class-table{font-size:15px}.class-table th{font-size:13px}.legend-item{font-size:13px}.asset-stat-row span{font-size:13px}
@media (max-width:700px){.surface-heading p{font-size:12px}.heading-tag{font-size:12px}.metric small{font-size:11px}.course-name strong{font-size:13px}.course-name small{font-size:10px}.course-completion strong{font-size:12px}.course-score small{font-size:11px}.class-table{font-size:12px}.class-table th{font-size:11px}.legend-item{font-size:11px}.asset-stat-row span{font-size:12px}}

/* Operational view: the most recent stored events anchor the board in records. */
.asset-column{grid-template-rows:minmax(0,1fr) 300px}
.activity-surface{display:flex;flex-direction:column;background:radial-gradient(circle at 95% 10%,rgba(26,114,151,.16),transparent 48%),linear-gradient(152deg,rgba(14,37,57,.94),rgba(9,25,42,.95) 68%)}
.activity-list{position:relative;display:flex;flex:1;min-height:0;flex-direction:column;margin:16px 0 0;padding:0;list-style:none}
.activity-list::before{content:"";position:absolute;top:8px;bottom:8px;left:7px;width:1px;background:linear-gradient(180deg,rgba(96,221,245,.65),rgba(96,221,245,.12))}
.activity-item{display:flex;align-items:center;flex:1;min-height:0;position:relative;padding:3px 0 3px 25px;border-top:1px solid rgba(98,148,179,.17)}
.activity-item:first-child{border-top:0}.activity-marker{position:absolute;left:2px;top:50%;width:11px;height:11px;transform:translateY(-50%);border-radius:2px;background:#69d9ef;border:2px solid #173a50;box-shadow:0 0 0 2px rgba(105,217,239,.15)}
.activity-submission .activity-marker{background:#68e2bc;box-shadow:0 0 0 2px rgba(104,226,188,.15)}.activity-borrow .activity-marker{background:#f1cb87;box-shadow:0 0 0 2px rgba(241,203,135,.16)}
.activity-content{min-width:0;width:100%;display:flex;flex-direction:column;gap:2px}.activity-top{display:flex;justify-content:space-between;gap:10px;align-items:center;white-space:nowrap}.activity-top span{color:#89d9ec;font-size:11px;letter-spacing:.06em}.activity-submission .activity-top span{color:#88e5c5}.activity-borrow .activity-top span{color:#f1cb87}.activity-top time{color:#b5cbd9;font-size:11px;font-variant-numeric:tabular-nums}.activity-content strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#edf8fe;font-size:14px;font-weight:620}.activity-content small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#a9c3d1;font-size:11px}
.asset-surface .asset-hero::before{width:126px;height:126px}.asset-surface .asset-hero::after{width:148px;height:148px;left:-6px}.asset-surface .asset-hero strong{width:136px}
@media (max-width:1280px){.asset-column{display:flex}.activity-surface{min-height:530px}.asset-surface{min-height:300px}}
@media (max-width:700px){.activity-surface{min-height:520px}.activity-list{margin-top:12px}.activity-content strong{font-size:13px}.activity-top time{font-size:10px}.activity-content small{font-size:10px}}
.course-column{grid-template-rows:minmax(0,1fr) 280px}
.activity-content strong{font-size:16px}.activity-top span,.activity-top time{font-size:12px}.activity-content small{font-size:12px}
@media (max-width:1280px){.class-surface{min-height:295px}}
@media (max-width:700px){.class-surface{min-height:300px}.activity-surface{min-height:480px}.activity-content strong{font-size:14px}.activity-top span,.activity-top time{font-size:11px}.activity-content small{font-size:11px}}

/* One continuous instrument strip, with process rates leading the eye. */
.metric-band{grid-template-columns:repeat(6,minmax(0,1fr));background:linear-gradient(180deg,#102a3d,#0a1b2c);border-color:#3b6075;border-radius:6px;box-shadow:inset 0 1px rgba(197,240,249,.07),0 22px 36px -34px rgba(67,190,222,.62)}
.metric-band::before{height:2px;background:linear-gradient(90deg,rgba(91,207,229,.94) 0 33.3%,rgba(105,230,188,.94) 33.3% 66.6%,rgba(225,187,127,.7) 66.6%)}
.metric{display:grid;grid-template-rows:20px minmax(0,1fr) 20px;align-items:center;padding:16px 20px 21px}
.metric:not(:last-child)::after{top:19px;bottom:19px;border-color:#34536a}
.metric:nth-child(2)::after,.metric:nth-child(4)::after{border-color:#568097}
.metric > span:first-child{color:#bed5e1;font-size:14px;font-weight:550;letter-spacing:.045em;white-space:nowrap}
.metric > span:first-child::before{content:"";display:inline-block;width:5px;height:5px;margin-right:9px;vertical-align:3px;background:#5f9cb7;border-radius:1px}
.metric strong{font-size:47px;font-weight:690;letter-spacing:-.03em;font-variant-numeric:tabular-nums;text-shadow:none}
.metric small{align-self:end;font-size:13px;letter-spacing:.005em;color:#a9c9d8}
.metric-rate{background:radial-gradient(circle at 90% 8%,rgba(84,199,225,.18),transparent 46%),linear-gradient(130deg,rgba(28,92,119,.43),rgba(13,45,64,.2));box-shadow:inset 0 2px rgba(94,211,235,.62)}
.metric-rate > span:first-child{color:#b9ebf5}
.metric-rate > span:first-child::before{background:#6cdef0;box-shadow:0 0 9px rgba(108,222,240,.6)}
.metric-rate strong{font-size:54px;color:#cff6ff;text-shadow:none}
.metric-rate small{color:#c2dce8}
.metric-rate.emphasized{background:radial-gradient(circle at 92% 9%,rgba(91,222,172,.2),transparent 48%),linear-gradient(130deg,rgba(26,103,94,.45),rgba(13,55,60,.27));box-shadow:inset 0 2px rgba(117,229,188,.77)}
.metric-rate.emphasized > span:first-child{color:#bff0dc}
.metric-rate.emphasized > span:first-child::before{background:#89e8c3;box-shadow:0 0 9px rgba(137,232,195,.58)}
.metric-rate.emphasized strong{color:#b6f4d9;text-shadow:none}
.metric-track{position:absolute;left:20px;right:20px;bottom:9px;height:5px;background:#294a5d;border-radius:2px;overflow:hidden}
.metric-track i{display:block;height:100%;width:0;background:linear-gradient(90deg,#317fa3,#72dff0);border-radius:2px}
.metric.emphasized .metric-track{background:#315c59}
.metric.emphasized .metric-track i{background:linear-gradient(90deg,#399c83,#93eac0)}
.metric-rate.metric-device{background:radial-gradient(circle at 92% 9%,rgba(225,187,127,.14),transparent 46%),linear-gradient(130deg,rgba(99,79,60,.28),rgba(43,45,54,.2));box-shadow:inset 0 2px rgba(225,187,127,.55)}
.metric-device > span:first-child{color:#efdbb9}
.metric-device > span:first-child::before{background:#dfbd87;box-shadow:0 0 9px rgba(223,189,135,.42)}
.metric-device strong{color:#f2e1c1}
.metric-device .metric-track{background:#665b50}
.metric-device .metric-track i{background:linear-gradient(90deg,#b58a5d,#efd0a1)}
@media (max-width:1280px){.metric-band{grid-template-columns:repeat(3,minmax(0,1fr))}.metric{min-height:126px}}
@media (max-width:700px){.metric-band{grid-template-columns:repeat(2,minmax(0,1fr))}.metric{min-height:118px;padding:14px 13px 18px;grid-template-rows:18px minmax(0,1fr) 18px}.metric > span:first-child{font-size:12px}.metric > span:first-child::before{width:4px;height:4px;margin-right:6px;vertical-align:2px}.metric strong,.metric-rate strong{font-size:36px}.metric small{font-size:11px}.metric-track{left:13px;right:13px;bottom:7px;height:4px}}

/* First data load is a single instrument sweep; live refreshes stay steady. */
@keyframes data-fill{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes data-row{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0)}}
.dashboard.intro-playing .metric-track i,.dashboard.intro-playing .course-completion .fill,.dashboard.intro-playing .table-meter::after{transform-origin:left center;animation:data-fill 840ms cubic-bezier(.16,1,.3,1) both}
.dashboard.intro-playing .course-row,.dashboard.intro-playing .class-table tbody tr{animation:data-row 440ms cubic-bezier(.16,1,.3,1) both}
.dashboard.intro-playing .course-row:nth-child(2){animation-delay:45ms}
.dashboard.intro-playing .course-row:nth-child(3){animation-delay:90ms}
.dashboard.intro-playing .course-row:nth-child(4){animation-delay:135ms}
.dashboard.intro-playing .course-row:nth-child(5){animation-delay:180ms}
.dashboard.intro-playing .course-row:nth-child(6){animation-delay:225ms}
.dashboard.intro-playing .class-table tbody tr:nth-child(1){animation-delay:90ms}
.dashboard.intro-playing .class-table tbody tr:nth-child(2){animation-delay:145ms}
.dashboard.intro-playing .class-table tbody tr:nth-child(3){animation-delay:200ms}
.dashboard.intro-playing .activity-item{animation:data-row 440ms cubic-bezier(.16,1,.3,1) both}
.dashboard.intro-playing .activity-item:nth-child(1){animation-delay:90ms}
.dashboard.intro-playing .activity-item:nth-child(2){animation-delay:135ms}
.dashboard.intro-playing .activity-item:nth-child(3){animation-delay:180ms}
.dashboard.intro-playing .activity-item:nth-child(4){animation-delay:225ms}
.dashboard.intro-playing .activity-item:nth-child(5){animation-delay:270ms}
.dashboard.intro-playing .activity-item:nth-child(6){animation-delay:315ms}

/* Recent records: let each event read as an event, without a timestamp column. */
.activity-list{margin-top:20px}
.activity-list::before{left:9px;top:18px;bottom:18px;background:linear-gradient(180deg,rgba(96,221,245,.58),rgba(96,221,245,.11))}
.activity-item{padding:10px 0 10px 34px;border-color:rgba(115,161,190,.2)}
.activity-marker{left:4px;top:20px;transform:none}
.activity-content{gap:5px}
.activity-top{align-items:baseline;gap:12px}
.activity-top .activity-kind{font-size:12px;font-weight:650;letter-spacing:.08em}
.activity-top .activity-class{color:#a9c3d1;font-size:12px;letter-spacing:0}
.activity-content strong{font-size:16px;line-height:1.25}
.activity-content small{font-size:12px;line-height:1.3}
@media (max-width:700px){.activity-surface{min-height:490px}.activity-list{margin-top:16px}.activity-item{padding:8px 0 8px 31px}.activity-marker{left:4px;top:17px}.activity-top .activity-kind,.activity-top .activity-class{font-size:11px}.activity-content strong{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;white-space:normal;font-size:14px}.activity-content small{font-size:11px}}

/* Training-first content: course practice, deliverables and XR project standards. */
.curriculum-surface{display:flex;flex-direction:column;background:linear-gradient(150deg,#102d3f,#0b1b2d 70%)}
.curriculum-surface .surface-heading>svg{width:25px;height:25px;color:#69d9ef}
.curriculum-navigation{display:flex;align-items:center;justify-content:space-between;margin:20px 0 12px;color:#aec5d6;font-size:13px}
.curriculum-navigation .icon-button{width:32px;height:30px}
.curriculum-surface h3{font-size:22px;line-height:1.4;color:#d4f4ff;margin:0 0 13px}
.curriculum-summary{display:flex;justify-content:space-between;gap:12px;font-size:12px;color:#aec5d6;padding-bottom:14px;border-bottom:1px solid #29455c}
.curriculum-summary b{color:#89e5c4;font-size:18px;margin-left:5px}
#curriculum-projects{display:flex;flex-direction:column;justify-content:space-evenly;flex:1;min-height:0;gap:10px;padding:12px 0}
.practice-project>div:first-child{display:flex;justify-content:space-between;gap:12px;align-items:baseline}
.practice-project strong{font-size:16px;font-weight:550;line-height:1.4}.practice-project span{white-space:nowrap;color:#91dfef;font-size:19px}.practice-project small{font-size:11px;color:#aec5d6}
.practice-track{height:4px;background:#203c50;margin-top:9px}.practice-track i{display:block;height:100%;background:#64d9f5}
.curriculum-note{font-size:11px;color:#aec5d6;margin:9px 0 0}
.metric strong{font-size:48px}.attendance-legend{justify-content:center;gap:32px}.course-row{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr) 85px}
@media(max-width:1280px){.curriculum-surface{min-height:530px}}
@media(max-width:700px){.curriculum-surface h3{font-size:19px}.practice-project strong{font-size:14px}.metric strong{font-size:34px}.course-row{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) 68px;gap:8px}.class-table{font-size:11px}.class-table th{font-size:10px}}

/* XR equipment: compact inventory overview and aligned operational states. */
.asset-surface{background:linear-gradient(135deg,#102b3d,#0b1b2c 75%)}
.device-overview{display:flex;align-items:center;justify-content:space-between;gap:20px;flex:1;min-height:88px;padding:12px 0}
.device-identity{display:flex;align-items:center;gap:14px}.device-symbol{display:grid;place-items:center;width:54px;height:54px;border:1px solid #365e73;border-radius:10px;background:#15374b;color:#96e7f3}.device-symbol svg{width:32px;height:32px;stroke-width:1.5}
.device-identity>div{display:flex;flex-direction:column;gap:6px}.device-identity>div>span{font-size:15px;font-weight:550;color:#e5f4fa}.device-identity small{font-size:12px;color:#a3bfce}
.device-total{display:flex;align-items:baseline;gap:8px}.device-total strong{font-size:48px;font-weight:650;line-height:1;letter-spacing:-.02em;color:#c3f3fc}.device-total>span{font-size:13px;color:#aacbd9}
.device-states{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;border-top:1px solid #2e4d62;padding:16px 0 2px}
.device-state{min-width:0}.device-state>span{display:flex;align-items:center;gap:6px;color:#b7d0dc;font-size:12px;margin-bottom:10px}.device-state svg{width:14px;height:14px}.device-state strong{font-size:28px;line-height:1;font-weight:650}.device-state small{font-size:10px;color:#a5bfce;margin-left:6px}.device-state.available strong,.device-state.available svg{color:#78e0be}.device-state.occupied strong,.device-state.occupied svg{color:#7dd7f1}.device-state.pending strong,.device-state.pending svg{color:#e8c590}
@media(max-width:1280px){.asset-surface{min-height:285px}}
@media(max-width:700px){.device-states{gap:10px}.device-identity{gap:10px}.device-symbol{width:46px;height:46px}.device-identity>div>span{font-size:14px}.device-total strong{font-size:42px}.device-state>span{font-size:11px}.device-state strong{font-size:26px}.device-state small{margin-left:4px;font-size:9px}}

/* Class results use the same evidence chain as the task and grade records. */
.class-table{table-layout:fixed;margin-top:16px}
.class-table th:first-child{width:23%}
.class-table th:nth-child(2){width:26%}
.class-table th:nth-child(3){width:16%}
.class-table th:nth-child(4){width:19%}
.class-table th:nth-child(5){width:16%}
.class-table td{height:55px;padding-top:7px;padding-bottom:7px;font-size:14px}
.class-table td:first-child{font-size:15px;white-space:normal}
.class-table td strong{font-weight:650}
.class-table td small{color:var(--muted);font-size:11px;font-weight:400}
.class-table td:nth-child(2)>small{display:block;line-height:1;margin-top:4px}
.class-table td:nth-child(2) .table-meter{min-width:68px;padding-bottom:5px}
.class-table td:nth-child(2) .table-meter::before,.class-table td:nth-child(2) .table-meter::after{height:2px}
@media(max-width:700px){.class-table th{font-size:10px}.class-table td,.class-table td:first-child{font-size:11px}.class-table td small{font-size:9px}.class-table td:nth-child(2) .table-meter{min-width:42px}}

/* Put actual project deliverables at the center of the board. */
.analysis-grid{grid-template-columns:1.12fr 1.25fr .94fr}
.insight-column{grid-template-rows:1.28fr .72fr}
.project-surface{display:flex;flex-direction:column;border-color:#477b86;background:radial-gradient(ellipse at 38% 8%,rgba(56,165,165,.19),transparent 65%),linear-gradient(155deg,#103343,#0b2031 67%,#0a1a2a);box-shadow:inset 0 1px rgba(151,239,227,.17)}
.project-surface .surface-heading h2{font-size:25px;color:#e6fff7}
.project-surface .surface-heading p{color:#b9d6d9}
.project-surface .heading-tag{border-color:#40847c;background:#153f43;color:#a6e9cc}
.project-overview{display:flex;align-items:end;justify-content:space-between;gap:22px;margin:23px 0 19px;padding:0 0 18px;border-bottom:1px solid rgba(130,205,205,.23)}
.project-overview>div{display:flex;align-items:baseline;gap:12px}
.project-overview>div:first-child strong{font-size:68px;line-height:.9;letter-spacing:-.055em;font-weight:700;color:#b6f4db}
.project-overview>div>span{font-size:14px;color:#c2dce2}
.project-overview-rate{flex-direction:column;align-items:end!important;gap:2px!important;text-align:right}
.project-overview-rate strong{font-size:29px;color:#e9f7fc;line-height:1;font-weight:650}
.project-overview-rate span{font-size:11px!important;color:#b4ced7!important}
.project-column-labels{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) 72px;gap:18px;color:#9dbac8;font-size:11px;letter-spacing:.05em;padding:0 0 7px}
.project-column-labels span:nth-child(2),.project-column-labels span:nth-child(3){text-align:right}
.project-list{display:flex;flex-direction:column;flex:1;min-height:0}
.project-row{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) 72px;gap:18px;align-items:center;flex:1;min-height:0;border-top:1px solid rgba(130,205,205,.18)}
.project-identity{display:flex;align-items:center;gap:12px;min-width:0}
.project-index{display:grid;place-items:center;flex:none;width:28px;height:28px;border:1px solid #397b78;border-radius:4px;color:#83e4c6;font-size:12px;font-weight:700}
.project-identity>div{min-width:0}.project-identity strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:17px;font-weight:620;color:#f0fbfc}.project-identity small{display:block;margin-top:6px;color:#9ebcc8;font-size:11px}
.project-numbers{text-align:right;white-space:nowrap}.project-numbers strong{font-size:24px;line-height:1;color:#d9fff1}.project-numbers span{font-size:11px;color:#a9c4cf;margin-left:4px}
.project-progress{height:5px;margin-top:8px;background:#25485a;border-radius:2px;overflow:hidden}.project-progress i{display:block;height:100%;background:linear-gradient(90deg,#3ca996,#9cf0bd);border-radius:2px}
.project-score{text-align:right;white-space:nowrap}.project-score strong{font-size:23px;color:#f5d69e}.project-score small{font-size:11px;color:#c9b894;margin-left:2px}
.project-footnote{flex:none;padding-top:11px;border-top:1px solid rgba(130,205,205,.18);color:#9fbdc9;font-size:11px;text-align:right}
.capability-surface{display:flex;flex-direction:column;background:radial-gradient(circle at 100% 0%,rgba(47,112,147,.15),transparent 55%),linear-gradient(150deg,#102d3f,#0b1b2d 70%)}
.capability-key{display:flex;justify-content:flex-end;gap:16px;margin:16px 0 3px;color:#acc7d4;font-size:11px}
.capability-key span{display:flex;align-items:center;gap:6px}.capability-key span::before{content:"";width:9px;height:3px;background:#72dcef;border-radius:2px}.capability-key span:last-child::before{background:#e6b975}
.capability-list{display:flex;flex:1;flex-direction:column;min-height:0}
.capability-row{display:grid;grid-template-columns:minmax(0,1fr) 1.1fr;gap:12px;align-items:center;flex:1;min-height:0;border-top:1px solid rgba(111,160,185,.19)}
.capability-name{min-width:0}.capability-name strong{display:block;font-size:16px;color:#edf8fc;font-weight:600;white-space:nowrap}.capability-name small{display:block;margin-top:5px;font-size:11px;color:#9ebac8}
.capability-bars{display:flex;flex-direction:column;gap:7px}.capability-line{display:flex;align-items:center;gap:8px}.capability-track{height:6px;background:#234153;border-radius:3px;overflow:hidden;flex:1}.capability-track i{display:block;height:100%;border-radius:3px;background:linear-gradient(90deg,#2d9ac0,#8be7f4)}.capability-line.innovation .capability-track i{background:linear-gradient(90deg,#a47743,#f0c987)}
.capability-score{width:46px;text-align:right;white-space:nowrap}.capability-score strong{font-size:14px;font-weight:650;color:#cfedf5}.capability-line.innovation .capability-score strong{color:#f2d9ae}.capability-score small{font-size:10px;color:#97b4c4}
.capability-footnote{flex:none;padding-top:11px;border-top:1px solid #29455c;color:#a2becc;font-size:11px;text-align:right}
.dashboard.intro-playing .project-progress i,.dashboard.intro-playing .capability-track i{transform-origin:left center;animation:data-fill 840ms cubic-bezier(.16,1,.3,1) both}
@media(max-width:1280px){.analysis-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.project-surface{min-height:500px}.capability-surface{min-height:500px}.insight-column{display:flex}}
@media(max-width:700px){.analysis-grid{display:flex}.insight-column{order:-1}.project-surface{min-height:485px}.project-overview{margin:20px 0 15px}.project-overview>div:first-child strong{font-size:52px}.project-overview>div>span{font-size:11px}.project-overview-rate strong{font-size:24px}.project-column-labels,.project-row{grid-template-columns:minmax(0,1.25fr) minmax(0,.9fr) 46px;gap:7px}.project-identity{gap:6px}.project-index{width:23px;height:23px;font-size:10px}.project-identity strong{font-size:12px}.project-identity small{font-size:9px}.project-numbers strong,.project-score strong{font-size:16px}.project-numbers span,.project-score small{font-size:9px}.project-surface .surface-heading h2{font-size:21px}.capability-surface{min-height:485px}.capability-name strong{font-size:14px}}
@media(max-width:700px){.project-column-labels span:last-child{font-size:10px;white-space:nowrap}}

/* The board stays readable at a distance; details open only on deliberate selection. */
.detail-trigger{cursor:pointer;transition:background-color .18s ease,box-shadow .18s ease}
button.detail-trigger{appearance:none;width:100%;padding:0;border:0;border-radius:0;background:transparent;color:inherit;font:inherit;text-align:left}
.course-row.detail-trigger:hover,.course-row.detail-trigger:focus-visible{background:rgba(73,145,182,.13)}
.project-row.detail-trigger:hover,.project-row.detail-trigger:focus-visible{background:rgba(99,222,188,.09)}
.capability-row.detail-trigger:hover,.capability-row.detail-trigger:focus-visible{background:rgba(94,188,216,.08)}
.class-table tr.detail-trigger:hover{background:rgba(73,145,182,.12)}
button.detail-trigger:focus-visible,.class-detail-button:focus-visible{outline:2px solid #8ee7f3;outline-offset:-2px}
.project-row.detail-trigger:focus-visible,.capability-row.detail-trigger:focus-visible{border-radius:4px}
.project-identity strong::after,.capability-name strong::after,.course-name strong::after{content:"↗";display:inline-block;opacity:.55;margin-left:7px;color:#94dbe8;font-size:.72em;font-weight:500;vertical-align:1px}
.project-identity strong::after{color:#8ce4bf}
.class-detail-button{appearance:none;padding:0;border:0;background:transparent;color:inherit;font:inherit;font-weight:inherit;text-align:left;cursor:pointer}
.class-detail-button::after{content:"↗";margin-left:5px;font-size:11px;opacity:.65}
.detail-dialog{width:min(940px,calc(100vw - 32px));max-height:min(880px,calc(100vh - 32px));padding:0;border:1px solid #4b7b8e;border-radius:12px;background:#0c1d2e;color:#eef8fc;box-shadow:0 28px 90px rgba(0,5,14,.65);overflow:hidden;font-family:inherit}
.detail-dialog:not([open]){display:none}
.detail-dialog.is-project-detail{width:min(1120px,calc(100vw - 32px))}
.project-introduction{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:28px;align-items:center;margin-bottom:28px}
.project-cover{aspect-ratio:16/10;overflow:hidden;border-radius:6px;background:#18394a}
.project-cover img{display:block;width:100%;height:100%;object-fit:cover}
.project-introduction-copy{min-width:0}
.project-introduction-copy h3{margin:0 0 10px;color:#eefbff;font-size:22px;font-weight:650}
.project-introduction-meta{display:flex;flex-wrap:wrap;gap:8px 16px;margin:0 0 16px;color:#a9c9d7;font-size:12px}
.project-introduction-meta span{color:#abe5d3}
.project-introduction-description{margin:0;color:#d6e7ed;font-size:15px;line-height:1.85}
.project-topics{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px}
.project-topics span{padding:5px 8px;background:#183447;border:1px solid #385c6c;border-radius:4px;color:#bce8e8;font-size:11px;line-height:1.3}
@media(max-width:700px){.detail-dialog.is-project-detail{width:calc(100vw - 20px)}.project-introduction{grid-template-columns:1fr;gap:20px;margin-bottom:24px}.project-cover{aspect-ratio:16/9}.project-introduction-copy h3{font-size:19px}.project-introduction-meta{margin-bottom:12px}.project-introduction-description{font-size:14px;line-height:1.75}.project-topics{margin-top:14px}}
.detail-dialog[open]{display:grid;grid-template-rows:auto minmax(0,1fr) auto}
.detail-dialog::backdrop{background:rgba(2,9,18,.78);backdrop-filter:blur(5px)}
.detail-header{display:flex;align-items:start;justify-content:space-between;gap:24px;padding:28px 32px 24px;border-bottom:1px solid #2c4c62;background:linear-gradient(125deg,#113448,#0e2235 73%)}
.detail-header h2{margin:0;color:#eefcff;font-size:28px;line-height:1.2;font-weight:670;letter-spacing:-.025em}
.detail-header p{margin:9px 0 0;color:#b6d1de;font-size:14px}
.detail-close{display:grid;place-items:center;width:38px;height:38px;flex:none;border:1px solid #53788b;border-radius:6px;background:#153447;color:#e2f6fb;cursor:pointer}
.detail-close:hover{background:#204a5d;border-color:#85dce9}.detail-close:focus-visible{outline:2px solid #8ee7f3;outline-offset:2px}
.detail-close svg{width:18px;height:18px}
.detail-content{min-height:0;overflow:auto;padding:24px 32px 30px;scrollbar-color:#4a7c8f #11283a}
.detail-stats{display:grid;grid-template-columns:repeat(var(--detail-columns),minmax(0,1fr));border-top:1px solid #345c70;border-bottom:1px solid #345c70}
.detail-stat{display:flex;flex-direction:column;justify-content:center;min-height:104px;padding:16px 18px}
.detail-stat:first-child{padding-left:0}.detail-stat:not(:last-child){border-right:1px solid #29485c}
.detail-stat span{color:#a9c8d6;font-size:13px}.detail-stat strong{margin-top:12px;color:#d7f8ff;font-size:27px;line-height:1.1;font-weight:660;white-space:nowrap}
.detail-stat:nth-child(2) strong{color:#b3f2d2}
.detail-section{margin-top:27px}.detail-section h3,.detail-evaluation h3{margin:0 0 13px;color:#d7eaf1;font-size:17px;font-weight:630}
.detail-table-scroll{overflow:auto}.detail-table{width:100%;border-collapse:collapse;font-size:14px;font-variant-numeric:tabular-nums}
.detail-table th{text-align:left;padding:12px 13px;color:#a8c4d1;font-size:12px;font-weight:540;white-space:nowrap;border-bottom:1px solid #43687a;background:#102a3d}
.detail-table td{padding:16px 13px;color:#e1f0f6;border-bottom:1px solid #29465a;white-space:nowrap}
.detail-table tbody tr:last-child td{border-bottom:0}.detail-table td:first-child{font-weight:620;color:#e8fbff}.detail-table td:not(:first-child),.detail-table th:not(:first-child){text-align:right}
.detail-empty{text-align:center!important;color:#9db9c8!important;font-weight:400!important}
.detail-evaluation{margin-top:27px;padding-top:20px;border-top:1px solid #2e5063}
.detail-evaluation>div{display:flex;flex-wrap:wrap;gap:20px 32px;color:#acc8d5;font-size:14px}
.detail-evaluation span strong{color:#e7f8fb;margin-left:8px;font-weight:640}
.detail-footer{padding:14px 32px;border-top:1px solid #2c4c62;color:#9dbbc9;font-size:12px;text-align:right;background:#0a1a2b}
@media(max-width:700px){.detail-dialog{width:calc(100vw - 20px);max-height:calc(100vh - 20px)}.detail-header{padding:20px 18px;gap:12px}.detail-header h2{font-size:22px}.detail-header p{font-size:12px}.detail-content{padding:20px 18px}.detail-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.detail-stat{min-height:86px;padding:12px}.detail-stat:nth-child(2){border-right:0}.detail-stat:nth-child(-n+2){border-bottom:1px solid #29485c}.detail-stat strong{font-size:21px;white-space:normal}.detail-table{font-size:12px}.detail-table td,.detail-table th{padding:11px 9px}.detail-evaluation>div{gap:12px 24px}.detail-footer{padding:12px 18px}}
@media(max-width:600px){.detail-table-scroll{overflow:visible}.detail-table,.detail-table tbody,.detail-table tr,.detail-table td{display:block;width:100%}.detail-table thead{display:none}.detail-table tbody tr{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 10px;padding:8px 0;border-bottom:1px solid #31566a}.detail-table tbody tr:last-child{border-bottom:0}.detail-table td,.detail-table td:not(:first-child){padding:8px 0;border:0;text-align:left;white-space:normal}.detail-table td::before{content:attr(data-label);display:block;margin-bottom:5px;color:#9ebdcd;font-size:10px;font-weight:500}.detail-table td:first-child{grid-column:1/-1;padding-bottom:10px;border-bottom:1px solid #24465b;font-size:14px}.detail-table .detail-empty{grid-column:1/-1;text-align:left!important}}
@media(prefers-reduced-motion:reduce){.detail-trigger{transition:none}.detail-dialog::backdrop{backdrop-filter:none}}

/* A single dominant training view; surrounding panels compare rather than enumerate. */
.analysis-grid{display:grid;grid-template-columns:minmax(0,.86fr) minmax(0,1.7fr) minmax(0,.86fr);grid-template-rows:minmax(0,1.04fr) minmax(0,.76fr);gap:16px}
.analysis-grid>.surface{padding:20px 22px}
.project-surface{grid-column:2;grid-row:1 / 3;display:flex;flex-direction:column}
.course-surface{grid-column:1;grid-row:1;display:flex;flex-direction:column}
.class-surface{grid-column:1;grid-row:2;display:flex;flex-direction:column}
.capability-surface{grid-column:3;grid-row:1;display:flex;flex-direction:column}
.asset-surface{grid-column:3;grid-row:2;display:flex;flex-direction:column}
.project-surface .surface-heading h2{font-size:27px}
.project-overview{margin:18px 0 10px;padding-bottom:16px;align-items:center}
.project-overview>div:first-child strong{font-size:72px}
.project-overview-rate strong{font-size:33px}
.project-plot-key{display:flex;align-items:center;justify-content:flex-end;gap:18px;color:#a8c6d2;font-size:11px}
.project-plot-key span{display:flex;align-items:center;gap:7px}.project-plot-key i{display:inline-block;width:10px;height:10px;border-radius:2px}.plot-key-delivered{background:#65d5b9}.plot-key-pending{background:#315765}
.project-visual{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));flex:1;min-height:250px;margin-top:8px}
button.project-visual-item{display:flex;flex-direction:column;align-items:stretch;min-width:0;min-height:0;padding:12px 20px 4px;border-right:1px solid rgba(130,205,205,.18);text-align:center}
button.project-visual-item:last-child{border-right:0}
button.project-visual-item:hover,button.project-visual-item:focus-visible{background:rgba(114,224,184,.08)}
.project-visual-top{display:flex;align-items:center;justify-content:space-between;color:#8fcdbc;font-size:12px;font-weight:620}
.project-visual-top strong{font-size:15px;color:#c6f4e0}
.project-visual-track{position:relative;display:flex;align-items:flex-end;justify-content:center;flex:1;min-height:0;width:min(44%,92px);margin:15px auto 0;background:#21475a;border-radius:4px 4px 0 0;overflow:hidden}
.project-visual-track>i{position:relative;display:flex;align-items:flex-start;justify-content:center;width:100%;font-style:normal;background:linear-gradient(180deg,#7be3c8,#258e8a);border-radius:5px 5px 0 0;box-shadow:inset 0 1px rgba(229,255,248,.26)}
.project-visual-value{margin-top:18px;color:#082a34;font-size:32px;line-height:1;font-weight:750}
.project-visual-name{display:block;min-height:48px;margin-top:12px;font-size:17px;line-height:1.34;font-weight:660;color:#ecfbf7}
.project-visual-meta{display:block;color:#a8c9d0;font-size:11px;white-space:nowrap}.project-visual-meta span{margin:0 6px;color:#5a9c9c}
.project-footnote{padding-top:10px;font-size:11px}
.project-trend{display:flex;flex:none;flex-direction:column;height:195px;margin-top:15px;padding-top:15px;border-top:1px solid #345e68}
.project-trend-heading{display:flex;align-items:baseline;justify-content:space-between;gap:15px}.project-trend-heading h3{margin:0;font-size:17px;font-weight:620;color:#d9f3f2}.project-trend-heading span{color:#9abdc7;font-size:11px}
.project-trend .trend-chart{flex:1;min-height:0;margin-top:8px}
.course-visual,.class-visual,.capability-visual{flex:1;min-height:0;display:grid;align-items:stretch}
.course-visual{grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;margin-top:20px}
button.course-visual-item,button.class-visual-item,button.capability-visual-item{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;min-width:0;min-height:0;text-align:center}
button.course-visual-item:hover,button.course-visual-item:focus-visible,button.class-visual-item:hover,button.class-visual-item:focus-visible,button.capability-visual-item:hover,button.capability-visual-item:focus-visible{background:rgba(105,205,232,.08)}
.course-visual-value{margin-bottom:10px;color:#b8e9f5;font-size:14px;font-weight:690;white-space:nowrap}
.course-visual-track,.class-visual-track{display:flex;align-items:flex-end;justify-content:center;flex:1;min-height:0;background:#224256;border-radius:3px 3px 0 0;overflow:hidden}
.course-visual-track{width:39px}.course-visual-track i,.class-visual-track i{display:block;width:100%;background:linear-gradient(180deg,#80e1ef,#2d8fb4);border-radius:3px 3px 0 0}
.course-visual-item strong{display:block;min-height:34px;margin-top:12px;color:#d4ebf3;font-size:12px;line-height:1.2;font-weight:590;white-space:nowrap}
.visual-scale{display:flex;justify-content:space-between;gap:8px;margin-top:8px;padding-top:9px;border-top:1px solid #294b5e;color:#9ebfcd;font-size:11px}
.class-visual{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:14px}
.class-visual-rate{margin-bottom:7px;color:#cbf4fa;font-size:20px;font-weight:680}
.class-visual-track{width:66%;background:#27495b}.class-visual-track i{background:linear-gradient(180deg,#83e6d1,#319eaf)}
.class-visual-item strong{margin-top:7px;color:#e4f5fb;font-size:14px;white-space:nowrap}.class-visual-item small{color:#a4c2cf;font-size:10px;white-space:nowrap}
.capability-key{margin:13px 0 4px;font-size:11px}
.capability-visual{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}
.capability-visual-values{margin:0 0 7px;color:#c7eaf3;font-size:11px;white-space:nowrap;font-weight:640}.capability-visual-values em{font-style:normal;color:#6e9caf;margin:0 2px}
.capability-visual-pair{display:flex;align-items:flex-end;justify-content:center;gap:4px;flex:1;min-height:0;width:100%;border-bottom:1px solid #45677a}
.capability-visual-pair i{display:block;width:20px;max-width:42%;min-height:1px;border-radius:3px 3px 0 0}
.capability-visual-pair .completion{background:linear-gradient(180deg,#8be5ee,#3095bf)}.capability-visual-pair .innovation{background:linear-gradient(180deg,#f2d29a,#ae7c43)}
.capability-visual-item strong{display:block;min-height:31px;margin-top:10px;color:#dceef4;font-size:11px;line-height:1.2;font-weight:590;white-space:normal}.capability-visual-item small{color:#a4c0cc;font-size:10px}
.capability-footnote{margin-top:9px;padding-top:8px;text-align:right}
.asset-surface .device-overview{min-height:68px;flex:0;padding:12px 0 7px}.asset-surface .device-symbol{width:46px;height:46px}.asset-surface .device-symbol svg{width:27px;height:27px}.asset-surface .device-total strong{font-size:43px}
.device-grid{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));grid-template-rows:repeat(4,minmax(0,1fr));gap:6px;flex:1;min-height:0;max-height:128px;margin:9px 0 12px}
.device-dot{display:block;min-height:11px;border-radius:3px;background:#31576a}.device-dot.available{background:linear-gradient(160deg,#61dab7,#277e83)}.device-dot.occupied{background:linear-gradient(160deg,#83d9f2,#2b85ab)}.device-dot.pending{background:linear-gradient(160deg,#efd09c,#a1703d)}
.device-visual-key{display:flex;align-items:center;justify-content:space-between;gap:6px;padding-top:12px;border-top:1px solid #31566a;color:#a8c7d4;font-size:11px;white-space:nowrap}
.device-visual-key span{display:flex;align-items:center;gap:5px}.device-visual-key i{display:inline-block;width:7px;height:7px;border-radius:2px}.device-visual-key i.available{background:#65d8b5}.device-visual-key i.occupied{background:#82d9ef}.device-visual-key i.pending{background:#edc58b}.device-visual-key strong{color:#e4f4f9;font-weight:660}
.dashboard.intro-playing .project-visual-track>i,.dashboard.intro-playing .course-visual-track i,.dashboard.intro-playing .class-visual-track i,.dashboard.intro-playing .capability-visual-pair i{transform-origin:bottom center;animation:visual-rise 760ms cubic-bezier(.16,1,.3,1) both}
@keyframes visual-rise{from{transform:scaleY(0)}to{transform:scaleY(1)}}
@media(max-width:1280px){.analysis-grid{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:auto}.project-surface{grid-column:1/-1;grid-row:1;min-height:650px}.course-surface{grid-column:1;grid-row:2;min-height:380px}.capability-surface{grid-column:2;grid-row:2;min-height:380px}.class-surface{grid-column:1;grid-row:3;min-height:300px}.asset-surface{grid-column:2;grid-row:3;min-height:300px}}
@media(max-width:700px){.analysis-grid{display:flex;flex-direction:column}.analysis-grid>.surface{padding:19px}.project-surface{min-height:720px}.project-overview{margin:16px 0 8px}.project-overview>div:first-child strong{font-size:51px}.project-plot-key{font-size:10px}.project-visual{min-height:280px}.project-visual-item{padding-left:5px!important;padding-right:5px!important}.project-visual-track{width:min(54%,64px);margin-top:10px}.project-visual-value{font-size:20px;margin-top:10px}.project-visual-name{font-size:12px;min-height:48px;margin-top:9px}.project-visual-meta{font-size:10px;white-space:normal;line-height:1.4}.project-visual-meta span{margin:0 2px}.project-trend{height:160px}.course-surface,.capability-surface{min-height:330px}.class-surface,.asset-surface{min-height:285px}.course-visual-track{width:28px}.course-visual-value{font-size:11px}.course-visual-item strong{font-size:10px}.class-visual-track{width:55%}.capability-visual-pair i{width:15px}.device-grid{max-height:110px}}
@media(prefers-reduced-motion:reduce){.dashboard.intro-playing .project-visual-track>i,.dashboard.intro-playing .course-visual-track i,.dashboard.intro-playing .class-visual-track i,.dashboard.intro-playing .capability-visual-pair i{animation:none}}

/* Use a ring for class progress and a numeric comparison for capability scores. */
.class-visual{align-items:center;gap:8px}
button.class-visual-item{justify-content:center;gap:8px}
.class-visual-ring{display:grid;place-items:center;width:min(108px,100%);aspect-ratio:1;border-radius:50%;background:conic-gradient(#70d9c7 var(--ring-progress),#244b5c var(--ring-progress));box-shadow:0 0 24px rgba(73,202,196,.09)}
.class-visual-ring::before{content:"";grid-area:1 / 1;width:calc(100% - 13px);aspect-ratio:1;border-radius:50%;background:#0e2838}
.class-visual-ring .class-visual-rate{grid-area:1 / 1;z-index:1;margin:0;font-size:20px}
.class-visual-item strong{margin:0}
.capability-key{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.55fr);gap:10px;margin:19px 0 0;padding:0;text-align:center}
.capability-key-values{grid-column:2;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:3px}
.capability-key span{position:relative;display:block;text-align:center}
.capability-key span::before{display:none}
.capability-visual{display:flex;flex-direction:column;justify-content:stretch}
button.capability-visual-item{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.55fr);grid-template-rows:1fr auto;align-items:center;gap:0 10px;flex:1;min-height:0;padding:5px 0;border-bottom:1px solid rgba(129,183,198,.18);text-align:left}
button.capability-visual-item:last-child{border-bottom:0}
.capability-visual-item strong{grid-column:1;grid-row:1;min-height:0;margin:0;font-size:13px;text-align:left}
.capability-visual-item small{grid-column:1;grid-row:2;align-self:start;font-size:10px}
.capability-visual-values{grid-column:2;grid-row:1 / 3;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:3px;align-self:stretch;align-items:center;margin:0;text-align:center}
.capability-visual-values b{display:block;color:#b8eff5;font-size:23px;line-height:1;font-weight:670;font-variant-numeric:tabular-nums}
.capability-visual-values b:last-child{color:#f2d09a}
.asset-surface{justify-content:space-between}
.device-count-display{display:flex;flex:1;flex-direction:column;align-items:center;justify-content:center;min-height:0;text-align:center}
.device-count-display .device-total{display:flex;align-items:baseline;justify-content:center;gap:7px}
.device-count-display .device-total strong{font-size:92px;line-height:1;color:#e0fbf9;font-weight:720;letter-spacing:-.055em}
.device-count-display .device-total span{color:#a6cad3;font-size:19px}
.device-count-display p{margin:8px 0 0;color:#b8d7dc;font-size:15px}
@media(max-width:700px){.class-visual-ring{width:min(105px,100%)}.capability-visual-values b{font-size:20px}.device-count-display .device-total strong{font-size:82px}}

/* AI synthesis and actionable scope controls replace secondary data tables. */
.masthead-title{white-space:normal}
.board-filter-menu{display:flex;justify-content:center;gap:9px;margin-top:9px}
.board-filter{display:flex;align-items:center;gap:8px;min-height:31px;padding:0 10px;border:1px solid rgba(79,143,169,.55);border-radius:4px;background:linear-gradient(180deg,rgba(18,53,74,.92),rgba(10,31,48,.92));color:#98bbca;font-size:11px;letter-spacing:.04em;transition:border-color .2s,box-shadow .2s,transform .2s}
.board-filter:focus-within,.board-filter:hover{border-color:#66d5e7;box-shadow:0 0 16px rgba(75,197,222,.16);transform:translateY(-1px)}
.board-filter select{min-width:88px;border:0;outline:0;color:#d9f4fa;background:transparent;font-size:11px;cursor:pointer}
.board-filter option{color:#e6f5fb;background:#0c1d2d}
.ai-surface{grid-column:3;grid-row:1;display:flex;flex-direction:column;background:radial-gradient(ellipse at 100% 0%,rgba(90,88,190,.18),transparent 58%),linear-gradient(148deg,#112b41,#0a1a2d 73%);border-color:#36546e}
.ai-state{display:inline-flex;align-items:center;gap:7px;flex:none;padding:5px 8px;border:1px solid rgba(102,212,220,.34);border-radius:4px;background:rgba(45,128,138,.16);color:#a9e9e6;font-size:10px}
.ai-state i{width:6px;height:6px;border-radius:50%;background:#68e0c1;box-shadow:0 0 9px rgba(104,224,193,.8);animation:heartbeat 2.4s ease-in-out infinite}
.ai-summary{margin:16px 0 10px;padding:12px 13px;border-left:2px solid #71dcda;background:linear-gradient(100deg,rgba(45,117,143,.2),rgba(45,117,143,.04));color:#e0f2f5;font-size:13px;line-height:1.6}
.ai-findings{display:flex;flex:1;flex-direction:column;min-height:0}
.ai-finding{position:relative;display:flex;flex:1;flex-direction:column;justify-content:center;min-height:0;padding:9px 0 9px 14px;border-top:1px solid rgba(121,171,195,.19)}
.ai-finding::before{content:"";position:absolute;left:0;top:19px;width:5px;height:5px;border-radius:50%;background:#69cee0;box-shadow:0 0 9px rgba(105,206,224,.55)}
.ai-finding:nth-child(2)::before{background:#77dfbd;box-shadow:0 0 9px rgba(119,223,189,.55)}
.ai-finding:nth-child(3)::before{background:#d6b3f3;box-shadow:0 0 9px rgba(214,179,243,.45)}
.ai-finding>span{color:#9fbdce;font-size:10px;letter-spacing:.04em}
.ai-finding>strong{margin-top:4px;color:#edfaff;font-size:14px;font-weight:650}
.ai-finding>p{margin:4px 0 0;color:#a9c5d2;font-size:11px;line-height:1.5}
.ai-scope{flex:none;padding-top:9px;border-top:1px solid rgba(121,171,195,.22);color:#89aebe;font-size:10px;text-align:right}
@media(max-width:1280px){.ai-surface{grid-column:2;grid-row:2;min-height:380px}.asset-surface{grid-column:2;grid-row:3}}
@media(max-width:700px){.masthead-title{padding:0 20px}.masthead-title h1{font-size:23px}.masthead-title::before,.masthead-title::after{top:7px;width:15px;height:17px}.board-filter-menu{flex-wrap:wrap;margin-top:10px}.board-filter{min-height:34px}.ai-surface{min-height:380px}.ai-summary{font-size:12px}.ai-finding{min-height:76px}}

/* Subtle 3D depth, with motion on entry and deliberate hover rather than constant spinning. */
button.project-visual-item,button.course-visual-item,button.class-visual-item{transform-style:preserve-3d;transition:transform .28s ease,background-color .28s ease,filter .28s ease}
button.project-visual-item:hover,button.project-visual-item:focus-visible{transform:perspective(900px) rotateX(2deg) translateY(-4px);filter:drop-shadow(0 10px 12px rgba(49,202,185,.12))}
.project-visual-track{overflow:visible;transform:perspective(480px) rotateY(-7deg);transform-origin:left center;box-shadow:inset 1px 0 rgba(174,235,242,.1),5px 5px 0 rgba(19,63,79,.72)}
.project-visual-track>i{box-shadow:inset -7px 0 rgba(17,112,107,.5),inset 0 1px rgba(229,255,248,.3),5px 3px 0 rgba(28,117,111,.75);transition:filter .25s,transform .25s}
.project-visual-track>i::after{content:"";position:absolute;top:4px;right:-7px;bottom:-3px;width:7px;transform:skewY(-27deg);transform-origin:left top;background:linear-gradient(180deg,#36a99c,#176c70);filter:brightness(.8)}
.course-visual-track{transform:perspective(420px) rotateY(-7deg);transform-origin:left center;box-shadow:4px 4px 0 rgba(18,61,80,.78),inset 1px 0 rgba(186,240,245,.12)}
.course-visual-track i{box-shadow:inset -5px 0 rgba(17,93,122,.35),4px 2px 0 rgba(46,138,165,.72)}
button.course-visual-item:hover,button.course-visual-item:focus-visible{transform:perspective(700px) translateY(-4px) rotateX(3deg);filter:drop-shadow(0 7px 7px rgba(45,180,210,.16))}
.class-visual-ring{box-shadow:inset 0 2px 4px rgba(228,255,252,.3),0 8px 0 rgba(13,49,64,.72),0 13px 22px rgba(0,0,0,.2);transform:perspective(620px) rotateX(12deg);transition:transform .35s,filter .35s}
button.class-visual-item:hover .class-visual-ring,button.class-visual-item:focus-visible .class-visual-ring{transform:perspective(620px) rotateX(0) translateY(-4px);filter:drop-shadow(0 7px 8px rgba(72,211,189,.23))}
.project-visual-name,.project-visual-meta{transform:translateZ(4px)}
.dashboard.intro-playing .ai-finding{animation:insight-arrive .55s cubic-bezier(.2,.8,.2,1) both}
.dashboard.intro-playing .ai-finding:nth-child(2){animation-delay:100ms}
.dashboard.intro-playing .ai-finding:nth-child(3){animation-delay:200ms}
@keyframes insight-arrive{from{opacity:0;transform:translateX(12px)}to{opacity:1;transform:translateX(0)}}
@media(prefers-reduced-motion:reduce){.board-filter,.ai-state i,button.project-visual-item,button.course-visual-item,button.class-visual-item,.class-visual-ring{transition:none;animation:none}.project-visual-track,.course-visual-track,.class-visual-ring{transform:none}.project-visual-track>i::after{display:none}.dashboard.intro-playing .ai-finding{animation:none}}

/* One interactive Three.js project occupies the visual center; the other projects are selectors. */
.project-focus-layout{display:grid;grid-template-columns:minmax(0,1.8fr) minmax(170px,.82fr);gap:13px;flex:1;min-height:290px;margin-top:14px}
.project-stage{position:relative;min-width:0;min-height:0;overflow:hidden;border:1px solid #36667a;border-radius:6px;background:radial-gradient(ellipse at 66% 51%,rgba(49,146,153,.24),transparent 55%),linear-gradient(150deg,#102b3b,#071b2a 78%);isolation:isolate}
.project-stage::before{content:"";position:absolute;z-index:2;inset:0;pointer-events:none;background:linear-gradient(90deg,rgba(5,20,31,.48),transparent 54%),linear-gradient(0deg,rgba(5,20,31,.65),transparent 49%)}
.project-stage::after{content:"";position:absolute;z-index:2;inset:0;border:1px solid rgba(149,239,226,.08);pointer-events:none;box-shadow:inset 0 0 40px rgba(80,204,195,.08)}
.project-stage-canvas{position:absolute;inset:0;z-index:1;cursor:grab;touch-action:none}
.project-stage-canvas.is-dragging{cursor:grabbing}
.project-stage-canvas canvas{display:block;width:100%;height:100%}
.stage-grid{position:absolute;inset:0;z-index:0;opacity:.45;background-image:linear-gradient(rgba(95,168,184,.12) 1px,transparent 1px),linear-gradient(90deg,rgba(95,168,184,.12) 1px,transparent 1px);background-size:32px 32px;mask-image:linear-gradient(90deg,transparent 10%,black)}
.stage-topline{position:absolute;z-index:3;left:17px;right:17px;top:15px;display:flex;align-items:center;justify-content:space-between;color:#a3cbda;font-size:11px;letter-spacing:.08em;pointer-events:none}
.stage-live{display:flex;align-items:center;gap:7px;color:#bfeadd}.stage-live i{width:6px;height:6px;border-radius:50%;background:#6ce2bd;box-shadow:0 0 10px #6ce2bd}
.stage-data{position:absolute;z-index:3;left:18px;right:18px;bottom:17px;display:flex;flex-direction:column;align-items:flex-start;pointer-events:none}
.stage-label{color:#9ec6d0;font-size:11px;letter-spacing:.1em}
.stage-data h3{max-width:94%;margin:5px 0 9px;color:#eefdfa;font-size:19px;line-height:1.3;font-weight:680;text-shadow:0 2px 14px #061924}
.stage-stats{display:flex;gap:27px;margin-bottom:12px}.stage-stats>div{display:flex;align-items:baseline;gap:5px}.stage-stats strong{color:#baf3e4;font-size:29px;line-height:1;font-weight:720}.stage-stats span{color:#b3cfda;font-size:11px}
.stage-data button.featured-detail.detail-trigger{display:inline-flex;align-items:center;align-self:flex-start;gap:12px;width:auto;min-height:31px;padding:0 10px;border:1px solid #72cfc5;border-radius:3px;background:rgba(31,109,111,.65);color:#dcfcf2;font-size:11px;font-weight:640;pointer-events:auto;transition:border-color .2s,background .2s,transform .2s,box-shadow .2s}
.featured-detail:hover,.featured-detail:focus-visible{border-color:#b9ffea;background:rgba(57,150,143,.8);box-shadow:0 7px 22px rgba(57,218,192,.18)}
.featured-detail span{font-size:16px;line-height:1}
.stage-hint{position:absolute;z-index:3;right:16px;bottom:17px;color:#91b8c2;font-size:10px;pointer-events:none}
.project-rail{display:flex;flex-direction:column;min-height:0;border-top:1px solid #345c6c}
.project-rail-heading{display:flex;align-items:baseline;justify-content:space-between;gap:6px;padding:9px 2px 13px;color:#d7f0ec;font-size:13px;font-weight:650}.project-rail-heading small{color:#8fb7c1;font-size:10px;font-weight:400}
.project-visual{display:flex;flex:1;flex-direction:column;gap:10px;min-height:0;margin:0}
button.project-choice{position:relative;display:flex;flex:1;flex-direction:column;justify-content:space-between;min-height:0;padding:13px 13px 10px;border:1px solid #355668;border-radius:4px;background:linear-gradient(135deg,#173446,#102736);color:#e7f8f7;text-align:left;transform-style:preserve-3d;transition:border-color .2s,box-shadow .2s,transform .2s,background .2s;overflow:hidden}
button.project-choice:hover,button.project-choice:focus-visible{border-color:#75d3cb;background:radial-gradient(circle at var(--glow-x,75%) var(--glow-y,15%),rgba(95,205,192,.18),transparent 60%),linear-gradient(135deg,#1d4655,#102b3b);box-shadow:0 12px 24px rgba(0,0,0,.17)}
.project-choice-top,.project-choice-bottom{display:flex;justify-content:space-between;gap:6px;align-items:center}.project-choice-top{color:#95c9c5;font-size:10px}.project-choice-top strong{color:#bbf2dc;font-size:16px}.project-choice-name{display:block;margin:6px 0;color:#e4f5f3;font-size:14px;line-height:1.3;font-weight:640}.project-choice-track{display:block;height:4px;margin:3px 0 8px;border-radius:3px;background:#2c5160;overflow:hidden}.project-choice-track i{display:block;height:100%;border-radius:3px;background:linear-gradient(90deg,#4dbdb7,#9ceecb)}.project-choice-bottom{color:#a8c9cf;font-size:10px}.project-choice-bottom span:last-child{color:#8ddbcf;font-size:15px}
.metric,.icon-button,.board-filter,.course-visual-item,.class-visual-item,.featured-detail{transform-style:preserve-3d;transition:transform .2s ease,filter .2s ease,box-shadow .2s ease}
.metric:hover,.icon-button:hover,.board-filter:hover,.course-visual-item:hover,.class-visual-item:hover,.featured-detail:hover,button.project-choice:hover{transform:perspective(700px) rotateX(var(--tilt-x,0deg)) rotateY(var(--tilt-y,0deg)) translateY(-3px);filter:brightness(1.08)}
.metric:hover{background-image:radial-gradient(circle at var(--glow-x,60%) var(--glow-y,40%),rgba(158,241,229,.12),transparent 67%)}
.metric{will-change:transform}
.project-stage-canvas.scene-unavailable::after{content:"3D 视图暂不可用";position:absolute;inset:0;display:grid;place-items:center;color:#a6c6d2;font-size:13px}
@media(max-width:700px){.project-focus-layout{grid-template-columns:1fr;grid-template-rows:minmax(310px,1fr) auto;min-height:500px}.project-rail{border-top:0}.project-visual{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.project-choice{min-height:116px!important}.project-choice-name{font-size:12px}.project-rail-heading{padding:0 2px 8px}.stage-data h3{font-size:17px}.stage-hint{display:none}.stage-stats{gap:25px}.stage-stats>div{flex-direction:column;align-items:flex-start;gap:2px}.stage-stats strong{font-size:25px}.project-trend{margin-top:10px}.metric-rate strong{font-size:36px}.metric small{font-size:10px;line-height:1.25}}
@media(prefers-reduced-motion:reduce){.metric,.icon-button,.board-filter,.course-visual-item,.class-visual-item,.featured-detail,button.project-choice{transition:none!important;transform:none!important}}
