:root{--primary:#00677f;--primary-container:#b8eaff;--on-primary-container:#001f28;--surface:#fbfdfd;--outline:#70797c;--ink:#23333d;--muted:#718089;--line:#e7ecef;--bg:#f6f8fc;--sidebar-width:254px}
*{box-sizing:border-box}body{font-family:Inter,"Segoe UI","Microsoft JhengHei",sans-serif;color:var(--ink);font-size:14px;margin:0;background:var(--bg)}[hidden]{display:none!important}a{text-decoration:none;color:var(--primary)}button,input,select,textarea{font:inherit}button,a,input,select,textarea{touch-action:manipulation}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #79bbca;outline-offset:3px}.brand{display:flex;align-items:center;color:var(--ink);white-space:nowrap}.company-logo{width:39px;height:39px;object-fit:contain;flex-shrink:0}.company-wordmark{display:flex;flex-direction:column;margin-left:10px;gap:5px}.company-wordmark strong{font-size:22px;line-height:1;letter-spacing:.3px}.company-wordmark small{font-size:14px;letter-spacing:1px;color:var(--muted)}h1,h2,h3,p{margin-top:0}h1{font-size:27px;letter-spacing:-.5px;font-weight:650}h2{font-size:17px;font-weight:650}h3{font-size:14px;font-weight:600}.muted{color:var(--muted)}.eyebrow{font-size:14px;letter-spacing:2px;color:var(--primary);font-weight:650}
.btn{font-size:14px;border-radius:24px;font-weight:600;padding:11px 20px}.btn-primary{--bs-btn-bg:var(--primary);--bs-btn-border-color:var(--primary);--bs-btn-hover-bg:#005366;--bs-btn-hover-border-color:#005366;--bs-btn-active-bg:#00485a;--bs-btn-active-border-color:#00485a;--bs-btn-disabled-bg:#8baeb7;--bs-btn-disabled-border-color:#8baeb7}.btn-quiet{border:1px solid #d7e1e6;background:white;color:var(--primary)}.btn-quiet:hover{background:#edf5f8;color:var(--primary)}.icon-button{width:40px;height:40px;display:inline-grid;place-items:center;border:0;border-radius:50%;background:transparent;color:#52626e;flex-shrink:0}.icon-button:hover{background:#e4eaf0}.icon{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round;display:block}.form-control,.form-select{min-height:44px;border-radius:11px;border-color:#dbe3e8;background:#fff;font-size:14px}.form-control:focus,.form-select:focus{border-color:#4c93a4;box-shadow:0 0 0 3px #00677f10}.field-label{font-size:14px;font-weight:600;display:block;margin:19px 0 8px}textarea.form-control{min-height:110px}.field-hint{font-size:14px;color:var(--muted);line-height:1.8;margin-top:12px}.form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:25px}.notice{border-radius:13px;background:#e5f4ec;border:1px solid #d0e8db;color:#2a6b50;padding:13px 16px;font-size:14px;margin-bottom:20px}.notice.error{background:#fdf0ee;color:#a13e34;border-color:#f3d9d4}.status-pill{display:inline-flex;align-items:center;gap:5px;border-radius:6px;font-size:14px;padding:5px 9px;white-space:nowrap;background:#edf1f6;color:#617283}.status-pill.approved,.status-pill.active,.status-pill.in{background:#e5f3ec;color:#267155}.status-pill.pending{background:#fff4dc;color:#956c17}.status-pill.rejected{background:#fce9e7;color:#a64339}.status-pill.out{background:#eaf0fb;color:#5876a4}.status-pill.overtime{background:#f0e9ff;color:#7959a8}.status-pill.leave{background:#fff0dd;color:#94641a}.status-pill.trip{background:#e5effc;color:#4c719f}.status-pill.correction{background:#e1f2f5;color:#337685}
.surface{background:white;border:1px solid var(--line);border-radius:22px;padding:25px;box-shadow:0 2px 8px #243d4d02}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:20px}.section-heading h2{margin:0}.section-heading p{margin:8px 0 0;font-size:14px;color:var(--muted)}.empty-state{text-align:center;padding:32px 12px;color:var(--muted);font-size:14px}.avatar{width:33px;height:33px;display:grid;place-items:center;background:#d3eaf0;border:3px solid white;border-radius:50%;color:var(--primary);font-size:14px;font-weight:650}.table{--bs-table-bg:transparent;--bs-table-color:var(--ink);font-size:14px;margin-bottom:0}.table th{font-size:14px;color:#72818a;font-weight:500;background:#f7f9fc;white-space:nowrap;padding:14px 13px!important}.table td{padding:15px 13px!important;border-color:#edf0f3;vertical-align:middle;white-space:nowrap}.table .btn{padding:6px 13px;font-size:14px}.dt-container{font-size:14px}.dt-container>.row{margin-top:14px!important}.dt-search input{min-height:34px}.pagination{--bs-pagination-active-bg:var(--primary);--bs-pagination-active-border-color:var(--primary);--bs-pagination-color:#657783}.dt-layout-table{overflow:auto}.table-responsive{min-width:0}.summary-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-bottom:24px}.summary-card{background:white;border:1px solid var(--line);border-radius:18px;padding:21px 24px}.summary-label{font-size:14px;color:var(--muted)}.summary-value{font-size:32px;font-weight:600;letter-spacing:-1px;margin-top:12px}.summary-value small{font-size:14px;font-weight:400;margin-left:6px;letter-spacing:0;color:var(--muted)}.filters{display:flex;align-items:end;flex-wrap:wrap;gap:13px;margin-bottom:23px}.filters>div{min-width:140px}.filters .field-label{margin-top:0}.filters .form-select{min-width:155px}.chart-wrap{min-height:245px;overflow:hidden}#activity-chart,#report-chart{max-width:100%}
.app-sidebar{position:fixed;inset:0 auto 0 0;width:var(--sidebar-width);background:var(--bg);display:flex;flex-direction:column;padding:24px 13px 20px;z-index:40;transition:width .2s,transform .2s}.app-sidebar .brand{margin:0 12px 28px}.portal-label{margin:0 20px 24px;padding:8px 12px;background:#e7eff3;color:#4b707c;border-radius:8px;align-self:flex-start;font-size:14px;letter-spacing:1px;white-space:nowrap}#app-nav{overflow-y:auto;overflow-x:hidden;flex:1}.nav-group{font-size:14px;letter-spacing:1.2px;color:#8897a0;padding:16px 21px 12px;white-space:nowrap}.nav-link{display:flex;align-items:center;gap:15px;height:46px;border-radius:0 25px 25px 0;padding:0 21px;margin:3px 0;color:#596972;position:relative;white-space:nowrap;font-size:14px}.nav-link .icon{width:19px;flex-shrink:0}.nav-link:hover{background:#e9eef3;color:var(--ink)}.nav-link.active{background:#d3eaf1;color:#00586e;font-weight:650}.sidebar-foot{display:flex;align-items:center;gap:9px;padding:20px 20px 0;font-size:14px;color:#83939c;white-space:nowrap}.connection-dot{width:6px;height:6px;border-radius:50%;background:#72ab95;flex-shrink:0}.app-main{margin-left:var(--sidebar-width);min-height:100vh;display:flex;flex-direction:column;transition:margin-left .2s}.app-topbar{height:80px;padding:16px 30px 16px 12px;display:flex;align-items:center;gap:15px;position:sticky;top:0;background:var(--bg);z-index:30}.feature-search{height:46px;border-radius:25px;background:#eaf0f5;display:flex;align-items:center;gap:12px;padding:0 18px;max-width:530px;flex:1;position:relative;color:#7c8c96}.feature-search input{width:100%;border:0;outline:0;background:transparent;font-size:14px;min-width:0}.feature-search input:focus-visible{outline:0}#feature-results{position:absolute;top:53px;left:0;right:0;background:white;border:1px solid var(--line);border-radius:16px;padding:9px;box-shadow:0 12px 35px #344d621c}#feature-results a,#feature-results p{display:block;padding:10px;border-radius:8px;font-size:14px;margin:0}#feature-results a:hover{background:#edf5f8}.topbar-actions{display:flex;align-items:center;gap:14px;margin-left:auto}.topbar-actions select,.language-control select{border:0;background:transparent;font-size:14px;color:#657780;padding:8px;max-width:140px}.portal-switch{font-size:14px;white-space:nowrap;border-right:1px solid #dce4e9;padding-right:15px}.app-content{padding:20px 32px 30px;flex:1;width:100%;max-width:1650px;margin:0 auto}.page-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:28px;gap:16px}.page-heading h1{margin:13px 0 9px}.page-heading p{font-size:14px;color:var(--muted);margin:0;line-height:1.8}.page-breadcrumb{font-size:14px;display:flex;gap:12px;color:#8e9da6}.page-breadcrumb span:last-child{color:#617e8b}.user-chip{background:white;border:1px solid var(--line);border-radius:24px;padding:10px 14px;color:#71838d;font-size:14px;white-space:nowrap}.app-footer{display:flex;justify-content:space-between;font-size:14px;color:#99a5ad;padding:8px 32px 22px}.sidebar-collapsed{--sidebar-width:82px}.sidebar-collapsed .company-wordmark,.sidebar-collapsed .portal-label,.sidebar-collapsed .nav-label{display:none}.sidebar-collapsed .app-sidebar .brand{margin-left:9px}.sidebar-collapsed .nav-group{font-size:0;height:28px;padding:0}.sidebar-collapsed .nav-link{padding:0;justify-content:center;border-radius:16px}.sidebar-collapsed .sidebar-foot{justify-content:center;padding:20px 0}.sidebar-scrim{position:fixed;inset:0;background:#183b4e55;border:0;z-index:35}
.clock-layout{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(250px,1fr);gap:24px}.punch-surface{background:white;border:1px solid var(--line);border-radius:26px;padding:32px}.punch-top{display:flex;align-items:center;justify-content:space-between;font-size:14px;color:var(--muted)}.clock-face{text-align:center;margin:35px 0 26px}.clock-display{font-size:66px;font-variant-numeric:tabular-nums;letter-spacing:2px;font-weight:500;color:#20454f;line-height:1.3}.clock-date{font-size:14px;color:#80939a;margin-top:8px}.clock-zone{font-size:14px;color:#91a2aa;margin-top:11px;letter-spacing:.5px}.punch-actions{display:flex;gap:14px;margin:25px 0 17px}.punch-action{flex:1;padding:18px 12px;border-radius:16px;font-size:15px;display:flex;align-items:center;justify-content:center;gap:10px}.punch-note{font-size:14px;color:#92a0a8;text-align:center}.today-records{display:grid;grid-template-columns:1fr 1fr;gap:15px;margin-top:26px;border-top:1px solid var(--line);padding-top:24px}.today-records small{font-size:14px;color:var(--muted)}.today-records strong{display:block;font-size:20px;margin-top:9px;font-weight:500}.quick-card{margin-bottom:22px}.quick-link{display:flex;align-items:center;gap:14px;padding:15px 0;color:#455e68;border-bottom:1px solid #f0f3f5;font-size:14px}.quick-link:last-child{border:0}.quick-link .icon{color:#6b98a7}.quick-link span:last-child{margin-left:auto;color:#97a6b1}.clock-welcome{padding:26px;border-radius:22px;background:#e4f0f4;line-height:1.9;font-size:14px;color:#5a7d8a}.clock-welcome strong{display:block;color:#25576a;font-size:16px;margin:12px 0}.request-layout{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:24px}.request-aside{background:#edf3f7;border-radius:20px;padding:24px;color:#6e828e;font-size:14px;line-height:1.9;align-self:start}.request-aside .icon{width:29px;height:29px;color:#6c99ac;margin-bottom:17px}
.calendar-layout{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:22px}.calendar-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}.calendar-header h2{margin:0;font-size:19px}.calendar-controls{display:flex;gap:5px}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.calendar-weekday{text-align:center;padding:12px 4px;font-size:14px;color:#8a99a4}.calendar-day{position:relative;border:1px solid #edf1f4;border-right:0;border-bottom:0;background:white;min-height:98px;padding:10px 5px;display:flex;flex-direction:column;align-items:center;gap:7px;color:#526772;font-size:14px}.calendar-day:nth-child(7n){border-right:1px solid #edf1f4}.calendar-day:nth-last-child(-n+7){border-bottom:1px solid #edf1f4}.calendar-day:hover{background:#f1f7fa}.calendar-day.outside{background:#fafbfd;color:#b5bfc6}.calendar-day.selected{background:#e8f4f8;box-shadow:inset 0 0 0 1px #6dabbd}.calendar-day.today .day-number{background:var(--primary);color:white;border-radius:50%;width:24px;height:24px;display:grid;place-items:center}.calendar-dots{display:flex;gap:3px;justify-content:center;flex-wrap:wrap}.calendar-dots i{width:5px;height:5px;border-radius:50%;background:#00677f}.calendar-dots i.leave{background:#dfac53}.calendar-dots i.overtime{background:#9776c0}.calendar-dots i.trip{background:#7b9fcc}.calendar-day .day-count{font-size:14px;color:#6d8d9d}.calendar-legend{display:flex;gap:15px;flex-wrap:wrap;font-size:14px;color:#7f929c;margin-top:19px}.calendar-legend span{display:flex;align-items:center;gap:6px}.calendar-legend i{width:6px;height:6px;border-radius:50%}.day-event{padding:14px 0;border-bottom:1px solid var(--line)}.day-event p{font-size:14px;color:var(--muted);margin:9px 0 0;line-height:1.7}
 .dialog-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.dialog-heading h2{margin:0}.detail-list{margin-top:20px}.detail-list div{display:grid;grid-template-columns:120px 1fr;gap:18px;padding:10px 0;border-bottom:1px solid #edf1f4;font-size:14px}.detail-list dt{font-weight:500;color:var(--muted)}.detail-list dd{margin:0;overflow-wrap:anywhere;white-space:pre-wrap}.history-entry{padding:12px 14px;border-left:2px solid #c6e1e9;margin:15px 0}.history-entry strong{font-size:14px}.history-entry p{font-size:14px;color:var(--muted);margin:7px 0;white-space:pre-wrap}.org-directory{list-style:none;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:15px;margin:0}.org-directory>li{background:#f4f8fa;border-radius:15px;padding:19px;font-size:14px}.org-directory ul{list-style:none;padding-left:18px;margin-top:15px;border-left:1px solid #cce0e6}.org-directory li li{margin:11px 0;color:#657e89}.org-directory strong{font-size:14px}
.login-body{background:#f7f9fc;min-height:100vh;display:flex;flex-direction:column}.login-top{padding:32px 6%;display:flex;align-items:center;justify-content:space-between}.login-layout{display:grid;grid-template-columns:1.1fr 1fr;gap:8%;width:100%;max-width:1120px;margin:auto;padding:30px 30px 55px;align-items:center}.login-company{padding:12px 0}.login-company h1{font-size:53px;font-weight:650;letter-spacing:-2.2px;line-height:1.25;margin:26px 0 23px}.login-company h1 span{color:#64818c}.login-company>p{color:#80939b;font-size:14px;letter-spacing:3px}.brand-art{height:250px;position:relative;max-width:430px;margin-top:35px}.art-orbit{position:absolute;border:1px solid #d6e7ed;border-radius:50%;inset:20px 20px;transform:rotate(-23deg)}.art-orbit.two{inset:15px 110px;transform:rotate(30deg)}.art-core{position:absolute;left:40%;top:70px;border-radius:24px;background:#d5ebf2;color:#00677f;display:grid;place-items:center;font-size:43px;font-weight:700;width:90px;height:90px;box-shadow:0 14px 25px #2359760a;transform:rotate(-8deg)}.art-label{position:absolute;background:white;border:1px solid #e5edf1;box-shadow:0 4px 16px #304f6606;border-radius:11px;padding:13px 17px;color:#698793;font-size:14px;letter-spacing:1px}.art-label span{margin-left:20px;font-size:14px;color:#9db0b9}.art-label.taiwan{right:12px;top:23px}.art-label.vietnam{left:0;bottom:18px}.company-tag{font-size:14px;letter-spacing:2px;color:#9aafb9;display:block;margin-top:24px}.login-card{background:white;border:1px solid #e9eef2;box-shadow:0 12px 45px #29475406;border-radius:28px;padding:36px 38px}.tiny-mark{display:inline-grid;place-items:center;width:36px;height:36px;background:#edf5f7;color:#00677f;border-radius:11px;font-size:18px;font-weight:650;margin-bottom:21px}.login-card h2{font-size:25px;margin-bottom:10px}.login-card-heading>p{font-size:14px;color:#8a98a1;line-height:1.8;margin-bottom:25px}.portal-options{border:0;margin:0 0 23px;padding:0}.portal-options legend{font-size:14px;color:#8a99a1;margin-bottom:11px}.portal-option{display:flex;align-items:center;gap:10px;border:1px solid #e3eaf0;border-radius:13px;padding:13px 15px;margin:9px 0;cursor:pointer}.portal-option:has(input:checked){background:#f0f8fa;border-color:#81b1be}.portal-option input{position:absolute;opacity:0;pointer-events:none}.portal-option:has(input:focus-visible){outline:3px solid #79bbca}.portal-option strong{display:block;font-size:14px;font-weight:600;color:#4e707d}.portal-option small{display:block;font-size:14px;color:#8a9da6;margin-top:5px}.radio-dot{margin-left:auto;width:15px;height:15px;border-radius:50%;border:1px solid #c9d7de}.portal-option input:checked~.radio-dot{border:4px solid #00677f}.password-wrap{position:relative}.password-wrap input{padding-right:60px}.password-wrap button{position:absolute;right:10px;top:14px;background:none;border:0;font-size:14px;color:var(--primary)}.login-submit{width:100%;height:46px;margin-top:25px;border-radius:12px}.login-help{font-size:14px;color:#91a1aa;text-align:center;line-height:1.8;margin:20px 0 0}.login-footer{display:flex;justify-content:space-between;gap:20px;padding:20px 6% 25px;font-size:14px;color:#a0adb5}.login-card .notice{font-size:14px}
@media(max-width:1199px){:root{--sidebar-width:224px}.app-content{padding:20px 22px}.app-topbar{padding-right:20px}.topbar-actions{gap:8px}.calendar-layout{grid-template-columns:1fr}.calendar-day{min-height:90px}.request-layout{grid-template-columns:1fr}.request-aside{display:none}.login-layout{gap:5%;padding:20px 35px 45px}.login-company h1{font-size:44px}.login-card{padding:30px}}
@media(max-width:767px){:root{--sidebar-width:254px}.app-sidebar,.sidebar-collapsed .app-sidebar{width:254px;transform:translateX(-100%);box-shadow:10px 0 40px #152d4415}.sidebar-open .app-sidebar{transform:translateX(0)}.app-main,.sidebar-collapsed .app-main{margin-left:0}.sidebar-collapsed .company-wordmark{display:flex}.sidebar-collapsed .portal-label,.sidebar-collapsed .nav-label{display:block}.sidebar-collapsed .nav-group{font-size:14px;height:auto;padding:16px 21px 12px}.sidebar-collapsed .nav-link{padding:0 21px;justify-content:start;border-radius:0 25px 25px 0}.sidebar-collapsed .sidebar-foot{justify-content:start;padding:20px 20px 0}.app-topbar{height:70px;padding:12px 15px;gap:7px}.feature-search{height:39px;padding:0 12px}.feature-search input{font-size:14px}.feature-search>.icon{display:none}.topbar-actions{gap:3px}.topbar-actions select{font-size:14px;padding:6px;max-width:100px}.topbar-actions .avatar,.portal-switch{display:none}.app-content{padding:15px 16px 25px}.page-heading{margin-bottom:22px}.page-heading h1{font-size:24px}.user-chip{display:none}.app-footer{font-size:14px;padding:10px 16px 22px;gap:10px}.clock-layout{grid-template-columns:1fr;gap:18px}.punch-surface{padding:22px}.clock-display{font-size:52px;letter-spacing:1px}.punch-action{font-size:14px;padding:17px 8px}.clock-face{margin:30px 0}.today-records strong{font-size:18px}.quick-card{margin-bottom:16px}.clock-welcome{display:none}.surface{padding:18px;border-radius:18px}.summary-grid{gap:8px;margin-bottom:18px}.summary-card{padding:16px 12px}.summary-label{font-size:14px}.summary-value{font-size:27px}.summary-value small{font-size:14px}.calendar-day{min-height:66px;padding:7px 2px;font-size:14px}.calendar-day .day-count{display:none}.calendar-legend{gap:10px}.calendar-header h2{font-size:16px}.calendar-controls .icon-button{width:30px}.filters{gap:10px}.filters>div{min-width:130px;flex:1}.filters .form-select{min-width:0}.section-heading{flex-wrap:wrap}.detail-list div{grid-template-columns:90px 1fr;gap:10px}.app-dialog{padding:22px}.login-top{padding:25px 24px}.login-top .company-wordmark strong{font-size:20px}.login-layout{display:block;padding:20px 20px 30px;max-width:500px;margin:0 auto}.login-company{display:none}.login-card{padding:27px;border-radius:24px}.login-card-heading>p{margin-bottom:22px}.login-footer{margin-top:auto;flex-direction:column;text-align:center;gap:7px;padding:10px 20px 25px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* MaxGreenVerse 配色：亮青 #03D7F4、紫 #3F1DB1。白底搭配深青文字維持清楚對比。 */
:root{--primary:#00677f;--primary-container:#e3f9fd;--on-primary-container:#003d4d;--surface:#fff;--bg:#fff;--ink:#20343a;--muted:#52636b;--line:#dce5e9;--accent:#03d7f4;--secondary:#3f1db1;--sidebar-width:270px}
body{font-size:16px;line-height:1.6}h1{font-size:30px;font-weight:700}h2{font-size:22px}h3{font-size:18px}
.btn,.form-control,.form-select,.field-label,.table,.table th,.table .btn,.dt-container{font-size:16px}
.btn{min-height:44px;border-radius:14px}.btn-primary{--bs-btn-hover-bg:#005366;--bs-btn-active-bg:#004557}.btn-quiet{border-color:#aec3cc}.btn-danger{background:#b42332;border-color:#b42332;color:white}
.form-control,.form-select{min-height:48px;border-color:#95a8b2}.field-label{font-weight:650}.field-hint,.page-heading p,.section-heading p,.notice,.empty-state{font-size:15px;color:var(--muted)}
.table th{color:#29434c;background:#eaf7fa;font-weight:650}.table td{border-color:var(--line)}.table .btn{font-size:14px;padding:8px 12px}.dt-search input{min-height:44px}.table-responsive{max-width:100%}
.surface,.punch-surface,.summary-card{box-shadow:0 3px 14px #20343a08;border-color:var(--line)}.summary-card{border-top:4px solid var(--primary)}.summary-card:nth-child(2){border-top-color:var(--secondary)}.summary-card:nth-child(3){border-top-color:#b36800}.summary-label{font-size:16px;color:#445760}.summary-value{font-size:36px}.summary-value small{font-size:15px}
.app-sidebar{background:#f4f8fa;border-right:1px solid var(--line)}.app-topbar{background:#fff;border-bottom:1px solid var(--line)}.feature-search{background:#f1f5f7;border:1px solid var(--line)}.feature-search input{font-size:16px}
.nav-link{font-size:16px;height:50px;color:#344b55}.nav-group{color:#566b75;font-size:14px;letter-spacing:0}.nav-link.active{background:#d9f6fb;color:#00495b;border-left:4px solid var(--primary)}.nav-link:hover{background:#e6f4f7}.portal-label{font-size:15px;background:#d9f6fb;color:#00495b;font-weight:650;letter-spacing:0}
body[data-portal="admin"] .portal-label{background:#ece6ff;color:var(--secondary)}body[data-portal="admin"] .nav-link.active{background:#ece6ff;color:var(--secondary);border-left-color:var(--secondary)}
.company-wordmark small{font-size:14px;letter-spacing:0}.topbar-actions select,.portal-switch,.user-chip{font-size:14px}.page-breadcrumb{color:#566d77}.app-footer{color:#5d717a}
.status-pill{font-size:14px;font-weight:600;padding:5px 10px}.status-pill.approved,.status-pill.active,.status-pill.in{background:#daf3e7;color:#165b39}.status-pill.pending{background:#fff0c8;color:#755000}.status-pill.rejected{background:#ffe5e7;color:#912033}.status-pill.out{background:#e6eafb;color:#294b8a}
.punch-top,.clock-date,.quick-link{font-size:16px}.clock-zone,.punch-note{font-size:14px;color:#52636b}.punch-action{font-size:22px;min-height:80px}.punch-action#clock-out{border:2px solid var(--secondary);color:var(--secondary);background:#f7f4ff}.punch-action:disabled{opacity:.45}.today-records small{font-size:16px}.today-records strong{font-size:25px}.clock-welcome{background:#eaf9fc;color:#345863}.clock-display{color:#004f62}
.calendar-day{font-size:16px}.calendar-weekday{color:#52636b}.calendar-day.selected{background:#dff8fd}.calendar-day.outside{color:#798891}.detail-list div,.history-entry strong,.history-entry p,.day-event p{font-size:16px}.org-directory>li,.org-directory strong{font-size:16px}
.modal{z-index:1060}.modal-backdrop{z-index:1050}.modal-content{border-radius:24px;border:1px solid var(--line);box-shadow:0 18px 70px #183b4e33}.modal-header{padding:22px 28px;background:#f0f9fb;border-radius:24px 24px 0 0}.modal-header h2{margin:0;font-size:22px}.modal-body{padding:24px 28px}.modal-dialog{max-width:min(1100px,calc(100% - 32px))}.modal-dialog-scrollable .modal-body{overscroll-behavior:contain}
/* CIS 圖片預留位置。替換 JPG 即可；白色透明層讓登入表單維持清楚。 */
.login-body{background:#fff;background-image:linear-gradient(#ffffffc9,#ffffffed),url('/assets/brand/company-cis.jpg');background-size:cover;background-position:center;background-attachment:fixed}
.login-top{padding:22px 5%}.login-product{font-size:15px;font-weight:650;letter-spacing:1px;color:#48616c}.language-control select{font-size:16px;border:1px solid var(--line);border-radius:12px;background:white}
.login-layout{display:block;width:100%;max-width:560px;margin:auto;padding:25px 24px 40px}.login-card{padding:36px;border:1px solid #cbdde4;box-shadow:0 12px 44px #00485a0d;border-top:5px solid var(--accent);border-radius:24px}
.login-brand{justify-content:center;margin:0 0 32px}.login-brand .company-logo{width:64px;height:64px;max-width:160px}.login-brand .company-wordmark strong{font-size:30px}.login-brand .company-wordmark small{font-size:16px}.login-card-heading{text-align:center}.login-card-heading h1{font-size:27px;margin-bottom:10px}.login-card-heading p{font-size:16px;color:#52636b;margin-bottom:24px}
.login-tabs{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:5px;background:#f0f4f7;border:1px solid #dce5e9;border-radius:16px;margin-bottom:25px}.login-tabs button{font-size:18px;font-weight:700;border:0;border-radius:12px;padding:14px 8px;background:transparent;color:#52636b;min-height:56px}.login-tabs button[aria-selected="true"]{background:var(--primary);color:white;box-shadow:0 3px 8px #00455720}.login-tabs #admin-tab[aria-selected="true"]{background:var(--secondary)}
body[data-login-portal="admin"] .login-submit{background:var(--secondary);border-color:var(--secondary)}.login-submit{height:52px;font-size:18px}.password-wrap button{font-size:14px;top:11px;min-height:28px}.login-help,.login-card .notice{font-size:14px;color:#52636b}.login-footer{font-size:14px;color:#566d77}
@media(max-width:1199px) and (min-width:768px){:root{--sidebar-width:245px}.topbar-actions{gap:7px}.feature-search{max-width:300px}.company-wordmark strong{font-size:20px}}
@media(max-width:767px){.app-sidebar,.sidebar-collapsed .app-sidebar{width:270px}.sidebar-collapsed .nav-group{font-size:14px}.app-topbar{padding:12px 10px}.feature-search input{font-size:14px}.topbar-actions select{font-size:14px}.summary-grid{grid-template-columns:1fr}.summary-card{display:flex;align-items:center;justify-content:space-between;padding:14px 18px}.summary-value{margin:0;font-size:29px}.summary-label{font-size:16px}.summary-value small{font-size:14px}.punch-action{font-size:19px;min-height:76px}.clock-display{font-size:48px}.calendar-day{font-size:15px}.calendar-header h2{font-size:18px}.calendar-controls .icon-button{width:34px}.filters>div{min-width:100%;max-width:100%}.filters .btn{flex:1}.surface{min-width:0}.modal-dialog{max-width:calc(100% - 16px);margin:8px}.modal-header,.modal-body{padding:20px}.modal-header h2{font-size:20px}.login-top{padding:16px}.login-product{font-size:12px}.login-layout{padding:16px}.login-card{padding:28px 22px}.login-brand .company-wordmark strong{font-size:26px}.login-brand .company-logo{width:48px;height:48px}.login-brand .company-wordmark small{font-size:14px}.login-footer{font-size:13px}.app-footer{font-size:13px}.section-heading>div{flex-wrap:wrap}}

/* ???????????????????????????? */
.table-filters{margin:18px 0;padding:14px 18px;border:1px solid var(--line);border-radius:16px;background:#f7fbfc}
.table-filters summary{font-size:16px;font-weight:650;color:var(--primary);cursor:pointer;min-height:32px}
.table-filters .filter-fields{margin-bottom:18px}.table-filters .field-label{margin-top:8px}.table-filters .field-hint{margin-bottom:12px}
.filter-range{display:grid;grid-template-columns:1fr 1fr;gap:10px}.filter-range>div{min-width:0}.filter-range .field-label{font-size:14px;font-weight:400}
.filter-range input{width:100%;min-width:0}.filter-range [aria-invalid=true]{border-color:#b42332;background:#fff0f1}
.admin-calendar-day{min-height:150px;align-items:stretch;text-align:left;padding:10px;gap:6px;min-width:0}
.admin-calendar-day .day-number{align-self:center}.calendar-event-chip{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px;padding:3px 6px;border-radius:6px;background:#e1f2f5;color:#00566b}
.calendar-event-chip.leave{background:#fff0d3;color:#805100}.calendar-event-chip.overtime{background:#eee7ff;color:#4c238a}.calendar-event-chip.trip{background:#e6efff;color:#254e8e}.calendar-event-chip.correction{background:#e4f5e9;color:#286a3d}
#admin-calendar-filters>div{flex:1 1 210px;min-width:0}#admin-calendar-filters .form-select{width:100%;min-width:0}#admin-calendar-content{min-width:0}
@media(max-width:767px){.table-filters{padding:12px}.filter-range{grid-template-columns:1fr}.admin-calendar-surface{padding:12px}.admin-calendar-day{min-height:105px;padding:6px 2px;gap:4px}.calendar-event-chip{font-size:12px;padding:2px;line-height:1.5}.admin-calendar-day small{font-size:11px}#admin-calendar-filters>div{flex-basis:100%}.admin-calendar-surface .calendar-header{flex-wrap:wrap;gap:8px}}

/* ???????????????????????????? */
.calendar-event-chip{display:flex;gap:4px;align-items:center;justify-content:space-between}.calendar-event-chip>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.calendar-event-chip>strong{flex-shrink:0}
