:root{--sans:system-ui, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, "SF Mono", Consolas, monospace;--bg:#0f1620;--panel:#161f2b;--panel-2:#1c2836;--line:#26323f;--line-2:#33414f;--text:#c7d1dc;--text-dim:#8494a4;--text-h:#f2f6fa;--accent:#3aa0ff;--accent-2:#1e6fd0;--reef:#2f7fd6;--reef-2:#4b9bee;--cruise:#9b6cf0;--leave:#5c6b7a;--ok:#2fbf71;--tight:#e6a23c;--short:#e5484d;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font:14px/1.4 var(--sans);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased}*{box-sizing:border-box}html,body,#root{width:100%;height:100%;margin:0}#root{flex-direction:column;display:flex}button{font:inherit;cursor:pointer}input{font:inherit}input[type=date],input[type=number],input[type=text]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}.app{flex-direction:column;height:100vh;display:flex;overflow:hidden}.topbar{background:var(--panel);border-bottom:1px solid var(--line);flex:none;justify-content:space-between;align-items:center;padding:8px 16px;display:flex}.brand{align-items:center;gap:12px;display:flex}.logo{width:auto;height:30px;display:block}.title{color:var(--text-h);font-size:16px;font-weight:650}.subtitle{color:var(--text-dim);font-size:11.5px}.topactions{align-items:center;gap:12px;display:flex}.stalepill{color:var(--tight);background:#e6a23c1f;border:1px solid #e6a23c66;border-radius:20px;padding:3px 8px;font-size:11px}.zoom{align-items:center;gap:4px;display:flex}.body{flex:auto;min-height:0;display:flex;position:relative}.tabs{background:var(--panel-2);border:1px solid var(--line);border-radius:8px;gap:2px;padding:2px;display:flex}.tab{color:var(--text-dim);background:0 0;border:none;border-radius:6px;padding:6px 16px;font-size:13px;font-weight:550}.tab.active{background:var(--accent-2);color:#fff}.tab:not(.active):hover{color:var(--text-h)}.modal-overlay{z-index:40;background:#00000080;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.modal{background:var(--panel);border:1px solid var(--line-2);border-radius:12px;width:460px;max-width:92%;max-height:82%;padding:20px 22px;overflow-y:auto;box-shadow:0 20px 60px #00000080}.modal-h{margin-bottom:8px;font-size:15px;font-weight:700}.modal-lead{margin-bottom:6px;font-size:13px;line-height:1.5}.modal-blockers{border-top:1px solid var(--line-2);margin-top:14px;padding-top:12px}.modal-sub{color:#e6b45a;margin-bottom:4px;font-size:13px;font-weight:600}.blocklist{margin:8px 0 0;padding-left:18px;font-size:12.5px;line-height:1.7}.inspector-drawer{background:var(--panel);border-left:1px solid var(--line-2);z-index:20;width:316px;position:absolute;top:0;bottom:0;right:0;overflow-y:auto;box-shadow:-10px 0 28px #0006}.inspector-drawer .inspector{border-left:none;flex:1;width:100%}.drawer-close{z-index:21;color:var(--text-dim);background:0 0;border:none;border-radius:5px;padding:2px 6px;font-size:22px;line-height:1;position:absolute;top:8px;right:10px}.drawer-close:hover{color:var(--text-h);background:var(--panel-2)}.setup-page{display:flex}.setup-inspector{flex:1;min-width:0;display:flex;overflow-y:auto}.setup-inspector .inspector{border-left:none;flex:1;width:100%;max-width:520px}.sidebar{background:var(--panel);border-right:1px solid var(--line);flex:0 0 288px;padding:12px;overflow-y:auto}.main{flex:auto;min-width:0;display:flex;overflow:hidden}.inspector{background:var(--panel);border-left:1px solid var(--line);flex:0 0 300px;padding:12px;overflow-y:auto}.btn{border:1px solid var(--line-2);background:var(--panel-2);color:var(--text);border-radius:6px;padding:6px 10px;font-size:13px;line-height:1}.btn:hover{border-color:var(--accent)}.btn:disabled{opacity:.4;cursor:default}.btn-primary{background:var(--accent-2);border-color:var(--accent-2);color:#fff}.btn-warn{background:var(--tight);border-color:var(--tight);color:#201400;font-weight:600}.btn-danger{color:#ff9b9e;background:#e5484d26;border-color:#e5484d80}.btn-ghost{background:0 0}.btn-ghost.active{border-color:var(--accent);color:var(--text-h);background:#3aa0ff26}.btn-sm{padding:4px 8px;font-size:12px}.fld{flex-direction:column;gap:4px;margin-bottom:10px;display:flex}.fld>span{color:var(--text-dim);text-transform:uppercase;letter-spacing:.3px;font-size:11px}.numin,.fld input{background:var(--panel-2);border:1px solid var(--line-2);color:var(--text-h);border-radius:5px;width:100%;padding:5px 7px}.grid2{grid-template-columns:1fr 1fr;gap:8px;display:grid}.row{align-items:center;gap:6px;display:flex}.row.gap{gap:8px;margin-top:6px}input[type=range]{accent-color:var(--accent);flex:1}.side-sec{border-bottom:1px solid var(--line);margin-bottom:12px;padding:6px 0 14px}.side-h{text-transform:uppercase;letter-spacing:.5px;color:var(--text-h);margin-bottom:10px;font-size:12px;font-weight:650}.muted{color:var(--text-dim);font-weight:400}.small{font-size:12px}.hint{color:var(--text-dim);margin-top:6px;font-size:11.5px;line-height:1.35}.hint.warn{color:var(--tight)}.hint.danger{color:var(--short)}.statgrid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.stat{background:var(--panel-2);border:1px solid var(--line);border-radius:6px;padding:8px}.stat-v{color:var(--text-h);font-size:19px;font-weight:650}.stat-v.bad{color:var(--short)}.stat-l{color:var(--text-dim);margin-top:2px;font-size:10.5px}.contacts{flex-direction:column;gap:1px;max-height:260px;display:flex;overflow-y:auto}.contact{border-radius:4px;align-items:center;gap:6px;padding:3px 4px;display:flex}.contact.sel{background:var(--panel-2)}.contact.excluded .cname{color:var(--text-dim);text-decoration:line-through}.cname{cursor:pointer;white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:12.5px;overflow:hidden}.cname:hover{color:var(--accent)}.daysin{background:var(--panel-2);border:1px solid var(--line-2);width:44px;color:var(--text);text-align:right;border-radius:4px;padding:2px 4px;font-size:11px}.cflag{border:1px solid var(--line-2);width:20px;height:20px;color:var(--text-dim);background:0 0;border-radius:4px;padding:0;font-size:11px;line-height:1}.cflag.on{background:var(--cruise);border-color:var(--cruise);color:#fff}.legrow{align-items:center;gap:8px;margin-bottom:6px;font-size:12px;display:flex}.legswatch{border-radius:3px;flex:none;width:22px;height:12px}.tl-scroll{background:var(--bg);flex:1;overflow:auto}.tl-inner{position:relative}.tl-row{border-bottom:1px solid var(--line);align-items:stretch;display:flex}.tl-name{z-index:3;background:var(--panel);border-right:1px solid var(--line-2);flex:none;justify-content:space-between;align-items:center;gap:6px;padding:0 10px;font-size:12.5px;display:flex;position:sticky;left:0}.tl-lane{flex:none;position:relative}.tl-headrow{z-index:5;background:var(--panel);position:sticky;top:0}.tl-headrow .tl-name{z-index:6}.tl-corner{color:var(--text-dim);text-transform:uppercase;letter-spacing:.3px;justify-content:space-between;font-size:9.5px}.tl-fyhead{flex:none;gap:8px;display:flex}.tl-fyhead span{text-align:right;min-width:46px}.tl-month{color:var(--text-dim);border-left:1px solid var(--line-2);white-space:nowrap;height:16px;padding-left:4px;font-size:11px;position:absolute;top:5px}.tl-grid{background:var(--line);pointer-events:none;width:1px;position:absolute;top:0;bottom:0}.tl-today{pointer-events:none;z-index:4;background:#ff3b30;width:1px;position:absolute;top:0;bottom:0;box-shadow:0 0 2px #ff3b308c}.tl-cursor{pointer-events:none;z-index:4;background:#4aa3ff;width:1px;position:absolute;top:0;bottom:0;box-shadow:0 0 3px #4aa3ff99}.tl-cursor-date{color:#fff;white-space:nowrap;background:#4aa3ff;border-radius:0 0 4px 4px;margin-left:1px;padding:1px 5px;font-size:10px;font-weight:600;position:sticky;top:0;transform:translate(-50%)}.tl-covrow{z-index:4;background:var(--panel-2);position:sticky;top:26px}.tl-covname{background:var(--panel-2);flex-direction:column;justify-content:center;align-items:flex-start;gap:1px}.tl-sub{color:var(--text-dim);font-size:10px}.tl-covbar{position:absolute;bottom:0}.tl-covbar.ok{background:var(--ok)}.tl-covbar.tight{background:var(--tight)}.tl-covbar.short{background:var(--short)}.tl-mintick{z-index:2;pointer-events:none;background:#ffffff80;height:2px;position:absolute}.tl-pilotrow:hover .tl-name{color:var(--text-h)}.tl-pilotrow.sel .tl-name{background:var(--panel-2);box-shadow:inset 3px 0 0 var(--accent)}.tl-pname{white-space:nowrap;text-overflow:ellipsis;cursor:pointer;align-items:center;gap:5px;display:flex;overflow:hidden}.tl-duty{color:var(--text-dim);font-variant-numeric:tabular-nums;flex:none;font-size:10.5px}.tl-duty.over{color:var(--tight)}.tl-duty.under{color:var(--accent)}.tl-duty2{flex:none;gap:8px;display:flex}.tl-duty2 .tl-duty{text-align:right;min-width:46px}.tag{border-radius:3px;padding:1px 4px;font-size:9px;line-height:1.3}.tag-cruise{background:var(--cruise);color:#fff}.tag-check{background:var(--line-2);color:var(--text-h)}.tag-contractor{background:var(--tight);color:#201400}.bar{color:#fff;-webkit-user-select:none;user-select:none;z-index:1;border-radius:4px;align-items:center;padding:0 5px;font-size:10.5px;display:flex;position:absolute;top:4px;bottom:4px;overflow:hidden}.bar-label{white-space:nowrap;opacity:.9}.bar-reef,.bar-reef.forecast{background:linear-gradient(var(--reef-2), var(--reef));border:1px solid var(--reef-2)}.bar-reef.manual{color:#2a1c04;background:linear-gradient(#e6b45a,#d1962f);border:1px solid #efc879}.manualbar{color:#e6b45a;background:#e0a83b1f;border:1px solid #e0a83b80;border-radius:6px;align-items:center;gap:8px;margin-bottom:10px;padding:8px 10px;font-size:12px;line-height:1.35;display:flex}.manualbar button{flex:none}.bar-reef.edit{cursor:grab}.bar-reef.edit:active{cursor:grabbing}.bar-cruise{background:var(--cruise);border:1px solid #b18cf5}.bar-leave{background:repeating-linear-gradient(45deg, var(--leave), var(--leave) 5px, #4d5a68 5px, #4d5a68 10px);border:1px solid var(--leave)}.login-view{background:var(--bg);justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex}.login-card{background:var(--panel);border:1px solid var(--line-2);border-radius:14px;width:360px;max-width:100%;padding:26px 24px;box-shadow:0 20px 60px #00000080}.login-brand{text-align:center;margin-bottom:18px}.login-brand-mark{letter-spacing:.5px;color:var(--accent);font-size:13px;font-weight:700}.login-logo{width:auto;height:46px;margin-bottom:6px}.login-brand h2{margin:6px 0 2px;font-size:17px}.login-field{margin-bottom:12px;display:block}.login-field>span{color:var(--text-dim);margin-bottom:4px;font-size:12px;display:block}.login-field input{border:1px solid var(--line-2);background:var(--bg);width:100%;color:var(--text);border-radius:8px;padding:9px 11px;font-size:14px}.login-password-row{gap:6px;display:flex}.login-password-row input{flex:1}.login-password-toggle{border:1px solid var(--line-2);color:var(--text-dim);cursor:pointer;background:0 0;border-radius:8px;padding:0 10px;font-size:12px}.login-error{color:#ff6b6b;margin:4px 0 10px;font-size:12.5px}.login-card .primary,.login-view .primary{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:8px;width:100%;padding:10px;font-size:14px;font-weight:600}.login-card .primary:disabled{opacity:.6;cursor:default}.acct{border-left:1px solid var(--line-2);align-items:center;gap:4px;margin-left:8px;padding-left:8px;display:flex}.listbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin:6px 0 12px;display:flex}.listtabs{flex-wrap:wrap;gap:6px;display:flex}.listtabs .chip{border:1px solid var(--line-2);color:var(--text-dim);cursor:pointer;background:0 0;border-radius:999px;padding:4px 10px;font-size:12px}.listtabs .chip.active{background:var(--accent);border-color:var(--accent);color:#fff}.listtabs .chipn{opacity:.6;margin-left:2px;font-size:10.5px}.listsearch{border:1px solid var(--line-2);background:var(--bg);min-width:220px;color:var(--text);border-radius:8px;padding:6px 10px;font-size:13px}.bar-suspend,.dot.bar-suspend{background:repeating-linear-gradient(45deg,#c0524a,#c0524a 5px,#7a2f2a 5px 10px);border:1px solid #c0524a}.bar-avail{pointer-events:none;background:#4aa3ff1a;border:1px dashed #4aa3ff80;border-radius:3px}.dot.bar-avail{background:#4aa3ff59;border:1px dashed #4aa3ff}.bar.sel{outline:2px solid var(--accent);outline-offset:0;z-index:3}.bar.overcap{border-color:var(--tight);box-shadow:inset 0 0 0 1px var(--tight)}.bar-note{color:var(--tight);text-shadow:0 0 2px #0009;pointer-events:none;font-size:10px;line-height:1;position:absolute;top:-1px;right:2px}.bar.hasnote{box-shadow:inset 0 0 0 1.5px var(--tight)}.swingnote{background:var(--panel-2);border:1px solid var(--line-2);color:var(--text-h);resize:vertical;width:100%;font:inherit;border-radius:5px;padding:6px 8px}.charts{flex-direction:column;flex:1;min-width:0;display:flex}.reef-pane{flex:auto;min-height:0;display:flex}.cruise-pane{border-top:2px solid var(--line-2);background:var(--bg);flex:none;height:34%;min-height:132px;display:flex}.cruise-pane .tl-scroll{flex:1}.tl-cruiserow .tl-name{flex-direction:column;justify-content:center;align-items:flex-start;gap:1px}.tl-shipname{color:var(--text-h);white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:12.5px;overflow:hidden}.tl-cruisepilot{color:var(--text-dim);font-size:10.5px}.tl-cruisepilot.unassigned{color:var(--short);text-transform:uppercase;letter-spacing:.3px}.cruisebar{cursor:pointer}.bar-cruise.unassigned{border:1px dashed var(--short);color:#ffd7d8;background:repeating-linear-gradient(45deg,#e5484d47,#e5484d47 6px,#e5484d1f 6px 12px)}.picklist{flex-direction:column;gap:3px;margin-top:4px;display:flex}.pickitem{text-align:left;background:var(--panel-2);border:1px solid var(--line-2);color:var(--text);border-radius:6px;align-items:center;gap:6px;padding:6px 8px;font-size:12.5px;display:flex}.pickitem:hover{border-color:var(--accent);color:var(--text-h)}.pickitem.chosen{border-color:var(--cruise);color:var(--text-h);background:#9b6cf026}.pickitem>span:first-child{flex:1}.pickmark{color:#c3a6f8;text-transform:uppercase;letter-spacing:.4px;font-size:10px}.setup2{flex-direction:column;flex:1;min-width:0;display:flex}.setup2-nav{border-bottom:1px solid var(--line);background:var(--panel);align-items:center;gap:6px;padding:8px 16px;display:flex}.setup2-actions{align-items:center;gap:8px;margin-left:auto;display:flex}.setup2-body{flex:1;padding:16px;overflow-y:auto}.settings-cols{grid-template-columns:repeat(auto-fit,minmax(340px,1fr));align-items:start;gap:16px;max-width:1100px;display:grid}.card{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:14px 16px}.card-h{color:var(--text-h);text-transform:uppercase;letter-spacing:.4px;margin-bottom:8px;font-size:13px;font-weight:650}.card-note{color:var(--text-dim);margin-top:10px;font-size:11.5px;line-height:1.45}.card-note.warn{color:var(--tight)}.monthgrid{grid-template-columns:repeat(6,1fr);gap:8px;display:grid}.monthcell{flex-direction:column;align-items:center;gap:3px;display:flex}.monthcell span{color:var(--text-dim);text-transform:uppercase;font-size:10.5px}.monthcell input{text-align:center;background:var(--panel-2);border:1px solid var(--line-2);width:100%;color:var(--text-h);font-variant-numeric:tabular-nums;border-radius:5px;padding:5px 2px}.fieldgrid{grid-template-columns:repeat(2,1fr);gap:10px;display:grid}.fld2{flex-direction:column;gap:4px;display:flex}.fld2>span{color:var(--text-dim);text-transform:uppercase;letter-spacing:.3px;font-size:10.5px}.fld2 input{background:var(--panel-2);border:1px solid var(--line-2);color:var(--text-h);border-radius:5px;width:100%;padding:6px 8px}.ctable-wrap{overflow-x:auto}.ctable{border-collapse:collapse;width:100%;font-size:12.5px}.ctable th{text-align:left;text-transform:uppercase;letter-spacing:.3px;color:var(--text-dim);border-bottom:1px solid var(--line-2);background:var(--panel);padding:6px 10px;font-size:10.5px;font-weight:600;position:sticky;top:0}.ctable td{border-bottom:1px solid var(--line);padding:5px 10px}.ctable tr.excluded td{opacity:.5}.ctable .cname{cursor:pointer;color:var(--text-h);white-space:nowrap}.ctable .cname:hover{color:var(--accent)}.ctable .cleave{cursor:pointer;white-space:nowrap}.ctable select{background:var(--panel-2);border:1px solid var(--line-2);color:var(--text);border-radius:5px;padding:4px 6px;font-size:12px}.ctable .tnum{text-align:right;background:var(--panel-2);border:1px solid var(--line-2);width:60px;color:var(--text);border-radius:5px;padding:4px 6px}.tog{border:1px solid var(--line-2);width:26px;height:22px;color:var(--text-dim);background:0 0;border-radius:5px;font-size:12px;line-height:1}.tog-cruise.on{background:var(--cruise);border-color:var(--cruise);color:#fff}.tog-check.on{background:var(--accent-2);border-color:var(--accent-2);color:#fff}.inspector.empty{color:var(--text-dim)}.ins-hint p{margin-bottom:10px;line-height:1.5}.ins-h{color:var(--text-h);align-items:center;gap:8px;margin-bottom:12px;font-size:14px;font-weight:650;display:flex}.ins-sub{text-transform:uppercase;letter-spacing:.4px;color:var(--text-dim);border-top:1px solid var(--line);margin:14px 0 6px;padding-top:10px;font-size:11px}.ins-meta{justify-content:space-between;margin:4px 0 8px;font-size:12px;display:flex}.chip{text-transform:uppercase;letter-spacing:.4px;color:#fff;border-radius:20px;padding:2px 7px;font-size:10px}.chip-reef{background:var(--reef)}.chip-cruise{background:var(--cruise)}.chip-leave{background:var(--leave)}.pinrow{align-items:center;gap:8px;padding:4px 0;font-size:12px;display:flex}.pinrow>span:nth-child(2){flex:1}.dot{border-radius:3px;flex:none;width:12px;height:12px}.x{color:var(--text-dim);background:0 0;border:none;padding:0 4px;font-size:16px;line-height:1}.x:hover{color:var(--short)}.addrow{align-items:center;gap:6px;margin-top:6px;display:flex}.addrow.col{flex-direction:column;align-items:stretch}.addrow input{background:var(--panel-2);border:1px solid var(--line-2);color:var(--text-h);border-radius:5px;flex:1;min-width:0;padding:4px 6px}
