:root{--navy:#17324a;--navy2:#23425b;--teal:#157f8c;--teal2:#0f6b78;--ink:#1e364b;--muted:#76879a;--line:#dfe7ec;--canvas:#f4f6f9;--white:#fff;--red:#c5484a;--shadow:0 8px 30px #1832480a;--col:158px}*{box-sizing:border-box}html,body{margin:0;min-height:100%;color:var(--ink);background:var(--canvas);font:13px/1.45 Inter,'Segoe UI',-apple-system,BlinkMacSystemFont,Arial,sans-serif}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{opacity:.5;cursor:not-allowed}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:3px solid #47bed0;outline-offset:2px}.hidden{display:none!important}h1,h2,h3,p{margin:0}h2{font-size:16px;letter-spacing:-.3px}.app{min-height:100vh;display:flex;flex-direction:column}.topbar{min-height:76px;background:var(--white);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 27px;gap:24px}.top-left,.top-right{display:flex;align-items:center;gap:16px}.top-right{gap:9px;flex-wrap:wrap}.logo,.auth-logo{width:43px;height:43px;border-radius:12px;background:var(--navy);display:grid;place-items:center;color:#fff;font-size:25px;letter-spacing:-1px;font-weight:850;box-shadow:0 3px 9px #1a425025}.logo span,.auth-logo span{color:#54c1c7}.titlebox{display:flex;flex-direction:column;line-height:1.15}.titlebox b{font-size:19px;letter-spacing:-.65px}.titlebox small{font-size:9px;font-weight:750;letter-spacing:.45px;color:#8798a3;margin-top:4px;white-space:nowrap}.header-divider{width:1px;height:35px;background:var(--line);margin:0 6px}.section-label{color:var(--teal);font-size:10px;font-weight:800;letter-spacing:1.15px}.page-title{font-size:15px;letter-spacing:-.15px}.server-indicator{color:#4f8e79;background:#ecf8f1;border:1px solid #e0f0e7;padding:8px 10px;border-radius:7px;font-size:10px;font-weight:800;letter-spacing:.3px;white-space:nowrap;margin-right:5px}.server-indicator i{display:inline-block;width:6px;height:6px;border-radius:50%;background:#28a875;margin-right:7px}.softbtn,.primary,.todaybtn,.arrowbtn,.iconbtn,.outline-plus,.textbtn{border:1px solid var(--line);background:#fff;color:var(--navy2);border-radius:8px;font-weight:720}.softbtn{padding:9px 12px;white-space:nowrap}.softbtn:hover,.arrowbtn:hover,.todaybtn:hover,.iconbtn:hover{background:#edf4f6;border-color:#bdd5db}.primary{background:var(--teal);border-color:var(--teal);color:#fff;padding:10px 17px;box-shadow:0 3px 7px #157f8c20}.primary:hover{background:var(--teal2)}.iconbtn{width:34px;height:34px;display:grid;place-items:center;color:#617487;font-size:19px}.demo-banner{background:#fff7e8;color:#715522;border-bottom:1px solid #f2dfb9;padding:10px 28px;display:flex;gap:15px;align-items:center}.demo-banner strong{font-size:10px;letter-spacing:.8px;background:#f3e4be;padding:5px 8px;border-radius:5px}.demo-banner span{flex:1;font-size:12px}.demo-banner button{border:0;background:transparent;color:#775116;text-decoration:underline;font-weight:800}.main-panel{padding:24px 25px 40px;width:100%;max-width:2300px;margin:auto}.page-toolbar{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:20px;flex-wrap:wrap}.date-nav,.toolbar-actions{display:flex;align-items:center;gap:8px}.arrowbtn{width:36px;height:36px;font-size:24px;font-weight:450;line-height:1}.todaybtn{height:36px;padding:0 14px}.period-copy{margin-left:12px;display:flex;gap:3px;flex-direction:column}.period-copy strong{font-size:15px;letter-spacing:-.3px}.period-copy small{color:var(--muted);font-size:11px}.toolbar-actions select{border:1px solid var(--line);height:38px;border-radius:8px;color:#465b6e;background:#fff;padding:0 10px;max-width:240px}.checklabel{display:flex;align-items:center;gap:6px;color:#66798c;font-size:12px;font-weight:650;margin-right:7px;white-space:nowrap}.checklabel input{accent-color:var(--teal)}.statline{display:flex;align-items:stretch;background:#fff;border:1px solid var(--line);border-radius:12px;margin-bottom:19px;box-shadow:var(--shadow);min-height:73px}.statline>div{display:flex;justify-content:center;flex-direction:column;padding:13px 22px;min-width:133px;border-right:1px solid #e8ecf0;gap:3px}.statline>div span{font-weight:800;font-size:10px;color:#92a1ae;letter-spacing:.65px;white-space:nowrap}.statline>div b{font-size:21px;line-height:1.1;letter-spacing:-.55px}.statline>div:nth-child(5) b{color:var(--red)}.statline>.stat-hint{flex:1;text-align:right;align-items:flex-end;border-right:0;color:#9aabba;font-size:11px;min-width:180px;line-height:1.65}.workspace{display:grid;grid-template-columns:310px minmax(0,1fr);gap:18px;align-items:start}.project-panel,.board-area{background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);overflow:hidden}.project-panel{display:flex;flex-direction:column;min-height:660px;max-height:calc(100vh - 280px);position:sticky;top:10px}.panel-heading{padding:20px 18px 13px;display:flex;align-items:center;justify-content:space-between}.panel-heading h2{margin-top:5px}.count-pill{font-size:11px;color:#7c91a0;background:#edf2f6;border-radius:6px;padding:2px 7px;vertical-align:middle}.outline-plus{width:32px;height:32px;color:var(--teal);font-size:20px}.project-search-wrap{padding:0 15px 11px}.project-search-wrap input{background:#f6f8fa;border:1px solid #e8edf1;border-radius:8px;width:100%;padding:10px 11px}.project-list{padding:3px 11px;overflow-y:auto;flex:1;min-height:155px}.project-card{background:#fff;border:1px solid #e3eaf0;border-left:4px solid var(--accent,var(--teal));border-radius:9px;margin:0 2px 10px;padding:12px 11px;cursor:grab;box-shadow:0 2px 7px #142e4010;transition:box-shadow .12s,border-color .12s}.project-card:hover{box-shadow:0 5px 15px #142e401a;border-color:#b8cbd6;border-left-color:var(--accent)}.project-card.selected{background:#effafa;outline:2px solid #6dc9cf}.project-head{display:flex;justify-content:space-between;gap:4px;align-items:start}.project-code{font-size:10px;color:#8899a8;font-weight:800;letter-spacing:.3px;margin-bottom:4px}.project-name{font-size:12px;font-weight:800;line-height:1.28}.project-edit{border:0;background:transparent;color:#8296a6;padding:1px 4px;font-size:16px}.project-location{font-size:10.5px;color:#92a1ad;margin-top:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.project-hours{display:flex;align-items:center;justify-content:space-between;font-size:10px;margin-top:11px}.project-hours span{color:#8c9da9}.project-hours b{font-size:11px}.meter{height:5px;background:#edf1f4;border-radius:6px;margin-top:7px;overflow:hidden}.meter-fill{height:100%;border-radius:6px;background:var(--accent,var(--teal));max-width:100%}.project-remain{margin-top:6px;display:flex;justify-content:space-between;color:#8295a5;font-size:10px}.project-remain strong{color:var(--teal2);font-size:11px}.project-remain strong.negative{color:var(--red)}.status-chip{font-size:9px;padding:2px 5px;border-radius:4px;background:#f1f4f6;color:#8496a4;font-weight:750;white-space:nowrap}.project-footnote{font-size:10px;color:#94a4b0;padding:11px 16px 9px;line-height:1.55;border-top:1px solid #e9eff2}.trash{margin:6px 13px 8px;padding:11px 12px;display:flex;gap:8px;align-items:center;flex-wrap:wrap;background:#fff7f6;color:#9f5856;border:1px dashed #ecc6c5;border-radius:8px;font-size:16px}.trash b{font-size:11px}.trash small{width:100%;font-size:10px;line-height:1.3;margin-left:23px;color:#b28180}.trash.drag-over{background:#fbe5e3;border-color:#d14c4a;box-shadow:0 0 0 2px #e66d6a3b}.project-bottom{border-top:1px solid var(--line);padding:12px 14px 14px;display:grid;gap:8px}.textbtn{border:0;background:transparent;color:var(--teal2);font-weight:760;text-align:left;font-size:11px;padding:2px 4px}.textbtn:hover{text-decoration:underline}.board-area{min-width:0}.board-caption{padding:17px 19px 15px;display:flex;justify-content:space-between;gap:20px;align-items:center}.board-caption h2 small{color:#9aa8b4;font-weight:530}.board-caption p{font-size:11px;color:#95a3af;margin-top:5px}.board-legend{display:flex;gap:12px;flex-wrap:wrap;font-size:10px;color:#8799a6}.board-legend>span{display:flex;gap:5px;align-items:center;white-space:nowrap}.legend-dot{width:8px;height:8px;display:inline-block;border-radius:2px}.l-job{background:#27809c}.l-absence{background:#e1a058}.l-conflict{background:#d25959}.board-scroll{height:min(76vh,1010px);min-height:550px;overflow:auto;overscroll-behavior:contain;border-top:1px solid var(--line)}.board{min-width:1630px}.board-grid-head,.day-row{display:grid;grid-template-columns:90px repeat(10,minmax(154px,1fr))}.board-grid-head{position:sticky;top:0;z-index:5;background:#eef4f6;box-shadow:0 2px 7px #162d4014}.date-head,.emp-head{padding:11px 9px;min-height:75px;border-right:1px solid #e2eaed;border-bottom:1px solid #d9e5ea}.date-head{display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:800;color:#9baab3;background:#eaf0f3;position:sticky;left:0;z-index:8}.emp-head{display:flex;flex-direction:column;gap:4px;align-items:center;justify-content:center;min-width:0}.emp-head .avatar{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--avatar,#7796a0);color:#fff;font-size:10px;font-weight:850;flex-shrink:0}.emp-head b{font-size:11px;max-width:145px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.emp-head small{font-size:10px;color:#8ea0ab;white-space:nowrap}.week-separator{position:relative;padding:7px 14px 7px 96px;background:#e5eef1;color:#537180;border-top:1px solid #d4e4e8;border-bottom:1px solid #d4e4e8;font-size:10px;font-weight:850;letter-spacing:.65px}.week-separator em{font-style:normal;font-weight:550;color:#7892a0;margin-left:10px}.day-row{min-height:88px;background:#fff}.day-row:nth-of-type(even){background:#fafcfd}.day-row.weekend{min-height:43px;background:#f4f6f7}.day-row.today .date-cell{background:#e4f5f4;color:var(--teal2)}.day-row.today .day-cell{background:#f4fcfb}.date-cell{border-right:1px solid #dfebef;border-bottom:1px solid #edf0f4;padding:11px 9px;position:sticky;left:0;z-index:3;background:#f8fbfc;display:flex;flex-direction:column;justify-content:center;gap:2px}.date-cell b{font-size:15px;letter-spacing:-.4px}.date-cell small{font-size:10px;font-weight:750;color:#8fa2ad}.day-row.weekend .date-cell{background:#f0f3f5}.day-row.weekend .date-cell b{font-size:12px}.day-cell{border-right:1px solid #e7edf0;border-bottom:1px solid #e7edf0;min-width:0;padding:5px;display:flex;flex-direction:column;gap:4px;cursor:pointer;position:relative}.day-cell:hover{background:#f1fafa}.day-cell.drag-over{background:#dff2f1!important;outline:2px solid #1c9a9a;outline-offset:-2px}.day-cell .cell-plus{opacity:0;position:absolute;right:5px;bottom:4px;font-size:13px;color:#92a6ae}.day-cell:hover .cell-plus{opacity:1}.day-cell.is-overloaded{background:#fff8f7}.event{position:relative;background:var(--eventbg,#d9ecef);color:var(--eventfg,#17465a);border-radius:5px;border-left:3px solid var(--eventbd,#27809b);padding:5px 6px;min-height:34px;display:flex;flex-direction:column;gap:2px;cursor:grab;box-shadow:0 1px 2px #1032440b;font-size:10px;overflow:hidden}.event:hover{filter:brightness(.97)}.event strong{font-size:10px;font-weight:780;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.event .event-sub{font-size:9px;opacity:.85;display:flex;justify-content:space-between;gap:4px}.event.conflict{outline:1.5px solid #d55e5f;box-shadow:0 0 0 2px #d55e5f20}.event.conflict::after{content:'⚠';color:#b72e32;position:absolute;top:3px;right:4px;font-size:10px}.event.conflict strong{padding-right:13px}.event.absence{--eventbg:#fff1d9;--eventfg:#91652a;--eventbd:#e7ac5c}.cell-summary{font-size:9px;font-weight:800;color:#b95151;text-align:right;padding-right:4px}.board-footer{padding:10px 16px;display:flex;justify-content:space-between;gap:10px;color:#9ba7b2;font-size:10px;border-top:1px solid var(--line)}.empty-project{padding:30px 10px;color:#96a5b0;text-align:center;font-size:12px}.toast{position:fixed;z-index:80;right:25px;bottom:25px;background:var(--navy);color:#fff;padding:12px 17px;border-radius:9px;font-weight:700;box-shadow:0 6px 25px #172c4050;opacity:0;pointer-events:none;transform:translateY(10px);transition:.2s}.toast.show{opacity:1;transform:none}.toast.error{background:#af4646}dialog{border:1px solid #e1e8ef;border-radius:14px;width:min(580px,calc(100vw - 26px));max-height:calc(100vh - 30px);padding:0;box-shadow:0 26px 90px #0d273b52;color:var(--ink)}dialog::backdrop{background:#10293987;backdrop-filter:blur(2px)}.dialog-head{padding:21px 23px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}.dialog-head h3{font-size:20px;letter-spacing:-.5px;margin-top:5px}.dialog-body{padding:22px 23px;overflow-y:auto;max-height:60vh}.dialog-actions{padding:15px 23px;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:flex-end;gap:10px}.dialog-actions .danger{margin-right:auto;border:1px solid #f2c9c8;background:#fff6f5;color:#b64a49;border-radius:8px;padding:9px 13px;font-weight:750}.field-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}.field{display:flex;flex-direction:column;gap:6px;min-width:0}.field.span2{grid-column:1/-1}.field label{color:#6b8091;font-size:11px;font-weight:800}.field input,.field select,.field textarea{width:100%;background:#fff;border:1px solid #d8e3e9;border-radius:8px;color:var(--ink);min-height:38px;padding:8px 10px}.field textarea{min-height:66px;resize:vertical}.field .tip{font-size:10px;color:#98a7b1}.field input[type=color]{padding:4px;height:39px}.inline-checkboxes{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:8px}.inline-checkboxes label{display:flex;align-items:center;gap:8px;background:#f5f8fa;border:1px solid #e9eef2;border-radius:7px;padding:9px;font-size:12px;font-weight:650}.inline-checkboxes input{accent-color:var(--teal)}.group-item{display:flex;align-items:center;justify-content:space-between;border:1px solid var(--line);border-radius:9px;padding:11px 12px;margin-bottom:10px;gap:8px}.group-item .group-main{display:flex;align-items:center;gap:10px}.group-item .swatch{width:11px;height:36px;border-radius:4px;background:var(--swatch,#999)}.group-item small{display:block;color:#8c9eaa;margin-top:3px}.group-item button{padding:7px 11px;border:1px solid var(--line);border-radius:7px;background:#fff;color:#4c6878}.dialog-note{font-size:11px;color:#8497a5;padding:10px 12px;margin-top:12px;line-height:1.55;background:#f4f8fa;border-radius:7px}.dialog-warn{color:#ae554c;background:#fff2ef}.auth-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(140deg,#edf5f7 0%,#f7f9fa 56%,#eef1f5 100%);padding:25px}.auth-card{width:min(440px,100%);padding:38px;background:#fff;border:1px solid #e4edf0;border-radius:17px;box-shadow:0 15px 60px #173b501c}.auth-logo{margin-bottom:20px;width:52px;height:52px;font-size:29px}.auth-eyebrow{font-size:10px;color:var(--teal);font-weight:850;letter-spacing:1px}.auth-card h1{font-size:28px;margin:8px 0;letter-spacing:-.7px}.auth-card p{color:#8a9ba8;font-size:12px;line-height:1.6}.auth-card form{display:flex;flex-direction:column;gap:10px;margin-top:27px}.auth-card label{font-size:11px;font-weight:800;color:#617889}.auth-card input{border:1px solid #d8e3e9;border-radius:8px;padding:12px;height:44px}.auth-card .full{width:100%;margin-top:9px}.auth-card .auth-error{color:#bc4242;margin-top:12px;font-weight:750}.auth-card .auth-caption{margin-top:24px;padding-top:18px;border-top:1px solid var(--line);font-size:11px}.auth-card strong{color:var(--ink)}@media (max-width:1120px){.workspace{grid-template-columns:270px minmax(0,1fr)}.statline>.stat-hint{display:none}.statline>div{min-width:0;flex:1}.topbar{flex-wrap:wrap;padding:12px 18px;gap:10px}}@media (max-width:800px){.main-panel{padding:15px 10px 25px}.workspace{display:flex;flex-direction:column}.project-panel{position:static;max-height:320px;width:100%;min-height:270px}.board-area{width:100%}.board-scroll{height:calc(100vh - 325px)}.topbar{padding:12px}.header-divider,.top-left .page-title,.top-left .section-label,.server-indicator{display:none}.page-toolbar{align-items:start}.statline{overflow:auto}.statline>div{min-width:110px;padding:10px 12px}.statline>div span{font-size:9px}.statline>div b{font-size:16px}.toolbar-actions{flex-wrap:wrap}.board-caption{flex-wrap:wrap}.board-footer{flex-direction:column}.project-footnote{display:none}}@media print{.topbar,.page-toolbar,.statline,.project-panel,.board-footer,.demo-banner,.board-caption,.auth-screen{display:none!important}.workspace{display:block}.board-area{border:0}.board-scroll{height:auto;overflow:visible}.board{min-width:0;font-size:7px}.emp-head{font-size:7px}.event strong{font-size:7px}.event{padding:2px}.day-row{min-height:33px}.board-grid-head,.day-row{grid-template-columns:50px repeat(10,1fr)}}
