@import url("https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,400;9..144,500;9..144,600;9..144,700&family=Noto+Sans+TC:wght@400;500;700;900&display=swap");:root{--brand:#f60;--brand-deep:#c2410c;--brand-tint:#fff2e6;--espresso:#211711;--espresso-2:#34251b;--bg:#faf5ee;--surface:#fff;--ink:#281e16;--ink-soft:#5b4d40;--muted:#94897b;--line:#ece1d2;--line-soft:#f3ebe0;--good:#1c7a45;--warn:#b23b00;--shadow:0 1px 2px rgba(40,25,10,.04),0 8px 26px rgba(120,70,20,.06);--shadow-lift:0 2px 6px rgba(40,25,10,.06),0 16px 38px rgba(120,70,20,.1);--font-body:"Noto Sans TC","PingFang TC","Microsoft JhengHei",system-ui,sans-serif;--font-num:"Fraunces",Georgia,"Times New Roman",serif;--r:16px}*{box-sizing:border-box;margin:0;padding:0}.notice{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 18px;padding:10px 14px;border:1px solid #f3d9b8;background:linear-gradient(0deg,#fff6ea,#fffaf3);border-radius:12px;font-size:.82rem;color:var(--ink-soft);box-shadow:var(--shadow)}.notice-tag{flex:none;font-weight:700;font-size:.72rem;letter-spacing:.04em;color:#fff;background:var(--warn);padding:3px 9px;border-radius:999px}.notice-link,.notice-text strong{color:var(--brand-deep);font-weight:700}.notice-link{text-decoration:underline;text-underline-offset:2px;margin:0 2px}.notice-link:hover{color:var(--brand)}tr.pending{background:#f6f8fd}.pending-cell{color:#5b6b9a;font-style:italic}html{-webkit-text-size-adjust:100%}body{font-family:var(--font-body);color:var(--ink);line-height:1.6;background-color:var(--bg);background-image:radial-gradient(1100px 520px at 88% -8%,#fff3e8 0,rgba(255,243,232,0) 60%),radial-gradient(900px 480px at -6% 6%,#fdeede 0,hsla(31,89%,93%,0) 55%);background-attachment:fixed;min-height:100vh}header.app{position:-webkit-sticky;position:sticky;top:0;z-index:20;background:linear-gradient(180deg,var(--espresso-2),var(--espresso));color:#f6ede2;padding:18px 28px;justify-content:space-between;gap:16px;box-shadow:0 10px 30px rgba(33,23,17,.16)}header.app,header.app h1{display:flex;align-items:center}header.app h1{font-size:1.2rem;font-weight:700;letter-spacing:.01em;gap:10px}header.app h1:before{content:"";width:9px;height:22px;border-radius:3px;background:linear-gradient(180deg,#ff8a33,var(--brand));box-shadow:0 0 0 4px rgba(255,102,0,.14)}header.app .sub{font-size:.78rem;color:#ffb27a;font-weight:600;letter-spacing:.02em}header.app p{font-size:.8rem;color:#c8b8a6;margin-top:5px}.wrap{max-width:1040px;margin:0 auto;padding:26px 28px 60px}.bar{display:flex;flex-wrap:wrap;gap:16px;align-items:center;margin-bottom:18px}.bar label{font-size:.85rem;font-weight:700;color:var(--muted);margin-right:6px}select{font:inherit;padding:8px 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface);min-width:160px}.meta{font-size:.85rem;color:var(--ink-soft);margin-bottom:20px;display:flex;flex-wrap:wrap;gap:4px 10px;align-items:baseline}.meta b{color:var(--ink);font-weight:700}.meta span{color:var(--muted)}.tabs{display:flex;gap:4px;margin-bottom:22px;border-bottom:1px solid var(--line);overflow-x:auto;-webkit-overflow-scrolling:touch}.tab{font:inherit;font-weight:700;font-size:.92rem;padding:11px 16px;border:0;background:transparent;color:var(--muted);cursor:pointer;border-bottom:2.5px solid transparent;margin-bottom:-1px;white-space:nowrap;flex:0 0 auto;transition:color .15s ease}.tab:hover{color:var(--ink)}.tab.on{color:var(--brand-deep);border-bottom-color:var(--brand)}.kpis{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:24px}.kpi{flex:1 1;min-width:132px;border:1px solid var(--line);border-radius:14px;padding:16px 18px;background:var(--surface);box-shadow:var(--shadow);position:relative;overflow:hidden;transition:transform .18s ease,box-shadow .18s ease}.kpi:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:linear-gradient(180deg,#ffb27a,var(--brand));opacity:.85}.kpi:hover{transform:translateY(-2px);box-shadow:var(--shadow-lift)}.kpi .v{font-family:var(--font-num);font-size:2.05rem;font-weight:600;color:var(--brand-deep);line-height:1.05;letter-spacing:-.01em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.kpi .v span{font-size:.85rem;font-family:var(--font-body)}.kpi .l,.kpi .v span{color:var(--muted);font-weight:600}.kpi .l{font-size:.74rem;margin-top:6px;letter-spacing:.01em}.card{border:1px solid var(--line);border-radius:var(--r);padding:22px;margin-bottom:22px;background:var(--surface);box-shadow:var(--shadow)}.card h2{font-size:1.02rem;font-weight:700;margin-bottom:16px;color:var(--ink);display:flex;align-items:center;gap:9px}.card h2:before{content:"";width:5px;height:17px;border-radius:2px;background:var(--brand)}table{width:100%;border-collapse:collapse;font-size:.85rem}td,th{padding:9px 11px;text-align:center;white-space:nowrap;border-bottom:1px solid var(--line-soft)}thead th{background:var(--brand-tint);color:var(--brand-deep);font-weight:700;font-size:.78rem;letter-spacing:.02em;border-bottom:1.5px solid #ffd9b8;position:-webkit-sticky;position:sticky;top:0}td{font-family:var(--font-num),var(--font-body);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--ink)}td b{font-weight:600}td:first-child,th:first-child{text-align:left;font-family:var(--font-body);color:var(--ink-soft);font-weight:600}tbody tr{transition:background .12s ease}tbody tr:hover td{background:#fffaf3}tr.absent td{background:#fff5ef}tr.absent:hover td{background:#ffefe4}.note{font-size:.79rem;color:var(--muted);margin-top:12px;line-height:1.7}.miss{display:inline-block;font-size:.7rem;font-weight:700;color:#a83400;background:#ffe6d6;border:1px solid #ffc7a3;border-radius:999px;padding:1px 9px;letter-spacing:.02em}.btn{font:inherit;font-weight:700;padding:10px 18px;border:0;border-radius:10px;background:var(--brand);color:#fff;cursor:pointer;box-shadow:0 6px 16px rgba(255,102,0,.26);transition:transform .15s ease,box-shadow .15s ease,background .15s ease}.btn:hover{background:#ff7a1f;transform:translateY(-1px);box-shadow:0 10px 22px rgba(255,102,0,.32)}.btn:active{transform:translateY(0)}.btn.ghost{background:transparent;color:#f0e3d4;border:1px solid hsla(33,53%,93%,.34);box-shadow:none}.btn.ghost:hover{background:hsla(0,0%,100%,.08);color:#fff;transform:none}.login-wrap{max-width:400px;margin:11vh auto;padding:0 24px}.login-card{border:1px solid var(--line);border-radius:20px;padding:34px 30px;background:var(--surface);box-shadow:var(--shadow-lift);position:relative;overflow:hidden;animation:rise .6s cubic-bezier(.2,.7,.2,1) both}.login-card:before{content:"";position:absolute;left:0;right:0;top:0;height:5px;background:linear-gradient(90deg,#ff8a33,var(--brand),#ffae73)}.login-card h1{font-size:1.32rem;font-weight:700}.field{margin-bottom:15px}.field label{display:block;font-size:.8rem;font-weight:700;color:var(--ink-soft);margin-bottom:6px}.field input{width:100%;font:inherit;padding:12px 13px;border:1px solid var(--line);border-radius:11px;background:#fffdfb;transition:border-color .15s ease,box-shadow .15s ease}.field input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(255,102,0,.14)}.err{color:var(--warn);font-size:.85rem;margin-bottom:14px;background:#fff1ea;border:1px solid #ffd2bd;border-radius:9px;padding:9px 12px}@keyframes rise{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}.card,.kpi{animation:rise .5s cubic-bezier(.2,.7,.2,1) both}.kpis .kpi:first-child{animation-delay:.03s}.kpis .kpi:nth-child(2){animation-delay:.08s}.kpis .kpi:nth-child(3){animation-delay:.13s}.kpis .kpi:nth-child(4){animation-delay:.18s}.wrap .card:first-of-type{animation-delay:.16s}.wrap .card:nth-of-type(2){animation-delay:.22s}.wrap .card:nth-of-type(3){animation-delay:.28s}.wrap .card:nth-of-type(4){animation-delay:.34s}@media (prefers-reduced-motion:reduce){.card,.kpi,.login-card{animation:none!important}}@media (max-width:640px){header.app{padding:14px 16px}header.app h1{font-size:1.05rem}header.app h1:before{height:19px}.wrap{padding:18px 14px 48px}.card{padding:16px}.kpi{min-width:calc(50% - 7px);padding:13px 14px}.kpi .v{font-size:1.7rem}table{font-size:.8rem}td,th{padding:8px 9px}}