@import"https://fonts.googleapis.com/css2?family=Noto+Sans+TC:wght@400;500;600;700&display=swap";:root{font-family:Noto Sans TC,system-ui,sans-serif;color:#20332f;background:#f4f4e3;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}button,select,input{font:inherit}.page-shell{min-height:100vh;display:grid;place-items:center;padding:max(24px,env(safe-area-inset-top)) 18px max(24px,env(safe-area-inset-bottom));background:radial-gradient(circle at 8% 9%,rgb(62 131 118 / 12%) 0 80px,transparent 81px),radial-gradient(circle at 93% 88%,rgb(62 131 118 / 9%) 0 120px,transparent 121px),#f4f4e3}.card{width:min(100%,500px);padding:34px 24px 24px;border:1px solid rgb(62 131 118 / 14%);border-radius:28px;background:#fafbfd;box-shadow:0 22px 60px #28453f21}.hero{text-align:center;margin-bottom:30px}.brand-mark{width:54px;height:54px;margin:0 auto 17px;border-radius:17px;display:grid;place-items:center;background:#3e8376;transform:rotate(8deg);box-shadow:0 8px 18px #3e837640}.brand-mark span{width:23px;height:16px;border:3px solid white;border-top:0;border-radius:0 0 12px 12px;transform:rotate(-8deg)}.eyebrow{margin:0 0 7px;color:#3e8376;font-size:.72rem;font-weight:700;letter-spacing:.17em}h1{margin:0;color:#214b43;font-size:clamp(1.8rem,7vw,2.3rem);line-height:1.25;letter-spacing:.04em}.hero>h1+p,.success-message{margin:12px auto 0;color:#667873;font-size:.94rem;line-height:1.7}.notice{display:flex;gap:12px;align-items:center;margin-bottom:22px;padding:15px 16px;color:#255e53;border:1px solid #a8d1c7;border-radius:15px;background:#eaf5f1}.notice-icon{flex:0 0 30px;width:30px;height:30px;display:grid;place-items:center;color:#fff;background:#3e8376;border-radius:50%;font-weight:700}.notice strong,.notice span{display:block}.notice strong{font-size:.95rem}.notice div span{margin-top:2px;color:#56726b;font-size:.78rem}.form-field label{display:block;margin-bottom:9px;color:#304b45;font-size:.88rem;font-weight:600}.certificate-name-field{margin-top:18px}.certificate-name-field .notice{margin-bottom:14px}.select-wrap{position:relative}.select-wrap:after{content:"";position:absolute;right:17px;top:50%;width:8px;height:8px;border-right:2px solid #3e8376;border-bottom:2px solid #3e8376;transform:translateY(-70%) rotate(45deg);pointer-events:none}select{width:100%;min-height:52px;padding:0 46px 0 16px;color:#263c37;appearance:none;border:1px solid #cbd8d4;border-radius:13px;outline:none;background:#fff;cursor:pointer;transition:border-color .2s,box-shadow .2s}select:focus{border-color:#3e8376;box-shadow:0 0 0 4px #3e837621}select:disabled{color:#63716e;background:#f1f3f2;cursor:not-allowed}.person-summary{margin:20px 0;padding:4px 18px;border:1px solid #e1e8e5;border-radius:16px;background:#fff}.person-summary div{display:grid;grid-template-columns:88px 1fr;gap:12px;align-items:center;padding:14px 0}.person-summary div+div{border-top:1px solid #e7ecea}.person-summary dt{color:#72807d;font-size:.82rem}.person-summary dd{margin:0;color:#263e38;font-weight:600}button{width:100%;min-height:52px;border-radius:14px;font-weight:700;letter-spacing:.05em;cursor:pointer;transition:transform .18s,background .18s,box-shadow .18s}button:not(:disabled):active{transform:translateY(1px)}.primary-button{margin-top:22px;color:#fff;border:0;background:#3e8376;box-shadow:0 8px 18px #3e837638}.primary-button:hover:not(:disabled){background:#326f64;box-shadow:0 10px 22px #3e837647}.primary-button:focus-visible,.secondary-button:focus-visible{outline:3px solid rgb(62 131 118 / 28%);outline-offset:3px}.primary-button:disabled{color:#89928f;background:#dfe4e2;box-shadow:none;cursor:not-allowed}.privacy-note{margin:13px 0 0;text-align:center;color:#8a9592;font-size:.7rem}.error-banner{margin:18px 0;padding:13px 15px;color:#8a2f2f;border:1px solid #e7bcbc;border-radius:12px;background:#fff1f1;font-size:.88rem}.loading-state,.empty-state{padding:24px;color:#71817d;text-align:center}.success-card{text-align:center}.success-icon{width:76px;height:76px;display:grid;place-items:center;margin:3px auto 22px;color:#fff;border-radius:50%;background:#3e8376;box-shadow:0 0 0 10px #e3f0ec,0 13px 30px #3e837640;font-size:2rem;font-weight:700}.success-summary{margin-top:28px;text-align:left}.secondary-button{margin-top:8px;color:#326f64;border:1px solid #3e8376;background:transparent}.secondary-button:hover{color:#fff;background:#3e8376}.link-button{display:flex;align-items:center;justify-content:center;width:100%;min-height:52px;margin-top:8px;border-radius:14px;font-weight:700;letter-spacing:.05em;text-decoration:none;transition:color .18s,background .18s}@media(min-width:600px){.card{padding:44px 42px 34px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition:none!important}}.admin-shell{min-height:100vh;padding:32px max(20px,calc((100vw - 1180px)/2));background:#f4f4e3}.admin-header{display:flex;justify-content:space-between;gap:24px;align-items:center;margin-bottom:24px}.admin-header h1{font-size:clamp(1.7rem,4vw,2.3rem)}.admin-header p:last-child,.admin-login>p{color:#71817d}.admin-login{margin:10vh auto}.admin-login form,.dialog form{display:grid;gap:17px;margin-top:25px}.admin-login label,.dialog label{display:grid;gap:7px;color:#304b45;font-size:.86rem;font-weight:600}input{width:100%;min-height:48px;padding:0 14px;color:#263c37;border:1px solid #cbd8d4;border-radius:11px;outline:none;background:#fff}input:focus{border-color:#3e8376;box-shadow:0 0 0 4px #3e837621}.dialog .checkbox-label{display:flex;align-items:center;gap:10px}.dialog .checkbox-label input{width:18px;min-height:18px;margin:0}.text-button{width:auto;min-height:42px;padding:0 18px;color:#326f64;border:1px solid #8bb5ac;background:transparent}.admin-actions{display:flex;gap:10px;margin-bottom:28px}.compact{width:auto;min-height:44px;margin:0;padding:0 18px}.section-heading{display:flex;align-items:baseline;justify-content:space-between;gap:15px;margin:34px 0 16px}.section-heading h2{margin:0;color:#244a43}.section-heading span{color:#7a8985;font-size:.78rem}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.stat-card{padding:19px;border:1px solid #dce6e2;border-radius:16px;background:#fafbfd}.stat-card span{display:block;color:#71817d;font-size:.8rem}.stat-card strong{display:block;margin-top:6px;color:#2f6f63;font-size:1.65rem}.toolbar{display:grid;grid-template-columns:1fr 180px;gap:12px;margin:18px 0 12px}.toolbar select{min-height:48px}.table-wrap{overflow-x:auto;border:1px solid #dce6e2;border-radius:15px;background:#fafbfd}table{width:100%;border-collapse:collapse;white-space:nowrap}th,td{padding:14px 16px;border-bottom:1px solid #e5ebe9;text-align:left;font-size:.86rem}th{color:#62736f;background:#f1f5f3;font-size:.76rem}tbody tr:last-child td{border-bottom:0}td small{color:#9a6666}.status-pill{display:inline-block;padding:4px 9px;border-radius:999px;font-size:.74rem;font-weight:700}.status-pill.done{color:#28675b;background:#dff1eb}.status-pill.pending{color:#80682c;background:#f7edcc}.people-group{margin-top:20px}.people-group h3{color:#4a615c;font-size:.95rem}.people-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:11px}.person-card{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:15px;border:1px solid #dce6e2;border-radius:13px;background:#fafbfd}.person-card strong,.person-card span{display:block}.person-card span{margin-top:3px;color:#71817d;font-size:.77rem}.person-card>div:last-child{display:flex;gap:6px}.small-button{width:auto;min-height:34px;padding:0 11px;color:#326f64;border:1px solid #a9c9c2;border-radius:9px;background:#fff;font-size:.75rem}.small-button.danger{color:#995050;border-color:#dab1b1}.dialog-backdrop{position:fixed;inset:0;z-index:10;display:grid;place-items:center;padding:20px;background:#142a257a}.dialog{width:min(100%,440px);padding:27px;border-radius:20px;background:#fafbfd;box-shadow:0 25px 70px #142a2547}.dialog h2{margin:0;color:#244a43}.dialog-actions{display:flex;justify-content:flex-end;gap:9px}@media(max-width:700px){.admin-shell{padding:22px 14px}.stats{grid-template-columns:repeat(2,1fr)}.toolbar,.people-grid{grid-template-columns:1fr}.admin-header,.person-card{align-items:flex-start}.section-heading{display:block}.section-heading span{display:block;margin-top:4px}}
