:root{--bg:#0e1726;--panel:#13203a;--ink:#e8f0f8;--muted:#9fb3c8;--grid:#26344f;--band-off:#d6213a29;--band-travel:#c9a2272e;--event:#ffd24a;--border:#d0d5dd;--accent:#3a6bbf}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--ink);margin:0;font-family:Segoe UI,Inter,system-ui,Arial,sans-serif;font-size:14px;line-height:1.4}a{color:inherit}.login-wrap{justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.login-card{color:#1a1a2e;text-align:center;background:#fff;border-radius:12px;width:100%;max-width:400px;padding:40px 44px;position:relative;overflow:hidden;box-shadow:0 4px 24px #00000059}.login-card:before{content:"";background:linear-gradient(90deg,var(--accent),#00b8d4);height:5px;position:absolute;top:0;left:0;right:0}.login-brand{letter-spacing:.3px;color:#1f3a66;margin-bottom:18px;font-size:15px;font-weight:800}.login-brand span{color:#00a0c0;font-weight:600}.login-card h1{margin:0 0 6px;font-size:21px}.login-card p{color:#5b6b7f;margin:0 0 20px;font-size:13.5px}.google-signin{border:1.5px solid var(--border);color:#1a1a2e;background:#fff;border-radius:8px;justify-content:center;align-items:center;gap:10px;width:100%;padding:11px 14px;font-size:15px;font-weight:600;text-decoration:none;transition:background .2s,border-color .2s;display:flex}.google-signin:hover{background:#f7f8fa;border-color:#c7ccd4}.login-foot{color:#9aa4b2;margin:14px 0 0;font-size:11.5px}.msg{border-radius:7px;margin-bottom:14px;padding:11px 14px;font-size:13.5px}.msg-ok{color:#1a6b3c;background:#e8f7ee}.msg-err{color:#9a0e18;background:#fdecea}.hub-header,.tool-header{border-bottom:1px solid var(--grid);justify-content:space-between;align-items:center;padding:16px 24px;display:flex}.hub-brand{letter-spacing:.3px;font-weight:800}.hub-brand span{color:#00b8d4;font-weight:600}.brand-logo{background:#fff;border-radius:8px;align-items:center;padding:5px 11px;line-height:0;display:inline-flex}.brand-logo img{width:auto;height:22px;display:block}.tool-head-left{align-items:center;gap:16px;display:flex}.confidential{color:#ff4d4d;text-transform:uppercase;letter-spacing:.6px;white-space:nowrap;background:#d6213a1a;border:1px solid #7a2530;border-radius:6px;padding:4px 9px;font-size:11px;font-weight:800}.hub-user{color:var(--muted);align-items:center;gap:14px;font-size:12.5px;display:flex}.logout{color:var(--muted);border:1px solid var(--grid);border-radius:7px;padding:6px 12px;font-size:12.5px;text-decoration:none}.logout:hover{color:var(--ink);border-color:#3a4d70}.hub-main{max-width:1000px;margin:0 auto;padding:32px 24px}.hub-main h1{margin:0 0 4px;font-size:24px}.hub-lead{color:var(--muted);margin:0 0 24px}.tool-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px;display:grid}.tool-card{background:var(--panel);border:1px solid var(--grid);border-radius:12px;flex-direction:column;gap:6px;padding:18px;text-decoration:none;transition:border-color .2s,transform .1s;display:flex}.tool-card:hover{border-color:var(--accent);transform:translateY(-2px)}.tool-tag{text-transform:uppercase;letter-spacing:.5px;color:#00b8d4;font-size:10.5px;font-weight:700}.tool-name{font-size:17px;font-weight:700}.tool-desc{color:var(--muted);font-size:12.5px}.tool-page{padding-bottom:60px}.tool-header h1{margin:2px 0 0;font-size:20px}.tool-header .crumb{color:var(--muted);font-size:12px}.tool-header .crumb a{text-decoration:none}.tool-header .crumb a:hover{color:var(--ink)}.tool-header .sub{color:var(--muted);margin-top:3px;font-size:12px}.tabs{border-bottom:1px solid var(--grid);background:var(--bg);z-index:30;flex-wrap:wrap;gap:6px;padding:12px 22px;display:flex;position:sticky;top:0}.tab{border:1px solid var(--grid);background:var(--panel);color:var(--ink);cursor:pointer;white-space:nowrap;border-radius:999px;padding:7px 13px;font-family:inherit;font-size:12.5px}.tab:hover{border-color:#3a4d70}.tab.active{border-color:var(--accent);background:#1f3a66;font-weight:600}.tab .dot{vertical-align:middle;border-radius:50%;width:9px;height:9px;margin-right:6px;display:inline-block}main{padding:16px 22px 60px}.legend{color:var(--muted);flex-wrap:wrap;gap:14px;margin:4px 0 14px;font-size:12px;display:flex}.legend span{align-items:center;gap:6px;display:inline-flex}.sw{border-radius:2px;width:14px;height:10px;display:inline-block}.sw.off{background:var(--band-off);border:1px solid #d6213a}.sw.travel{background:var(--band-travel);border:1px solid #c9a227}.sw.evt{border-left:6px solid #0000;border-right:6px solid #0000;border-bottom:11px solid var(--event);width:0;height:0}.sw.ms{background:#fff;border-radius:2px;width:11px;height:11px;transform:rotate(45deg)}.gantt{border:1px solid var(--grid);background:var(--panel);border-radius:10px;position:relative;overflow:hidden}.months{border-bottom:1px solid var(--grid);height:30px;display:flex;position:relative}.month{border-right:1px solid var(--grid);color:var(--muted);text-transform:uppercase;letter-spacing:.5px;justify-content:center;align-items:center;font-size:11.5px;display:flex}.lane-head{border-top:1px solid var(--grid);background:#16243f;align-items:center;gap:8px;padding:9px 12px;font-size:13px;font-weight:700;display:flex}.lane-head .dot{border-radius:50%;width:10px;height:10px}.lane-head .owner{color:var(--muted);font-size:11.5px;font-weight:400}.row{border-top:1px solid #1b2a45;height:30px;position:relative}.row .label{color:#cfe0f0;z-index:4;text-shadow:0 1px 2px #0e1726;pointer-events:none;white-space:nowrap;text-overflow:ellipsis;align-items:center;max-width:46%;height:30px;font-size:11.5px;display:flex;position:absolute;top:0;left:18px;overflow:hidden}.track{position:absolute;inset:0 0 0 50%}.bar{opacity:.92;border-radius:5px;height:16px;position:absolute;top:7px}.bar:hover{opacity:1;outline:1px solid #fff}.ms{z-index:5;background:#fff;border:1px solid #0e1726;border-radius:2px;width:14px;height:14px;position:absolute;top:8px;transform:translate(-7px)rotate(45deg)}.ms.confirm{background:#ffd24a}.overlay{z-index:1;pointer-events:none;position:absolute;top:30px;bottom:0}.band-off{background:var(--band-off);border-left:1px dashed #d6213a;border-right:1px dashed #d6213a}.band-travel{background:var(--band-travel);border-left:1px dashed #c9a227;border-right:1px dashed #c9a227}.evtline{border-left:2px solid var(--event);z-index:2;pointer-events:none;width:0;position:absolute;top:30px;bottom:0}.evtlabel{color:#1a1a1a;background:var(--event);white-space:nowrap;z-index:6;border-radius:0 0 5px;padding:1px 5px;font-size:10px;font-weight:600;position:absolute;top:0}.gridline{border-left:1px solid var(--grid);z-index:0;width:0;position:absolute;top:30px;bottom:0}table{border-collapse:collapse;width:100%;margin-top:18px;font-size:12.5px}th,td{text-align:left;border-bottom:1px solid var(--grid);vertical-align:top;padding:7px 9px}th{color:var(--muted);text-transform:uppercase;letter-spacing:.4px;font-size:11px;font-weight:600}td.ms-cell{color:#ffd24a;font-weight:600}.note{color:var(--muted);font-size:12px}.client-note{border:1px solid var(--grid);background:#16243f;border-radius:8px;margin:10px 0;padding:10px 12px;font-size:12.5px}.client-note.flag{border-color:#7a2530}.flag{color:#ff9aa2}.row.editable,.lane-head,tr.editable,.evtlabel{cursor:pointer}.row.editable:hover{background:#ffffff0b}.lane-head:hover{background:#1b2c4c}tr.editable:hover td{background:#ffffff0a}.evtlabel:hover{outline:1px solid #fff}.bandlabel{z-index:7;white-space:nowrap;text-overflow:ellipsis;cursor:pointer;border-radius:0 5px 5px 0;max-width:150px;padding:1px 6px;font-size:10px;font-weight:600;position:absolute;top:34px;overflow:hidden}.bandlabel.travel{color:#1a1a1a;background:#c9a227}.bandlabel.off{color:#fff;background:#d6213a}.bandlabel:hover{outline:1px solid #fff}.edit-hint{color:#7f95ac;font-style:italic}.grab{color:#5b7292;cursor:grab;z-index:6;letter-spacing:-2px;opacity:.45;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;width:16px;font-size:11px;display:flex;position:absolute;top:0;bottom:0;left:0}.grab:active{cursor:grabbing}.row:hover .grab,.lane-head:hover .grab{opacity:1;color:#8fa9c8}.lane-head .grab{width:14px;margin-left:-4px;position:static}.row.dragging{opacity:.35}.row.drop-before{box-shadow:inset 0 2px #00b8d4}.row.drop-after{box-shadow:inset 0 -2px #00b8d4}.lane-head.lane-drop{outline-offset:-2px;outline:2px solid #00b8d4}.gantt-tools{flex-wrap:wrap;align-items:flex-start;gap:16px;margin:4px 0 14px;display:flex}.gantt-tools .legend{flex:1;min-width:300px;margin:0}.toolbar{flex-wrap:wrap;gap:8px;display:flex}.btn.add{background:var(--panel);padding:5px 12px;font-size:12px}.btn.add:hover{border-color:var(--accent)}.save-state{color:#7fd6a4;white-space:nowrap;align-self:center;margin-left:auto;font-size:12px}.save-state.err{color:#ff9aa2}.dlg-overlay{z-index:100;background:#040a14a6;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.dlg{background:var(--panel);border:1px solid #2f425f;border-radius:12px;width:100%;max-width:460px;padding:20px 22px;box-shadow:0 10px 44px #0000008c}.dlg h2{margin:0 0 4px;font-size:15px}.dlg-sub{color:var(--muted);font-size:12.5px;font-weight:400}.dlg label{text-transform:uppercase;letter-spacing:.4px;color:var(--muted);margin:12px 0 4px;font-size:10.5px;font-weight:600;display:block}.dlg input[type=text],.dlg input[type=date],.dlg textarea,.dlg select{border:1px solid var(--grid);width:100%;color:var(--ink);font:inherit;background:#0e1726;border-radius:7px;padding:8px 10px;font-size:13px}.dlg input:focus,.dlg textarea:focus,.dlg select:focus{border-color:var(--accent);outline:none}.dlg-checks{grid-template-columns:1fr 1fr;gap:2px 14px;margin-top:2px;display:grid}.dlg-checks .dlg-check{margin:4px 0 0}.dlg input[type=date]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}.dlg textarea{resize:vertical}.dlg-row{gap:12px;display:flex}.dlg-row>div{flex:1}.dlg-check{align-items:center;gap:8px;display:flex;text-transform:none!important;letter-spacing:0!important;color:var(--ink)!important;font-size:12.5px!important;font-weight:400!important}.dlg-check input{accent-color:var(--accent)}.dlg-actions{align-items:center;gap:10px;margin-top:18px;display:flex}.dlg-spacer{flex:1}.btn{border:1px solid var(--grid);background:var(--panel);color:var(--ink);cursor:pointer;font:inherit;border-radius:7px;padding:8px 16px;font-size:13px;font-weight:600}.btn.primary{border-color:var(--accent);background:#1f3a66}.btn.primary:hover{background:#264a80}.btn.ghost:hover{border-color:#3a4d70}.btn.danger{color:#ff9aa2;background:0 0;border-color:#7a2530}.btn.danger:hover{background:#d6213a1f}
