:root{--ink: #1d1d1f;--muted: #6e7377;--line: rgba(255, 255, 255, .48);--panel: rgba(255, 255, 255, .58);--panel-subtle: rgba(255, 255, 255, .38);--soft: #eef4f3;--green: #15806b;--sidebar: rgba(8, 27, 32, .78);--green-dark: #0f6b59;--gold: #b88a2b;--blue: #0a84ff;--red: #d70015;--focus: rgba(16, 115, 94, .18);--glass-blur: blur(30px) saturate(180%);--shadow: 0 1px 1px rgba(255,255,255,.76) inset, 0 -1px 1px rgba(0,0,0,.05) inset, 0 22px 64px rgba(29, 29, 31, .1);--shadow-strong: 0 1px 1px rgba(255,255,255,.72) inset, 0 30px 90px rgba(29, 29, 31, .24);--body-bg: radial-gradient(circle at 16% 0%, rgba(74, 144, 226, .15), transparent 30%), radial-gradient(circle at 92% 10%, rgba(21, 128, 107, .15), transparent 28%), linear-gradient(180deg, #f8fbfb 0%, var(--soft) 46%, #e6eeee 100%);--control: rgba(255, 255, 255, .64);--table-head: rgba(255, 255, 255, .42);--row-hover: rgba(255, 255, 255, .34);--danger-bg: rgba(255, 242, 241, .78);--danger-text: #b42318}:root[data-theme=dark]{--ink: #f2f7f6;--muted: #aab8bc;--line: rgba(255, 255, 255, .12);--panel: rgba(17, 38, 45, .7);--panel-subtle: rgba(20, 48, 55, .54);--soft: #061418;--green: #31c6a5;--sidebar: rgba(4, 18, 22, .86);--green-dark: #26aa8e;--focus: rgba(49, 198, 165, .22);--shadow: 0 1px 1px rgba(255,255,255,.08) inset, 0 -1px 1px rgba(0,0,0,.28) inset, 0 22px 70px rgba(0, 0, 0, .36);--shadow-strong: 0 1px 1px rgba(255,255,255,.1) inset, 0 30px 90px rgba(0, 0, 0, .52);--body-bg: radial-gradient(circle at 16% -8%, rgba(10, 132, 255, .16), transparent 32%), radial-gradient(circle at 96% 2%, rgba(49, 198, 165, .12), transparent 28%), linear-gradient(180deg, #061418 0%, #0a2026 50%, #061519 100%);--control: rgba(8, 28, 34, .78);--table-head: rgba(21, 50, 58, .78);--row-hover: rgba(255, 255, 255, .045);--danger-bg: rgba(70, 30, 32, .66);--danger-text: #ffb3ad}@media(prefers-color-scheme:dark){:root[data-theme=system]{--ink: #f2f7f6;--muted: #aab8bc;--line: rgba(255, 255, 255, .12);--panel: rgba(17, 38, 45, .7);--panel-subtle: rgba(20, 48, 55, .54);--soft: #061418;--green: #31c6a5;--sidebar: rgba(4, 18, 22, .86);--green-dark: #26aa8e;--focus: rgba(49, 198, 165, .22);--shadow: 0 1px 1px rgba(255,255,255,.08) inset, 0 -1px 1px rgba(0,0,0,.28) inset, 0 22px 70px rgba(0, 0, 0, .36);--shadow-strong: 0 1px 1px rgba(255,255,255,.1) inset, 0 30px 90px rgba(0, 0, 0, .52);--body-bg: radial-gradient(circle at 16% -8%, rgba(10, 132, 255, .16), transparent 32%), radial-gradient(circle at 96% 2%, rgba(49, 198, 165, .12), transparent 28%), linear-gradient(180deg, #061418 0%, #0a2026 50%, #061519 100%);--control: rgba(8, 28, 34, .78);--table-head: rgba(21, 50, 58, .78);--row-hover: rgba(255, 255, 255, .045);--danger-bg: rgba(70, 30, 32, .66);--danger-text: #ffb3ad}}*{box-sizing:border-box}body{margin:0;color:var(--ink);background:var(--body-bg);font-family:Arial,Microsoft JhengHei,PingFang TC,sans-serif;background-attachment:fixed;-webkit-font-smoothing:antialiased}button,input,select{font:inherit}button{min-height:40px;border:1px solid var(--line);border-radius:8px;background:var(--control);color:var(--ink);padding:0 14px;cursor:pointer;transition:background .16s ease,border-color .16s ease,color .16s ease,transform .12s ease,box-shadow .16s ease;touch-action:manipulation;font-weight:600;-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur)}button.primary,.primary{background:var(--green);border-color:var(--green);color:#fff;font-weight:700}button:hover:not(:disabled){border-color:color-mix(in srgb,var(--line) 48%,var(--green));box-shadow:0 10px 24px #0000001f;transform:translateY(-1px)}button.primary:hover:not(:disabled),.primary:hover:not(:disabled){background:var(--green-dark);border-color:var(--green-dark)}button:active:not(:disabled){transform:translateY(0)}button:disabled{cursor:not-allowed;opacity:.55;box-shadow:none}.auth-screen{min-height:100dvh;display:grid;place-items:center;padding:20px;background:var(--body-bg)}.auth-panel{width:min(460px,100%);display:grid;gap:16px;background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:28px;box-shadow:var(--shadow);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur)}.auth-panel.wide{width:min(580px,100%)}.auth-logo{width:220px;max-width:100%;height:70px;object-fit:contain;justify-self:center}.auth-panel h1,.topbar h1{margin:0;font-size:26px;line-height:1.15}.auth-panel p,.topbar p,.status-card p{color:var(--muted);margin:6px 0 0}.google-btn{width:100%;justify-content:center;display:inline-flex;align-items:center;gap:10px;font-weight:700}.secondary-btn{background:transparent;color:var(--muted);box-shadow:none}.google-dot{width:18px;height:18px;border-radius:50%;background:conic-gradient(#4285f4 0 25%,#34a853 0 50%,#fbbc05 0 75%,#ea4335 0)}.google-g{display:inline-grid;place-items:center;width:22px;height:22px;font-family:Arial,sans-serif;font-size:20px;font-weight:800;line-height:1;background:conic-gradient(from -35deg,#4285f4 0 28%,#34a853 28% 45%,#fbbc05 45% 65%,#ea4335 65% 82%,#4285f4 82% 100%);-webkit-background-clip:text;background-clip:text;color:transparent}.preference-controls{display:grid;gap:8px;margin-top:auto;padding:12px;border:1px solid var(--line);border-radius:8px;background:color-mix(in srgb,var(--panel) 72%,transparent);box-shadow:0 1px #ffffff14 inset;-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur)}.preference-controls strong{font-size:12px;color:var(--ink);white-space:nowrap}.preference-controls label{display:grid;gap:4px;font-size:11px;color:var(--muted)}.preference-controls select{width:100%;min-height:34px;padding:6px 30px 6px 9px;font-size:13px}.error-box{position:fixed;top:50%;left:50%;z-index:20;width:min(560px,calc(100vw - 32px));border:1px solid #f3b8b1;border-radius:8px;background:#fde8e5;color:#9f1f16;padding:22px 24px;font-size:18px;line-height:1.45;box-shadow:var(--shadow-strong);pointer-events:none;animation:popup-in .18s ease-out,popup-out .22s ease-in 4.2s forwards;transform:translate(-50%,-50%)}form{display:grid;gap:12px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}label{display:grid;gap:6px;color:var(--muted);font-size:13px}input,select,textarea{min-height:40px;border:1px solid var(--line);border-radius:8px;padding:8px 10px;width:100%;background:var(--control);color:var(--ink);transition:border-color .16s ease,box-shadow .16s ease,background .16s ease;-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur)}input::placeholder,textarea::placeholder{color:color-mix(in srgb,var(--muted) 76%,transparent)}input:focus,select:focus,textarea:focus{outline:0;border-color:var(--green);box-shadow:0 0 0 4px var(--focus)}textarea{resize:vertical}input[readonly]{background:var(--panel-subtle)}input[type=checkbox]{width:18px;min-width:18px;min-height:18px;padding:0}.app-shell{min-height:100dvh;display:grid;grid-template-columns:244px minmax(0,1fr);overflow-x:hidden}aside{background:linear-gradient(180deg,rgba(11,37,45,.88),var(--sidebar) 58%,rgba(5,18,22,.92));color:#fff;position:sticky;top:0;height:100dvh;overflow-y:auto;padding:22px 14px;display:grid;align-content:start;gap:16px;border-right:1px solid rgba(255,255,255,.08);box-shadow:12px 0 36px #0000002e;-webkit-backdrop-filter:blur(28px) saturate(170%);backdrop-filter:blur(28px) saturate(170%)}.brand-logo{width:100%;max-width:214px;height:58px;object-fit:contain;background:#fff;border-radius:8px;padding:11px 14px;box-shadow:0 14px 34px #0000002e}.sidebar-user{display:grid;gap:4px;border:1px solid rgba(255,255,255,.18);border-radius:8px;padding:14px;background:#ffffff17;box-shadow:inset 0 1px #ffffff14;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.sidebar-user strong{color:#fff;font-size:16px;line-height:1.25;overflow-wrap:anywhere}.sidebar-user span{color:#b9d4d8;font-size:12px}nav{display:grid;gap:7px}nav button{color:#dce8ea;background:#ffffff09;text-align:left;border-color:#ffffff1a;min-height:38px}nav button.active{background:#ffffff2b;border-color:#ffffff47;color:#fff;box-shadow:inset 3px 0 0 var(--green),0 10px 28px #00000029}nav button:hover:not(.active){background:#ffffff14;border-color:#ffffff29;box-shadow:none}main{padding:24px;min-width:0}.topbar{position:sticky;top:0;z-index:12;display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin:-24px -24px 18px;padding:18px 24px 14px;background:color-mix(in srgb,var(--soft) 42%,transparent);border-bottom:1px solid color-mix(in srgb,var(--line) 70%,transparent);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur)}.topbar h1{font-size:30px;letter-spacing:0}.topbar p,.status-grid{display:none}.topbar-actions{display:inline-flex;align-items:center;justify-content:flex-end;gap:10px;min-width:0}.ghost-btn{min-height:40px;background:linear-gradient(180deg,color-mix(in srgb,var(--control) 92%,white 8%),var(--control));color:var(--text);border-color:color-mix(in srgb,var(--line) 82%,transparent);white-space:nowrap}.user-chip{display:inline-flex;align-items:center;gap:8px;background:var(--control);border:1px solid var(--line);border-radius:8px;min-height:40px;padding:0 12px;color:var(--muted);box-shadow:0 10px 26px #0000001a;-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur)}.user-chip button{width:32px;min-height:32px;padding:0}.status-grid{display:grid;grid-template-columns:repeat(4,minmax(160px,1fr));gap:14px}.status-grid{display:none}.status-card,.panel{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:20px;box-shadow:var(--shadow);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur)}.status-card span{color:var(--muted);font-size:12px}.status-card h2,.panel h2{margin:4px 0 8px;font-size:20px;letter-spacing:0}.panel{margin-top:0;min-height:calc(100dvh - 92px);min-width:0;overflow:hidden}.bootstrap-box{border:1px solid color-mix(in srgb,var(--green) 34%,var(--line));border-radius:8px;background:color-mix(in srgb,var(--green) 10%,var(--panel));padding:14px;margin-bottom:16px}.status-message{position:fixed;top:50%;left:50%;z-index:20;width:min(560px,calc(100vw - 32px));border:1px solid color-mix(in srgb,var(--green) 38%,var(--line));border-radius:8px;background:color-mix(in srgb,var(--panel) 86%,#e7fff5);color:var(--green);padding:22px 24px;font-size:18px;line-height:1.45;margin:0;box-shadow:var(--shadow-strong);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);pointer-events:none;animation:popup-in .18s ease-out,popup-out .22s ease-in 4.2s forwards;transform:translate(-50%,-50%)}.install-prompt{position:fixed;inset:0;z-index:30;display:grid;place-items:center;padding:18px;background:#071b2085;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.install-prompt-card{position:relative;width:min(420px,100%);display:grid;gap:14px;background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:22px;box-shadow:var(--shadow-strong);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur)}.install-prompt-icon{width:68px;height:68px;border-radius:16px;box-shadow:0 10px 24px #13222a29}.install-prompt-card h2{margin:0;font-size:22px}.install-prompt-card p{margin:6px 0 0;color:var(--muted);line-height:1.45}.install-prompt-card ol{margin:0;padding-left:22px;display:grid;gap:8px;color:var(--ink)}.install-prompt-close{position:absolute;top:10px;right:10px;width:34px;min-height:34px;padding:0;font-size:22px;line-height:1;color:var(--muted);background:transparent;border-color:transparent;box-shadow:none}.install-prompt-close:hover:not(:disabled){box-shadow:none}@keyframes popup-in{0%{opacity:0;transform:translate(-50%,calc(-50% - 8px))}to{opacity:1;transform:translate(-50%,-50%)}}@keyframes popup-out{to{opacity:0;transform:translate(-50%,calc(-50% - 8px));visibility:hidden}}.hint{color:var(--muted);font-size:13px;margin:4px 0}.panel li{margin:8px 0}.stack{display:grid;gap:18px;min-width:0}.section-head{display:flex;justify-content:space-between;align-items:start;gap:12px}.section-head h2,.section-head h3,.subpanel h3{margin:0 0 6px;letter-spacing:0}.section-head p{margin:0;color:var(--muted)}.data-form,.subpanel,.rate-card{border:1px solid var(--line);border-radius:8px;background:var(--panel-subtle);padding:16px;box-shadow:0 1px #ffffff1a inset,0 10px 28px #0000000f;-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);min-width:0}.subpanel{scroll-margin-top:96px}.form-grid.compact{grid-template-columns:repeat(3,minmax(160px,1fr))}.button-row,.actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.button-row.align-end{align-items:end;align-self:end}.uid-list{display:grid;gap:8px;margin-top:10px}.uid-list-head,.uid-row{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center}.uid-list-head span{color:var(--muted);font-size:12px;font-weight:700}.uid-row input{width:100%}.table-wrap{width:100%;max-width:100%;overflow-x:auto;border-radius:8px;scroll-behavior:smooth;-webkit-overflow-scrolling:touch;border:1px solid var(--line);background:color-mix(in srgb,var(--control) 82%,transparent);overscroll-behavior-x:contain;-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur)}table{width:100%;border-collapse:collapse;min-width:760px}th,td{border-bottom:1px solid color-mix(in srgb,var(--line) 76%,transparent);padding:12px 10px;text-align:left;vertical-align:middle}th{color:var(--muted);font-size:12px;font-weight:700;position:sticky;top:0;z-index:1;background:var(--table-head);text-transform:none;-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur)}tbody tr{transition:background .14s ease}tbody tr:hover{background:var(--row-hover)}td input{min-width:180px}.batch-table td input,.batch-table td select{min-width:140px}.batch-table td:nth-child(2) input,.batch-table td:nth-child(7) input{min-width:220px}.batch-table .actions{min-width:132px}.sheet-sync{display:grid;gap:10px;margin:12px 0}button.danger{border-color:#f1b2aa;color:var(--danger-text);background:var(--danger-bg)}button.danger:hover:not(:disabled){border-color:#e2857a;background:color-mix(in srgb,var(--danger-bg) 82%,#fff)}.tier-grid{display:grid;gap:10px;margin-top:12px}.tier-row{display:grid;grid-template-columns:repeat(2,minmax(140px,1fr));gap:10px}.month-input{max-width:180px}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(130px,1fr));gap:10px;overflow-x:auto;max-width:100%;overscroll-behavior-x:contain}.calendar-head,.calendar-cell{border:1px solid var(--line);border-radius:8px;background:var(--control);min-height:42px;padding:10px;-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur)}.calendar-head{color:var(--muted);font-size:12px;font-weight:700;min-height:auto;background:transparent;border-color:transparent}.calendar-cell{display:grid;align-content:start;gap:6px;min-height:112px;box-shadow:0 8px 22px #00000014}.calendar-cell.blank{background:color-mix(in srgb,var(--control) 62%,var(--body-bg));border-color:color-mix(in srgb,var(--line) 72%,transparent);box-shadow:none;opacity:.62}.calendar-shift{display:block;border-radius:6px;background:color-mix(in srgb,var(--green) 16%,var(--control));border:1px solid color-mix(in srgb,var(--green) 28%,var(--line));color:var(--green);padding:5px 6px;font-size:12px;line-height:1.3;transition:background .16s ease,border-color .16s ease,transform .12s ease}.calendar-shift:hover{background:color-mix(in srgb,var(--green) 22%,var(--control));border-color:color-mix(in srgb,var(--green) 48%,var(--line));transform:translateY(-1px)}.calendar-shift strong,.calendar-shift span{display:block}.calendar-shift span{margin-top:3px;color:color-mix(in srgb,var(--green) 58%,var(--ink))}.week-calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(160px,1fr));gap:10px;overflow-x:auto;max-width:100%;overscroll-behavior-x:contain}.week-calendar-day{border:1px solid var(--line);border-radius:8px;background:var(--control);min-height:220px;padding:10px;display:grid;align-content:start;gap:8px;box-shadow:0 8px 20px #13222a0a}.week-day-head{border-bottom:1px solid var(--line);padding-bottom:8px;display:grid;gap:3px}.week-day-head span{color:var(--muted);font-size:12px}.segmented-control{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:var(--control)}.segmented-control button{border:0;border-radius:0;min-height:38px}.segmented-control button.active{background:var(--green);color:#fff;font-weight:700}.metric-grid{display:grid;grid-template-columns:repeat(5,minmax(120px,1fr));gap:12px}.metric-grid article{border:1px solid var(--line);border-radius:8px;background:var(--control);padding:16px;display:grid;gap:8px;border-left:4px solid var(--green);box-shadow:0 10px 24px #13222a0d}.metric-grid span{color:var(--muted);font-size:12px}.metric-grid strong{font-size:28px;letter-spacing:0}.project-tabs{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px;scroll-behavior:smooth;-webkit-overflow-scrolling:touch}.project-tabs button{white-space:nowrap}.project-tabs button.active{background:var(--green);border-color:var(--green);color:#fff;font-weight:700;box-shadow:0 8px 18px #10735e2e}.payroll-metrics{grid-template-columns:repeat(3,minmax(120px,1fr))}.payroll-table{min-width:1180px}.cell-subtext{display:block;color:var(--muted);font-size:12px;margin-top:4px}button.checked-btn{background:color-mix(in srgb,var(--gold) 16%,var(--control));border-color:#efcf91;color:var(--ink);font-weight:700}@media(max-width:980px){.app-shell{grid-template-columns:1fr}aside{position:sticky;top:0;z-index:18;height:auto;max-height:none;overflow:visible;padding:14px 18px 12px;gap:12px;border-right:0;box-shadow:0 14px 32px #0003}.brand-logo{width:min(440px,100%);max-width:none;height:88px;justify-self:center;padding:15px 24px}.sidebar-user{padding:9px 12px;gap:2px}.sidebar-user strong{font-size:17px}.sidebar-user span{font-size:12px}nav{grid-template-columns:repeat(auto-fit,minmax(92px,1fr));overflow:visible;padding-bottom:0}nav button{white-space:normal;min-width:0;min-height:38px;text-align:center;padding:0 10px;font-size:15px}main{padding:18px}.topbar{position:relative;margin:0 0 16px;padding:0;background:transparent;border-bottom:0;-webkit-backdrop-filter:none;backdrop-filter:none}.status-grid,.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:640px){.preference-controls{display:grid;grid-template-columns:auto minmax(0,1fr) minmax(0,1fr);gap:8px;margin-top:0;padding:8px}.preference-controls strong{align-self:end;padding-bottom:9px;font-size:12px}.preference-controls label{min-width:0;font-size:10px}.preference-controls select{width:100%;min-height:32px;padding:5px 26px 5px 8px;font-size:12px}.auth-screen{align-items:start;padding:16px}.auth-panel{padding:18px}.form-grid,.status-grid,.metric-grid{grid-template-columns:1fr}.topbar,.section-head{display:grid}.form-grid.compact,.tier-row{grid-template-columns:1fr}aside{gap:10px;padding:12px 12px 10px}.brand-logo{width:100%;height:96px;padding:16px 24px}.sidebar-user{padding:8px 10px}.sidebar-user strong{font-size:15px}.sidebar-user span{font-size:11px}nav button{min-width:0;min-height:38px;padding:0 8px;font-size:14px}main{padding:12px}.panel,.auth-panel{padding:14px}.panel{min-height:calc(100dvh - 260px)}.topbar h1{font-size:24px}.topbar-actions{width:100%;display:grid;grid-template-columns:minmax(0,1fr);justify-content:stretch}.ghost-btn{width:100%}.user-chip{width:100%;justify-content:space-between}.calendar-grid,.week-calendar-grid{gap:8px}.calendar-grid,.week-calendar-grid{grid-template-columns:1fr;overflow-x:visible}.calendar-view-toggle,.calendar-head,.calendar-cell.blank{display:none}.calendar-cell,.week-calendar-day{min-height:auto}.calendar-cell>strong{font-size:15px}table{min-width:620px}th,td{padding:10px 8px}td input,.batch-table td input,.batch-table td select{min-width:120px}.actions,.button-row{gap:6px}.actions button,.button-row button{min-height:36px;padding:0 10px}.segmented-control button{min-height:36px}.data-form,.subpanel,.rate-card{padding:12px}.month-input{max-width:none}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}
