:root{--navy:#152a4f;--navy-2:#203b68;--ink:#18243b;--muted:#76839a;--line:#e6ebf2;--paper:#f7f9fc;--white:#fff;--purple:#7659d6;--purple-soft:#f0edff;--blue:#367bd5;--blue-soft:#e8f2ff;--orange:#e27d43;--orange-soft:#fff0e6;--green:#28a779;--green-soft:#e6f8f1;--shadow:0 16px 45px rgba(25,46,84,.08);font-family:"Noto Sans TC","Microsoft JhengHei",system-ui,sans-serif;color:var(--ink);background:var(--paper)}*{box-sizing:border-box}body{margin:0;background:var(--paper)}button,input,select,textarea{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid rgba(54,123,213,.25);outline-offset:2px}.hidden{display:none!important}.eyebrow{font-size:10px;font-weight:800;letter-spacing:.17em;color:#92a0b6}.button{border:0;border-radius:10px;padding:11px 16px;font-weight:800;display:inline-flex;align-items:center;gap:8px;white-space:nowrap}.button-primary{background:var(--purple);color:white;box-shadow:0 8px 18px rgba(118,89,214,.2)}.button-secondary{background:#fff;color:var(--navy);border:1px solid var(--line)}.button-dark{background:var(--navy);color:#fff}.button-wide{width:100%;justify-content:center;padding:14px}.text-button{border:0;background:none;color:var(--purple);font-weight:800;padding:4px 0}.mini-button{border:1px solid var(--line);background:#fff;color:var(--navy);border-radius:8px;padding:7px 10px;font-size:12px;font-weight:800}.mini-button.primary{color:#fff;background:var(--purple);border-color:var(--purple)}.mini-button.is-done{background:var(--green-soft);color:var(--green);border-color:#c8eddf}.tag{display:inline-flex;align-items:center;border-radius:999px;font-size:11px;padding:4px 8px;font-weight:800}.tag-purple{background:var(--purple-soft);color:var(--purple)}.tag-blue{background:var(--blue-soft);color:var(--blue)}.tag-orange{background:var(--orange-soft);color:var(--orange)}.tag-green{background:var(--green-soft);color:var(--green)}.toast{position:fixed;z-index:20;right:28px;top:24px;background:var(--navy);color:#fff;padding:12px 17px;border-radius:10px;box-shadow:var(--shadow);font-size:13px;transform:translateY(-16px);opacity:0;pointer-events:none;transition:.25s}.toast.show{opacity:1;transform:translateY(0)}.toast[data-kind=error]{background:#b74249}
.login-screen{min-height:100vh;display:grid;grid-template-columns:minmax(320px,1fr) minmax(400px,540px);background:#fff}.login-art{position:relative;overflow:hidden;background:linear-gradient(145deg,#172f59 0%,#1b426c 58%,#287d83 100%);padding:clamp(40px,7vw,100px);color:#fff;display:flex;flex-direction:column;justify-content:center}.login-art h1{font-size:clamp(32px,4vw,56px);line-height:1.2;letter-spacing:-.05em;margin:20px 0 18px;position:relative}.login-art p{color:#d5e4ef;line-height:1.9;margin:0;font-size:15px;position:relative}.login-art .eyebrow{color:#9ee5d2}.orb{position:absolute;border:1px solid rgba(255,255,255,.2);border-radius:50%}.orb-one{width:580px;height:580px;right:-220px;top:-110px;box-shadow:0 0 0 28px rgba(255,255,255,.025),0 0 0 84px rgba(255,255,255,.02)}.orb-two{width:320px;height:320px;left:-170px;bottom:-120px;background:rgba(255,255,255,.03)}.login-art-note{position:relative;margin-top:70px;color:#b9eadd;font-size:12px}.pulse-dot,.status-dot,.warning-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#48d4a4;margin-right:7px;box-shadow:0 0 0 4px rgba(72,212,164,.12)}.warning-dot{background:#efad59;box-shadow:0 0 0 4px rgba(239,173,89,.12)}.login-panel{width:min(100%,460px);margin:auto;padding:42px 30px}.brand-mark,.sidebar-brand,.user-badge{display:flex;align-items:center;gap:12px}.brand-mark{margin-bottom:72px}.brand-mark span,.brand-symbol{display:grid;place-items:center;background:var(--navy);color:#fff;width:38px;height:38px;border-radius:11px;font-weight:900}.brand-mark strong,.sidebar-brand strong{display:block;letter-spacing:.04em;font-size:14px}.brand-mark small,.sidebar-brand small{display:block;color:#95a2b6;font-size:10px;margin-top:3px}.login-heading h2{font-size:30px;margin:10px 0 8px;letter-spacing:-.04em}.login-heading p{color:var(--muted);font-size:13px;margin:0 0 28px}.stack-form{display:grid;gap:15px}.stack-form label,.inline-form label,.compact-form label,.form-row label{display:grid;gap:7px;font-size:12px;color:#58677e;font-weight:800}.stack-form input,.inline-form input,.inline-form select,.inline-form textarea,.compact-form input,.compact-form select,.form-row input,.form-row select,.date-input{width:100%;border:1px solid var(--line);border-radius:9px;background:#fff;padding:11px 12px;color:var(--ink);font-size:13px;font-weight:500}.form-error{min-height:18px;text-align:center;color:#c84b4f;font-size:12px;margin:0}.demo-box{background:#f6f8fb;border:1px solid var(--line);padding:14px;border-radius:12px;margin-top:24px}.demo-box>div:first-child{display:flex;align-items:center;gap:7px;font-size:11px}.demo-box>div:first-child span:last-child{color:#9aa6b7;margin-left:auto}.demo-buttons{display:flex;flex-wrap:wrap;gap:7px;margin-top:12px}.demo-buttons button{border:1px solid #dfe5ed;background:#fff;color:var(--navy);border-radius:7px;padding:6px 9px;font-size:11px}.privacy-note{color:#a0aabc;text-align:center;font-size:10px;line-height:1.6;margin:24px 0 0}
.app-shell{min-height:100vh;display:flex}.sidebar{width:242px;background:#fff;border-right:1px solid var(--line);padding:26px 16px 20px;display:flex;flex-direction:column;flex-shrink:0}.sidebar-brand{padding:0 10px 28px}.brand-symbol{width:34px;height:34px;border-radius:9px}.sidebar-brand strong{font-size:13px}.user-badge{padding:13px 10px;border-radius:12px;background:#f7f9fc;margin-bottom:24px}.avatar,.student-avatar{display:grid;place-items:center;border-radius:50%;color:#fff;background:linear-gradient(145deg,#8067e5,#4e8ad9);font-weight:900}.avatar{width:32px;height:32px;font-size:13px}.user-badge strong{font-size:12px;display:block}.user-badge small{font-size:10px;color:var(--muted);display:block;margin-top:3px}.chevron{margin-left:auto;color:#aab5c5}.main-nav{flex:1}.nav-section{text-transform:uppercase;color:#a7b2c1;font-size:9px;font-weight:900;letter-spacing:.15em;padding:0 12px;margin:16px 0 8px}.nav-item{display:flex;align-items:center;gap:12px;width:100%;background:none;border:0;color:#758197;padding:12px;border-radius:9px;text-align:left;font-size:13px;font-weight:800;margin:2px 0}.nav-item:hover{background:#f5f7fb;color:var(--navy)}.nav-item.active{color:var(--purple);background:var(--purple-soft)}.nav-icon{width:18px;text-align:center;font-size:17px}.nav-item b{margin-left:auto;background:var(--orange);color:#fff;border-radius:99px;padding:2px 6px;font-size:10px}.sidebar-footer{border-top:1px solid var(--line);padding:18px 10px 0}.secure-label{font-size:10px;color:#9aa6b7;margin-bottom:18px}.logout-button{border:0;background:none;color:#7a879b;font-size:12px;padding:0;font-weight:800}.main-area{min-width:0;flex:1}.topbar{height:67px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 42px;color:#9aa6b7;font-size:11px}.topbar-actions{display:flex;align-items:center;gap:20px}.sync-status{color:#748298}.icon-button,.mobile-brand{display:none}.page-content{max-width:1450px;margin:auto;padding:42px clamp(20px,4vw,58px) 70px}.page-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:28px}.page-heading h1{font-size:32px;letter-spacing:-.05em;margin:7px 0 7px;color:var(--navy)}.page-heading p{color:var(--muted);margin:0;font-size:13px}.heading-action{align-self:center}.quick-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:22px}.quick-action{border:1px solid var(--line);background:#fff;border-radius:13px;padding:18px;text-align:left;display:grid;grid-template-columns:38px 1fr;grid-template-rows:auto auto;column-gap:12px;box-shadow:0 5px 16px rgba(22,39,67,.025)}.quick-action:hover{border-color:#cfc5fb;transform:translateY(-1px)}.quick-action>span{grid-row:span 2;display:grid;place-items:center;width:38px;height:38px;border-radius:10px;background:var(--purple-soft);color:var(--purple);font-size:20px}.quick-action strong{font-size:13px;align-self:end}.quick-action small{color:#97a2b3;font-size:10px;margin-top:4px}.metrics-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:22px}.metric-card{border-radius:13px;padding:19px 20px;position:relative;overflow:hidden;background:#fff;border:1px solid var(--line)}.metric-card:after{content:"";position:absolute;width:80px;height:80px;border-radius:50%;right:-24px;bottom:-38px;background:currentColor;opacity:.06}.metric-label{font-size:11px;color:#8190a5;font-weight:800;margin-bottom:12px}.metric-card strong{display:block;font-size:29px;letter-spacing:-.06em;color:var(--navy);min-height:36px}.metric-card>span{font-size:10px;color:#a1adbd}.metric-navy{color:var(--navy)}.metric-blue{color:var(--blue)}.metric-orange{color:var(--orange)}.metric-purple{color:var(--purple)}.metric-green{color:var(--green)}.content-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(300px,.85fr);gap:18px}.dashboard-grid{grid-template-columns:minmax(0,1.25fr) minmax(300px,.75fr)}.panel{background:#fff;border:1px solid var(--line);border-radius:14px;padding:23px;box-shadow:0 5px 18px rgba(22,39,67,.025)}.panel-tall{min-height:390px}.panel-wide{grid-column:1/-1}.panel-header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:20px}.panel-header.small{align-items:center;margin-bottom:13px}.panel-header h2{font-size:18px;color:var(--navy);letter-spacing:-.03em;margin:5px 0 0}.panel-header h3{font-size:13px;margin:0}.panel-header .eyebrow{display:block}.date-chip,.count-pill{background:#f5f7fb;color:#8190a5;padding:6px 9px;border-radius:7px;font-size:10px;font-weight:800}.count-pill{color:var(--purple);background:var(--purple-soft)}.attendance-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:9px}.attendance-summary div{padding:14px 10px;background:#f8fafc;border-radius:10px;text-align:center}.attendance-summary strong{font-size:23px;color:var(--navy);display:block}.attendance-summary span{font-size:10px;color:#8c99aa}.section-divider{border-top:1px solid var(--line);margin:24px 0}.task-list,.announcement-list{display:grid;gap:10px}.task-card{display:flex;align-items:center;gap:13px;padding:15px;border:1px solid var(--line);border-radius:11px;background:#fff}.task-card.compact{border:0;border-bottom:1px solid #edf0f5;border-radius:0;padding:12px 0}.task-card.compact:last-child{border-bottom:0}.task-check{width:19px;height:19px;border:1.5px solid #cbd4e1;border-radius:6px;display:grid;place-items:center;color:#fff;font-size:12px;flex-shrink:0}.task-check.checked{background:var(--green);border-color:var(--green)}.task-main{min-width:0;flex:1}.task-top{display:flex;gap:8px;align-items:center;margin-bottom:5px}.task-due{font-size:10px;color:#9ca8b9}.task-main h3{font-size:13px;margin:0;color:var(--navy)}.task-main p{font-size:11px;color:#8996a8;margin:5px 0 0;line-height:1.6}.task-note{display:block;font-size:10px;color:var(--green);margin-top:5px}.task-audience{font-size:10px;color:#8a97a9;white-space:nowrap}.task-complete .task-main h3{color:#8d9aab;text-decoration:line-through}.announcement-card{display:flex;gap:12px;padding:11px 0;border-bottom:1px solid #edf0f5}.announcement-card:last-child{border-bottom:0}.announcement-icon{width:31px;height:31px;display:grid;place-items:center;background:var(--orange-soft);border-radius:9px;color:var(--orange);flex-shrink:0}.announcement-card span{font-size:10px;color:#a2adbc}.announcement-card h3{font-size:12px;margin:4px 0;color:var(--navy)}.announcement-card p{font-size:11px;line-height:1.6;color:#8b98aa;margin:0}.student-focus{display:flex;gap:18px;align-items:center;padding:20px;background:#f8fafc;border-radius:12px}.focus-ring{display:grid;place-items:center;width:68px;height:68px;border-radius:50%;border:6px solid var(--purple-soft);border-top-color:var(--purple);color:var(--purple);font-size:25px;font-weight:900}.student-focus strong,.student-focus span{display:block}.student-focus span{font-size:11px;color:var(--muted);margin-top:5px}.report-card{display:flex;align-items:center;gap:13px;padding:12px 0;border-bottom:1px solid #edf0f5}.report-card:last-child{border-bottom:0}.report-icon{width:32px;height:32px;display:grid;place-items:center;background:var(--orange-soft);color:var(--orange);border-radius:9px}.report-card>div:nth-child(2){flex:1}.report-card strong{font-size:12px}.report-card p{font-size:10px;color:#8d99aa;margin:5px 0 0}.report-actions{display:flex;gap:7px}.empty-state{min-height:120px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:6px;color:#9ba7b6;font-size:12px;text-align:center}.empty-state strong{color:#718097;font-size:13px}.empty-icon{font-size:30px;color:#cdd5e1}.filter-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;color:#8190a5;font-size:12px}.legend{display:flex;align-items:center;gap:6px;font-size:10px}.dot{width:7px;height:7px;border-radius:50%;display:inline-block;margin-left:8px}.dot:first-child{margin-left:0}.dot.purple{background:var(--purple)}.dot.blue{background:var(--blue)}.dot.orange{background:var(--orange)}.task-board{display:grid;gap:10px}.create-details{position:relative}.create-details summary{list-style:none}.create-details summary::-webkit-details-marker{display:none}.inline-form{display:grid;grid-template-columns:1.5fr .8fr .9fr 1fr;gap:12px;background:#fff;border:1px solid #ddd7fb;border-radius:12px;padding:16px;margin-top:10px}.inline-form .wide-field{grid-column:1/-1}.inline-form .button{justify-content:center}.attendance-grid{grid-template-columns:minmax(0,1.3fr) minmax(310px,.7fr)}.attendance-metrics{grid-template-columns:repeat(3,1fr)}.attendance-table{border-top:1px solid var(--line)}.attendance-row{display:grid;grid-template-columns:55px 1fr 120px 80px;align-items:center;gap:10px;padding:12px 0;border-bottom:1px solid #edf0f5;font-size:12px}.attendance-row.table-head{font-size:10px;color:#9aa6b7;font-weight:800}.attendance-row select{border:1px solid var(--line);border-radius:7px;padding:7px;color:var(--ink);background:#fff;font-size:11px}.attendance-row small{color:#9aa6b7;font-size:10px}.seat-number{color:var(--purple);font-weight:900;font-size:11px}.side-stack{display:grid;gap:18px;align-content:start}.panel-note{font-size:11px;color:#8d99aa;line-height:1.7;margin-top:-8px}.compact-form{display:grid;gap:11px}.event-list{border-top:1px solid var(--line);margin-top:17px;padding-top:8px}.event-list>div{display:flex;align-items:center;gap:8px;padding:7px 0;font-size:11px}.event-check{color:var(--green);font-weight:900}.event-list small{margin-left:auto;color:#9aa6b7}.muted{color:#9aa6b7}.form-row{display:flex;gap:12px;margin:18px 0}.form-row .grow{flex:1}.student-check-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.student-check{border:1px solid var(--line);border-radius:9px;padding:10px;display:flex;align-items:center;gap:8px;font-size:12px}.student-check:has(input:checked){border-color:#bcb0f4;background:var(--purple-soft)}.student-check input{accent-color:var(--purple)}.rule-list{padding-left:18px;color:#7e8da2;font-size:12px;line-height:2.2}.privacy-banner{display:flex;gap:13px;align-items:flex-start;background:#eef8f5;border:1px solid #d9f0e7;border-radius:12px;padding:15px 17px;margin-bottom:18px;color:var(--green)}.privacy-banner>span{font-size:22px}.privacy-banner strong{font-size:12px}.privacy-banner p{font-size:11px;color:#6d9386;margin:5px 0 0}.student-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.student-card{background:#fff;border:1px solid var(--line);border-radius:13px;padding:17px}.student-card-top{display:flex;align-items:center;gap:10px}.student-avatar{width:40px;height:40px;font-size:15px;flex-shrink:0}.seat-label{font-size:10px;color:#9aa6b7}.student-card h3{font-size:15px;margin:3px 0 0}.student-card-top .tag{margin-left:auto;font-size:9px}.private-note{background:#fafbfc;border-radius:8px;margin:17px 0;padding:10px}.private-note span{font-size:10px;color:#9aa6b7}.private-note p{font-size:11px;color:#79879b;line-height:1.6;margin:5px 0 0}.student-card-footer{display:flex;justify-content:space-between;align-items:center;color:#a4afbd;font-size:9px}.audit-panel{padding-bottom:10px}.audit-list{display:grid}.audit-row{display:grid;grid-template-columns:110px 90px 190px 1fr;gap:12px;align-items:center;border-bottom:1px solid #edf0f5;padding:12px 0;font-size:11px}.audit-time{color:#a1adbc}.audit-action{color:var(--purple);font-weight:800}.loading-line{color:#9da9b8;font-size:12px;padding:20px}.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.profile-list{display:grid;grid-template-columns:1fr 1fr;gap:16px}.profile-list div{background:#f8fafc;border-radius:9px;padding:12px}.profile-list span,.profile-list strong{display:block}.profile-list span{color:#9aa6b7;font-size:10px}.profile-list strong{font-size:13px;margin-top:4px}.settings-actions{display:grid;gap:10px}.setting-action{display:flex;align-items:center;gap:13px;text-align:left;border:1px solid var(--line);background:#fff;border-radius:10px;padding:12px}.setting-action>span{font-size:22px;color:var(--purple);width:27px;text-align:center}.setting-action strong,.setting-action small{display:block}.setting-action strong{font-size:12px;color:var(--navy)}.setting-action small{font-size:10px;color:#98a4b4;margin-top:4px}.account-policy{display:grid;gap:12px}.account-policy div{display:grid;grid-template-columns:110px 1fr;gap:15px;padding:12px 0;border-bottom:1px solid #edf0f5;font-size:12px}.account-policy div:last-child{border-bottom:0}.account-policy b{color:var(--purple)}.account-policy span{color:#7f8da1;line-height:1.6}
@media(max-width:1050px){.sidebar{width:210px}.content-grid,.dashboard-grid,.attendance-grid{grid-template-columns:1fr}.panel-wide{grid-column:auto}.student-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:760px){.login-screen{display:block}.login-art{min-height:260px;padding:38px 28px}.login-art h1{font-size:32px;margin:14px 0}.login-art-note{margin-top:28px}.orb-one{width:350px;height:350px;right:-180px;top:-140px}.login-panel{padding:32px 22px}.brand-mark{margin-bottom:42px}.sidebar{position:fixed;z-index:10;left:0;top:0;bottom:0;transform:translateX(-105%);transition:.25s;width:242px;box-shadow:var(--shadow)}.sidebar.mobile-open{transform:translateX(0)}.topbar{height:58px;padding:0 18px}.mobile-brand{display:block;font-size:11px;font-weight:900;color:var(--navy);letter-spacing:.1em}.topbar>#topbar-date{display:none}.icon-button{display:block;background:none;border:0;color:var(--navy);font-size:20px}.sync-status{font-size:10px}.page-content{padding:28px 16px 50px}.page-heading{display:block;margin-bottom:22px}.page-heading h1{font-size:27px}.heading-action{margin-top:15px}.quick-grid{grid-template-columns:1fr}.metrics-grid,.attendance-metrics{grid-template-columns:repeat(2,1fr)}.metric-card{padding:15px}.metric-card strong{font-size:24px}.content-grid{gap:14px}.panel{padding:17px}.student-check-grid{grid-template-columns:repeat(2,1fr)}.inline-form{grid-template-columns:1fr}.inline-form .wide-field{grid-column:auto}.attendance-row{grid-template-columns:40px 1fr 100px}.attendance-row small{display:none}.student-grid,.settings-grid{grid-template-columns:1fr}.audit-row{grid-template-columns:80px 70px 1fr}.audit-row>span:last-child{grid-column:3}.form-row{display:grid}.report-card{align-items:flex-start;flex-wrap:wrap}.report-actions{width:100%;padding-left:45px}.panel-header{margin-bottom:15px}}

/* Gundam tactical command deck theme */
:root{--navy:#08182b;--navy-2:#102f50;--ink:#d8e8f2;--muted:#7893a8;--line:#1a4b68;--paper:#07111d;--white:#0d2238;--purple:#ffd32a;--purple-soft:#263a42;--blue:#22c8ff;--blue-soft:#10384d;--orange:#ff9f1c;--orange-soft:#422e18;--green:#32e0a2;--green-soft:#123c3b;--red:#ff5b5b;--shadow:0 20px 55px rgba(0,0,0,.34);font-family:"Rajdhani","Noto Sans TC","Microsoft JhengHei",system-ui,sans-serif;color:var(--ink);background:var(--paper)}
body{min-height:100vh;background-color:#07111d;background-image:linear-gradient(rgba(32,111,145,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(32,111,145,.08) 1px,transparent 1px),radial-gradient(circle at 75% 0%,rgba(0,194,255,.11),transparent 34%),radial-gradient(circle at 10% 100%,rgba(255,174,0,.07),transparent 30%);background-size:32px 32px,32px 32px,auto,auto}body:after{content:"";position:fixed;inset:0;pointer-events:none;z-index:30;opacity:.035;background:repeating-linear-gradient(0deg,rgba(255,255,255,.5) 0 1px,transparent 1px 4px)}button,input,select,textarea{font-family:inherit}.eyebrow{font-family:"Rajdhani","Noto Sans TC",sans-serif;color:#40d9ff;letter-spacing:.2em;font-weight:900}.button{border-radius:2px;text-transform:uppercase;letter-spacing:.07em;font-size:12px}.button-primary{background:#ffd32a;color:#08182b;box-shadow:0 0 20px rgba(255,211,42,.24);border:1px solid #fff09c}.button-primary:hover{background:#ffe56b;box-shadow:0 0 28px rgba(255,211,42,.42)}.button-secondary{background:#102b45;border-color:#277894;color:#bceeff}.button-dark{background:#0b2e47;color:#8ceaff;border:1px solid #1c7195}.button-dark:hover,.button-secondary:hover{background:#144766;border-color:#49d9ff;color:#fff}.text-button{color:#43d9ff;text-transform:uppercase;letter-spacing:.04em}.mini-button{border-radius:2px;background:#0c263d;color:#b9edff;border-color:#286a87}.mini-button.primary{color:#06121f;background:#ffd32a;border-color:#ffe887}.mini-button.is-done{color:#6af0bc;background:#103c3b;border-color:#2ebd8a}.tag{border-radius:2px;padding:4px 9px;text-transform:uppercase;letter-spacing:.06em;font-size:10px;border:1px solid currentColor}.tag-purple{background:#25362e;color:#ffd32a}.tag-blue{background:#10384d;color:#3ed6ff}.tag-orange{background:#422e18;color:#ffb23c}.tag-green{background:#123c3b;color:#40e4aa}.toast{background:#0a2b42;border:1px solid #36d9ff;border-left:4px solid #ffd32a;border-radius:2px;color:#e4f8ff;box-shadow:0 0 30px rgba(0,196,255,.2);font-family:"Rajdhani","Noto Sans TC",sans-serif}.toast[data-kind=error]{background:#401c25;border-color:#ff7777}
.login-screen{background:#06111e}.login-art{background:linear-gradient(135deg,#061525 0%,#0b2944 57%,#0d4e66 100%);border-right:1px solid #1f7390}.login-art:before{content:"TACTICAL DISPLAY // 01";position:absolute;top:30px;left:clamp(40px,7vw,100px);font:900 11px/1 "Rajdhani",sans-serif;letter-spacing:.22em;color:#39d9ff}.login-art:after{content:"";position:absolute;inset:26px;border:1px solid rgba(57,217,255,.18);clip-path:polygon(0 0,28% 0,28% 1px,72% 1px,72% 0,100% 0,100% 28%,calc(100% - 1px) 28%,calc(100% - 1px) 72%,100% 72%,100% 100%,72% 100%,72% calc(100% - 1px),28% calc(100% - 1px),28% 100%,0 100%,0 72%,1px 72%,1px 28%,0 28%);pointer-events:none}.login-art h1{font-family:"Rajdhani","Noto Sans TC",sans-serif;font-weight:900;letter-spacing:.03em;text-shadow:0 0 24px rgba(69,221,255,.25)}.login-art p{color:#9ac7d9}.login-art .eyebrow{color:#ffd32a}.orb{border-color:rgba(67,218,255,.45);box-shadow:0 0 30px rgba(0,190,255,.12)}.orb-one{box-shadow:0 0 0 28px rgba(67,218,255,.05),0 0 0 84px rgba(67,218,255,.035),inset 0 0 35px rgba(67,218,255,.1)}.orb-two{background:rgba(255,211,42,.04);border-color:rgba(255,211,42,.28)}.login-art-note{color:#ffd32a;font-family:"Rajdhani","Noto Sans TC",sans-serif;letter-spacing:.08em}.pulse-dot,.status-dot,.warning-dot{box-shadow:0 0 0 4px rgba(50,224,162,.14),0 0 12px rgba(50,224,162,.8)}.warning-dot{background:#ff9f1c;box-shadow:0 0 0 4px rgba(255,159,28,.14),0 0 12px rgba(255,159,28,.7)}.login-panel{background:linear-gradient(180deg,#0b1e32,#071524);border-left:1px solid #153f59}.brand-mark{margin-bottom:72px}.brand-mark span,.brand-symbol{background:#ffd32a;color:#07111d;border-radius:2px;box-shadow:0 0 18px rgba(255,211,42,.25);font-family:"Rajdhani","Noto Sans TC",sans-serif}.brand-mark strong,.sidebar-brand strong{color:#e9f9ff;text-transform:uppercase;letter-spacing:.13em}.brand-mark small,.sidebar-brand small{color:#5bb6d5;text-transform:uppercase;letter-spacing:.12em}.login-heading h2{font-family:"Rajdhani","Noto Sans TC",sans-serif;color:#fff;font-weight:900;letter-spacing:.02em}.login-heading p{color:#7893a8}.stack-form label,.inline-form label,.compact-form label,.form-row label{color:#8fb4c5;text-transform:uppercase;letter-spacing:.05em}.stack-form input,.inline-form input,.inline-form select,.inline-form textarea,.compact-form input,.compact-form select,.form-row input,.form-row select,.date-input{border-radius:2px;background:#071a2c;border-color:#205674;color:#e4f8ff;box-shadow:inset 0 0 12px rgba(0,0,0,.2)}.stack-form input:focus,.inline-form input:focus,.inline-form select:focus,.inline-form textarea:focus,.compact-form input:focus,.compact-form select:focus,.form-row input:focus,.form-row select:focus{border-color:#3ddcff;box-shadow:0 0 0 2px rgba(61,220,255,.12),inset 0 0 12px rgba(0,0,0,.2)}.demo-box{background:#081b2c;border:1px solid #205674;border-radius:2px;position:relative}.demo-box:before{content:"DEMO ACCESS";position:absolute;right:12px;top:-8px;background:#081b2c;color:#45d9ff;padding:0 6px;font:900 10px "Rajdhani",sans-serif;letter-spacing:.12em}.demo-box>div:first-child{color:#d9f6ff}.demo-box>div:first-child span:last-child{color:#668ca0}.demo-buttons button{border-radius:2px;background:#0e2b43;border-color:#286681;color:#a9eaff}.demo-buttons button:hover{background:#174766;color:#fff;border-color:#4addff}.privacy-note{color:#65869a}.form-error{color:#ff8585}
.app-shell{background:transparent}.sidebar{background:linear-gradient(180deg,#081a2d 0%,#061321 100%);border-right:1px solid #155273;box-shadow:12px 0 30px rgba(0,0,0,.18);position:relative}.sidebar:after{content:"";position:absolute;top:0;right:-2px;width:2px;height:86px;background:#ffd32a;box-shadow:0 0 18px #ffd32a}.sidebar-brand{border-bottom:1px solid #123c57;padding-bottom:22px}.user-badge{background:#0c2940;border:1px solid #1e6380;border-radius:2px;box-shadow:inset 0 0 18px rgba(0,0,0,.18)}.avatar,.student-avatar{background:linear-gradient(145deg,#ffd32a,#f57f2a);color:#07111d;border-radius:2px;box-shadow:0 0 14px rgba(255,168,35,.25)}.user-badge strong{color:#e9faff}.user-badge small{color:#6dbbd5}.chevron{color:#39cfee}.nav-section{color:#4e87a0;font-family:"Rajdhani",sans-serif;letter-spacing:.24em}.nav-item{color:#7da3b5;border-radius:2px;border-left:2px solid transparent;text-transform:uppercase;letter-spacing:.05em}.nav-item:hover{background:#0d3048;color:#d7f7ff;border-left-color:#25c8f1}.nav-item.active{color:#ffd32a;background:linear-gradient(90deg,#173947,#0c263a);border-left-color:#ffd32a;box-shadow:inset 0 0 18px rgba(255,211,42,.08)}.nav-icon{color:#43d9ff}.nav-item.active .nav-icon{color:#ffd32a;text-shadow:0 0 10px rgba(255,211,42,.6)}.nav-item b{background:#ff9f1c;color:#101820;border-radius:2px}.sidebar-footer{border-top-color:#123c57}.secure-label{color:#6b91a3}.logout-button{color:#83b1c2;text-transform:uppercase;letter-spacing:.08em}.logout-button:hover{color:#ffd32a}.topbar{background:#071827;border-bottom:1px solid #1a5975;color:#75a7bb;position:relative}.topbar:after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:2px;background:linear-gradient(90deg,#ffd32a 0 9%,transparent 9% 10%,#1684a9 10% 68%,transparent 68% 69%,#ff5b5b 69% 74%,transparent 74%);opacity:.8}.sync-status{color:#62c4d9}.page-content{position:relative}.page-heading{position:relative}.page-heading:after{content:"// SYSTEM ONLINE";align-self:flex-end;color:#3b819a;font:900 10px "Rajdhani",sans-serif;letter-spacing:.17em;margin-bottom:7px}.page-heading h1{font-family:"Rajdhani","Noto Sans TC",sans-serif;color:#f2fbff;font-weight:900;letter-spacing:.04em;text-transform:uppercase;text-shadow:0 0 16px rgba(43,209,255,.15)}.page-heading p{color:#7898aa}.quick-action{border:1px solid #1a5a75;background:linear-gradient(145deg,#0d2941,#091a2b);border-radius:2px;box-shadow:inset 0 0 20px rgba(0,0,0,.15),0 8px 24px rgba(0,0,0,.14);position:relative;overflow:hidden}.quick-action:after{content:"";position:absolute;right:-24px;top:-24px;width:78px;height:78px;border:1px solid rgba(59,218,255,.22);transform:rotate(45deg)}.quick-action:hover{border-color:#ffd32a;background:#12334a;transform:translateY(-2px);box-shadow:0 0 22px rgba(28,194,242,.15)}.quick-action>span{border-radius:2px;background:#ffd32a;color:#08182b;box-shadow:0 0 14px rgba(255,211,42,.25)}.quick-action strong{color:#e8faff;text-transform:uppercase;letter-spacing:.04em}.quick-action small{color:#72a0b4}.metrics-grid{gap:10px}.metric-card{border-radius:2px;background:linear-gradient(135deg,#0e2b44,#091b2d);border-color:#1d5d78;box-shadow:inset 0 0 20px rgba(0,0,0,.16);color:#42d8ff}.metric-card:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:currentColor;box-shadow:0 0 12px currentColor}.metric-card strong{color:#f3fbff;font-family:"Rajdhani",sans-serif;font-size:32px}.metric-card>span{color:#75a3b4}.metric-label{color:#77b7ca;text-transform:uppercase;letter-spacing:.1em}.metric-navy{color:#ffd32a}.metric-blue{color:#2bd3ff}.metric-orange{color:#ff9f1c}.metric-purple{color:#c487ff}.metric-green{color:#32e0a2}.panel{background:linear-gradient(145deg,#0d263e,#081a2c);border:1px solid #1b5c78;border-radius:2px;box-shadow:inset 0 0 25px rgba(0,0,0,.16),0 10px 35px rgba(0,0,0,.16);position:relative}.panel:before{content:"";position:absolute;top:-1px;left:-1px;width:20px;height:20px;border-top:2px solid #ffd32a;border-left:2px solid #ffd32a;pointer-events:none}.panel-header h2,.panel-header h3{color:#eafaff;font-family:"Rajdhani","Noto Sans TC",sans-serif;letter-spacing:.04em;text-transform:uppercase}.date-chip,.count-pill{background:#0a354c;color:#75d8ef;border:1px solid #277893;border-radius:2px}.count-pill{background:#3f3714;color:#ffd32a;border-color:#9b7818}.attendance-summary div{background:#0a2336;border:1px solid #184f69;border-radius:2px}.attendance-summary strong{color:#f4fbff;font-family:"Rajdhani",sans-serif}.attendance-summary span{color:#70a2b4}.section-divider{border-top-color:#1b536c}.task-card{border-color:#1a5772;background:#0b2135;border-radius:2px}.task-card:hover{border-color:#3bc8eb;background:#0e2a42}.task-card.compact{border-bottom-color:#194c65;background:transparent}.task-check{border-color:#2a6c86;border-radius:2px}.task-check.checked{background:#32e0a2;border-color:#32e0a2;color:#06111d;box-shadow:0 0 12px rgba(50,224,162,.3)}.task-main h3{color:#e7f9ff;font-family:"Rajdhani","Noto Sans TC",sans-serif;letter-spacing:.03em}.task-main p{color:#79a4b6}.task-due,.task-audience{color:#72aec0}.announcement-card{border-bottom-color:#194c65}.announcement-icon{background:#3c3211;color:#ffd32a;border-radius:2px;border:1px solid #866b14}.announcement-card span{color:#70a0b3}.announcement-card h3{color:#e9faff;font-family:"Rajdhani","Noto Sans TC",sans-serif}.announcement-card p{color:#79a4b6}.student-focus{background:#0a2336;border:1px solid #194f69;border-radius:2px}.focus-ring{border-color:#1b506b;border-top-color:#ffd32a;color:#ffd32a}.student-focus strong{color:#effcff}.student-focus span{color:#79a4b6}.report-card{border-bottom-color:#194c65}.report-icon{background:#422c16;color:#ffad31;border-radius:2px;border:1px solid #8f5c14}.report-card strong{color:#e8faff}.report-card p{color:#79a4b6}.empty-state{color:#638da3}.empty-state strong{color:#9bc9d7}.empty-icon{color:#27728b}.filter-row{color:#79a8b8}.legend{color:#7faabc}.task-audience{font-family:"Rajdhani",sans-serif;letter-spacing:.04em}.inline-form{background:#0a2337;border-color:#26627d;border-radius:2px}.attendance-row{border-bottom-color:#184c65}.attendance-row.table-head{color:#61a4bc}.attendance-row strong{color:#e9faff}.attendance-row select{border-color:#24617b;border-radius:2px;background:#071a2c;color:#e4f8ff}.attendance-row small{color:#76aabd}.seat-number{color:#ffd32a}.panel-note{color:#79a4b6}.event-list{border-top-color:#1a526a}.event-list small{color:#72a1b3}.form-row{margin:18px 0}.student-check{border-color:#1d5b75;background:#0a2235;border-radius:2px;color:#d8f5ff}.student-check:has(input:checked){border-color:#ffd32a;background:#3d3413;box-shadow:0 0 15px rgba(255,211,42,.12)}.student-check input{accent-color:#ffd32a}.rule-list{color:#80a8b7}.privacy-banner{background:#0d3737;border-color:#1e806f;border-radius:2px;color:#44e0ad}.privacy-banner p{color:#83c4b3}.student-card{background:#0b2236;border-color:#1b5b75;border-radius:2px}.student-card:hover{border-color:#ffd32a}.student-avatar{background:linear-gradient(145deg,#ffd32a,#ff8f22)}.seat-label{color:#6da3b6}.student-card h3{color:#effcff;font-family:"Rajdhani","Noto Sans TC",sans-serif}.private-note{background:#081b2c;border:1px solid #174963;border-radius:2px}.private-note span{color:#67a2b6}.private-note p{color:#8ab0bd}.student-card-footer{color:#668fa2}.audit-row{border-bottom-color:#194c65}.audit-time{color:#6e9caf}.audit-action{color:#ffd32a}.loading-line{color:#78a5b6}.profile-list div{background:#0a2336;border:1px solid #194f69;border-radius:2px}.profile-list span{color:#6fa1b3}.profile-list strong{color:#e8faff}.setting-action{background:#0a2336;border-color:#1c5b76;border-radius:2px;color:#dff8ff}.setting-action:hover{border-color:#ffd32a;background:#10334a}.setting-action>span{color:#ffd32a}.setting-action strong{color:#effcff}.setting-action small{color:#78a3b3}.account-policy div{border-bottom-color:#194c65}.account-policy b{color:#ffd32a}.account-policy span{color:#83aab8}
@media(max-width:760px){.login-art:before{top:18px;left:28px}.login-art:after{inset:15px}.page-heading:after{display:none}.sidebar{background:#071a2b}.topbar{background:#071827}.mobile-brand{color:#ffd32a}.icon-button{color:#43d9ff}.metrics-grid,.attendance-metrics{gap:8px}.metric-card{padding:14px 12px}.metric-card strong{font-size:25px}.panel:before{width:14px;height:14px}}
/* 公開頁只顯示非敏感的快取來源與時間，不揭露學生或外部連結。 */
.public-sync-status{display:block;margin-top:12px;color:#557185;font-size:.78rem;line-height:1.5}
