:root{--dk:#150a32;--pu:#6d4ed0;--bb:#3843eb;--gr:#99f1e5;--gy:#efefef;--wh:#fff;--bd:#e0e0e0;--tx:#1a1a2e;--ok:#16a34a;--ok-soft:#dcfce7;--ok-text:#15803d;--warn:#d97706;--warn-soft:#fef3c7;--warn-text:#b45309;--bad:#dc2626;--bad-soft:#fee2e2;--bad-text:#b91c1c;--info:#0ea5e9;--info-soft:#e0f2fe;--info-text:#0369a1;--pu-soft:#f3f0fc;--line-soft:#f0f0f3}*{box-sizing:border-box;margin:0;padding:0}body,html{height:100%}body{background:var(--gy);color:var(--tx);font-size:14px}a{color:var(--pu)}.login-wrap{position:fixed;inset:0;background:var(--dk);display:flex;align-items:center;justify-content:center;padding:20px}.lcard{width:100%;max-width:360px;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.1);border-radius:14px;padding:30px 26px;color:#fff}.lcard .sub{font-size:13px;color:rgba(255,255,255,.6);margin-bottom:22px}.lcard label{display:block;font-size:12px;color:rgba(255,255,255,.7);margin-bottom:6px}.lcard input{width:100%;padding:12px 13px;border-radius:8px;border:1px solid rgba(255,255,255,.15);background:rgba(255,255,255,.08);color:#fff;font:inherit;font-size:14px;margin-bottom:14px}.lcard input::placeholder{color:rgba(255,255,255,.4)}.btn-login{width:100%;padding:12px;border-radius:8px;border:none;background:var(--pu);color:#fff;font:inherit;font-size:14px;font-weight:700;cursor:pointer;transition:background .2s}.btn-login:hover{background:#5a3eb8}.btn-login:disabled{opacity:.6;cursor:default}.login-or{display:flex;align-items:center;gap:10px;margin:16px 0;font-size:12px;color:#888;text-transform:uppercase}.login-or:after,.login-or:before{content:"";flex:1 1;height:1px;background:rgba(255,255,255,.15)}.btn-ms{border:1px solid rgba(255,255,255,.2);color:#1f1f1f;font-weight:600;transition:background .2s}.btn-ms:hover{background:#f0f0f0}.msg{margin-top:16px;font-size:13px;padding:11px 13px;border-radius:8px;line-height:1.4}.msg.ok{background:rgba(153,241,229,.12);color:var(--gr);border:1px solid rgba(153,241,229,.25)}.msg.err{background:rgba(239,68,68,.12);color:#fca5a5;border:1px solid rgba(239,68,68,.25)}.btn-ms{width:100%;display:flex;align-items:center;justify-content:center;gap:10px;padding:12px;border-radius:8px;border:none;background:#fff;color:#1a1a2e;font:inherit;font-size:14px;font-weight:700;cursor:pointer;transition:opacity .15s}.btn-ms:hover{opacity:.92}.btn-ms:disabled{opacity:.6;cursor:default}.divider{display:flex;align-items:center;gap:10px;margin:18px 0 14px;color:rgba(255,255,255,.45);font-size:12px}.divider:after,.divider:before{content:"";flex:1 1;height:1px;background:rgba(255,255,255,.15)}.topbar{background:var(--dk);border-bottom:2px solid var(--pu);color:#fff;display:flex;align-items:stretch;gap:22px;padding:0 22px;height:56px;position:-webkit-sticky;position:sticky;top:0;z-index:200}.brand{display:flex;align-items:center;flex-shrink:0}.brand-logo{height:28px;width:auto;display:block}.btn-out{background:none;border:1px solid rgba(255,255,255,.2);color:rgba(255,255,255,.7);padding:6px 12px;border-radius:6px;cursor:pointer;font:inherit;font-size:12px}.btn-out:hover{background:rgba(255,255,255,.08)}.main{max-width:1000px;margin:0 auto;padding:28px 22px}.main-wide{max-width:1180px}.greeting{font-size:24px;font-weight:700;color:var(--dk);margin-bottom:4px}.email-line{color:#777;font-size:13px}.role-badge{display:inline-block;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;padding:3px 9px;border-radius:20px;background:#ede9fe;color:#7c3aed;margin-left:10px;vertical-align:middle}.empty{margin-top:28px;background:var(--wh);border:1px dashed var(--bd);border-radius:12px;padding:44px;text-align:center;color:#888}.empty h2{font-size:16px;color:var(--tx);margin-bottom:6px}.lcard .note{color:rgba(255,255,255,.6);font-size:13px;line-height:1.5;margin-bottom:14px}.qr{background:#fff;padding:14px;border-radius:10px;display:inline-block;margin:4px 0 14px}.qr img,.qr svg{display:block;width:172px;height:172px}.secret{display:inline-block;margin-top:6px;font-family:ui-monospace,monospace;background:rgba(255,255,255,.08);padding:8px 10px;border-radius:6px;font-size:13px;word-break:break-all;color:#fff}input.code{letter-spacing:5px;text-align:center;font-size:18px}.remember-row{display:flex;align-items:center;gap:12px;margin:14px 0 20px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.remember-row input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.remember-checkbox{flex:0 0 20px;width:20px;height:20px;border:1.5px solid rgba(255,255,255,.35);border-radius:6px;background:rgba(255,255,255,.05);display:grid;place-items:center;transition:background .15s,border-color .15s}.remember-checkbox svg{opacity:0;transition:opacity .12s}.remember-row:hover .remember-checkbox{border-color:rgba(255,255,255,.6)}.remember-row input:checked+.remember-checkbox{background:var(--pu);border-color:var(--pu)}.remember-row input:checked+.remember-checkbox svg{opacity:1}.remember-row input:focus-visible+.remember-checkbox{outline:2px solid var(--gr);outline-offset:2px}.remember-label{font-size:13.5px;color:rgba(255,255,255,.85);line-height:1.35}.topnav{display:flex;align-items:stretch;gap:2px;flex:1 1}.navlink{display:flex;align-items:center;color:rgba(255,255,255,.65);text-decoration:none;font-size:13px;font-weight:500;padding:0 13px;border-bottom:2px solid transparent;margin-bottom:-2px;transition:color .15s,border-color .15s}.navlink:hover{color:#fff}.navlink.active{color:#fff;border-bottom-color:var(--gr)}.topbar-right{display:flex;align-items:center;gap:12px;flex-shrink:0}.admin-badge{background:var(--gr);color:var(--dk);border-radius:20px;padding:2px 9px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.4px}.user-chip{display:flex;align-items:center;gap:8px;background:rgba(255,255,255,.08);border-radius:20px;padding:3px 12px 3px 3px}.user-chip-name{font-size:13px;font-weight:500;color:rgba(255,255,255,.9);max-width:150px}@media (max-width:640px){.user-chip-name{display:none}}.page-title{font-size:24px;font-weight:700;color:var(--dk);margin-bottom:18px}.panel{background:var(--wh);border:1px solid var(--bd);border-radius:12px;padding:20px 22px;margin-bottom:20px;box-shadow:0 1px 4px rgba(0,0,0,.05)}.panel-title{font-size:14px;font-weight:700;color:var(--dk);margin-bottom:14px}.invite-form{display:flex;flex-wrap:wrap;gap:14px;align-items:flex-end}.invite-link{width:100%;margin-top:4px}.invite-link-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:6px}.invite-link-input{flex:1 1;min-width:240px;padding:9px 11px;border:1px solid var(--bd);border-radius:7px;font-family:ui-monospace,monospace;font-size:12.5px;background:#f9f9fb;color:var(--tx)}.invite-link-note{font-size:12px;color:#888;margin-top:7px}.field{display:flex;flex-direction:column;gap:5px}.field label{font-size:12px;font-weight:600;color:#666}.field input{padding:9px 11px;border:1px solid var(--bd);border-radius:7px;font:inherit;font-size:14px;min-width:220px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 16px;border-radius:7px;border:none;background:var(--pu);color:#fff;font:inherit;font-size:13px;font-weight:700;cursor:pointer}.btn svg{flex-shrink:0}.btn:hover{background:#5a3eb8}.btn:disabled{opacity:.6;cursor:default}.form-msg{width:100%;font-size:13px;margin-top:4px}.form-msg.err{color:#dc2626}.form-msg.ok{color:#16a34a}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px;padding-bottom:10px;border-bottom:1px solid var(--line-soft)}.panel-head .panel-title{margin-bottom:0}.form-section{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--pu);margin:13px 0 8px;padding-bottom:5px;border-bottom:1px solid #f0f0f3}.form-section:first-child{margin-top:0}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));grid-gap:10px 16px;gap:10px 16px;align-items:end}.form-grid .field input,.form-grid .field select,.user-form .field input,.user-form .field select{min-width:0;width:100%}.user-form .field{gap:4px}.user-form .field label{font-size:11.5px;color:#555}.field select,.field textarea{padding:9px 11px;border:1px solid var(--bd);border-radius:7px;font:inherit;font-size:14px;background:#fff;color:var(--tx)}.modal-body .field input,.modal-body .field select{padding:7px 10px;font-size:13.5px}.wd-chips{display:flex;flex-wrap:wrap;gap:8px}.wd-chip{position:relative;cursor:pointer}.wd-chip input{position:absolute;opacity:0;width:0;height:0}.wd-chip span{display:inline-flex;align-items:center;justify-content:center;min-width:48px;padding:8px 10px;border:1px solid var(--bd);border-radius:7px;font-size:13px;font-weight:600;color:#666;background:#fff;-webkit-user-select:none;-moz-user-select:none;user-select:none}.wd-chip input:checked+span{background:var(--pu);border-color:var(--pu);color:#fff}.wd-chip input:focus-visible+span{outline:2px solid var(--bb);outline-offset:2px}.lock-tag{display:inline-flex;align-items:center;gap:4px;vertical-align:middle;font-size:11px;font-weight:700;color:#b45309;background:#fff7ed;border:1px solid #fed7aa;border-radius:999px;padding:2px 8px;margin-left:8px;letter-spacing:0;text-transform:none}.pay-note{font-size:12px;color:#888;margin:-2px 0 10px;line-height:1.45}.incomplete-tag{display:inline-block;margin-top:3px;font-size:11px;font-weight:600;color:#b45309;background:#fff7ed;border:1px solid #fed7aa;border-radius:999px;padding:1px 8px;width:-moz-fit-content;width:fit-content}.table-wrap{overflow-x:auto}.dt{width:100%;border-collapse:collapse}.dt th{text-align:left;font-size:11px;font-weight:700;color:#8a8a8a;text-transform:uppercase;letter-spacing:.04em;padding:9px 12px;border-bottom:1px solid var(--bd)}.dt td{padding:11px 12px;border-bottom:1px solid var(--line-soft);font-size:14px;color:var(--tx)}.dt tbody tr:last-child td{border-bottom:none}.pill{display:inline-block;font-size:11px;font-weight:700;padding:2px 9px;border-radius:20px;text-transform:capitalize}.pill-admin{background:#ede9fe;color:#7c3aed}.pill-staff{background:#f3f4f6;color:#6b7280}.pill-active{background:#dcfce7;color:#16a34a}.pill-invited{background:#fef9c3;color:#a16207}.leave-form{display:flex;flex-direction:column;gap:14px;align-items:stretch}.lf-grid{display:grid;grid-template-columns:auto minmax(170px,1fr);grid-gap:20px;gap:20px;align-items:start}.lf-cal,.lf-side{min-width:0}.lf-side{display:flex;flex-direction:column;gap:12px}@media (max-width:560px){.lf-grid{grid-template-columns:1fr}}.leave-form input[type=date],.leave-form input[type=text],.leave-form select{padding:9px 11px;border:1px solid var(--bd);border-radius:7px;font:inherit;font-size:14px}.leave-form input[type=text]{width:100%;min-width:0}.halfcheck{display:flex;align-items:center;gap:6px;font-size:12px;color:#555;cursor:pointer}.halfcheck input{margin:0}.muted{color:#aaa;font-weight:400}.lf-actions{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.type-seg{display:flex;gap:3px;background:#ececf0;border-radius:10px;padding:3px;width:100%}.type-seg button{flex:1 1;border:none;background:none;font:inherit;font-size:13px;font-weight:600;color:#555;padding:9px 16px;border-radius:8px;cursor:pointer}.type-seg button.on{background:#fff;color:var(--dk);box-shadow:0 1px 2px rgba(0,0,0,.08)}.rp{width:100%;max-width:290px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.rp-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.rp-title{font-size:14px;font-weight:700;color:var(--dk)}.rp-nav{width:30px;height:30px;border:1px solid var(--bd);background:#fff;border-radius:7px;cursor:pointer;font-size:17px;line-height:1;color:var(--dk)}.rp-nav:hover:not(:disabled){background:var(--gy)}.rp-nav:disabled{opacity:.4;cursor:default}.rp-grid{display:grid;grid-template-columns:repeat(7,1fr);grid-gap:3px;gap:3px}.rp-dow{font-size:10px;font-weight:700;color:#aaa;text-transform:uppercase;text-align:center;padding-bottom:2px}.rp-day{aspect-ratio:1/1;border:none;background:#fff;border-radius:7px;font:inherit;font-size:13px;color:var(--tx);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .12s}.rp-day:hover:not(:disabled):not(.rp-off){background:#ede9fe}.rp-muted,.rp-off{color:#c4c4cc}.rp-off{cursor:default}.rp-booked{background:repeating-linear-gradient(-45deg,#f3f4f6,#f3f4f6 3px,#e8e8ee 0,#e8e8ee 6px);color:#b0b0b8}.rp-in{background:#ede9fe}.rp-end,.rp-start{background:var(--pu)!important;color:#fff!important;font-weight:700;border-radius:7px}.rp-hint{margin-top:8px;font-size:12px;color:#b45309}.rp-selected{display:flex;align-items:baseline;gap:8px;font-size:13px}.rp-selected-label{font-size:11px;font-weight:700;color:#888;text-transform:uppercase;letter-spacing:.3px}.rp-selected-val{font-weight:600;color:var(--dk)}.half-row{display:flex;gap:18px;flex-wrap:wrap}.btn-sm{padding:7px 12px;font-size:12px}.btn-ok{background:#16a34a}.btn-ok:hover{background:#15803d}.btn-no{background:#ef4444}.btn-no:hover{background:#dc2626}.decide{display:flex;gap:8px}.pill-pending{background:#fef9c3;color:#a16207}.pill-approved{background:#dcfce7;color:#16a34a}.pill-rejected{background:#fee2e2;color:#dc2626}.pill-cancelled{background:#f3f4f6;color:#6b7280}.day-hint{width:100%;font-size:13px;color:#666;margin-top:2px}.scope-toggle,.view-switch{display:inline-flex;gap:2px;background:#ececf0;border-radius:9px;padding:3px;margin-bottom:18px}.scope-toggle{margin-bottom:10px}.scope-toggle a,.view-switch a{padding:7px 16px;border-radius:7px;font-size:13px;font-weight:600;color:#555;text-decoration:none}.scope-toggle a.on,.view-switch a.on{background:#fff;color:var(--dk);box-shadow:0 1px 2px rgba(0,0,0,.08)}.auth-logo{height:30px;width:auto;display:block;margin-bottom:16px}.leave-head{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px 18px;margin-bottom:16px}.leave-head .page-title,.leave-head .scope-toggle,.leave-head .view-switch{margin-bottom:0}.balance-bar{display:flex;align-items:center;gap:14px 30px;flex-wrap:wrap;background:var(--wh);border:1px solid var(--bd);border-radius:12px;padding:11px 22px;margin-bottom:14px;box-shadow:0 1px 4px rgba(0,0,0,.05)}.balance-item{text-align:center}.balance-num{font-size:23px;font-weight:300;color:var(--dk);line-height:1}.balance-label{font-size:10px;color:#888;font-weight:700;text-transform:uppercase;letter-spacing:.4px;margin-top:4px}.leave-layout{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(0,1fr);grid-gap:18px;gap:18px;align-items:start}.leave-layout .panel{margin-bottom:0}.leave-layout .table-wrap{max-height:300px;overflow:auto}.leave-layout .dt th{position:-webkit-sticky;position:sticky;top:0;background:var(--wh);box-shadow:inset 0 -1px var(--bd);z-index:1}@media (max-width:880px){.leave-layout{grid-template-columns:1fr}}.hm-controls{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px 16px;margin-bottom:16px}.hm-controls-left{display:flex;gap:10px;flex-wrap:wrap}.hm-controls .scope-toggle{margin-bottom:0}.hm-nav{gap:8px}.hm-nav,.hm-nav a{display:flex;align-items:center}.hm-nav a{width:30px;height:30px;justify-content:center;border:1px solid var(--bd);border-radius:7px;background:#fff;color:var(--dk);text-decoration:none;font-size:17px;line-height:1}.hm-nav a:hover{background:var(--gy)}.hm-nav-title{font-size:15px;font-weight:700;color:var(--dk);min-width:96px;text-align:center}.hm-wrap{position:relative;background:var(--wh);border:1px solid var(--bd);border-radius:12px;padding:16px;box-shadow:0 1px 4px rgba(0,0,0,.05)}.hm-year{display:grid;grid-template-columns:repeat(6,1fr);grid-gap:14px 16px;gap:14px 16px}@media (max-width:900px){.hm-year{grid-template-columns:repeat(4,1fr)}}@media (max-width:560px){.hm-year{grid-template-columns:repeat(3,1fr)}}.hm-mini-label{font-size:12px;font-weight:700;color:var(--dk);margin-bottom:5px}.hm-mini{min-width:0}.hm-mini-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-gap:2px;gap:2px;min-width:0}.hm-mini-dow{font-size:8px;font-weight:700;color:#c4c4cc;text-align:center;text-transform:uppercase;min-width:0}.hm-mini-cell{height:22px;min-width:0;background:#fff;border:1px solid #eee;border-radius:4px;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;color:#aaa;overflow:hidden}.hm-month-grid{display:grid;grid-template-columns:repeat(7,1fr);grid-gap:6px;gap:6px}.hm-dow{font-size:11px;font-weight:700;color:#888;text-transform:uppercase;letter-spacing:.3px;text-align:center;padding-bottom:2px}.hm-month-cell{min-height:52px;background:#fff;border:1px solid var(--bd);border-radius:8px;padding:8px 9px;display:flex;flex-direction:column;justify-content:space-between}.hm-month-cell.hm-empty{background:transparent;border:none}.hm-date{font-size:14px;font-weight:700}.hm-count{font-size:11px;font-weight:600;align-self:flex-end}.hm-week{display:grid;grid-template-columns:repeat(7,1fr);grid-gap:8px;gap:8px}.hm-week-col{border:1px solid var(--bd);border-radius:9px;overflow:hidden;min-height:150px;display:flex;flex-direction:column}.hm-week-head{display:flex;align-items:baseline;justify-content:space-between;padding:8px 10px 4px}.hm-week-dow{font-size:11px;font-weight:700;color:#888;text-transform:uppercase}.hm-week-num{font-size:15px;font-weight:700;color:var(--dk)}.hm-week-bar{height:22px;margin:0 10px 8px;border-radius:5px;background:var(--gy);display:flex;align-items:center;justify-content:center}.hm-week-count{font-size:11px;font-weight:700;color:#3b0764}.hm-week-count.light{color:#fff}.hm-week-names{display:flex;flex-direction:column;gap:4px;padding:0 10px 10px}.hm-week-name{font-size:12px;font-weight:600;color:#5b21b6;background:#ede9fe;border-radius:5px;padding:2px 7px}.hm-week-rest{font-size:12px;color:#b0b0b8}.hm-muted{background:#f0f0f3!important;color:#b8b8c0!important}.hm-week-col.hm-muted .hm-week-bar{background:transparent}.hm-legend{display:flex;align-items:center;gap:7px;margin-top:16px;font-size:12px;color:#888;flex-wrap:wrap}.hm-legend-swatch{width:14px;height:14px;border-radius:3px;background:var(--gy)}.hm-legend-label{font-size:11px}.hm-legend-sep{width:1px;height:16px;background:var(--bd);margin:0 4px}.hm-tip{position:fixed;z-index:50;pointer-events:none;background:var(--dk);color:#fff;border-radius:9px;padding:10px 13px;max-width:320px;box-shadow:0 6px 20px rgba(0,0,0,.3)}.hm-tip-head{font-size:12px;font-weight:700;margin-bottom:6px;white-space:nowrap}.hm-tip-names{display:flex;flex-direction:column;gap:3px;font-size:12px;color:rgba(255,255,255,.85)}.hm-tip-names.cols{display:block;column-count:2;column-gap:18px}.hm-tip-names.cols span{display:block;margin-bottom:3px;page-break-inside:avoid;break-inside:avoid}.avatar-img{border-radius:50%;object-fit:cover;display:block;background:var(--gy)}.avatar-fallback{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:var(--pu);color:#fff;font-weight:700;line-height:1}.user-cell{display:flex;align-items:center;gap:11px}.user-meta{display:flex;flex-direction:column;gap:1px}.user-name{font-weight:600;color:var(--dk);display:flex;align-items:center;gap:7px}.user-email{font-size:12px;color:#888}.you-tag{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.3px;background:var(--gr);color:var(--dk);border-radius:20px;padding:1px 7px}.avatar-upload{position:relative;border:none;background:none;padding:0;cursor:pointer;border-radius:50%;flex-shrink:0;line-height:0}.avatar-edit{position:absolute;right:-2px;bottom:-2px;width:16px;height:16px;border-radius:50%;background:var(--dk);color:#fff;font-size:9px;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .15s}.avatar-upload:hover .avatar-edit{opacity:1}.allowance-input,.role-select{padding:6px 9px;border:1px solid var(--bd);border-radius:7px;font:inherit;font-size:13px;background:#fff;color:var(--tx)}.allowance-input{width:72px}.row-actions{display:flex;gap:7px;justify-content:flex-end;align-items:center}.icon-btn{color:#555}.icon-btn:hover{background:var(--gy);color:var(--tx)}.icon-btn:disabled{opacity:.5}.icon-btn-danger{color:#dc2626;border-color:#f3c9c9}.icon-btn-danger:hover{background:#fde8e8;color:#b91c1c;border-color:#f0b4b4}.access-option{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px;border:1px solid var(--bd);border-radius:10px;margin-bottom:10px}.access-option.danger{border-color:#f3c9c9;background:#fff8f8}.access-option.is-locked{opacity:.7}.access-option-text strong{display:block;font-size:14px;color:var(--tx);margin-bottom:3px}.access-option-text p{font-size:12.5px;color:#777;line-height:1.45}.access-option .btn{flex-shrink:0}.users-dt td{vertical-align:middle}.row-busy{opacity:.55;pointer-events:none}.btn-light{background:#fff;color:var(--dk);border:1px solid var(--bd)}.btn-light:hover{background:var(--gy)}.modal-back{position:fixed;inset:0;background:rgba(21,10,50,.55);display:flex;align-items:center;justify-content:center;padding:20px;z-index:300}.modal{width:100%;max-width:420px;background:#fff;border-radius:14px;padding:22px 24px;box-shadow:0 20px 60px rgba(0,0,0,.3)}.modal-form{max-width:720px;max-height:calc(100vh - 64px);padding:0;overflow:hidden}.modal-form,.modal-form-inner{display:flex;flex-direction:column}.modal-form-inner{flex:1 1 auto;min-height:0}.modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding:18px 22px;border-bottom:1px solid var(--bd);flex-shrink:0}.modal-head h3{font-size:17px;font-weight:700;color:var(--dk)}.modal-sub{font-size:12.5px;color:#888;margin-top:3px}.modal-close{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;background:none;cursor:pointer;font-size:24px;line-height:1;color:#aaa;padding:0;border-radius:6px;flex-shrink:0}.modal-close:hover{background:var(--gy);color:var(--tx)}.modal-body{padding:16px 22px;overflow-y:auto;flex:1 1 auto;min-height:0}.modal-foot{display:flex;justify-content:flex-end;gap:10px;padding:14px 22px;border-top:1px solid var(--bd);background:#fff;flex-shrink:0}.modal-title{font-size:17px;font-weight:700;color:var(--dk);margin-bottom:8px}.modal-title.danger{color:#dc2626}.modal-text{font-size:13px;color:#555;line-height:1.5;margin-bottom:16px}.modal-label{display:block;font-size:12px;font-weight:600;color:#666;margin-bottom:6px}.modal-input{width:100%;padding:10px 12px;border:1px solid var(--bd);border-radius:8px;font:inherit;font-size:14px;margin-bottom:14px}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:4px}.cancel-wrap{display:inline-flex;align-items:center;gap:8px;margin-left:10px}.cancel-link{border:none;background:none;color:#888;font:inherit;font-size:12px;text-decoration:underline;cursor:pointer;padding:0}.cancel-link:hover{color:#dc2626}.cancel-link:disabled{opacity:.6;cursor:default}.cancel-err{font-size:11px;color:#dc2626}.cancel-confirm{font-size:11px;color:#444;max-width:200px}.cancel-no,.cancel-yes{border:1px solid var(--bd);background:#fff;font:inherit;font-size:11px;font-weight:600;padding:2px 9px;border-radius:6px;cursor:pointer}.cancel-yes{background:#ef4444;border-color:#ef4444;color:#fff}.cancel-yes:hover{background:#dc2626}.cancel-no:hover{background:var(--gy)}.ctrl-dd{position:relative}.ctrl-trigger{display:inline-flex;align-items:center;gap:8px;padding:8px 12px;border:1px solid var(--bd);border-radius:9px;background:#fff;color:var(--dk);font-size:13px;font-weight:600;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.ctrl-dd:focus-within .ctrl-trigger,.ctrl-trigger:hover{border-color:var(--pu)}.ctrl-trigger>svg{color:var(--pu)}.ctrl-chev{display:inline-flex;margin-left:2px}.ctrl-chev svg{color:#aaa}.ctrl-dd:after{content:"";position:absolute;left:0;right:0;top:100%;height:8px}.ctrl-menu{position:absolute;top:calc(100% + 6px);left:0;z-index:40;min-width:160px;background:#fff;border:1px solid var(--bd);border-radius:11px;box-shadow:0 10px 28px rgba(0,0,0,.14);padding:5px;opacity:0;visibility:hidden;transform:translateY(-4px);transition:opacity .12s,transform .12s}.ctrl-menu.open{opacity:1;visibility:visible;transform:translateY(0)}.ctrl-opt{display:flex;align-items:center;gap:10px;padding:8px 11px;border-radius:8px;text-decoration:none;color:var(--dk);font-size:13px;font-weight:500;white-space:nowrap}.ctrl-opt>svg{color:#9a9aa5}.ctrl-opt:hover{background:var(--gy)}.ctrl-opt.on{background:#ede9fe;color:#5b21b6;font-weight:700}.ctrl-opt.on>svg{color:var(--pu)}.hm-st-approved{background:#5dcaa5!important;color:#04342c!important}.hm-st-pending{background:#f3c46a!important;color:#5a3c08!important}.hm-st-rejected{background:#efa3a3!important;color:#6b1d1d!important}.hm-bookable{background:#fff}.hm-click{cursor:pointer}.hm-mini-cell.hm-click:hover,.hm-month-cell.hm-click:hover,.hm-sel,.hm-week-col.hm-click:hover{outline:2px solid var(--pu);outline-offset:-2px}.hm-sel{background:#ddd6fe!important;color:#3b0764!important}.hm-tag{font-size:11px;font-weight:600;align-self:flex-end}.hm-week-body{display:flex;flex-direction:column;gap:5px;padding:8px 10px 10px}.hm-key{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:#555}.hm-key-dot{width:14px;height:14px;border-radius:4px;display:inline-block}.hm-chip{display:inline-block;font-size:11px;font-weight:700;text-transform:capitalize;padding:3px 9px;border-radius:6px}.book-modal{max-width:470px}.bm-section{margin-bottom:16px}.bm-dates{gap:10px}.bm-summary{margin-top:8px;font-size:13px;font-weight:600;color:var(--dk)}.bm-count{font-size:14px;color:var(--dk);margin-bottom:16px}.bm-count strong{font-size:18px}.bm-label{display:block;font-size:12px;font-weight:700;color:#666;text-transform:uppercase;letter-spacing:.3px;margin-bottom:8px}.bm-note{font-size:12px;color:#888;margin-top:8px}.bm-note.err{color:#dc2626;font-weight:600}.type-seg-3 button{font-size:12px;padding:9px 6px}.type-seg button:disabled{opacity:.4;cursor:default}.manage-row{display:flex;justify-content:space-between;align-items:center;padding:9px 0;border-bottom:1px solid #f0f0f0;font-size:14px}.manage-row span:first-child{color:#888}.hm-st-sick{background:repeating-linear-gradient(-45deg,#ffe3d5,#ffe3d5 4px,#ffb89e 0,#ffb89e 8px)!important;color:#7c2d12!important}.hm-hint{font-size:12px;color:#6b5fae;background:#f3f0fe;border:1px solid #e4ddfb;border-radius:8px;padding:7px 12px;margin-bottom:12px}.bm-dates{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap;margin-bottom:14px}.bm-field{display:flex;flex-direction:column;gap:5px;font-size:12px;font-weight:600;color:#666}.bm-field input{padding:9px 11px;border:1px solid var(--bd);border-radius:8px;font:inherit;font-size:14px}.bm-arrow{padding-bottom:10px;color:#888}.bm-count{margin-left:auto;padding-bottom:8px;font-size:13px;color:#666}.bm-count strong{font-size:20px;color:var(--dk);margin-right:3px}.bm-half{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}.seg{display:inline-flex;gap:2px;background:#ececf0;border-radius:9px;padding:3px}.seg button{border:none;background:none;font:inherit;font-size:12px;font-weight:600;color:#555;padding:7px 14px;border-radius:7px;cursor:pointer}.seg button.on{background:#fff;color:var(--dk);box-shadow:0 1px 2px rgba(0,0,0,.08)}.bm-types{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:8px;gap:8px;margin-bottom:4px}.bm-type{padding:11px 8px;border:1px solid var(--bd);border-radius:9px;background:#fff;font:inherit;font-size:13px;font-weight:600;color:#555;cursor:pointer}.bm-type.on{border-color:var(--pu);background:#ede9fe;color:#5b21b6}.bm-type:disabled{opacity:.4;cursor:default}.bm-noteinput{margin-top:14px;margin-bottom:4px}.hm-hint-text{font-size:12px;color:#6b5fae;font-weight:600}.hm-hint-text.warn{color:#dc2626}.hm-tip-sub{font-size:11px;color:rgba(255,255,255,.7);margin-top:-2px}.hm-week-bh{color:#b45309!important;font-weight:600}.bm-halves{margin:4px 0 16px}.bm-halves .bm-label{margin-bottom:8px}.half-segs{gap:8px}.half-segs,.half-toggles{display:flex;flex-wrap:wrap}.half-toggles{gap:10px}.half-toggle{display:inline-flex;align-items:center;gap:7px;flex:1 1;min-width:130px;justify-content:center;padding:10px 14px;border:1px solid var(--bd);border-radius:9px;background:#fff;font:inherit;font-size:13px;font-weight:600;color:#555;cursor:pointer;transition:border-color .12s,background .12s,color .12s}.half-toggle.on,.half-toggle:hover:not(:disabled){border-color:var(--pu)}.half-toggle.on{background:#ede9fe;color:#5b21b6}.half-toggle:disabled{opacity:.45;cursor:default}.half-toggle svg{color:var(--pu)}.crumb{display:flex;align-items:center;gap:8px;font-size:13px;color:#999;margin-bottom:6px}.crumb a{color:var(--pu);text-decoration:none;font-weight:600}.crumb a:hover{text-decoration:underline}.nav-badge{display:inline-flex;justify-content:center;min-width:18px;height:18px;padding:0 5px;margin-left:7px;border-radius:20px;background:#ef4444;color:#fff;font-size:11px;font-weight:700;line-height:1}.alert,.nav-badge{align-items:center}.alert{display:flex;gap:14px;border-radius:12px;padding:14px 18px;margin-bottom:20px;text-decoration:none}.alert-action{background:#fffaf1;border:1px solid #f3e2c6;color:#7a5a32}.alert-action:hover{background:#fbf3e4}.alert-clear{background:#f0fdf4;border:1px solid #bbf7d0;color:#14532d}.alert-icon{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:9px;flex-shrink:0}.alert-action .alert-icon{background:#f7ead2;color:var(--warn-text)}.alert-clear .alert-icon{background:#dcfce7;color:#16a34a}.alert-body{display:flex;flex-direction:column;gap:2px;flex:1 1}.alert-body strong{font-size:14px}.alert-body span{font-size:12.5px;opacity:.85}.alert-go{color:#c2410c;display:inline-flex}.tile-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));grid-gap:16px;gap:16px}.tile{display:flex;align-items:center;gap:14px;background:var(--wh);border:1px solid var(--bd);border-radius:14px;padding:20px;text-decoration:none;color:var(--tx);box-shadow:0 1px 4px rgba(0,0,0,.05);transition:transform .12s,box-shadow .12s,border-color .12s}.tile:hover{transform:translateY(-2px);box-shadow:0 8px 22px rgba(21,10,50,.12);border-color:var(--pu)}.tile-icon{display:inline-flex;align-items:center;justify-content:center;width:46px;height:46px;border-radius:12px;background:#ede9fe;color:var(--pu);flex-shrink:0}.tile-main{display:flex;flex-direction:column;gap:3px;flex:1 1;min-width:0}.tile-title{font-size:15px;font-weight:700;color:var(--dk)}.tile-desc{font-size:12.5px;color:#777;line-height:1.4}.tile-alert{background:#ef4444;color:#fff;font-weight:700;padding:3px 10px;border-radius:20px}.tile-alert,.tile-note{font-size:11px;white-space:nowrap;flex-shrink:0}.tile-note{font-weight:600;color:#999}.tile-go{color:#c4c4cc;display:inline-flex;flex-shrink:0}.tile:hover .tile-go{color:var(--pu)}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--bd);margin-bottom:18px}.tab{display:inline-flex;align-items:center;gap:8px;padding:10px 16px;border-bottom:2px solid transparent;margin-bottom:-1px;text-decoration:none;color:#777;font-size:14px;font-weight:600}.tab:hover{color:var(--dk)}.tab.on{color:var(--pu);border-bottom-color:var(--pu)}.tab svg{color:currentColor}.tab-count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:20px;background:#ef4444;color:#fff;font-size:11px;font-weight:700}.filters{gap:10px;flex-wrap:wrap;margin-bottom:16px}.filter-search,.filters{display:flex;align-items:center}.filter-search{gap:8px;border:1px solid var(--bd);border-radius:9px;background:#fff;padding:0 11px;height:38px;flex:1 1;min-width:200px}.filter-search svg{color:#aaa;flex-shrink:0}.filter-search input{border:none;outline:none;font:inherit;font-size:14px;width:100%;background:transparent;color:var(--tx)}.filter-clear{border:none;background:none;color:var(--pu);font:inherit;font-size:13px;font-weight:600;cursor:pointer;text-decoration:underline;padding:6px 4px}.fdot{width:11px;height:11px;border-radius:50%;display:inline-block;flex-shrink:0}.filters .ctrl-trigger{height:38px}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border:1px solid var(--bd);border-radius:8px;background:#fff;color:#666;cursor:pointer;transition:background .12s,border-color .12s,color .12s}.icon-btn:hover:not(:disabled){background:var(--gy);border-color:var(--pu);color:var(--pu)}.icon-btn:disabled{opacity:.4;cursor:default}.icon-btn-danger:hover:not(:disabled){background:#fef2f2;border-color:#ef4444;color:#ef4444}.pager{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-top:14px}.pager-info{font-size:13px;color:#888}.pager-btns{display:flex;gap:8px}.note-cell,.note-col{max-width:220px}.note-cell{position:relative;display:inline-block;cursor:default;outline:none}.note-preview{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#555}.note-cell:focus-visible .note-preview{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.note-empty{color:#ccc}.note-pop{position:fixed;z-index:120;transform:translateY(-100%);width:max-content;max-width:280px;background:var(--dk);color:#fff;font-size:12px;line-height:1.45;padding:9px 12px;border-radius:9px;box-shadow:0 8px 22px rgba(0,0,0,.28);white-space:normal;pointer-events:none}.timing{display:inline-block;font-size:11px;font-weight:700;padding:2px 9px;border-radius:20px}.timing-upcoming{background:#e0e7ff;color:#4338ca}.timing-inprogress{background:#dcfce7;color:#15803d}.timing-finished{background:#f3f4f6;color:#6b7280}.panel-empty{display:flex;flex-direction:column;align-items:center;gap:10px;padding:38px 20px;color:#999;text-align:center}.panel-empty svg{color:#c4b5fd}.panel-empty p{font-size:14px}.bh-add{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap;margin-bottom:6px}.bh-add .field input{min-width:0}.bh-year{margin-top:18px}.bh-year-label{font-size:12px;font-weight:700;color:#999;text-transform:uppercase;letter-spacing:.4px;margin-bottom:8px}.bh-list{list-style:none;display:flex;flex-direction:column;gap:6px}.bh-row{display:flex;align-items:center;gap:14px;padding:9px 12px;border:1px solid var(--bd);border-radius:9px;background:#fff}.bh-date{display:inline-flex;align-items:baseline;gap:8px;font-size:13px;font-weight:600;color:var(--dk);width:150px;flex-shrink:0}.bh-dow{font-size:11px;font-weight:700;color:#aaa;text-transform:uppercase}.bh-name{flex:1 1;font-size:14px;color:var(--tx)}.bh-confirm{display:inline-flex;align-items:center;gap:7px;font-size:12px;color:#444}.toff-list{list-style:none;display:flex;flex-direction:column;gap:8px}.toff-row{justify-content:space-between;gap:14px;background:var(--wh);border:1px solid var(--bd);border-radius:10px;padding:12px 16px}.toff-info,.toff-row{display:flex;align-items:center}.toff-info{gap:12px;flex-wrap:wrap}.toff-dates{font-weight:600;color:var(--dk);font-size:14px}.toff-days{color:#888;font-size:13px}@media (max-width:560px){.toff-row{flex-direction:column;align-items:flex-start}}.ts-intro{color:#666;font-size:13.5px;line-height:1.6;margin:4px 0 18px;max-width:760px}.ts-intro a{color:var(--pu);font-weight:600}.ts-wrap{position:relative}.ts-msg{position:-webkit-sticky;position:sticky;top:8px;z-index:5;display:inline-block;padding:8px 14px;border-radius:8px;font-size:13px;font-weight:600;margin-bottom:10px}.ts-msg-err{background:#fef2f2;color:#b91c1c;border:1px solid #fecaca}.ts-msg-ok{background:#f0fdf4;color:#15803d;border:1px solid #bbf7d0}.ts-table{width:100%;border-collapse:separate;border-spacing:0;min-width:640px}.ts-table td,.ts-table th{border-bottom:1px solid var(--bd)}.ts-rowhead{text-align:left;padding:10px 12px;font-size:13px;color:var(--dk);white-space:nowrap;position:relative}.ts-dayhead{text-align:center;padding:10px 8px;font-size:12.5px;color:#555;width:84px}.ts-dayhead.ts-locked{color:#aaa;background:#fafafa}.ts-lockmark{margin-left:4px;font-size:11px}.ts-auto{display:inline-block;margin-left:6px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:#8a6d3b;border:1px solid #fed7aa;border-radius:5px;padding:1px 5px}.ts-cell{text-align:center;padding:6px}.ts-reserved{font-size:12px;color:#b45309;font-weight:600}.ts-reserved:not(.ts-reserved-on){color:#cbd5d1;font-weight:400}.ts-btn{width:46px;height:34px;border-radius:8px;border:1px solid var(--bd);background:#fff;font-size:15px;font-weight:700;color:var(--dk);cursor:pointer;transition:background .12s,border-color .12s}.ts-btn:hover:not(:disabled){border-color:var(--pu);background:#faf8ff}.ts-btn.ts-half{background:#ede9fe;border-color:#c4b5fd;color:#5b21b6}.ts-btn.ts-full{background:var(--pu);border-color:var(--pu);color:#fff}.ts-btn-off,.ts-btn:disabled{background:#f6f6f6;border-color:#eee;color:#ccc;cursor:not-allowed}.ts-rowlabel{display:inline-flex;align-items:center;gap:8px}.ts-tag-uncoded{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:#92400e;background:#fffbeb;border:1px solid #fde68a;border-radius:5px;padding:1px 6px}.ts-rowremove{margin-left:10px;border:none;background:transparent;color:#bbb;cursor:pointer;vertical-align:middle}.ts-rowremove:hover{color:#ef4444}.ts-empty-row{color:#999;font-weight:400;text-align:center;padding:24px}.ts-totalrow td{border-bottom:none;border-top:2px solid var(--bd);font-weight:700}.ts-total{color:#999;font-size:14px}.ts-total-part{color:var(--dk)}.ts-total-full{color:#15803d}.ts-add{margin-top:18px;background:var(--wh);border:1px solid var(--bd);border-radius:12px;padding:16px 18px;display:flex;flex-direction:column;gap:12px}.ts-add-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.ts-add-row label{font-size:13px;font-weight:600;color:var(--dk);min-width:96px}.ts-add-row input,.ts-add-row select{flex:1 1;min-width:200px;padding:9px 11px;border-radius:8px;border:1px solid var(--bd);font:inherit;font-size:14px}.ts-add-hint{font-size:12.5px;color:#888;margin:0}.data-table{width:100%;border-collapse:collapse;min-width:560px}.data-table th{text-align:left;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:#8a8a8a;padding:9px 12px;border-bottom:1px solid var(--bd)}.data-table td{padding:11px 12px;border-bottom:1px solid var(--line-soft);font-size:14px;color:var(--tx)}.data-table tbody tr:last-child td{border-bottom:none}.data-table .num{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.data-table th.num{text-align:right}.row-click{cursor:pointer}.row-click:hover td{background:#faf8ff}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;color:#555}.proj-flags{white-space:nowrap}.alloc-list{display:flex;flex-direction:column;gap:8px;margin-bottom:6px}.alloc-empty{font-size:13px;color:#888;margin:0}.alloc-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.alloc-row input,.alloc-row select{padding:8px 10px;border-radius:7px;border:1px solid var(--bd);font:inherit;font-size:13px}.alloc-row select{flex:1.4 1;min-width:130px}.alloc-row input:not([type=number]),.alloc-row input[type=text]{flex:1.2 1;min-width:120px}.alloc-row input[type=number]{width:86px}.proposal-box{display:flex;flex-direction:column;gap:10px}.proposal-have,.proposal-upload{display:flex;gap:8px}.proposal-upload{align-items:center;flex-wrap:wrap}.rep-table td{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.rep-over{color:#dc2626;font-weight:700}.rep-good{color:#15803d;font-weight:700}.rep-flag{display:inline-block;padding:0 4px;border-radius:4px;font-weight:700}.rep-note{color:#b45309;cursor:help}.rep-note svg,.ts-intro>svg{vertical-align:-2px}.manage-ics{width:100%;margin:6px 0 2px}.stat-row{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:14px;gap:14px;margin-bottom:18px}.stat-card{display:flex;align-items:flex-start;gap:14px;background:var(--wh);border:1px solid var(--bd);border-radius:12px;padding:16px 18px;text-decoration:none;color:inherit;box-shadow:0 1px 4px rgba(0,0,0,.05)}a.stat-card:hover{border-color:#cfc5ee}.stat-ic{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:9px;flex-shrink:0;margin-top:2px;background:var(--pu-soft);color:var(--pu)}.stat-ic-ok{background:var(--ok-soft);color:var(--ok-text)}.stat-ic-warn{background:var(--warn-soft);color:var(--warn-text)}.stat-ic-bad{background:var(--bad-soft);color:var(--bad-text)}.stat-ic-info{background:var(--info-soft);color:var(--info-text)}.stat-main{display:flex;flex-direction:column;min-width:0}.stat-label{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:#888;font-weight:700}.stat-num{font-size:26px;font-weight:300;color:var(--dk);margin-top:2px;line-height:1.1}.stat-of{font-size:13px;font-weight:500;color:#9a9a9a}.stat-foot{font-size:12.5px;color:#888;margin-top:5px}@media (max-width:760px){.stat-row{grid-template-columns:1fr}}.board-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:14px}.board-sub{color:#777;font-size:13px;max-width:640px}.board-actions{gap:8px}.board-actions,.toolbar{display:flex;flex-wrap:wrap}.toolbar{gap:10px;margin-bottom:14px}.toolbar-search{display:flex;align-items:center;gap:8px;background:var(--wh);border:1px solid var(--bd);border-radius:8px;padding:0 10px;flex:1 1;min-width:220px;color:#aaa}.toolbar-search input{border:none;background:transparent;padding:10px 0;width:100%;outline:none}.toolbar select,.toolbar-search input{font:inherit;font-size:14px;color:var(--dk)}.toolbar select{padding:9px 11px;border-radius:8px;border:1px solid var(--bd);background:var(--wh)}.muted{color:#bbb}.clogo{display:inline-flex;align-items:center;justify-content:flex-start;min-width:30px;max-width:92px;overflow:hidden;vertical-align:middle}.clogo img{height:100%;width:auto;max-width:92px;object-fit:contain;object-position:left center;display:block}.clogo-mono{padding:2px 8px;border:1px solid;border-radius:6px;font-size:10px;font-weight:700;letter-spacing:.02em}.client-add{display:flex;gap:8px;margin-bottom:12px;flex-wrap:wrap}.client-add input{padding:9px 11px;border-radius:8px;border:1px solid var(--bd);font:inherit;font-size:14px;flex:1 1;min-width:150px}.client-list{display:flex;flex-direction:column;gap:10px}.client-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:8px 10px;border:1px solid var(--bd);border-radius:10px;background:var(--wh)}.client-name{font-weight:600;font-size:13px;flex:1 1;min-width:110px;color:var(--dk)}.client-sc{width:84px;padding:6px 8px;font:inherit;font-size:12px}.client-color,.client-sc{border:1px solid var(--bd);border-radius:6px}.client-color{width:38px;height:30px;padding:0;background:none;cursor:pointer}.client-scale{width:62px;padding:6px 8px;border:1px solid var(--bd);border-radius:6px;font:inherit;font-size:12px}.client-upload{cursor:pointer}.ts-controls{justify-content:space-between;gap:12px;margin-bottom:12px}.ts-controls,.ts-controls-left{display:flex;align-items:center;flex-wrap:wrap}.ts-controls-left{gap:14px}.ts-controls-right{display:flex;gap:8px}.ts-viewing{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:#666}.ts-viewing select{padding:8px 10px;border-radius:8px;border:1px solid var(--bd);font:inherit;font-size:14px;background:var(--wh);color:var(--dk)}.ts-table thead th{background:var(--dk);border-bottom:none}.ts-table thead .ts-rowhead{color:#fff}.ts-table thead .ts-dayhead{color:rgba(255,255,255,.85)}.ts-table thead .ts-dayhead.ts-locked{color:rgba(255,255,255,.42);background:transparent}.ts-matrix td.num,.ts-matrix th.num{text-align:center}.tsdot{display:inline-flex;align-items:center;justify-content:center;min-width:34px;height:22px;padding:0 6px;border-radius:6px;font-size:11px;font-weight:800;text-decoration:none}.tsdot-complete{background:#dcfce7;color:#15803d}.tsdot-partial{background:#fef3c7;color:#b45309}.tsdot-missing{background:#fee2e2;color:#b91c1c}.tsdot-none{background:#f1f5f9;color:#94a3b8}a.tsdot:hover{outline:2px solid var(--pu)}.ts-legend{display:flex;gap:16px;flex-wrap:wrap;margin-top:12px;font-size:12.5px;color:#666;align-items:center}.ts-legend .tsdot{margin-right:5px}.panel-link{display:inline-flex;align-items:center;gap:3px;color:var(--pu);text-decoration:none;font-size:12.5px;font-weight:600;white-space:nowrap}.panel-link:hover{text-decoration:underline}.panel-flush{padding:0;overflow:hidden}.panel-flush .panel-head{margin-bottom:0;padding:13px 16px 11px}.panel-flush .toff-list{padding:6px 16px 10px}.ts-toast{position:fixed;right:18px;bottom:18px;z-index:60;padding:9px 14px;border-radius:9px;font-size:13px;font-weight:600;box-shadow:0 6px 20px rgba(0,0,0,.18)}.ts-toast-ok{background:#16a34a;color:#fff}.ts-toast-err{background:#dc2626;color:#fff}.ts-hours{width:50px;height:32px;text-align:center;border:1px solid transparent;border-radius:7px;font:inherit;font-size:14px;color:var(--dk);background:transparent;-moz-appearance:textfield;transition:border-color .12s,background .12s}.ts-hours::-webkit-inner-spin-button,.ts-hours::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.ts-hours::placeholder{color:#cfcfda}.ts-hours:hover:not(:disabled){border-color:var(--bd)}.ts-hours:focus{outline:none;border-color:var(--pu);background:#fff;box-shadow:0 0 0 2px rgba(109,74,255,.18)}.ts-hours-on{background:#f3f0fc;border-color:#ddd4fb;font-weight:700}.ts-hours:disabled{background:transparent;border-color:transparent;color:#ccc}.ts-totcol{text-align:center}.ts-rowtotal{font-weight:700}.ts-link{margin-left:8px;border:none;background:none;color:var(--pu);font:inherit;font-size:12px;font-weight:600;cursor:pointer;text-decoration:underline}.ts-linkbox{display:inline-flex;gap:6px;align-items:center;flex-wrap:wrap}.ts-linkbox select{padding:6px 8px;border:1px solid var(--bd);border-radius:6px;font:inherit;font-size:12px;max-width:190px}.avstack-row{display:inline-flex;align-items:center}.avstack-av{margin-left:-6px;border-radius:50%;box-shadow:0 0 0 2px #fff}.avstack-av:first-child{margin-left:0}.avstack-more{margin-left:5px;font-size:11px;font-weight:700;color:#888}.avstack-tip{display:none;position:absolute;left:0;top:calc(100% + 6px);z-index:30;background:var(--dk);color:#fff;border-radius:8px;padding:8px 11px;font-size:12px;min-width:140px;box-shadow:0 8px 24px rgba(0,0,0,.22);flex-direction:column;gap:3px;white-space:nowrap}.avstack:hover .avstack-tip{display:flex}.hm-heat{color:var(--dk)!important;text-shadow:0 0 2px #fff,0 0 3px #fff;font-weight:700}.hm-today{box-shadow:inset 0 0 0 2px var(--pu);border-radius:5px}.cbx{position:relative}.cbx,.cbx-btn{display:inline-flex}.cbx-btn{align-items:center;gap:8px;min-width:200px;max-width:100%;padding:9px 11px;border-radius:8px;border:1px solid var(--bd);background:var(--wh);color:var(--dk);font:inherit;font-size:14px;cursor:pointer;text-align:left}.cbx-btn:hover:not(:disabled){border-color:#c9c2f0}.cbx-btn:disabled{background:#f6f6f6;color:#aaa;cursor:not-allowed}.cbx-btn-on{border-color:var(--pu);background:#f6f3ff}.cbx-btn-label{flex:1 1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cbx-placeholder{color:#8a8a8a}.cbx-clear{display:inline-flex;color:#999;border-radius:4px;padding:1px}.cbx-clear:hover{color:var(--dk);background:#eee}.cbx-pop{z-index:400;background:var(--wh);border:1px solid var(--bd);border-radius:10px;box-shadow:0 14px 40px rgba(21,10,50,.22);overflow:hidden;display:flex;flex-direction:column;max-height:320px}.cbx-search{display:flex;align-items:center;gap:8px;padding:9px 11px;border-bottom:1px solid var(--bd);color:#aaa;flex-shrink:0}.cbx-search input{border:none;outline:none;background:transparent;font:inherit;font-size:14px;width:100%;color:var(--dk)}.cbx-list{overflow-y:auto;padding:4px}.cbx-empty{padding:14px 12px;font-size:13px;color:#999;text-align:center}.cbx-opt{display:flex;align-items:center;gap:9px;width:100%;padding:8px 9px;border:none;background:none;border-radius:7px;font:inherit;font-size:13.5px;color:var(--dk);cursor:pointer;text-align:left}.cbx-opt:hover{background:#f4f1ff}.cbx-opt-label{flex:1 1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cbx-opt-hint{font-family:ui-monospace,Menlo,monospace;font-size:11px;color:#9a9a9a}.cbx-box{display:inline-flex;align-items:center;justify-content:center;width:17px;height:17px;border:1.5px solid var(--bd);border-radius:5px;color:#fff;flex-shrink:0}.cbx-check.on .cbx-box{background:var(--pu);border-color:var(--pu)}.cbx-foot{display:flex;justify-content:space-between;padding:7px 9px;border-top:1px solid var(--bd);flex-shrink:0}.cbx-foot-btn{border:none;background:none;font:inherit;font-size:12.5px;font-weight:600;color:#777;cursor:pointer;padding:4px 6px;border-radius:6px}.cbx-foot-btn:hover{background:#f0f0f0;color:var(--dk)}.cbx-foot-done{color:var(--pu)}.ts-add-field{flex:1 1;min-width:220px;display:flex}.ts-add-field .cbx,.ts-add-field .cbx-btn{width:100%}.ts-add-main{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.ts-add-or{font-size:12.5px;color:#aaa}.ts-add-task{border:none;background:none;padding:8px 2px;font:inherit;font-size:13.5px;font-weight:600;color:var(--pu);cursor:pointer;text-decoration:underline;text-underline-offset:2px}.ts-add-task:hover{color:#5436b0}.ts-weekcap{font-size:12.5px;color:#777;background:#f6f5fb;border:1px solid var(--bd);border-radius:999px;padding:4px 12px}.ts-weekcap strong{color:var(--dk)}.ts-weekcap.over{background:#fef2f2;border-color:#fecaca;color:#b91c1c}.ts-weekcap.over strong{color:#b91c1c}.ts-weekcap-off{opacity:.75}.ts-viewonly{font-size:10.5px;font-weight:600;color:#8a6d3b;background:#fff7ed;border:1px solid #fde7c8;border-radius:5px;padding:1px 7px}.ts-linkbox .cbx-btn{min-width:180px}.ts-table tbody td,.ts-table tbody th{border-bottom:1px solid #f0f0f3}.ts-table tbody tr:hover td:not(.ts-rowhead){background:#fbfaff}.ts-autorow td{background:#fbfaf7}.ts-rowhead{font-size:13.5px}.ts-add{margin-top:16px;gap:8px}.ts-add-hint{color:#9a9a9a}.ts-auto{background:#fff7ed}.ts-auto,.ts-tag-uncoded{border-color:#fde7c8;color:#9a7a45}.ts-tag-uncoded{background:#fffaf0}.ts-total{color:#b0b0b8}.ts-totalrow td{border-top:1px solid var(--bd)}.ts-dayhead{font-weight:600;letter-spacing:.01em}.ts-group-row td{padding:0;border-bottom:1px solid #eceaf4}.ts-group-cell{padding:0;background:#faf9fc}.ts-group-toggle{display:flex;align-items:center;gap:10px;width:100%;padding:11px 12px;border:none;background:transparent;cursor:pointer;font:inherit;text-align:left;color:var(--dk)}.ts-group-toggle:hover{background:#f3f1fb}.ts-group-chev{display:inline-flex;width:14px;justify-content:center;color:#9a8cd0;font-size:11px;transition:transform .15s ease}.ts-group-chev.open{transform:rotate(90deg)}.ts-group-name{font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:#6a6a78}.ts-group-meta{margin-left:auto;font-size:12px;color:#9a9a9a;font-weight:600}.ts-internal-row td{background:#fcfbfe}.ts-internal-row:hover td:not(.ts-rowhead){background:#f7f4ff}.ts-internal-label{color:var(--pu);font-weight:600}.utask-add{display:flex;flex-direction:column;gap:8px;background:#faf9ff;border:1px solid #ece8fb;border-radius:12px;padding:14px;margin-bottom:14px}.utask-details,.utask-label{padding:9px 11px;border-radius:8px;border:1px solid var(--bd);font:inherit;font-size:14px;width:100%}.utask-details{resize:vertical}.utask-add .btn{align-self:flex-start}.utask-list{list-style:none;display:flex;flex-direction:column;gap:8px;margin:0;padding:0}.utask-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:10px 12px;border:1px solid var(--bd);border-radius:10px;background:var(--wh)}.utask-archived .utask-row{background:#fafafa}.utask-main{flex:1 1;min-width:160px;display:flex;flex-direction:column;gap:2px}.utask-name{font-weight:600;font-size:13.5px;color:var(--dk)}.utask-desc{font-size:12.5px;color:#777}.utask-meta{font-size:11.5px;color:#999}.utask-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.utask-actions .cbx-btn{min-width:160px}.avstack{position:relative;display:inline-flex;cursor:default;outline:none;border-radius:6px}.avstack:focus-visible{box-shadow:0 0 0 2px var(--pu)}.avstack-tip-fixed{z-index:500;background:var(--dk);color:#fff;border-radius:9px;padding:9px 12px;font-size:12px;min-width:150px;max-width:240px;box-shadow:0 10px 30px rgba(0,0,0,.28);display:flex;flex-direction:column;gap:3px;pointer-events:none}.avstack-tip-head{font-size:10.5px;text-transform:uppercase;letter-spacing:.04em;color:rgba(255,255,255,.6);font-weight:700;margin-bottom:2px}.avstack-tip-name{white-space:normal}.role-tag{display:inline-flex;align-items:center;font-size:11px;font-weight:600;letter-spacing:.01em;padding:2px 9px;border-radius:6px;vertical-align:middle;line-height:1.5}.role-tag-page{margin-left:10px}.role-tag-admin.role-tag-page{background:#f3f0fc;color:#6d4ed0}.role-tag-coordinator.role-tag-page{background:#eef4f9;color:#41739b}.role-tag-bar{font-size:10.5px;padding:2px 8px;background:rgba(255,255,255,.12);color:rgba(255,255,255,.82)}.dash-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:16px;gap:16px;margin-top:18px}.dash-panel-body{padding:14px 16px}.dash-empty{font-size:13px;color:#888;margin:0}.panel-sub-r{font-size:11.5px;font-weight:600;color:#9a9a9a;text-transform:uppercase;letter-spacing:.04em}.proj-mine{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.proj-mine-row{display:flex;align-items:center;gap:11px;padding:7px 6px;border-radius:8px}.proj-mine-row:hover{background:#faf8ff}.proj-mine-ic{display:inline-flex;color:var(--pu);flex-shrink:0}.proj-mine-main{display:flex;flex-direction:column;min-width:0}.proj-mine-name{font-size:13.5px;font-weight:600;color:var(--dk);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.proj-mine-sub{font-size:12px;color:#888}.tbreak{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:9px}.tbreak-row{display:grid;grid-template-columns:1fr 90px 38px;align-items:center;grid-gap:10px;gap:10px}.tbreak-label{font-size:12.5px;color:var(--dk);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tbreak-bar{height:8px;background:#f1f0f5;border-radius:5px;overflow:hidden}.tbreak-fill{display:block;height:100%;background:#a78bfa;border-radius:5px}.tbreak-val{font-size:12.5px;font-weight:700;color:var(--dk);text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.tbreak-foot{font-size:12px;color:#888;margin:12px 0 0}@media (max-width:760px){.dash-grid{grid-template-columns:1fr}}.dash-head{margin-bottom:2px}.dash-cols{display:grid;grid-template-columns:1.6fr 1fr;grid-gap:16px;gap:16px;align-items:start}.dash-col-main,.dash-col-side{display:flex;flex-direction:column;min-width:0}@media (max-width:900px){.dash-cols{grid-template-columns:1fr}}.panel-badge{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:var(--warn-soft);color:var(--warn-text);font-size:11px;font-weight:800}.dash-proj-table{width:100%;border-collapse:collapse}.dash-proj-table th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.03em;color:#999;padding:9px 16px;border-bottom:1px solid var(--bd);font-weight:700}.dash-proj-table td.num,.dash-proj-table th.num{text-align:right}.dash-proj-table td{padding:10px 16px;border-bottom:1px solid #f0f0f3;font-size:13.5px;color:var(--dk);vertical-align:middle}.dash-proj-table tbody tr:last-child td{border-bottom:none}.dash-proj-table tbody tr:hover td{background:#fbfaff}.dash-proj-name{display:block;font-weight:600}.dash-proj-code{display:block;font-size:11.5px;color:#9a9a9a;margin-top:1px}.dash-proj-more{display:flex;align-items:center;gap:3px;padding:11px 16px;border-top:1px solid var(--line-soft);font-size:12.5px;font-weight:600;color:var(--pu);text-decoration:none}.dash-proj-more:hover{background:#faf8ff}.appr-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}.appr-row{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid #f0f0f3}.appr-row:last-child{border-bottom:none}.appr-info{flex:1 1;min-width:0;display:flex;flex-direction:column;gap:1px}.appr-name{font-size:13.5px;font-weight:600;color:var(--dk)}.appr-meta{font-size:11.5px;color:#888;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.appr-btns{display:flex;gap:6px;flex-shrink:0}.appr-btn{padding:7px 10px}.dash-more{display:inline-flex;align-items:center;gap:3px;margin-top:10px;font-size:12.5px;font-weight:600;color:var(--pu);text-decoration:none}.dash-more:hover{text-decoration:underline}.week-list{list-style:none;margin:0;padding:4px 0}.week-row{display:flex;align-items:center;justify-content:space-between;padding:9px 16px;border-bottom:1px solid #f3f3f6}.week-row:last-child{border-bottom:none}.week-day{font-size:13.5px;color:var(--dk)}.week-row.is-future .week-day{color:#b6b6c0}.week-val{font-size:13.5px;font-weight:700;color:var(--dk)}.week-val.muted{font-weight:400;color:#c2c2cc}.week-total{border-top:1px solid var(--bd)}.week-total .week-day{font-weight:600}.week-total .week-val{color:var(--pu)}.week-note{font-size:11.5px;font-weight:400;color:#9a9a9a;margin-left:7px}.client-card{border:1px solid var(--bd);border-radius:12px;background:var(--wh);overflow:hidden}.client-card.is-editing{border-color:#c9bff3;box-shadow:0 0 0 3px rgba(109,78,208,.08)}.client-card-head{display:flex;align-items:center;gap:12px;padding:11px 14px}.client-card-logo{display:inline-flex;align-items:center;height:30px}.client-card-id{flex:1 1;min-width:0;display:flex;flex-direction:column;gap:1px}.client-card-id .client-name{font-weight:600;font-size:14px;color:var(--dk);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.client-sub{font-size:12px;color:#9a9a9a}.client-card-edit{display:inline-flex;align-items:center;gap:5px;flex-shrink:0}.client-editor{border-top:1px solid var(--bd);padding:14px;background:#fbfaff;display:flex;flex-direction:column;gap:14px}.client-editor-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));grid-gap:12px;gap:12px}.client-editor-grid .field{display:flex;flex-direction:column;gap:5px}.client-editor-grid .field>span{font-size:12px;font-weight:600;color:var(--dk)}.client-editor-grid .field input:not([type]),.client-editor-grid .field input[type=text]{padding:8px 10px;border:1px solid var(--bd);border-radius:8px;font:inherit;font-size:13.5px}.client-editor-grid .field input[type=color]{width:100%;height:34px;padding:2px;border:1px solid var(--bd);border-radius:8px;background:none;cursor:pointer}.client-editor-grid .field input[type=range]{width:100%;accent-color:var(--pu)}.client-editor-logo{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 12px;background:var(--wh);border:1px solid var(--bd);border-radius:10px}.client-editor-prev{display:inline-flex;align-items:center;height:34px;flex:1 1;min-width:80px}.client-editor-foot{display:flex;justify-content:flex-end;gap:8px}.u-mt-16{margin-top:16px}.u-mb-16{margin-bottom:16px}.u-mb-18{margin-bottom:18px}.board-head .page-title{margin-bottom:2px}.modal:not(.modal-form){max-height:calc(100vh - 40px);overflow-y:auto}@media (max-width:720px){.topbar{gap:12px;padding:0 12px}.topnav{gap:4px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}.topnav::-webkit-scrollbar{display:none}.navlink{padding:0 10px;font-size:13px;white-space:nowrap}.topbar-right{gap:8px;flex-shrink:0}}.nav-burger,.nav-burger-wrap,.nav-sheet,.nav-sheet-back{display:none}@media (max-width:768px){.topbar-right,.topnav{display:none}.nav-burger-wrap{display:flex;align-items:center;margin-left:auto}.nav-burger{display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;padding:0;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.18);border-radius:9px;color:#fff;cursor:pointer}.nav-burger svg{display:block}.nav-sheet{display:flex;flex-direction:column;gap:2px;position:fixed;top:56px;left:0;right:0;z-index:199;background:var(--dk);border-bottom:2px solid var(--pu);box-shadow:0 18px 40px rgba(0,0,0,.45);padding:8px 12px 14px;max-height:calc(100vh - 56px);overflow-y:auto;opacity:0;visibility:hidden;transform:translateY(-8px);transition:opacity .14s,transform .14s,visibility .14s}.nav-sheet.open{opacity:1;visibility:visible;transform:translateY(0)}.nav-sheet-back{display:block;position:fixed;inset:56px 0 0 0;z-index:198;background:rgba(21,10,50,.35)}.nav-sheet .navlink{height:48px;width:100%;padding:0 12px;font-size:15px;border-bottom:none;margin-bottom:0;border-radius:8px;color:rgba(255,255,255,.78);justify-content:flex-start}.nav-sheet .navlink.active{background:rgba(255,255,255,.1);color:#fff;border-bottom-color:transparent;border-left:3px solid var(--gr);padding-left:9px}.nav-sheet-foot{margin-top:8px;padding-top:12px;border-top:1px solid rgba(255,255,255,.14);display:flex;flex-direction:column;gap:12px}.nav-sheet-id{display:flex;align-items:center;gap:10px}.nav-sheet-id .user-chip-name{display:inline;max-width:none;font-size:14px;color:rgba(255,255,255,.92)}.nav-sheet-foot .btn-out{width:100%;height:44px;font-size:14px}.nav-sheet-foot .role-tag-bar{align-self:flex-start}}@media (max-width:560px){.main{padding:18px 14px}.panel{padding:16px 14px}.empty{padding:28px 18px}.dt td,.dt th{padding:8px 7px}.data-table td,.data-table th{padding:9px 8px}.data-table td{font-size:13px}.table-wrap{-webkit-overflow-scrolling:touch}.note-col{max-width:130px}.ctrl-menu{min-width:0;max-width:calc(100vw - 24px)}.ctrl-trigger{font-size:14px}.ctrl-opt,.ctrl-trigger{padding:11px 12px}.icon-btn{width:40px;height:40px}.modal-back{padding:12px}.modal{padding:18px 16px}.modal-actions{gap:8px}.modal-actions .btn,.modal-actions .btn-light,.modal-actions button{min-height:42px}.modal-form{max-width:none;max-height:calc(100vh - 24px)}.modal-body,.modal-head{padding:14px 16px}.modal-foot{padding:12px 16px}.modal-foot .btn,.modal-foot .btn-light{min-height:42px}.modal-close{width:40px;height:40px;display:inline-flex;align-items:center;justify-content:center;font-size:26px;padding:6px 10px}.modal-body .field input,.modal-body .field select,.modal-body .field textarea{min-width:0;width:100%}.form-grid{grid-template-columns:1fr}}@media (max-width:768px){.ts-table{min-width:560px}.ts-table thead th{position:-webkit-sticky;position:sticky;top:0;z-index:3}.ts-table td.ts-rowhead,.ts-table th.ts-rowhead{position:-webkit-sticky;position:sticky;left:0;z-index:2;background:#fff;box-shadow:1px 0 0 var(--bd);max-width:150px;white-space:normal}.ts-table thead th.ts-rowhead{z-index:4;background:var(--dk)}.ts-autorow td.ts-rowhead{background:#fbfaf7}.ts-internal-row td.ts-rowhead{background:#fcfbfe}.ts-totalrow td.ts-rowhead,tfoot .ts-rowhead{background:#fff}.ts-dayhead{width:64px;padding:10px 4px}.ts-cell{padding:8px 4px}.ts-hours{width:46px;height:40px;font-size:16px}.ts-controls{flex-direction:column;align-items:stretch;gap:10px}.ts-controls-left{gap:10px}.ts-controls-right{width:100%}.ts-controls-right .btn{flex:1 1;padding:10px 12px}.ts-weekcap{align-self:flex-start}.ts-viewing{flex-wrap:wrap;width:100%}.ts-viewing select{flex:1 1;min-width:0;max-width:100%}.ts-add{padding:14px}.ts-add-main{flex-direction:column;align-items:stretch;gap:8px}.ts-add-field{min-width:0;width:100%}.ts-add-or{text-align:center}.ts-add-task{align-self:flex-start;padding:10px 2px}.cbx-btn{min-width:0}.ts-linkbox{width:100%;gap:4px}.ts-linkbox .cbx-btn{min-width:0}.utask-actions .cbx-btn{min-width:0;width:100%}.board-head{gap:10px}.hm-nav{width:100%;justify-content:space-between}.hm-nav a{min-width:40px;min-height:40px;display:inline-flex;align-items:center;justify-content:center}}@media (max-width:560px){.utask-row{gap:8px}.utask-actions{width:100%}.utask-add{padding:12px}}@media (max-width:360px){.note-pop{max-width:calc(100vw - 24px)}}@media (max-width:560px){.appr-btn{min-height:40px;min-width:44px;padding:8px 12px}.appr-btns{gap:8px}.dash-proj-table td,.dash-proj-table th{padding-left:12px;padding-right:12px}.dash-proj-table td{font-size:13px}.dash-proj-name{white-space:normal}.stat-card{padding:14px 16px}.greeting{font-size:22px}.alert{padding:12px 14px;gap:10px}.alert-icon{width:30px;height:30px}}@media (max-width:390px){.login-wrap{padding:14px}.lcard{padding:26px 20px}}@media (max-width:560px){.hm-year{grid-template-columns:repeat(2,1fr);gap:16px 14px}.hm-mini-label{font-size:13px}.hm-mini-dow{font-size:9px}.hm-mini-cell{height:30px;font-size:12px}.hm-month-grid{gap:4px}.hm-month-cell{min-height:48px;padding:6px 4px}.hm-dow{font-size:9px;letter-spacing:0}.hm-date{font-size:13px}.hm-tag{font-size:9px}.hm-week{grid-template-columns:1fr;gap:8px}.hm-week-col{min-height:0;flex-direction:row;align-items:stretch}.hm-week-head{flex-direction:row;align-items:baseline;gap:8px;min-width:96px;flex-shrink:0;padding:10px 12px}.hm-week-body{flex:1 1;padding:10px 12px;flex-direction:row;flex-wrap:wrap;align-items:center}.hm-week-name{font-size:13px}.hm-controls{gap:10px 12px}.hm-controls-left{width:100%}.hm-controls-left .ctrl-dd{flex:1 1}.hm-controls-left .ctrl-trigger{width:100%;justify-content:flex-start}.hm-nav{width:100%;justify-content:space-between}.hm-nav-title{min-width:0;flex:1 1;font-size:14px}.balance-bar{display:grid;grid-template-columns:1fr 1fr;grid-gap:12px 16px;gap:12px 16px;padding:12px 16px}.balance-item{text-align:left}.bm-type{padding:10px 4px;font-size:12px}.half-toggle{min-width:0}.bm-dates{gap:10px}.bm-field{flex:1 1;min-width:120px}.bm-field input{width:100%}}@media (max-width:400px){.hm-year{grid-template-columns:1fr;gap:18px}.hm-mini-cell{height:34px;font-size:13px}.hm-mini-grid{gap:3px}}@media (max-width:560px){.toolbar{flex-direction:column;align-items:stretch;gap:8px}.toolbar-search{min-width:0;flex:none;width:100%}.toolbar-search input{padding-top:12px;padding-bottom:12px}.toolbar select{width:100%;flex:1 1 auto;padding-top:11px;padding-bottom:11px}.toolbar .cbx{display:flex;width:100%}.toolbar .cbx-btn{min-width:0;width:100%;padding-top:11px;padding-bottom:11px}.alloc-row{flex-direction:column;align-items:stretch;gap:6px}.alloc-row input,.alloc-row input:not([type=number]),.alloc-row input[type=text],.alloc-row select{flex:none;width:100%;min-width:0}.alloc-row input[type=number]{width:100%}.alloc-row .btn-sm{align-self:flex-end;min-height:36px;padding:7px 16px}.board-head{gap:12px}.board-actions{width:100%}.board-actions .btn,.board-actions .btn-sm{flex:1 1 auto;min-height:40px;justify-content:center}.pager{justify-content:space-between;gap:10px}.pager-btns .btn-sm{min-height:40px;padding:8px 16px}.proposal-have .btn-sm,.proposal-upload .btn-sm{min-height:40px}.cbx-clear{padding:6px}.avstack-tip-fixed{max-width:calc(100vw - 24px)}.decide{flex-direction:column;gap:6px}.decide .btn-sm{padding:9px 12px;width:100%}.filter-search{flex:1 0 100%;min-width:0}.filters .ctrl-dd{flex:1 1}.filters .ctrl-trigger{width:100%;justify-content:flex-start}.filters .ctrl-menu{left:auto;right:0}.tab{padding:12px 14px}.book-modal .bm-field{flex:1 0 100%}.book-modal .bm-field input{width:100%}.book-modal .bm-arrow{display:none}.book-modal .bm-count{margin-left:0;padding-bottom:0}.book-modal .bm-type{padding:12px 4px}.ts-matrix td,.ts-matrix th{padding:8px 6px}.tsdot{min-width:30px}.tile{padding:16px;gap:12px}.tile-icon{width:40px;height:40px}.users-dt td,.users-dt th{padding:8px 6px}.user-cell{gap:8px}.user-email{font-size:11px;word-break:break-word}.role-select{padding:6px;font-size:12px}.row-actions{gap:5px}.users-dt .btn-sm{padding:6px 8px;font-size:11px}.bh-row{flex-wrap:wrap;gap:8px}.bh-date{width:auto}.bh-name{flex:1 1 100%;order:3}.bh-confirm{flex-wrap:wrap}.cancel-no,.cancel-yes{padding:8px 12px;font-size:13px}.bh-add{flex-direction:column;align-items:stretch}.bh-add .field{flex:none;width:100%}.bh-add .btn{width:100%}.access-option{flex-direction:column;align-items:stretch;gap:10px}.access-option .btn{width:100%}.invite-link-input{min-width:0;flex:1 1 100%}.invite-link-row .btn{width:100%}.wd-chip span{padding:10px 12px}}.skel-topbar{position:-webkit-sticky;position:sticky;top:0;z-index:200;height:56px;display:flex;align-items:center;padding:0 20px;background:var(--dk);border-bottom:2px solid var(--pu)}.skel{background:linear-gradient(90deg,#ececf1 25%,#f7f7fb 45%,#ececf1 65%);background-size:400% 100%;animation:skel-shimmer 1.4s ease infinite;border-radius:8px}@keyframes skel-shimmer{0%{background-position:100% 0}to{background-position:0 0}}.skel-title{width:220px;height:26px;margin:4px 0 16px}.skel-bar{height:58px}.skel-bar,.skel-panel{border-radius:12px;margin-bottom:16px}.skel-panel{height:230px}.skel-panel-short{height:120px}@media (prefers-reduced-motion:reduce){.skel{animation:none}}.err-page{max-width:460px;margin:60px auto 0}.err-actions{display:flex;gap:10px;justify-content:center;margin-top:18px;flex-wrap:wrap}.allowance-hint{font-size:12.5px;color:#8a8a8a;margin:-6px 0 14px 4px}.user-chip-name{max-width:180px}.appr-name,.user-chip-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media (min-width:561px){.dash-proj-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:340px}}.help-wrap{position:relative;display:inline-flex}.help-btn{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border:none;border-radius:50%;background:transparent;color:rgba(255,255,255,.75);cursor:pointer}.help-btn:hover,.help-btn[aria-expanded=true]{background:rgba(255,255,255,.12);color:#fff}.help-menu{position:absolute;top:calc(100% + 10px);right:0;z-index:540;min-width:250px;background:var(--wh);border:1px solid var(--bd);border-radius:12px;box-shadow:0 14px 40px rgba(21,10,50,.22);padding:6px;display:flex;flex-direction:column;gap:2px}.help-menu-item{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;border:none;border-radius:9px;background:none;font:inherit;text-align:left;cursor:pointer;color:var(--dk)}.help-menu-item:hover{background:#f6f3ff}.help-menu-item svg{margin-top:2px;color:var(--pu);flex-shrink:0}.help-menu-item span{display:flex;flex-direction:column;gap:1px;font-size:13.5px;font-weight:600}.help-menu-item small{font-size:12px;font-weight:400;color:#888}.help-nudge{top:calc(100% + 12px);right:0;z-index:550;width:230px;border:1px solid var(--bd);border-radius:12px;box-shadow:0 14px 40px rgba(21,10,50,.22);padding:12px 14px;font-size:13px;color:var(--dk);display:flex;flex-direction:column;gap:10px}.help-nudge,.help-nudge:before{position:absolute;background:var(--wh)}.help-nudge:before{content:"";top:-6px;right:12px;width:10px;height:10px;border-left:1px solid var(--bd);border-top:1px solid var(--bd);transform:rotate(45deg)}.help-nudge-btns{display:flex;align-items:center;gap:10px}.help-nudge-dismiss{border:none;background:none;font:inherit;font-size:12.5px;color:#888;cursor:pointer}.help-nudge-dismiss:hover{color:var(--dk);text-decoration:underline}.help-sheet-rows{display:flex;flex-direction:column}.help-sheet-row{display:flex;align-items:center;gap:10px;padding:13px 14px;border:none;background:none;font:inherit;font-size:15px;font-weight:600;color:rgba(255,255,255,.92);text-align:left;cursor:pointer;border-radius:9px}.help-sheet-row svg{color:var(--gr)}.help-sheet-row:hover{background:rgba(255,255,255,.08)}.help-back{position:fixed;inset:0;z-index:600;background:rgba(21,10,50,.45)}.help-panel{position:fixed;top:0;right:0;bottom:0;z-index:601;width:min(430px,100vw);background:var(--wh);box-shadow:-18px 0 50px rgba(21,10,50,.25);display:flex;flex-direction:column;animation:help-slide .22s ease}@keyframes help-slide{0%{transform:translateX(40px);opacity:0}to{transform:translateX(0);opacity:1}}.help-panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding:18px 20px 12px;border-bottom:1px solid var(--line-soft)}.help-panel-title{font-size:17px;font-weight:700;color:var(--dk);margin:0 0 3px}.help-panel-sub{font-size:12.5px;color:#888;margin:0}.help-tour-cta{display:flex;align-items:center;gap:10px;margin:12px 20px 0;padding:11px 13px;border:1px solid #ddd4fb;border-radius:10px;background:#f6f3ff;font:inherit;font-size:13px;color:var(--dk);text-align:left;cursor:pointer}.help-tour-cta:hover{border-color:var(--pu)}.help-tour-cta svg{color:var(--pu);flex-shrink:0}.help-panel-body{flex:1 1 auto;min-height:0;overflow-y:auto;padding:12px 20px 24px}.help-section{border-bottom:1px solid var(--line-soft)}.help-section-title{font-size:14px;font-weight:700;color:var(--dk);padding:13px 0;cursor:pointer;list-style:none;display:flex;align-items:center;justify-content:space-between}.help-section-title::-webkit-details-marker{display:none}.help-section-title:after{content:"+";color:#aaa;font-weight:400;font-size:16px}.help-section[open] .help-section-title:after{content:"–"}.help-section-intro{font-size:12px;color:#999;margin:-4px 0 8px}.help-points{margin:0 0 14px}.help-point{margin-bottom:12px}.help-point dt{font-size:13px;font-weight:700;color:var(--dk);margin-bottom:3px}.help-point dd{font-size:13px;line-height:1.55;color:#555;margin:0}.tour-dim{inset:0;background:rgba(21,10,50,.55)}.tour-dim,.tour-spotlight{position:fixed;z-index:700}.tour-spotlight{border-radius:10px;box-shadow:0 0 0 200vmax rgba(21,10,50,.55);transition:top .25s ease,left .25s ease,width .25s ease,height .25s ease,opacity .2s ease;pointer-events:auto}.tour-card{position:fixed;z-index:710;width:min(360px,calc(100vw - 24px));background:var(--wh);border-radius:14px;box-shadow:0 20px 60px rgba(0,0,0,.35);padding:16px 18px 14px;outline:none}.tour-card-center{top:50%;left:50%;transform:translate(-50%,-50%)}.tour-card-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:6px}.tour-card-title{font-size:15px;font-weight:700;color:var(--dk)}.tour-count{font-size:11.5px;font-weight:600;color:#9a9a9a;white-space:nowrap}.tour-card-body{font-size:13.5px;line-height:1.55;color:#555;margin:0 0 14px}.tour-card-foot{display:flex;align-items:center;justify-content:space-between;gap:10px}.tour-skip{border:none;background:none;font:inherit;font-size:12.5px;color:#999;cursor:pointer;padding:0}.tour-skip:hover{color:var(--dk);text-decoration:underline}.tour-btns{display:flex;gap:8px}@media (max-width:560px){.tour-card:not(.tour-card-center){top:auto!important;left:12px!important;right:12px;bottom:12px;width:auto}.help-panel{width:100vw}}