:root{color:#302e2c;font-synthesis:none;background:#f7f6f2;font-family:-apple-system,BlinkMacSystemFont,Noto Sans TC,PingFang TC,sans-serif;font-size:16px;line-height:1.6}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer;color:inherit;background:#fff;border:1px solid #dfdcd5;border-radius:8px;padding:9px 15px;transition:background .15s}button:hover{background:#f1ede6}button:disabled{opacity:.45;cursor:not-allowed}button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline-offset:3px;outline:3px solid #bd955b}input,select,textarea{color:inherit;background:#fff;border:1px solid #dbd7ce;border-radius:7px;min-width:0;padding:9px 12px}textarea{resize:vertical;min-height:82px}label{flex-direction:column;gap:5px;font-size:.86rem;font-weight:600;display:flex}h1,h2,h3,p{margin-top:0}h1{letter-spacing:1px;margin:3px 0 6px;font-size:30px;font-weight:650}h2{margin-bottom:7px;font-size:19px;font-weight:650}h3{font-size:17px}p{color:#777169;margin-bottom:20px;font-size:.93rem}small{color:#8a837a;font-size:.76rem;font-weight:400;display:block}strong{font-variant-numeric:tabular-nums}.layout{min-height:100vh;display:flex}aside{background:#fffefa;border-right:1px solid #e7e2d9;flex-direction:column;width:248px;padding:32px 22px;display:flex;position:fixed;inset:0 auto 0 0}.brand{color:#632d39;letter-spacing:2px;align-items:center;gap:13px;font-family:Georgia,serif;font-size:24px;font-weight:700;text-decoration:none;display:flex}.brand small{letter-spacing:1px;color:#6f665b;font-family:inherit;font-size:12px}.crest{letter-spacing:0;color:#fff;background:#632d39;border:3px double #c3a66b;border-radius:3px;padding:6px 9px;font-family:serif;font-size:16px;line-height:1.3}.asidelabel{letter-spacing:2px;color:#9c9388;margin:47px 12px 14px;font-size:11px}nav{gap:9px;display:grid}nav button{text-align:left;color:#797168;background:0 0;border:0;align-items:center;gap:14px;padding:13px 17px;font-size:15px;display:flex}nav button span{text-align:center;width:22px;font-size:20px}nav button.active{color:#632d39;background:#f0e7e5;font-weight:650;box-shadow:inset 3px 0 #632d39}.asidefoot{color:#73695e;margin-top:auto;padding:30px 10px 0;font-size:12px}.asidefoot p{margin:8px 0;font-size:12px}.statusdot{background:#b99864;border-radius:50%;width:6px;height:6px;margin-right:6px;display:inline-block}main{width:calc(100% - 248px);margin-left:248px}header{background:#fffefb;border-bottom:1px solid #e7e2d9;justify-content:space-between;align-items:center;height:74px;padding:0 40px;display:flex}.breadcrumb{color:#8a8378;font-size:12px}.breadcrumb span{color:#c4bdb2;margin:0 12px}.avatar{color:#70583c;background:#eee7dd;border:1px solid #dfd5c7;border-radius:50%;place-items:center;width:33px;height:33px;font-size:13px;display:grid}.content{max-width:1560px;margin:auto;padding:24px 40px}.demo{color:#806538;background:#f1ebdb;border:1px solid #e7dcc4;border-radius:6px;margin-bottom:26px;padding:9px 13px;font-size:12px}.demo b{margin-right:12px}.heading{justify-content:space-between;align-items:center;gap:20px;margin-bottom:23px;display:flex}.heading p{margin-bottom:0}.eyebrow{letter-spacing:2px;color:#a08b6e;margin-bottom:3px;font-size:10px}.primary{color:#fff;background:#632d39;border-color:#632d39;box-shadow:0 2px 4px #632d3910}.primary:hover{background:#51212c}.filters{background:#fff;border:1px solid #e5e0d6;border-radius:10px;flex-wrap:wrap;align-items:flex-end;gap:14px;margin-bottom:24px;padding:18px;display:flex}.filters label{color:#8b8276;font-size:11px}.filters input,.filters select{padding:8px 10px;font-size:13px}.filters select{min-width:105px}.weekcontrol{align-items:center;gap:10px;margin-left:auto;font-size:13px;display:flex}.weekcontrol button{padding:6px 10px}.weekcontrol>span{text-align:center;min-width:120px}.weekcontrol small{font-size:10px}.filters>button{padding:8px 12px;font-size:12px}.kpis{grid-template-columns:repeat(4,1fr);gap:18px;margin-bottom:24px;display:grid}.kpi{background:#fff;border:1px solid #e3ded4;border-radius:10px;padding:20px 22px;position:relative}.kpi p{color:#706b62;margin-bottom:10px;font-size:13px}.kpi strong{color:#403b33;font-family:Georgia,serif;font-size:37px;font-weight:400;line-height:1.2}.kpi strong span{color:#8d8577;margin-left:8px;font-family:inherit;font-size:14px}.kpi small{margin-top:12px;font-size:10px}.kpi3{background:#632d39;border-color:#632d39}.kpi3 p,.kpi3 small{color:#e1cbd0}.kpi3 strong{color:#fff}.grid2{grid-template-columns:1.12fr 1fr;gap:24px;margin-bottom:24px;display:grid}.grid2 .grid2{gap:14px}section{background:#fff;border:1px solid #e4dfd5;border-radius:11px;min-width:0;margin-bottom:24px;padding:24px}.grid2>section{margin-bottom:0}.sectiontitle{justify-content:space-between;align-items:center;gap:14px;margin-bottom:20px;display:flex}.sectiontitle p{margin:0;font-size:11px}.sectiontitle h2{font-size:17px}.sectiontitle button{font-size:12px}.pill{color:#85714c;white-space:nowrap;background:#f4efe4;border-radius:5px;padding:4px 9px;font-size:11px;display:inline-block}.pill.warm{color:#9a4d4c;background:#f5e8e6}.barrow{align-items:center;gap:14px;margin:15px 0;font-size:12px;display:flex}.barrow>span{white-space:nowrap;min-width:100px}.track{background:#f3f0e9;border-radius:5px;flex:1;height:7px;overflow:hidden}.track div{background:#b69a6d;border-radius:5px;min-width:0;height:100%}.barrow strong{text-align:right;min-width:56px;font-size:11px;font-weight:500}.textbutton{color:#8c684a;background:0 0;border:0;padding:8px 0;font-size:12px}.dailychart{gap:16px;height:220px;padding-top:12px;display:flex}.dailychart button{background:0 0;border:0;flex-direction:column;flex:1;align-items:center;gap:8px;padding:0;font-size:12px;display:flex}.dailychart strong{font-size:13px;font-weight:500}.dailychart small{font-size:10px}.column{background:#faf8f3;border-radius:5px;align-items:flex-end;width:100%;max-width:36px;height:125px;display:flex}.column>div{background:#925d66;border-radius:4px 4px 0 0;width:100%}.formula{color:#918576;border-top:1px solid #ece7de;justify-content:space-between;gap:12px;margin-top:22px;padding-top:18px;font-size:11px;display:flex}.formula b{color:#685b4e;font-size:13px;font-weight:500;display:block}.formula.vertical{flex-direction:column}.formula.vertical b{font-size:15px}.tablewrap{overflow:auto}table{border-collapse:collapse;text-align:left;white-space:nowrap;width:100%;font-size:12px}th{color:#9a9083;background:#faf9f6;border-bottom:1px solid #e9e4db;padding:12px 14px;font-size:11px;font-weight:500}td{color:#71695e;border-bottom:1px solid #f0ece6;padding:12px 14px}td b{color:#51493e;font-weight:550}td small{font-size:10px}.toast{color:#566348;background:#edf2e7;border-radius:8px;justify-content:space-between;align-items:center;margin-bottom:18px;padding:9px 16px;font-size:13px;display:flex}.toast button{background:0 0;border:0}.error{color:#9a4040;background:#f7e7e5}.errortext{color:#a32e38}.empty{text-align:center;color:#9b8b77;background:#faf9f6;border:1px dashed #e1d7c6;border-radius:8px;margin-bottom:20px;padding:35px 20px;font-size:13px}.registergrid{grid-template-columns:1fr 1.05fr}.searchlabel{margin:20px 0}.studentlist{border:1px solid #e7e2da;border-radius:8px;max-height:265px;overflow:auto}.studentlist button{text-align:left;border:0;border-bottom:1px solid #f0ece6;border-radius:0;align-items:center;gap:12px;width:100%;padding:10px 12px;font-size:14px;display:flex}.studentlist button.selected{background:#f0e6e6;box-shadow:inset 3px 0 #632d39}.studentlist small{font-size:11px}.studentlist .pill{margin-left:auto}.seat{background:#f3efe7;border-radius:7px;place-items:center;width:29px;height:29px;font-size:12px;display:grid}.selectedstudent{padding:16px 0;font-size:13px}form{gap:16px;display:grid}form small{font-size:11px}form label{font-size:13px}.full{width:100%}.records article{border-bottom:1px solid #eee8df;align-items:flex-start;gap:18px;padding:17px 0;font-size:13px;display:flex}.records article p{margin:5px 0;font-size:12px}.records article button{margin-left:auto;font-size:11px}.recordtime{color:#956b53;font-family:Georgia,serif;font-size:20px}.latecell{color:#91434b;background:#f4e7e5;border:0;padding:3px 8px;font-size:11px}.confirmbox{align-items:center;gap:20px;padding-top:24px;display:flex}.confirmbox p{flex:1;margin:0;font-size:12px}.confirmbox button{font-size:12px}.trendline{align-items:center;gap:15px;display:flex}.trendline>.barrow{flex:1}.trendline .barrow>span{display:none}.trendline>.textbutton{width:70px}.muted{color:#ada394;font-size:12px}.upload{background:#faf8f3;border:1px dashed #d6c9b4;border-radius:7px;gap:13px;margin:25px 0;padding:20px;font-size:13px}.upload input{font-size:12px}.calendarrow{border-bottom:1px solid #eee8df;flex-direction:row;justify-content:space-between;align-items:center;padding:15px 2px;font-size:14px;display:flex}.calendarrow input{accent-color:#632d39;width:18px;height:18px}.modal{z-index:20;background:#29201c66;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.modalcard{background:#fff;border-radius:13px;width:100%;max-width:520px;padding:30px;box-shadow:0 15px 70px #35282230}.modalcard p{margin-bottom:0}.modalactions{flex-wrap:wrap;justify-content:flex-end;gap:10px;display:flex}.dangerbutton{color:#a33a46}.modalcard h2{margin:0}footer{color:#aaa092;border-top:1px solid #e8e2d8;justify-content:space-between;margin-top:30px;padding:15px 0 5px;font-size:10px;display:flex}@media (width>=1700px){:root{font-size:18px}.content{padding:30px 50px}.kpi strong{font-size:43px}table{font-size:14px}th,.sectiontitle p{font-size:12px}.barrow{font-size:14px}.barrow strong{font-size:13px}}@media (width<=1100px){aside{width:205px;padding:26px 15px}main{width:calc(100% - 205px);margin-left:205px}.content{padding:20px 24px}header{padding:0 24px}.kpis{grid-template-columns:repeat(2,1fr)}.grid2{grid-template-columns:1fr}.filters{gap:10px}.weekcontrol{margin-left:0}.heading h1{font-size:26px}.barrow{font-size:13px}}@media (width<=650px){aside{border-bottom:1px solid #e6dfd3;border-right:0;width:100%;padding:16px;position:static}.layout{display:block}.brand{font-size:20px}.crest{font-size:12px}.asidelabel,.asidefoot{display:none}nav{gap:4px;margin-top:15px;display:flex;overflow:auto}nav button{white-space:nowrap;gap:5px;padding:8px 11px;font-size:13px}nav button span{width:17px;font-size:16px}main{width:100%;margin:0}header{height:48px;padding:0 18px}.breadcrumb{font-size:10px}.breadcrumb span{margin:0 5px}.content{padding:15px}.demo{margin-bottom:22px;font-size:11px}.heading{margin-bottom:20px;display:block}.heading>button{width:100%;margin-top:16px}.heading p{font-size:13px}.eyebrow{font-size:9px!important}.filters label{flex:1}.filters input,.filters select{width:100%}.weekcontrol{justify-content:space-between;width:100%}.filters>button{width:100%}.kpis{gap:10px}.kpi{padding:15px}.kpi strong{font-size:29px}.kpi p{font-size:11px}.kpi small{font-size:9px}.grid2{gap:16px}section{margin-bottom:16px;padding:18px}.sectiontitle{align-items:flex-start}.sectiontitle h2{font-size:16px}.sectiontitle button{padding:5px 8px}.barrow{gap:10px}.barrow>span{min-width:92px;font-size:11px}.dailychart{gap:10px}.formula{font-size:10px}.formula b{font-size:12px}td,th{padding:10px}footer{gap:20px}.confirmbox{display:block}.confirmbox button{width:100%;margin-top:12px}.modalcard{padding:22px}.modalactions button{font-size:12px}}@media print{aside,header,.demo,.heading>button,.filters,.toast,footer,.confirmbox,.textbutton,.modal{display:none!important}main{width:100%;margin:0}.content{max-width:none;padding:0}.layout{display:block}section{border:0;padding:0}table{font-size:10px}th,td{padding:7px}tr{break-inside:avoid}thead{display:table-header-group}.tablewrap{overflow:visible}.heading{margin:0 0 15px}.heading p{display:none}.latecell{color:#000;background:0 0;padding:0}h1{font-size:21px}}.cloudnotice{color:#5b6c4b;background:#edf1e8;border:1px solid #d9e1d0;border-radius:7px;align-items:center;gap:15px;margin-bottom:26px;padding:8px 14px;font-size:12px;display:flex}.cloudnotice button{margin-left:auto;padding:4px 10px;font-size:11px}.identity{align-items:center;gap:10px;font-size:12px;display:flex}.identity span{color:#9c8e78;font-size:10px}.identity a{color:#805959}.loginpanel{text-align:center;background:#fff;border:1px solid #e0d8cc;border-radius:14px;max-width:560px;margin:12vh auto;padding:35px}.loginpanel .crest{display:inline-block}.loginpanel h1{margin:25px 0 10px;font-size:27px}.loginpanel button,.loginbutton{border-radius:7px;margin:10px;padding:10px 20px;text-decoration:none;display:inline-block}.loginpanel small{margin-top:16px}@media print{.cloudnotice{display:none!important}}.batchtoolbar{align-items:center;gap:12px;margin-bottom:14px;font-size:13px;display:flex}.batchtoolbar button{padding:6px 9px;font-size:11px}.studentcheck{cursor:pointer;border-bottom:1px solid #eee8df;flex-direction:row;align-items:center;gap:12px;padding:12px;font-size:14px;display:flex}.studentcheck.selected{background:#f0e6e6;box-shadow:inset 3px 0 #632d39}.studentcheck input{accent-color:#632d39;width:19px;height:19px}.studentcheck .pill{margin-left:auto}.hint{background:#f4efe6;border-radius:6px;padding:13px;font-size:13px}.loginform{text-align:left;gap:16px;margin:24px 0;display:grid}.loginform button{margin:0}.loginform input{width:100%}.temporarypassword{background:#f4e9d4;border:1px solid #b89559;border-radius:8px;padding:18px}.temporarypassword code{-webkit-user-select:all;user-select:all;padding:12px 0;font-size:20px;display:block}.identity button{padding:5px 8px;font-size:11px}@media (width<=600px){.loginpanel{margin:7vh 16px;padding:24px}.identity{gap:5px}.identity span{display:none}.identity button{padding:4px;font-size:10px}}
