:root{font-family:"Noto Sans TC",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#44403c;background:#fff9f2;font-synthesis:none;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}body{margin:0;min-height:100vh;min-height:100dvh}button,input{font:inherit;font-size:16px}button,a,input{-webkit-tap-highlight-color:transparent}button{cursor:pointer;font-weight:800}button:disabled{cursor:default;opacity:.55}[hidden]{display:none!important}main{width:min(100%,560px);margin:auto;padding:24px 16px max(32px,env(safe-area-inset-bottom))}.company-name{display:grid;grid-template-columns:36px minmax(0,1fr);align-items:center;gap:8px;margin:0 0 16px;padding:10px 0;border-block:1px solid #e7ddd5;color:#57534e;font-size:14px;font-weight:900;line-height:1.5;text-align:center}.company-name img{display:block;width:36px;height:36px;object-fit:contain;mix-blend-mode:multiply}.company-name span{min-width:0}.panel{background:#fff;border:4px solid #fde6d2;border-radius:34px;padding:20px;margin-bottom:16px;box-shadow:0 15px 30px -10px #ed7d311a}h1{margin:0 0 8px;font-size:30px;line-height:1.25;font-weight:900;color:#1f2937}h2{font-size:18px;font-weight:900;margin:0 0 12px}.sub{color:#78716c;font-size:15px;line-height:1.6;font-weight:700;margin:8px 0 20px}.field{display:grid;gap:8px;font-weight:800;font-size:14px;min-width:0;margin:16px 0}input{min-width:0;width:100%;height:48px;border:2px solid #eadfd5;border-radius:14px;padding:8px 12px;color:#44403c;background:#fff;font-weight:700}input:focus-visible,button:focus-visible,a:focus-visible{outline:3px solid #60a5fa;outline-offset:2px}input[type=date]{appearance:auto;-webkit-appearance:auto;min-width:0;min-height:48px;width:100%;line-height:1.25}input[type=date]::-webkit-date-and-time-value{text-align:left;min-width:0}input[type=checkbox]{width:20px;height:20px;accent-color:#f97316}.remember{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:700;color:#78716c;margin:16px 0}.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:10px 14px;border:2px solid #eadfd5;border-radius:14px;background:#fff;color:#44403c;text-decoration:none;font-size:14px;font-weight:800;line-height:1.35}.primary{background:#f97316;border-color:#f97316;color:#fff}.primary:hover:not(:disabled){background:#ea580c;border-color:#ea580c}.login-submit{width:100%;background:#695b43;border-color:#695b43;color:#fff;min-height:50px;margin-top:4px;font-size:16px}.danger{color:#b91c1c}.header-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:14px 0}.header-actions strong{flex:1;min-width:0;overflow-wrap:anywhere}.date-bar{display:grid;grid-template-columns:44px minmax(0,1fr) 44px auto;gap:8px;align-items:center;margin:16px 0}.date-bar input{margin:0;height:44px;min-height:44px}.date-bar .button{padding:8px}.date-label{font-size:13px;font-weight:700;color:#78716c;line-height:1.5}.status{font-size:14px;font-weight:700;line-height:1.6;margin:12px 0;overflow-wrap:anywhere}.status.error{color:#b91c1c}.status.success{color:#15803d}.clock-time{font-size:24px;font-weight:900;color:#1f2937;font-variant-numeric:tabular-nums}.shift{border:2px solid #eadfd5;border-radius:20px;padding:16px;margin:14px 0;background:#fffdfb}.shift-head{display:flex;gap:12px;align-items:flex-start;justify-content:space-between}.shift-head h3{font-size:18px;font-weight:900;margin:0;line-height:1.5}.tag{display:inline-block;padding:4px 9px;background:#fff7ed;color:#9a3412;border-radius:10px;font-size:12px;font-weight:800;white-space:nowrap}.tag.done{background:#f0fdf4;color:#15803d}.shift p{font-size:14px;font-weight:700;line-height:1.6;margin:8px 0;color:#78716c}.punch-button{width:100%;min-height:52px;font-size:17px;margin-top:12px}.punch-times{display:flex;flex-wrap:wrap;gap:8px;font-size:13px;line-height:1.5;font-weight:800;color:#166534}.empty{text-align:center;padding:28px 0;font-size:14px;font-weight:700;color:#78716c}.record{padding:12px 0;border-bottom:1px solid #e7e5e4}.record:last-child{border:0}.record strong{font-size:14px;font-weight:800}.record p{font-size:13px;color:#78716c;font-weight:700;line-height:1.6;margin:6px 0}.location-confirm{border:2px solid #fbbf24;background:#fffbeb;border-radius:18px;padding:16px;margin:16px 0}.location-confirm p{font-size:14px;font-weight:700;line-height:1.6}.location-confirm .actions{display:flex;flex-wrap:wrap;gap:8px}.policy{font-size:12px;line-height:1.8;text-align:center;color:#78716c;font-weight:700}.policy a{color:#c2410c}.help{font-size:13px;color:#78716c;line-height:1.6;font-weight:700}#clock-loading{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:16px;background:#fff9f2}#clock-loading img{width:64px;height:64px}#clock-loading strong{font-size:18px;font-weight:900}.spinner{width:34px;height:34px;border:3px solid #fde6d2;border-top-color:#f97316;border-radius:50%;animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.spinner{animation:none;border-right-color:#f97316}}@media(max-width:360px){main{padding-inline:10px}.panel{padding:16px;border-radius:26px}.company-name{font-size:12px}.date-bar{gap:5px;grid-template-columns:40px minmax(0,1fr) 40px auto}.date-bar .button{padding:6px}h1{font-size:26px}}@media(min-width:768px){main{padding-top:32px}}

.clock-login-panel>h1,.clock-login-panel>.sub{text-align:center}

/* Shared personnel-attendance proportions; retain daycare-only data and actions. */
:root{--clock-orange:#f97316;--clock-orange-dark:#ea580c;--clock-orange-soft:#fff7ed;--clock-muted:#a8a29e;font-size:16px}
.panel{padding:18px}h1{line-height:1.15}h2{font-size:18px;line-height:1.4}
.company-name{grid-template-columns:36px minmax(0,1fr) 36px;line-height:1.45}.company-name::after{content:"";width:36px;height:1px}
.sub{margin:0 0 14px;font-size:15px;line-height:1.5;color:var(--clock-muted)}
.field{gap:6px;margin:12px 0 0;font-size:14px;font-weight:900;color:var(--clock-muted)}
input{height:50px;min-height:50px;padding:0 14px;border:2px solid #f5f5f4;border-radius:18px;background:#fafaf9;font-size:14px;font-weight:900;color:#44403c}
input::placeholder{color:#a8a29e;opacity:1}.remember{margin:12px 0 0;font-size:14px;font-weight:900;color:var(--clock-muted)}
.remember input{width:18px;height:18px;min-height:18px;padding:0}.login-submit{margin-top:14px;min-height:48px;border:0;border-radius:18px;font-size:16px;font-weight:900;background:#1f2937}.login-submit:hover:not(:disabled){background:var(--clock-orange)}
.button{font-weight:900}.punch-button{min-height:50px;font-size:14px;border-radius:15px;background:#1f2937;border-color:#1f2937}.punch-button:hover:not(:disabled){background:var(--clock-orange);border-color:var(--clock-orange)}
.passkey-button{width:100%;border:0;border-radius:18px;min-height:48px;margin-top:10px;padding:8px 16px;background:var(--clock-orange-soft);color:var(--clock-orange-dark);font-size:16px;font-weight:900;line-height:1.35;display:inline-flex;align-items:center;justify-content:center;gap:6px;white-space:normal}
.passkey-button svg{width:20px;height:20px;flex:0 0 20px}.passkey-button:hover:not(:disabled){background:#ffedd5}.passkey-button:disabled{background:#f5f5f4;color:#a8a29e;opacity:1}
.passkey-link-button{width:100%;border:0;background:transparent;color:var(--clock-orange-dark);min-height:44px;margin-top:6px;padding:0 8px;font-size:13px;font-weight:900;text-decoration:underline;text-underline-offset:3px}
.status{min-height:22px;font-size:14px;line-height:1.5;font-weight:700}.status.error{font-weight:900}.passkey-status{color:#a8a29e}.passkey-panel .status{color:#78716c}.shift-head h3{font-weight:900}.shift p{font-size:14px;line-height:1.45}.tag{font-weight:900}.header-actions{font-size:14px}.header-actions strong{flex-basis:100%}
@media(max-width:600px){input{font-size:16px}.header-actions .button{flex:1}.passkey-link-button{min-height:44px}}
@media(max-width:380px){main{padding-inline:12px}h1{font-size:26px}.company-name{grid-template-columns:32px minmax(0,1fr) 32px;gap:6px;font-size:11px}.company-name::after{width:32px}.company-name img{width:32px;height:32px}}

.version-tag{margin:4px 0 14px;color:#d6a074;font-size:12px;font-weight:900;line-height:1.3}.clock-login-panel>.version-tag{text-align:center}

.status:empty{display:none}

@media(max-width:600px){.date-bar{grid-template-columns:44px minmax(0,1fr) 44px;gap:8px}.date-bar [data-today]{grid-column:1/-1;min-height:44px}.header-actions .button{min-width:0;padding-inline:8px;white-space:nowrap}}

/* After-login layout follows the personnel attendance source clock.html.
   Scoped so the accepted login controls and their mount remain unchanged. */
.clock-workspace .title-row{display:grid;grid-template-columns:58px minmax(0,1fr);gap:12px;align-items:center;margin-bottom:16px}
.clock-workspace .brand-mark{width:58px;height:58px;border-radius:22px;background:#fff7ed;color:#f97316;display:grid;place-items:center}
.clock-workspace .brand-mark svg{width:30px;height:30px}.clock-workspace .title-row-copy{min-width:0}.clock-workspace h1{margin:0 0 4px;font-size:30px;font-weight:900;line-height:1.15}.clock-workspace .title-row .sub{margin:0}.clock-workspace .version-tag{margin:4px 0 0}
.clock-workspace svg{width:18px;height:18px;flex:0 0 18px;vertical-align:middle}
.clock-workspace .row{display:flex;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:2px solid #f5f5f4;font-size:16px;line-height:1.5}
.clock-workspace .label{color:#a8a29e;white-space:nowrap;font-weight:900}.clock-workspace .value{min-width:0;font-weight:900;text-align:right;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}
.clock-workspace .passkey-panel .status{color:#78716c}.clock-workspace .passkey-link-button{min-height:34px}
.clock-workspace .logout{width:100%;border:0;border-radius:14px;background:#f5f5f4;color:#57534e;min-height:42px;margin-top:14px;padding:0 14px;font-size:16px;font-weight:900;display:inline-flex;align-items:center;justify-content:center;line-height:1}
.clock-workspace .clock-panel-heading{display:flex;align-items:center;justify-content:space-between;gap:8px}.clock-workspace .clock-panel-heading .sub{display:flex;align-items:center;gap:6px}
.clock-workspace .controls{display:grid;gap:10px;margin-bottom:12px}.clock-workspace .segmented{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.clock-workspace .date-controls{display:grid;grid-template-columns:44px minmax(0,1fr) 44px;gap:8px;align-items:center}
.clock-workspace .date-controls button,.clock-workspace .today-row button,.clock-workspace .segmented button{border:2px solid #f5f5f4;border-radius:18px;min-height:48px;padding:0 8px;font-size:16px;font-weight:900;color:#78716c;background:#fafaf9;display:flex;align-items:center;justify-content:center;gap:6px;line-height:1.3}
.clock-workspace .segmented button{border:0}.clock-workspace .segmented .active{background:#f97316;color:white;box-shadow:0 8px 15px -7px #f9731666}
.clock-workspace .date-label{position:relative;display:grid;place-items:center;min-height:48px;border-radius:18px;background:#fff7ed;color:#ea580c;font-size:16px;font-weight:900;line-height:1.4;text-align:center;padding:6px 4px;overflow:hidden;cursor:pointer}
.clock-workspace .date-label input{position:absolute;inset:0;width:100%;height:100%;min-height:0;margin:0;padding:0;opacity:0;cursor:pointer}.clock-workspace .date-label:focus-within{outline:3px solid #60a5fa;outline-offset:2px}
.clock-workspace .date-label input::-webkit-calendar-picker-indicator{position:absolute;inset:0;width:100%;height:100%;margin:0;padding:0;cursor:pointer}
.clock-workspace .today-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.clock-workspace .schedule-list{display:grid;gap:10px}.clock-workspace .schedule{width:100%;min-width:0;border:2px solid #f5f5f4;border-radius:22px;background:#fff;padding:14px;text-align:left}
.clock-workspace .schedule-main{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;font-weight:900}.clock-workspace .client-name{min-width:0;color:#1f2937;font-size:18px;line-height:1.25;overflow-wrap:anywhere}
.clock-workspace .status-pill{border-radius:999px;padding:4px 10px;background:#f5f5f4;color:#57534e;font-size:12px;font-weight:900;white-space:nowrap}.clock-workspace .status-pill.done{background:#dcfce7;color:#166534}.clock-workspace .status-pill.warn{background:#fef3c7;color:#92400e}
.clock-workspace .meta{margin-top:6px;color:#a8a29e;font-size:14px;line-height:1.45;overflow-wrap:anywhere;font-weight:700}.clock-workspace .punch-times{margin-top:8px;font-size:12px}
.clock-workspace .schedule-clock-actions{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.08fr);gap:7px;margin-top:12px;padding-top:12px;border-top:2px solid #fed7aa}
.clock-workspace .clock-next-state{min-width:0;min-height:50px;padding:7px 12px;border:1px solid #fed7aa;border-left:5px solid #f97316;border-radius:10px;display:grid;align-content:center;gap:1px;background:#fff7ed;color:#ea580c;user-select:none}.clock-workspace .clock-next-state.leave{border-color:#bbf7d0;border-left-color:#16a34a;background:#f0fdf4;color:#166534}.clock-workspace .clock-next-state.blocked{border-color:#e7e5e4;border-left-color:#a8a29e;background:#f5f5f4;color:#78716c}.clock-workspace .clock-next-state small{font-size:11px;font-weight:800;color:#78716c}.clock-workspace .clock-next-state strong{font-size:15px;font-weight:900;line-height:1.4}
.clock-workspace .clock-submit-button{min-width:0;min-height:50px;margin:0;padding:0 10px;border:2px solid #1f2937;border-radius:15px;background:#1f2937;color:white;font-size:14px;font-weight:900;display:flex;align-items:center;justify-content:center;gap:5px}.clock-workspace .clock-submit-button:hover:not(:disabled){border-color:#f97316;background:#f97316}.clock-workspace .clock-submit-button:disabled{border-color:#e7e5e4;background:#e7e5e4;color:#a8a29e;opacity:1}
.clock-workspace .month-calendar{display:grid;gap:8px}.clock-workspace .month-weekdays,.clock-workspace .month-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}.clock-workspace .month-weekday{color:#a8a29e;font-size:12px;font-weight:900;text-align:center}
.clock-workspace .month-day{position:relative;border:2px solid #f5f5f4;border-radius:18px;min-width:0;min-height:82px;padding:8px 5px;background:#fff;color:#44403c;display:grid;align-content:start;gap:5px;text-align:center}.clock-workspace .month-day.has-schedules{border-color:#fed7aa;background:#fff7ed}.clock-workspace .month-day.selected{border-color:#f97316;box-shadow:0 8px 18px -8px #f9731673}.clock-workspace .month-day.outside{opacity:.42;background:#fafaf9}.clock-workspace .day-number{color:#1f2937;font-size:15px;font-weight:900;line-height:1}.clock-workspace .day-summary{display:flex;align-items:baseline;justify-content:center;gap:1px;color:#ea580c;font-weight:900;line-height:1;white-space:nowrap}.clock-workspace .day-summary strong{font-size:20px}.clock-workspace .day-summary span{font-size:11px}.clock-workspace .day-status-row{display:flex;justify-content:center;gap:3px;min-height:18px;overflow:hidden}.clock-workspace .day-status-chip{border-radius:999px;padding:2px 4px;background:#dcfce7;color:#166534;font-size:9px;font-weight:900;line-height:1.1;white-space:nowrap}.clock-workspace .month-empty{min-height:18px;color:#a8a29e;font-size:14px;font-weight:900;line-height:1}
.clock-workspace .month-totals{margin-top:12px;border:1px solid #d6d3d1;border-radius:6px;overflow:hidden;background:#fff}.clock-workspace .month-totals-title{display:flex;align-items:center;gap:7px;min-height:40px;padding:8px 12px;border-bottom:1px solid #d6d3d1;background:#f5f5f4;color:#292524;font-size:14px;font-weight:900}.clock-workspace .month-total{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:16px;min-height:44px;padding:9px 12px;border-bottom:1px solid #e7e5e4}.clock-workspace .month-total:last-child{border-bottom:0}.clock-workspace .month-total-label{color:#a8a29e;font-size:13px;font-weight:900;line-height:1.4}.clock-workspace .month-total-value{color:#1c1917;font-size:15px;font-weight:900;line-height:1.4;text-align:right;font-variant-numeric:tabular-nums}
.clock-workspace .clock-history{margin-top:14px;border-top:2px solid #f5f5f4;padding-top:12px}.clock-workspace .clock-history summary{font-size:14px;font-weight:900;color:#78716c;cursor:pointer;min-height:36px}
@media(max-width:380px){.clock-workspace .title-row{grid-template-columns:52px minmax(0,1fr);gap:9px}.clock-workspace .brand-mark{width:52px;height:52px;border-radius:18px}.clock-workspace h1{font-size:26px}.clock-workspace .row{font-size:14px}.clock-workspace .date-label{font-size:14px}.clock-workspace .schedule-main{display:grid}.clock-workspace .status-pill{justify-self:start}.clock-workspace .schedule-clock-actions{grid-template-columns:minmax(0,1fr)}.clock-workspace .month-weekdays,.clock-workspace .month-days{gap:3px}.clock-workspace .month-day{padding-inline:2px;border-radius:12px}.clock-workspace .month-total{gap:8px;padding-inline:8px}.clock-workspace .month-total-value{font-size:14px}}
@media(pointer:coarse){.clock-workspace .logout,.clock-workspace .passkey-link-button{min-height:44px}}

/* Current personnel clock reference: shared, centered title outside the panels. */
.company-name .company-logo-mark{width:36px;height:25px;flex:0 0 36px;overflow:hidden;display:block}
.company-name .company-logo-mark img{display:block;width:44px;max-width:none;height:auto;object-fit:initial;transform:translate(-4px,-5px);mix-blend-mode:multiply}
.company-name .company-name-text{min-width:0;white-space:nowrap}
.clock-title-row,.clock-workspace .clock-title-row{display:grid;grid-template-columns:58px minmax(0,1fr) 58px;align-items:center;gap:12px;margin-bottom:16px}
.clock-title-row::after{content:"";width:58px;height:1px}
.clock-title-row .brand-mark,.clock-workspace .clock-title-row .brand-mark{width:58px;height:58px;margin:0;border-radius:22px;background:#fff7ed;color:#f97316;display:grid;place-items:center}
.clock-title-row .brand-mark svg,.clock-workspace .clock-title-row .brand-mark svg{width:30px;height:30px;flex:none}
.clock-title-row .title-row-copy{min-width:0;flex:1;text-align:center;overflow-wrap:anywhere}
.clock-title-row h1,.clock-workspace .clock-title-row h1{margin:0 0 8px;font-size:30px;line-height:1.15;letter-spacing:0;font-weight:900;color:#1f2937}
.clock-title-row .sub,.clock-workspace .clock-title-row .sub{margin:0;color:#a8a29e;font-size:15px;line-height:1.5;font-weight:700}
.clock-title-row .version-tag,.clock-workspace .clock-title-row .version-tag{margin:4px 0 0;color:#d6a074;font-size:12px;line-height:1.3;font-weight:900}
.clock-login-panel{padding:18px;border-radius:34px}
.clock-login-panel .field{margin:12px 0 0;gap:6px;font-size:14px;font-weight:900}
.clock-login-panel .remember{margin:12px 0 0;gap:8px;font-size:14px;font-weight:900;cursor:pointer}
.clock-login-panel .login-submit{padding:0 14px;min-height:48px;font-size:16px;font-weight:900;line-height:1;gap:6px}
.clock-login-panel .login-submit svg{width:18px;height:18px;flex:0 0 18px}
.clock-login-panel .passkey-button{padding:0 16px;min-height:48px;font-size:16px;line-height:1;gap:6px;white-space:nowrap}
@media(max-width:380px){.company-name .company-logo-mark{width:32px;flex-basis:32px}.clock-title-row,.clock-workspace .clock-title-row{grid-template-columns:52px minmax(0,1fr) 52px;gap:9px}.clock-title-row::after{width:52px}.clock-title-row .brand-mark,.clock-workspace .clock-title-row .brand-mark{width:52px;height:52px;border-radius:18px}.clock-title-row .brand-mark svg,.clock-workspace .clock-title-row .brand-mark svg{width:27px;height:27px}.clock-title-row h1,.clock-workspace .clock-title-row h1{font-size:26px}}

@media(min-width:768px){main{padding-top:24px}}

/* Same verified-device state as the personnel attendance page. */
.clock-workspace .passkey-panel .status.device-enabled{color:#16a34a;font-weight:700}

.clock-startup-status{text-align:center;color:#78716c;margin:24px 0}

.clock-recovery{background:#fff7ed;border:1px solid #fed7aa;border-radius:14px;padding:12px;margin:12px 0;color:#9a3412;font-size:14px;font-weight:700}.clock-recovery p{margin:0 0 8px}.reconnect-button{width:100%;margin-top:8px}.clock-login-panel input:disabled{opacity:1}

/* Personnel-clock loading card, including modal submissions and version reloads. */
#clock-loading{width:100%;max-width:none;height:100%;max-height:none;margin:0;padding:20px;border:0;background:rgba(255,249,242,.88);backdrop-filter:blur(2px);color:#44403c}
#clock-loading[open]{display:grid;place-items:center}
#clock-loading::backdrop{background:transparent}
.clock-loading-card{width:min(100%,320px);padding:22px 18px;border:4px solid #fde6d2;border-radius:28px;background:#fff;display:grid;justify-items:center;gap:12px;text-align:center;font-weight:900;box-shadow:0 20px 44px -24px #f9731673}
#clock-loading strong{font-size:15px;line-height:1.6}
.clock-loading-card [data-loading-recovery] p{font-size:13px;line-height:1.6;margin:0 0 10px}
