:root{color:#17211b;font-synthesis:none;text-rendering:optimizelegibility;background:#f7f4ec;font-family:Inter,Noto Sans TC,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{min-width:320px;min-height:100vh;margin:0}button,input,select{font:inherit}a{color:inherit;text-decoration:none}.app-shell{background:linear-gradient(#ffffffdb,#f7f4ecf0),#f7f4ec;min-height:100vh}.topbar{z-index:10;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#f7f4ece0;border-bottom:1px solid #2a42341f;justify-content:space-between;align-items:center;gap:16px;padding:10px 18px;display:flex;position:sticky;top:0}.brand{align-items:center;gap:12px;min-width:0;display:flex}.brand-mark{object-fit:contain;border-radius:8px;width:54px;height:54px}.brand strong,.brand small{display:block}.brand strong{font-size:18px}.brand small{color:#667267;margin-top:2px;font-size:12px}main{max-width:1080px;margin:0 auto;padding:18px}.login-panel,.status-panel{flex-direction:column;justify-content:center;align-items:flex-start;gap:18px;min-height:calc(100vh - 86px);display:flex}.login-logo{color:#fffdf5;letter-spacing:0;background:#23623d;border-radius:8px;padding:14px 16px;font-size:28px;font-weight:900}h1,h2,p{margin:0}h1{max-width:760px;font-size:clamp(32px,8vw,56px);line-height:1.08}h2{font-size:20px}p{color:#59675d;max-width:720px;line-height:1.7}.primary-action,.secondary-action,.icon-button{cursor:pointer;border:0;justify-content:center;align-items:center;display:inline-flex}.primary-action{color:#fffdf5;background:#23623d;border-radius:8px;min-height:48px;padding:0 18px;font-weight:800}.secondary-action{color:#23623d;background:#fffdf7;border:1px solid #23623d38;border-radius:8px;min-height:44px;padding:0 16px;font-weight:750}.compact{min-height:38px;padding:0 14px}.icon-button{color:#23623d;background:#fffdf7;border:1px solid #23623d29;border-radius:8px;width:40px;height:40px}.notice{color:#6a5515;background:#fff8df;border:1px solid #efd37a;border-radius:8px;padding:12px 14px}.danger{color:#8d2f24;background:#fff0ee;border-color:#efb2aa}.status-panel{text-align:center;align-items:center}.hero-row{background:#fffdf7;border:1px solid #2a42341f;border-radius:8px;justify-content:space-between;align-items:center;gap:20px;padding:22px;display:flex}.anchored{scroll-margin-top:86px}.admin-menu{z-index:8;background:#f7f4ecf0;border:1px solid #2a42341f;border-radius:8px;gap:8px;margin-bottom:14px;padding:8px;display:grid;position:sticky;top:68px}.menu-toggle,.menu-items button{color:#23623d;cursor:pointer;background:#fffdf7;border:1px solid #23623d29;border-radius:8px;align-items:center;gap:8px;min-height:40px;padding:0 12px;font-weight:800;display:inline-flex}.menu-items{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:none}.menu-items.open{display:grid}.menu-items button{justify-content:flex-start}.menu-items button.active{background:#edf7ef;border-color:#23623d5c}.hero-row h1{font-size:clamp(28px,5vw,42px)}.hero-row svg{color:#23623d;flex:none}.home-actions{justify-content:flex-end;margin-bottom:12px;display:flex}.clock-panel{background:#fffdf7;border:1px solid #2a42341f;border-radius:8px;gap:14px;margin-bottom:14px;padding:18px;display:grid}.clock-hero{justify-content:space-between;align-items:center;gap:16px;display:flex}.clock-hero h1{font-size:clamp(32px,10vw,52px)}.clock-hero svg{color:#23623d;flex:none}.location-hint{color:#8d5a13;margin-top:6px;font-weight:750}.clock-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.clock-actions .primary-action,.clock-actions .secondary-action{min-height:58px}.clock-metrics{margin:0}.admin{background:#edf7ef}.eyebrow{color:#23623d;letter-spacing:0;margin-bottom:8px;font-size:13px;font-weight:850}.grid{gap:14px;margin-top:14px;display:grid}.two{grid-template-columns:1fr}.tile,.editor-panel,.approval-card,.metrics article{background:#fffdf7;border:1px solid #2a42341f;border-radius:8px;padding:18px}.tile p{margin-top:8px}.metrics,.module-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:14px 0 20px;display:grid}.metrics article{grid-template-columns:auto 1fr;align-items:center;gap:4px 10px;display:grid}.metrics svg{color:#23623d;grid-row:span 2}.metrics span{color:#59675d}.module-grid{grid-template-columns:repeat(3,minmax(0,1fr));margin-top:0}.module-card{color:inherit;cursor:pointer;text-align:left;background:#fffdf7;border:1px solid #2a42341f;border-radius:8px;align-content:start;gap:7px;min-height:104px;padding:11px;display:grid}.module-card:hover{background:#edf7ef;border-color:#23623d5c}.module-card svg{color:#23623d}.module-card strong,.person-row strong{display:block}.module-card span,.person-row span,.person-row small{color:#59675d}.module-card p{font-size:12px;line-height:1.45}.module-card strong{font-size:14px}.module-card span{font-size:12px}.section-head{justify-content:space-between;align-items:center;margin:20px 0 12px;display:flex}.approval-list{gap:14px;display:grid}.people-list{gap:10px;margin-bottom:22px;display:grid}.data-list{gap:10px;display:grid}.data-row{background:#fff;border:1px solid #2a42341f;border-radius:8px;grid-template-columns:1fr;align-items:center;gap:8px;padding:12px;display:grid}.data-row strong,.data-row small{display:block}.data-row small{color:#59675d;overflow-wrap:anywhere}.error-text{color:#8d2f24!important}.notification-row{align-items:start}.permission-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.permission-card{background:#fff;border:1px solid #2a42341f;border-radius:8px;align-items:center;gap:10px;padding:12px;display:flex}.permission-card input{min-height:auto}.permission-card strong,.permission-card small{display:block}.permission-card small{color:#59675d;font-size:12px}.person-row{color:inherit;cursor:pointer;text-align:left;background:#fffdf7;border:1px solid #2a42341f;border-radius:8px;justify-content:space-between;align-items:center;gap:14px;width:100%;padding:14px 16px;display:flex}.person-row:hover{border-color:#23623d59}.approval-card{gap:14px;display:grid}.editor-panel{gap:14px;margin-bottom:14px;display:grid}.inline-head{align-items:start;gap:12px;display:grid}.date-input{min-width:180px}.calendar-panel{background:#fffdf7;border:1px solid #2a42341f;border-radius:8px;gap:10px;padding:12px;display:grid}.calendar-toolbar{grid-template-columns:auto 1fr auto;align-items:center;gap:8px;display:grid}.calendar-toolbar strong{color:#17211b;text-align:center;font-size:18px}.calendar-weekdays,.calendar-grid-month{grid-template-columns:repeat(7,minmax(0,1fr));display:grid}.calendar-weekdays span{color:#59675d;text-align:center;padding:4px 2px;font-size:12px;font-weight:800}.calendar-grid-month{border-top:1px solid #2a42341f;border-left:1px solid #2a42341f}.calendar-cell{color:inherit;cursor:pointer;text-align:left;background:#fff;border:1px solid #2a42341f;border-top:0;border-left:0;align-content:start;gap:3px;min-height:86px;padding:6px;display:grid}.calendar-cell:hover{background:#f5fbf5}.calendar-cell.is-outside{color:#8d978f;background:#faf8f2}.calendar-cell.is-selected{box-shadow:inset 0 0 0 2px #23623d}.calendar-day-number{color:#17211b;font-size:13px;font-weight:850}.calendar-chip{color:#fffdf7;text-overflow:ellipsis;white-space:nowrap;border-radius:5px;padding:3px 5px;font-size:12px;font-weight:750;line-height:1.25;display:block;overflow:hidden}.calendar-chip.morning{background:#23623d}.calendar-chip.afternoon{background:#b44d24}.calendar-chip.off{background:#7b5cb8}.compact-calendar,.selected-day-readout{margin-top:14px}.day-editor{gap:12px;display:grid}.schedule-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.schedule-row{background:#fff;border:1px solid #2a42341f;border-radius:8px;align-content:start;gap:8px;min-height:118px;padding:10px;display:grid}.schedule-row strong,.schedule-row small{display:block}.schedule-row small{color:#59675d;text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.schedule-row select{width:100%;min-height:38px;padding:0 8px}.approval-head{justify-content:space-between;align-items:center;display:flex}.approval-head small{color:#667267;margin-top:4px;display:block}.form-grid{grid-template-columns:1fr;gap:12px;display:grid}label{color:#304137;gap:6px;font-size:13px;font-weight:750;display:grid}input,select{color:#17211b;background:#fff;border:1px solid #2a42342e;border-radius:8px;min-height:42px;padding:0 12px}.check-row{align-items:center;gap:8px;display:flex}.check-row input{min-height:auto}.button-row{flex-wrap:wrap;gap:10px;display:flex}.empty{background:#fffdf7;border:1px dashed #2a423438;border-radius:8px;padding:18px}.leave-panel{gap:14px;margin-top:14px;display:grid}.signature-field{gap:8px;display:grid}.signature-head{justify-content:space-between;align-items:center;display:flex}.signature-canvas{touch-action:none;background:#fff;border:1px solid #2a42342e;border-radius:8px;width:100%;height:180px}.signature-field small,.signature-consent{color:#59675d;font-size:12px}.signature-preview{background:#fff;border:1px solid #2a42341f;border-radius:8px;align-items:start;gap:6px;padding:8px;display:grid}.signature-preview img{object-fit:contain;width:100%;max-width:220px;max-height:86px;display:block}.leave-list{gap:10px;display:grid}.leave-row{background:#fffdf7;border:1px solid #2a42341f;border-radius:8px;grid-template-columns:1fr auto;align-items:center;gap:10px;padding:12px;display:grid}.leave-row strong,.leave-row small{display:block}.leave-row small{color:#59675d}.admin-leave-row{grid-template-columns:1fr auto}.admin-leave-row input,.admin-leave-row .button-row,.admin-leave-row p{grid-column:1/-1}.status-pill{color:#304137;white-space:nowrap;background:#eef2ed;border-radius:999px;padding:5px 9px;font-size:12px;font-weight:850}.status-pill.pending{color:#7a5200;background:#fff1bf}.status-pill.approved{color:#23623d;background:#dff3e4}.status-pill.rejected{color:#8d2f24;background:#ffe4df}.status-pill.changed{color:#583a94;background:#e8e2f7}.status-pill.signed{color:#23623d;background:#edf7ef}.placeholder-band{background:#fffdf7;border:1px solid #2a42341f;border-radius:8px;align-items:flex-start;gap:12px;margin-top:14px;padding:18px;display:flex}.placeholder-band svg{color:#23623d;flex:none}button:disabled{cursor:not-allowed;opacity:.55}@media (width>=720px){main{padding:30px}.two,.metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.module-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.module-card{gap:12px;min-height:142px;padding:18px}.module-card strong{font-size:16px}.module-card span,.module-card p{font-size:14px}.admin-menu{align-items:center;display:flex}.menu-toggle{display:none}.menu-items,.menu-items.open{flex-wrap:wrap;display:flex}.inline-head{grid-template-columns:1fr auto;align-items:center}.calendar-cell{min-height:124px;padding:8px}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.data-row{grid-template-columns:1fr auto}.permission-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.admin-leave-row{grid-template-columns:1fr auto minmax(160px,230px) minmax(180px,260px) auto}.admin-leave-row input,.admin-leave-row .button-row,.admin-leave-row p{grid-column:auto}}@media (width<=520px){main{padding:12px}.calendar-panel{padding:8px}.calendar-toolbar{grid-template-columns:1fr}.calendar-toolbar .secondary-action{min-height:34px}.calendar-cell{gap:2px;min-height:70px;padding:4px}.calendar-day-number{font-size:12px}.calendar-chip{padding:2px 3px;font-size:10px}.schedule-grid{gap:8px}.schedule-row{min-height:108px;padding:8px}.schedule-row strong{font-size:14px}.schedule-row small{font-size:11px}.schedule-row select{font-size:14px}.signature-canvas{height:150px}.brand-mark{width:48px;height:48px}.brand strong{font-size:16px}}
