:root{--bg:#f4f1ea;--paper:#fffdf8;--ink:#1f2723;--muted:#6d746f;--line:#d8d1c4;--field:#fbfaf6;--green:#246b4b;--green-dark:#164730;--red:#b23b3b;--amber:#a36a14;--shadow:0 16px 50px #242b261f}*{box-sizing:border-box}body{background:linear-gradient(90deg, #1f27230a 1px, transparent 1px), linear-gradient(180deg, #1f27230a 1px, transparent 1px), var(--bg);color:var(--ink);background-size:32px 32px;margin:0;font-family:Noto Sans TC,Microsoft JhengHei,PingFang TC,sans-serif}a{color:inherit}button,input,select,textarea{font:inherit}.shell,.admin-shell{min-height:100vh}.shell{justify-content:center;padding:36px 18px;display:flex}.workspace{width:min(1120px,100%)}.workspace.narrow{width:min(720px,100%)}.masthead,.admin-topbar{justify-content:space-between;align-items:center;gap:18px;margin-bottom:22px;display:flex}.home-masthead{justify-items:center;width:100%;max-width:980px;margin:0 auto 30px;padding-top:4px;display:grid;position:relative}.home-masthead .text-link{position:absolute;top:0;right:0}.brand-lockup{align-items:center;gap:18px;min-width:0;display:flex}.home-brand{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:18px;width:100%;max-width:960px;margin:0 auto}.brand-lockup.compact h1{font-size:clamp(1.6rem,3vw,2.4rem)}.brand-logo{border:1px solid var(--line);object-fit:contain;background:#fff;border-radius:6px;width:230px;height:76px;padding:8px;display:block}.home-brand .brand-logo{background:0 0;border:0;border-radius:0;width:min(960px,100%);height:auto;max-height:190px;padding:0}.login-logo{border:1px solid var(--line);object-fit:contain;background:#fff;border-radius:6px;width:min(100%,420px);max-height:92px;padding:10px;display:block}.eyebrow{color:var(--green);letter-spacing:0;text-transform:uppercase;margin:0 0 6px;font-size:.78rem;font-weight:700}h1,h2,h3{letter-spacing:0;margin:0}h1{font-size:clamp(2rem,4vw,4.25rem);line-height:.95}.home-brand h1{text-align:center;font-size:clamp(2.15rem,4.2vw,3.7rem);font-weight:900;line-height:1.08}h2{font-size:1.1rem}h3{margin-top:24px;font-size:1rem}.maker-line{color:var(--muted);text-align:center;margin:8px 0 0;font-size:1rem;font-weight:700}.form-grid{gap:14px;display:grid}.panel,.approval-card,.login-panel,.status-panel,.admin-section{background:var(--paper);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:6px}.panel,.approval-card,.login-panel,.status-panel{padding:22px}.panel-title{align-items:center;gap:10px;margin-bottom:18px;display:flex}.field-grid{gap:14px;display:grid}.field-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.field-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}label{gap:7px;display:grid}label span,dt{color:var(--muted);font-size:.82rem}input,select,textarea{background:var(--field);border:1px solid var(--line);color:var(--ink);border-radius:5px;width:100%;min-height:42px;padding:9px 10px}textarea{resize:vertical}input[readonly]{color:var(--muted)}.actions{flex-wrap:wrap;align-items:center;gap:10px;margin-top:16px;display:flex}.actions.end{justify-content:flex-end}.actions.split{justify-content:space-between}.button,.icon-button{cursor:pointer;border:0;justify-content:center;align-items:center;gap:8px;text-decoration:none;display:inline-flex}.button{border-radius:5px;min-height:42px;padding:0 16px}.button.primary{background:var(--green);color:#fff}.button.primary:hover{background:var(--green-dark)}.button.secondary{color:var(--ink);background:#e7e2d8}.button.danger{background:var(--red);color:#fff}.icon-button.danger{color:var(--red);background:#f8e5e5}.icon-button.danger:hover{background:var(--red);color:#fff}.button:disabled{cursor:not-allowed;opacity:.55}.icon-button{color:var(--ink);background:#ede8dd;border-radius:5px;width:36px;height:36px}.text-link{color:var(--green);background:#eaf1ec;border-radius:5px;justify-content:center;align-items:center;min-height:42px;padding:0 14px;font-weight:700;text-decoration:none;display:inline-flex}.text-link:hover{text-decoration:underline}.pill,.balance-line,.message,.notice{border-radius:5px;padding:9px 11px}.pill{color:var(--green-dark);background:#eaf1ec;font-size:.9rem}.balance-line{color:var(--amber);background:#fff5df;margin:14px 0}.annual-balance-grid{border-bottom:1px solid var(--line);border-top:1px solid var(--line);grid-template-columns:repeat(3,minmax(0,1fr));gap:0;margin-top:18px;display:grid}.annual-balance-grid>div{gap:5px;min-width:0;padding:12px;display:grid}.annual-balance-grid>div+div{border-left:1px solid var(--line)}.annual-balance-grid span,.annual-period-row span{color:var(--muted);font-size:.82rem}.annual-balance-grid strong{color:var(--green-dark);font-size:1.15rem}.annual-period-list{border-bottom:1px solid var(--line);margin:14px 0}.annual-period-row{border-top:1px solid var(--line);grid-template-columns:minmax(190px,1.5fr) minmax(90px,.7fr) minmax(150px,1fr);align-items:center;gap:10px;padding:10px 2px;display:grid}.annual-period-row strong{color:var(--green-dark);text-align:right;font-size:.9rem}.mixed-leave-section{border-left:4px solid var(--amber);margin:14px 0;padding:4px 0 4px 14px}.mixed-leave-section>p{color:var(--amber);margin:0 0 12px;font-weight:700}.calculated-leave-row{margin-top:14px}.message{color:var(--amber);background:#fff5df;margin:16px 0 0}.notice{align-items:center;gap:8px;margin:16px 0;display:flex}.notice.success{color:var(--green-dark);background:#eaf1ec}.notice.warning{color:var(--amber);background:#fff5df}.notice.danger{color:var(--red);background:#f8e5e5}.review-list{gap:10px;margin:20px 0;display:grid}.review-list div{border-bottom:1px solid var(--line);grid-template-columns:90px 1fr;gap:6px;padding-bottom:10px;display:grid}.review-list dd{margin:0}.focus-ring{outline-offset:2px;outline:3px solid #246b4b4d}.spin{animation:.85s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.admin-shell{padding:24px}.report-shell{max-width:1480px;margin:0 auto}.admin-topbar{background:var(--paper);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:6px;padding:18px}.report-topbar,.report-header-actions{align-items:center;gap:10px;display:flex}.report-header-actions{margin-left:auto}.report-filter-form{grid-template-columns:repeat(4,minmax(150px,1fr)) auto;align-items:end;gap:12px;margin-top:16px;display:grid}.report-total{color:var(--green-dark)}.summary-table{min-width:720px}.report-table{min-width:1180px}.report-date-range{white-space:nowrap;gap:4px;display:grid}.document-link{color:var(--green);align-items:center;gap:6px;font-weight:700;text-decoration:none;display:inline-flex}.document-link:hover{text-decoration:underline}.report-pagination{justify-content:center;align-items:center;gap:12px;margin-top:18px;display:flex}.icon-button.disabled{cursor:default;opacity:.45}.admin-section{margin-top:18px;padding:18px}.add-employee-form{grid-template-columns:minmax(110px,1fr) minmax(110px,.9fr) minmax(170px,1.25fr) minmax(130px,1fr) 90px auto auto;align-items:end;gap:12px;margin-top:14px;display:grid}.add-recipient-form{grid-template-columns:minmax(120px,1fr) minmax(190px,1.6fr) repeat(6,auto) auto;align-items:end;gap:12px;margin-top:14px;display:grid}.checkbox-field{align-items:center;gap:8px;min-height:42px;display:flex}.checkbox-field input{width:18px;height:18px;min-height:18px}.admin-edit-list{gap:10px;margin-top:14px;display:grid}.admin-edit-row{background:var(--field);border:1px solid var(--line);border-radius:6px;align-items:end;gap:10px;padding:12px;display:grid}.employee-edit-row{grid-template-columns:minmax(110px,1fr) minmax(110px,.9fr) minmax(170px,1.25fr) minmax(130px,1fr) 90px 72px 48px 48px}.notification-edit-row{grid-template-columns:minmax(120px,1fr) minmax(190px,1.6fr) repeat(6,minmax(70px,auto)) 48px 48px}.section-heading-row,.calendar-review-row,.calendar-override-row,.calendar-impact-row{justify-content:space-between;align-items:center;gap:12px;display:flex}.section-note,.empty-state{color:var(--muted);margin:6px 0 0}.calendar-review-list,.calendar-override-list,.calendar-impact-list{gap:10px;margin-top:12px;display:grid}.calendar-review-row,.calendar-override-row,.calendar-impact-row{background:var(--field);border:1px solid var(--line);border-radius:6px;padding:12px}.calendar-review-row>div,.calendar-impact-row>div{gap:4px;margin-right:auto;display:grid}.calendar-review-row span,.calendar-impact-row span,.calendar-impact-row small{color:var(--muted)}.calendar-override-form{grid-template-columns:minmax(150px,.8fr) minmax(130px,.7fr) minmax(220px,1.5fr) auto;align-items:end;gap:12px;margin-top:12px;display:grid}.calendar-override-row{grid-template-columns:130px 80px minmax(180px,1fr) 40px;display:grid}.admin-checkbox,.row-actions{min-height:42px}.admin-checkbox{align-self:end}.row-actions{align-items:center;display:flex}.table-wrap{margin-top:14px;overflow-x:auto}.admin-table{border-collapse:collapse;width:100%;min-width:940px}.admin-table th,.admin-table td{border-bottom:1px solid var(--line);text-align:left;vertical-align:middle;padding:10px}.admin-table th{color:var(--muted);font-size:.82rem;font-weight:700}.reason-cell{overflow-wrap:anywhere;white-space:normal;max-width:260px}.admin-table input[type=checkbox]{width:18px;height:18px;min-height:18px}.status{border-radius:4px;padding:4px 7px;font-size:.78rem;font-weight:700;display:inline-block}.status.pending{color:var(--amber);background:#fff5df}.status.approved{color:var(--green-dark);background:#eaf1ec}.status.rejected{color:var(--red);background:#f8e5e5}.status.cancelled{color:var(--muted);background:#e7e2d8}.status.expired{color:#765c3b;background:#ece7df}.login-panel,.status-panel{gap:14px;display:grid}.site-footer{color:var(--muted);justify-content:center;align-items:center;gap:8px;padding:0 18px 26px;display:flex}.site-footer strong{color:var(--green-dark)}@media (max-width:720px){body{background-size:24px 24px}.shell{padding:20px 12px}.admin-shell{padding:12px}.report-header-actions{width:100%;margin-left:0}.report-header-actions .text-link{flex:1}.masthead,.admin-topbar,.brand-lockup{flex-direction:column;align-items:flex-start}.home-masthead .text-link{position:static}.home-brand{align-items:center}.brand-logo{width:260px;max-width:100%;height:auto}.home-brand .brand-logo{width:min(100%,640px)}.field-grid.two,.field-grid.three,.annual-balance-grid,.annual-period-row{grid-template-columns:1fr}.annual-balance-grid>div+div{border-left:0;border-top:1px solid var(--line)}.annual-period-row strong{text-align:left}.panel,.approval-card,.login-panel,.status-panel,.admin-section{padding:16px}.actions.end,.actions.split{flex-direction:column;align-items:stretch}.actions.end .button,.actions.split .button,.actions .button{width:100%}.add-employee-form,.add-recipient-form,.calendar-override-form,.report-filter-form{grid-template-columns:1fr}.report-filter-form .button,.add-employee-form .button,.add-recipient-form .button{width:100%}.employee-edit-row,.notification-edit-row{grid-template-columns:1fr}.section-heading-row,.calendar-review-row,.calendar-impact-row{flex-direction:column;align-items:stretch}.section-heading-row .button,.calendar-review-row .button,.calendar-impact-row .button{width:100%}.calendar-override-row{grid-template-columns:1fr auto}.admin-edit-row label,.admin-edit-row .row-actions{grid-template-columns:minmax(74px,28%) minmax(0,1fr);gap:8px;display:grid}.admin-edit-row label:before,.admin-edit-row .row-actions:before{color:var(--muted);content:attr(data-label);padding-top:9px;font-size:.8rem;font-weight:700}.admin-edit-row label>span{display:none}.masthead .text-link{width:100%}.review-list div{grid-template-columns:1fr}.table-wrap{overflow-x:visible}.admin-table{border-collapse:separate;border-spacing:0 12px;min-width:0}.admin-table thead{display:none}.admin-table,.admin-table tbody,.admin-table tr,.admin-table td{width:100%;display:block}.admin-table tr{background:var(--field);border:1px solid var(--line);border-radius:6px;padding:8px}.admin-table td{border-bottom:1px solid var(--line);grid-template-columns:minmax(74px,28%) minmax(0,1fr);gap:8px;padding:9px 6px;display:grid}.admin-table td:last-child{border-bottom:0}.admin-table td:before{color:var(--muted);content:attr(data-label);padding-top:9px;font-size:.8rem;font-weight:700}.admin-table td[colspan]:before{content:"";display:none}.admin-table .icon-button{justify-self:start}.summary-table,.report-table{min-width:0}.site-footer{padding-bottom:18px}}
