:root{color:#243b33;font-synthesis:none;font-synthesis:none;--green:#163f34;--muted:#748077;--line:#e1e7df;--lime:#dcecc5;background:#f4f6f2;font-family:Inter,-apple-system,BlinkMacSystemFont,Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;font-weight:400}*{box-sizing:border-box}body{margin:0}button,input{font:inherit}button{cursor:pointer}button:disabled{cursor:default;opacity:.5}button{border:0;justify-content:center;align-items:center;gap:8px;transition:background .15s;display:inline-flex}input{color:#203d31;background:#fff;border:1px solid #d7dfd5;border-radius:11px;outline:none;width:100%;min-width:0;min-height:49px;padding:14px}input:focus{border-color:#517c62;box-shadow:0 0 0 3px #47745918}input:disabled{background:#f5f7f3}button:focus-visible{outline-offset:3px;outline:3px solid #8baa76}h1,h2,h3,p{margin:0}h1,h2,h3{letter-spacing:-.035em;font-weight:650}.muted{color:var(--muted);font-size:14px;line-height:1.85}.eyebrow{letter-spacing:.12em;color:#819078;margin-bottom:12px;font-size:11px;font-weight:600}.primary{background:var(--green);color:#fff;border-radius:10px;min-height:48px;padding:14px 20px;font-size:14px;font-weight:600}.primary:hover{background:#245441}.secondary{border:1px solid var(--line);color:var(--green);background:#fff;border-radius:10px;min-height:46px;padding:12px 18px}.full{width:100%}.icon{color:#5b6e61;background:0 0;border-radius:10px;flex-shrink:0;width:40px;height:40px}.icon:hover{background:#e9eee6}.logo{white-space:nowrap;align-items:center;gap:12px;display:flex}.logo>svg{box-sizing:content-box;color:var(--green);background:#e3edda;border-radius:13px;padding:10px}.logo>span{letter-spacing:.06em;font-size:17px;font-weight:700}.logo small{letter-spacing:.18em;margin-top:5px;font-size:8px;font-weight:500;display:block}.login-shell{background:#fff;grid-template-columns:43% 57%;min-height:100dvh;display:grid}.login-story{background:var(--green);color:#fafdf7;flex-direction:column;justify-content:space-between;min-height:100dvh;padding:48px 12%;display:flex;position:relative;overflow:hidden}.login-story:after{content:"";pointer-events:none;border:1px solid #c9dfb922;border-radius:50%;width:390px;height:390px;position:absolute;bottom:5%;right:-185px;box-shadow:0 0 0 50px #c9dfb908,0 0 0 100px #c9dfb905}.login-story .logo>svg{color:#deebcd;background:#ffffff18}.login-story .eyebrow{color:#c2d7a8;font-size:12px}.login-story h1{margin:23px 0;font-size:clamp(38px,4vw,60px);line-height:1.45}.login-story p{color:#b5c8be;font-size:16px;line-height:2}.story-footer{color:#bacbbb;align-items:center;gap:9px;font-size:12px;display:flex}.login-content{flex-direction:column;justify-content:center;align-items:center;min-height:100dvh;padding:64px 30px 25px;display:flex}.login-card{width:100%;max-width:370px;margin:auto}.round-icon{color:#406d49;background:#edf3e7;border-radius:17px;justify-content:center;align-items:center;width:54px;height:54px;margin-bottom:29px;display:flex}.login-card h2{margin-bottom:12px;font-size:28px}.login-card form{margin-top:30px}.login-card label,.modal form>label{margin:20px 0 10px;font-size:13px;font-weight:600;display:block}.phone-input{border:1px solid #d7dfd5;border-radius:11px;align-items:center;display:flex;overflow:hidden}.phone-input>span{color:#738070;border-right:1px solid var(--line);padding:0 14px;font-size:14px}.phone-input input{letter-spacing:1px;border:0;border-radius:0}.login-card .primary{margin-top:24px}.trust{border-top:1px solid var(--line);color:#82907e;gap:10px;margin-top:28px;padding:18px 0;font-size:11px;line-height:1.8;display:flex}.trust svg{flex-shrink:0;margin-top:3px}.login-content>footer{color:#9ca697;padding-top:32px;font-size:11px}.mobile-logo{display:none}.otp-input{letter-spacing:.4em;font-size:21px}.login-secondary{justify-content:space-between;gap:10px;margin-top:17px;display:flex}.login-secondary button{color:#496d4f;background:0 0;padding:6px 0;font-size:12px}.error{color:#a64435;background:#fff0ed;border:1px solid #f0d8d0;border-radius:10px;margin:16px 0;padding:13px 15px;font-size:13px;line-height:1.7}.error button{color:inherit;background:0 0;margin-left:12px;text-decoration:underline}.notice{color:#796730;background:#f5f1df;padding:12px 20px;font-size:13px}.spin{animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.boot{color:#6b7e6d;justify-content:center;align-items:center;gap:14px;min-height:100dvh;display:flex}.dashboard{min-height:100dvh}.topbar{border-bottom:1px solid var(--line);background:#fff;justify-content:space-between;align-items:center;height:85px;padding:0 max(5vw,24px);display:flex}.topbar .logo>svg{padding:9px}.user-menu{align-items:center;gap:18px;font-size:13px;display:flex}.dashboard main{max-width:1300px;margin:auto;padding:40px 4% 10px}.welcome{justify-content:space-between;align-items:center;gap:20px;margin-bottom:28px;display:flex}.welcome h1{margin-bottom:8px;font-size:29px}.welcome .eyebrow{margin-bottom:8px}.overview{background:#e7eddf;border:1px solid #dee6d6;border-radius:17px;align-items:center;gap:0;margin-bottom:30px;padding:23px 28px;display:flex}.overview>div{padding-right:56px}.overview>div+div{border-left:1px solid #cfdbc6;padding-left:44px}.overview>div>span{color:#6c7a61;font-size:12px}.overview strong{color:#23432e;font-size:34px;font-weight:500;line-height:1.5;display:block}.overview strong small{color:#7b866f;margin-left:8px;font-size:12px}.overview .overview-note{border:0;align-items:center;gap:15px;margin-left:auto;padding:0;display:flex}.mini-calendar{background:#f6f9ef;border-radius:13px;justify-content:center;align-items:center;width:50px;height:50px;display:flex}.overview-note p{color:#869275;font-size:11px;line-height:1.8}.overview-note p strong{font-size:15px}.schedule-panel{border:1px solid var(--line);background:#fff;border-radius:17px;overflow:hidden}.schedule-controls{justify-content:space-between;align-items:center;padding:20px 24px 6px;display:flex}.segmented{background:#eff2eb;border-radius:9px;padding:4px;display:flex}.segmented button{color:#7c8877;background:0 0;border-radius:6px;min-width:65px;min-height:33px;font-size:13px}.segmented button.active{color:#254d36;background:#fff;font-weight:600;box-shadow:0 2px 5px #1625150a}.view-switch{gap:6px;display:flex}.view-switch button{color:#8c9488;background:0 0;border-radius:8px;padding:9px 12px;font-size:12px}.view-switch button.active{color:#49673e;background:#f0f4eb}.date-navigation{align-items:center;gap:4px;padding:15px 20px 21px;display:flex}.date-navigation>div{text-align:center;min-width:172px}.date-navigation strong{letter-spacing:-.02em;font-size:16px}.jump-date{color:#8f9a86;cursor:pointer;margin-top:5px;font-size:10px;display:block;position:relative}.jump-date input{opacity:0;cursor:pointer;height:100%;min-height:0;padding:0;position:absolute;inset:0}.jump-date input::-webkit-calendar-picker-indicator{cursor:pointer;width:100%;height:100%;position:absolute;inset:0}.today-button{border:1px solid var(--line);color:#708264;background:#fff;border-radius:7px;margin-left:12px;padding:7px 12px;font-size:11px}.refresh{margin-left:auto}.weekday-row{border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:#fafbf8;grid-template-columns:repeat(7,minmax(0,1fr));display:grid}.weekday-row span{text-align:center;color:#97a28f;padding:13px 0;font-size:11px}.day-grid{grid-template-columns:repeat(7,minmax(0,1fr));display:grid}.day{border-right:1px solid var(--line);border-bottom:1px solid var(--line);min-width:0;min-height:175px}.day:nth-child(7n){border-right:0}.day.today{background:#f6f9f1}.day-number{color:#6e7e67;background:0 0;justify-content:space-between;gap:5px;width:100%;padding:12px;font-size:12px;display:flex}.day-number>span:not(.mobile-weekday){border-radius:50%;justify-content:center;align-items:center;width:27px;height:27px;display:flex}.today .day-number>span:not(.mobile-weekday){color:#fff;background:#3c6545}.day-number small{color:#8e9c81;align-self:center;font-size:9px}.day-shifts{padding:0 7px 10px}.shift-card{background:#f2f6ed;border:1px solid #dbe5d3;border-radius:10px;min-width:0;padding:16px}.shift-card+.shift-card{margin-top:9px}.shift-card-top{justify-content:space-between;align-items:center;gap:8px;margin-bottom:13px;display:flex}.plate{letter-spacing:.04em;font-size:15px;font-weight:700}.tag{color:#718662;white-space:nowrap;background:#e3edd9;border-radius:5px;padding:4px 6px;font-size:10px}.shift-time{white-space:nowrap;font-variant-numeric:tabular-nums;font-size:17px;font-weight:500}.shift-time>span{color:#9aa58f;font-size:12px}.shift-card p{color:#8c9980;margin:7px 0 15px;font-size:10px}.edit-link{color:#5f7a4c;background:0 0;justify-content:flex-start;min-height:26px;padding:0;font-size:11px}.compact{padding:11px 9px}.compact .shift-card-top{margin-bottom:11px;display:block}.compact .plate{font-size:12px;display:block}.compact .tag{margin-top:7px;font-size:9px;display:inline-block}.compact .shift-time{font-size:13px}.compact .shift-time>span,.compact p{font-size:9px}.compact .edit-link{font-size:10px}.no-shift{text-align:center;color:#bcc5b5;padding:20px 0;font-size:10px;display:block}.mobile-weekday{display:none}.calendar-footer{color:#9aa48f;justify-content:space-between;align-items:center;padding:15px 21px;font-size:10px;display:flex}.calendar-footer span{align-items:center;gap:6px;display:flex}i{background:#8eaa6e;border-radius:50%;flex-shrink:0;width:5px;height:5px;display:inline-block}.month .day{min-height:110px}.outside{opacity:.3;background:#fafbf8}.month-event{color:#46613b;white-space:nowrap;background:#edf3e7;border-radius:4px;justify-content:flex-start;gap:4px;width:100%;margin-bottom:3px;padding:5px 4px;font-size:10px;overflow:hidden}.month-event span{font-size:9px}.more{color:#7d8f6b;background:0 0;font-size:10px}.event-list{padding:5px 24px 24px}.list-entry{border-top:1px solid #edf0e8;gap:18px;padding:20px 0;display:flex}.date-stamp{text-align:center;min-width:45px;padding-top:8px}.date-stamp strong{font-size:26px;font-weight:500;display:block}.date-stamp span{color:#87917b;font-size:11px}.list-entry .shift-card{flex:1;position:relative}.list-entry .shift-card-top{justify-content:flex-start;gap:14px;margin-bottom:9px;margin-right:90px}.list-entry .shift-card p{margin-bottom:0}.list-entry .edit-link{position:absolute;top:40px;right:20px}.focused-day{color:#708363;align-items:center;gap:10px;font-size:13px;display:flex}.empty{text-align:center;color:#8a9b7b;padding:38px 16px}.empty>svg{margin-bottom:14px}.empty h3{color:#4b6441;margin-bottom:8px;font-size:17px}.empty p{margin-bottom:20px;font-size:12px}.loading{color:#859577;justify-content:center;align-items:center;gap:11px;min-height:280px;font-size:13px;display:flex}.page-footer{color:#9ba691;justify-content:space-between;padding:25px 0;font-size:10px;display:flex}.mobile-add{display:none}.modal-backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:100;background:#12271970;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0;overflow:auto}.modal{background:#fff;border-radius:19px;width:100%;max-width:480px;max-height:calc(100dvh - 40px);overflow:auto;box-shadow:0 20px 80px #10251930}.modal>header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:25px 26px 18px;display:flex}.modal header .eyebrow{margin-bottom:6px}.modal h2{font-size:24px}.modal form{padding:0 26px 24px}.vrm-input{letter-spacing:.08em;font-size:22px;font-weight:600}.field-help{color:#99a28e;margin-top:7px;font-size:11px}.modal fieldset{border:0;min-width:0;margin:24px 0 0;padding:0}.modal legend{margin-bottom:10px;font-size:13px;font-weight:600}.date-pair{grid-template-columns:1.4fr 1fr;gap:13px;display:grid}.date-pair label{color:#8a9680;min-width:0;font-size:11px}.date-pair input{appearance:none;min-width:0;margin-top:7px;padding:10px;font-size:14px}.next-day{color:#7d9169;background:0 0;padding:10px 0 0;font-size:11px}.duration{color:#7e926a;background:#f2f6eb;border-radius:10px;align-items:center;gap:10px;margin-top:20px;padding:15px;font-size:12px;display:flex}.duration strong{color:#49663b;margin-left:auto;font-size:14px}.form-actions{justify-content:flex-end;gap:10px;margin-top:24px;display:flex}.toast{background:var(--green);color:#fff;z-index:150;white-space:nowrap;border-radius:12px;align-items:center;gap:12px;padding:15px 25px;font-size:14px;display:flex;position:fixed;bottom:32px;left:50%;transform:translate(-50%);box-shadow:0 6px 24px #14291c30}@media (width>=1400px){.dashboard main{padding-left:20px;padding-right:20px}}@media (width<=1050px){.compact .shift-time{font-size:11px}.compact{padding:9px 6px}.day-shifts{padding-left:4px;padding-right:4px}.month-event span{display:none}}@media (width<=760px){.login-shell{background:#f7f9f3;display:block}.login-story{display:none}.login-content{align-items:stretch;min-height:100dvh;padding:25px 25px 28px}.mobile-logo{margin-bottom:45px;display:block}.login-card{background:#fff;border:1px solid #e4e9dd;border-radius:20px;max-width:420px;margin:0 auto auto;padding:25px}.login-card h2{font-size:25px}.login-card .muted{font-size:13px}.round-icon{margin-bottom:20px}.login-content>footer{text-align:center}.trust{font-size:10px}.topbar{height:74px;padding:0 20px}.topbar .logo>span{font-size:14px}.topbar .logo small{font-size:7px}.topbar .logo>svg{width:19px;height:19px;padding:9px}.user-menu{gap:8px;font-size:12px}.dashboard main{padding:27px 16px 105px}.welcome h1{font-size:25px}.welcome .muted{font-size:12px}.welcome{margin-bottom:23px}.welcome .eyebrow{font-size:10px}.add-desktop{display:none}.overview{border-radius:14px;margin-bottom:24px;padding:18px 21px}.overview>div{padding-right:25px}.overview>div+div{padding-left:25px}.overview>div>span{font-size:11px}.overview strong{font-size:29px}.overview .overview-note{gap:0;padding-left:10px}.overview-note p{display:none}.mini-calendar{width:39px;height:39px}.mini-calendar svg{width:20px}.schedule-panel{border-radius:14px}.schedule-controls{padding:15px 15px 5px}.segmented button{min-width:55px;min-height:31px;font-size:12px}.view-switch button{padding:9px}.view-switch span{display:none}.date-navigation{gap:0;padding:13px 11px 17px}.date-navigation>.icon{width:32px}.date-navigation>div{min-width:140px}.date-navigation strong{font-size:14px}.date-navigation .today-button{margin-left:6px;padding:6px 9px}.week .weekday-row{display:none}.week .day-grid{display:block}.week .day{border-right:0;grid-template-columns:57px minmax(0,1fr);gap:8px;min-height:0;padding:10px 13px;display:grid}.week .day-number{flex-direction:column;justify-content:flex-start;align-items:center;gap:2px;padding:6px 0}.week .mobile-weekday{margin-bottom:4px;font-size:10px;display:block}.week .day-number>span:not(.mobile-weekday){width:31px;height:31px;font-size:18px}.week .day-number small{margin-top:3px;font-size:9px}.week .day-shifts{padding:4px 0 7px}.week .no-shift{text-align:left;padding:20px 11px;font-size:11px}.compact{padding:12px 13px;position:relative}.compact .shift-card-top{justify-content:flex-start;gap:12px;margin-bottom:9px;margin-right:0;display:flex}.compact .tag{margin:0;font-size:9px}.compact .plate{font-size:13px}.compact .shift-time{font-size:16px}.compact .shift-time>span{font-size:11px}.compact p{margin:7px 0 0;font-size:10px}.compact .edit-link{font-size:10px;position:absolute;bottom:12px;right:12px}.compact .edit-link svg{width:12px}.month .day{min-height:91px}.month .day-number{justify-content:center;padding:4px 2px;font-size:11px}.month .day-number small{display:none}.month .day-number>span:not(.mobile-weekday){width:25px;height:25px}.month .day-shifts{padding:0 2px 4px}.month-event{letter-spacing:-.03em;gap:2px;padding:4px 2px;font-size:8px}.month-event i{width:3px;height:3px}.month-event span{display:none}.weekday-row span{padding:10px 0;font-size:10px}.calendar-footer{padding:14px 12px;font-size:9px}.mobile-add{bottom:max(18px,env(safe-area-inset-bottom));z-index:30;border:1px solid #ffffff28;width:calc(100% - 48px);min-height:51px;display:flex;position:fixed;left:24px;right:24px;box-shadow:0 6px 24px #123d3235}.page-footer{gap:8px;padding:20px 3px;font-size:9px}.event-list{padding:0 13px 10px}.list-entry{gap:8px;padding:15px 0}.date-stamp{min-width:34px}.date-stamp strong{font-size:24px}.list-entry .shift-card{padding:12px}.list-entry .shift-card-top{gap:10px;margin-right:0}.list-entry .plate{font-size:13px}.list-entry .tag{font-size:9px}.list-entry .shift-time{font-size:16px}.list-entry .edit-link{font-size:10px;top:auto;bottom:10px;right:10px}.list-entry .edit-link svg{width:12px}.list-entry .shift-card p{margin-top:8px;font-size:9px}.modal-backdrop{align-items:center;padding:10px}.modal{border-radius:16px;max-height:calc(100dvh - 20px)}.modal>header{padding:20px 20px 15px}.modal form{padding:0 20px 22px}.modal h2{font-size:23px}.date-pair{gap:10px}.date-pair input{padding:9px 8px;font-size:13px}.modal .primary,.modal .secondary{font-size:13px}.toast{font-size:13px;bottom:85px}.loading{min-height:280px}.boot{font-size:13px}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.batch-entry{text-align:left;color:#507340;background:#f0f5e8;border:1px solid #dbe6d1;border-radius:11px;justify-content:space-between;width:100%;margin:20px 0 5px;padding:15px 12px;font-size:13px}.batch-entry span{flex:1}.batch-entry small{color:#8d9e7d;margin-top:5px;font-size:10px;display:block}.batch-modal{max-width:740px}.batch-body{padding:20px 26px 25px}.batch-fields{border:0;min-width:0;margin:0;padding:0}.batch-fields>label{margin:17px 0;font-size:12px;display:block}.batch-fields>label>input{margin-top:8px}.batch-mode{width:max-content;margin-bottom:20px}.batch-mode button{padding:0 17px}.quick-times{gap:8px;margin:17px 0;display:flex}.quick-times button{color:#426a39;text-align:left;background:#f2f6eb;border:1px solid #dce6d3;border-radius:8px;flex:1;padding:10px 12px;font-size:12px;display:block}.quick-times small{color:#8a9e7d;margin-top:4px;font-size:9px;display:block}.batch-fields .checkbox-label{color:#697e5c;align-items:center;gap:8px;margin:12px 0 20px;font-size:12px;display:flex}.checkbox-label input{accent-color:#376643;width:16px;height:16px;min-height:0;margin:0!important}.preset-row{border-top:1px solid var(--line);align-items:flex-start;gap:15px;padding:15px 0 5px;display:flex}.preset-row>strong{color:#4b7c43;white-space:nowrap;padding-top:10px;font-size:12px}.preset-row>div{flex-wrap:wrap;gap:7px;display:flex}.preset-row button{color:#5c7849;background:#eef4e7;border-radius:7px;padding:9px 11px;font-size:11px}.preset-row.off{border:0;padding-top:9px}.preset-row.off>strong{color:#b05c4e}.holiday-caption{color:#939f87;margin:14px 0 18px;font-size:10px;line-height:1.7}.batch-selection-heading{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;padding:17px 0 14px;display:flex}.batch-selection-heading strong{font-size:15px}.batch-selection-heading>span{color:#8a9980;font-size:11px}.batch-calendar{grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;display:grid}.batch-weekday{text-align:center;color:#95a189;padding:7px;font-size:11px}.batch-calendar>button{color:#54684b;background:#fff;border:1px solid #dce4d5;border-radius:8px;flex-direction:column;gap:6px;min-height:64px;padding:7px 3px;display:flex;position:relative}.batch-calendar>button strong{font-size:16px;font-weight:600}.batch-calendar>button small{min-height:11px;font-size:9px;line-height:1.4}.batch-calendar>button.red-day{color:#b3594b;border-color:#e1b4a9}.batch-calendar>button.selected{background:#e1eed4;border-color:#7ca160;box-shadow:inset 0 0 0 1px #7ca160}.batch-calendar>button.selected.red-day{background:#f5e8dc;border-color:#c49778;box-shadow:inset 0 0 0 1px #c49778}.batch-calendar>button>svg{position:absolute;top:4px;right:4px}.batch-preview{background:#fbfcf8;border:1px solid #dce5d2;border-radius:11px;margin-top:20px;padding:16px}.batch-preview h3{align-items:center;gap:9px;font-size:15px;display:flex}.batch-preview>p{color:#849577;margin:10px 0;font-size:12px}.preview-dates{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;max-height:190px;display:grid;overflow:auto}.preview-date{background:#eff4e8;border-radius:5px;flex-wrap:wrap;justify-content:space-between;gap:4px;padding:8px;font-size:10px;display:flex}.preview-date.conflict,.preview-date.error{color:#ad6a57;background:#f9e9e2;border:0;margin:0}.preview-date.duplicate{color:#909681;background:#efefea}.preview-date small{width:100%;line-height:1.6}.preview-date.saved{color:#52763a;background:#dceacf}.batch-progress{color:#66864e;align-items:center;gap:9px;margin-top:20px;font-size:12px;display:flex}.public-holiday .day-number{color:#b45d4b}.holiday-name{color:#b57565;margin:0 2px 7px;font-size:9px;line-height:1.5;display:block}.month .holiday-name{font-size:8px}.batch-body .notice{border-radius:8px;margin-top:16px}@media (width<=760px){.batch-body{padding:18px 15px 22px}.batch-selection-heading{flex-direction:column;align-items:flex-start;gap:7px}.preset-row{gap:10px}.preset-row button{padding:9px 8px;font-size:10px}.preset-row>strong{font-size:11px}.batch-calendar{gap:4px}.batch-calendar>button{min-height:60px;padding:6px 2px}.batch-calendar>button strong{font-size:13px}.batch-calendar>button small{letter-spacing:-.04em;font-size:8px}.quick-times{gap:5px}.quick-times button{padding:9px 8px;font-size:11px}.quick-times small{white-space:nowrap;font-size:8px}.preview-dates{grid-template-columns:repeat(2,minmax(0,1fr))}.week .holiday-name{margin-bottom:8px}.batch-mode button{font-size:11px}.batch-entry{font-size:12px}.batch-entry small{font-size:9px}}
