:root{--bg:#f6f6f4;--surface:#fff;--surface-sunk:#eef1f5;--border:#dee2e8;--border-strong:#c7cdd6;--text:#13294b;--text-secondary:#4a5568;--text-muted:#8993a4;--navy:#13294b;--admiral-bright:#54aee6;--admiral-bright-dark:#2e7fb3;--sea-foam-bright:#38c69a;--mist:#cacac8;--accent:var(--admiral-bright);--accent-light:#e6f3fc;--accent-dark:var(--admiral-bright-dark);--test-bg:#e6f3fc;--test-border:#54aee6;--test-text:#13294b;--cust-bg:#e4f8f1;--cust-border:#38c69a;--cust-text:#0e4a38;--media-bg:#fff2dc;--media-border:#f8a800;--media-text:#6b4500;--maint-bg:#efefed;--maint-border:#adadab;--maint-text:#2c2c2a;--radius:8px;--font:"Montserrat", -apple-system, "Segoe UI", Helvetica, Arial, sans-serif;--mono:"SF Mono", "IBM Plex Mono", Menlo, Consolas, monospace}@media (prefers-color-scheme:dark){:root{--bg:#0b1526;--surface:#13294b;--surface-sunk:#1b3357;--border:#2a4269;--border-strong:#3a5480;--text:#f2f5f9;--text-secondary:#c3ccda;--text-muted:#8fa0ba;--accent:var(--admiral-bright);--accent-light:#1e3a5c;--accent-dark:#7fc4ee;--test-bg:#1e3a5c;--test-border:#54aee6;--test-text:#eaf4fc;--cust-bg:#133f32;--cust-border:#38c69a;--cust-text:#dff7ee;--media-bg:#4a3a12;--media-border:#f8a800;--media-text:#fce8c4;--maint-bg:#2a2e33;--maint-border:#6b6f76;--maint-text:#e6e6e4}}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--text);font-family:var(--font);margin:0;padding:0;font-size:14px;line-height:1.5}#root{min-height:100svh}.app{max-width:min(1800px,94vw);margin:0 auto;padding:28px 32px 80px}.topbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-bottom:24px;display:flex}.brand{align-items:center;gap:12px;display:flex}.brand-logo{width:auto;height:30px}.brand-name{letter-spacing:-.01em;font-size:15px;font-weight:600}.brand-sub{color:var(--text-muted);margin-top:1px;font-size:12px}.top-actions{align-items:center;gap:10px;display:flex}.avatar{background:var(--surface-sunk);border:1px solid var(--border);width:30px;height:30px;color:var(--text-secondary);border-radius:50%;justify-content:center;align-items:center;font-size:11px;font-weight:600;text-decoration:none;display:flex}button{font-family:var(--font);cursor:pointer;font-size:13px}.btn{border:1px solid var(--border-strong);background:var(--surface);color:var(--text);border-radius:6px;align-items:center;gap:6px;padding:8px 14px;font-weight:500;text-decoration:none;transition:background .12s;display:inline-flex}.btn:hover{background:var(--surface-sunk)}.btn-primary{background:var(--navy);border-color:var(--navy);color:#fff}.btn-primary:hover{background:var(--admiral-bright-dark);border-color:var(--admiral-bright-dark)}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.btn-ghost{color:var(--text-secondary);background:0 0;border-color:#0000;padding:8px 10px}.btn-ghost:hover{background:var(--surface-sunk);color:var(--text)}.btn-ghost-active{background:var(--surface-sunk);color:var(--text);font-weight:600}.btn-sm{padding:5px 9px;font-size:12px}.btn-block{justify-content:center;width:100%}.icon-btn{border:1px solid var(--border);background:var(--surface);width:30px;height:30px;color:var(--text-secondary);border-radius:6px;justify-content:center;align-items:center;display:flex}.icon-btn:hover{background:var(--surface-sunk)}select.filter,select.filter-sm,.field select{font-family:var(--font);border:1px solid var(--border-strong);background:var(--surface);color:var(--text);border-radius:6px;padding:7px 10px;font-size:13px}.filter-sm{padding:6px 8px;font-size:12px}.status-strip{grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:22px;display:grid}.status-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;justify-content:space-between;align-items:center;gap:10px;padding:14px 16px;display:flex}.status-card .vname{font-size:14px;font-weight:600}.status-card .vsub{color:var(--text-muted);margin-top:2px;font-size:12px}.status-strip-note{color:var(--text-muted);margin-bottom:22px;font-size:13px}.status-strip-error{color:var(--cust-text)}.pill{letter-spacing:.01em;white-space:nowrap;border-radius:20px;padding:3px 9px;font-size:11px;font-weight:600}.pill-available{background:var(--accent-light);color:var(--accent-dark)}.pill-booked{background:var(--media-bg);color:var(--media-text)}.pill-maint{background:var(--maint-bg);color:var(--maint-text)}.toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;display:flex}.toolbar-left{flex-wrap:wrap;align-items:center;gap:14px;display:flex}.week-nav{align-items:center;gap:4px;display:flex}.week-label{text-align:center;min-width:150px;margin:0 6px;font-size:15px;font-weight:600}.legend{color:var(--text-secondary);flex-wrap:wrap;align-items:center;gap:6px 16px;margin-bottom:14px;font-size:12px;display:flex}.legend-item{align-items:center;gap:6px;display:flex}.swatch{border-radius:3px;width:10px;height:10px}.swatch-pending{background:var(--surface-sunk);border:1px dashed var(--text-muted);box-sizing:border-box}.cal-scroll{-webkit-overflow-scrolling:touch;border:1px solid var(--border);border-radius:10px;overflow-x:auto}.cal{background:var(--surface);min-width:700px;overflow:hidden}.cal-head{background:var(--surface-sunk);border-bottom:1px solid var(--border);grid-template-columns:152px repeat(7,minmax(78px,1fr));display:grid}.cal-head-cell{text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);text-align:center;padding:10px 8px;font-size:11px}.cal-head-cell.today{color:var(--accent-dark)}.cal-head-cell .daynum{color:var(--text);text-transform:none;letter-spacing:0;margin-top:2px;font-size:15px;font-weight:600;display:block}.cal-head-cell.today .daynum{color:var(--accent-dark)}.cal-head-cell:first-child{z-index:3;background:var(--surface-sunk);position:sticky;left:0}.cal-row{border-bottom:1px solid var(--border);grid-template-columns:152px repeat(7,minmax(78px,1fr));display:grid}.cal-row:last-child{border-bottom:none}.vessel-cell{border-right:1px solid var(--border);background:var(--surface-sunk);z-index:3;flex-direction:column;justify-content:center;gap:6px;padding:10px;display:flex;position:sticky;left:0;overflow:hidden}.vessel-cell .vn{white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:600;display:block;overflow:hidden}.vessel-cell .vt{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;font-size:11px;display:block;overflow:hidden}.vessel-thumb{object-fit:contain;border-radius:6px;width:100%;height:auto;max-height:64px;display:block}.day-cell{border-right:1px solid var(--border);min-height:96px;padding:6px;position:relative}.day-cell:last-child{border-right:none}.day-cell.weekend{background:var(--surface-sunk)}.avail-cell{flex-wrap:wrap;justify-content:center;align-items:center;gap:4px;min-height:auto;padding:8px 4px;display:flex}.owo-badge{white-space:nowrap;border:1px solid #0000;border-radius:20px;padding:3px 8px;font-size:11px;font-weight:600}.booking{cursor:pointer;border:1px solid #0000;border-radius:6px;margin-bottom:5px;padding:15px 8px 7px;font-size:11.5px;line-height:1.35;position:relative}.booking:hover{filter:brightness(.97)}.booking.readonly{cursor:default}.booking.readonly:hover{filter:none}.booking .bactivity{text-overflow:ellipsis;white-space:nowrap;text-transform:uppercase;letter-spacing:.03em;opacity:.7;max-width:62%;font-size:7.5px;font-weight:700;position:absolute;top:4px;right:6px;overflow:hidden}.booking .btitle{margin-bottom:1px;font-weight:600;display:block}.booking .bmeta{font-size:11px;display:block}.booking.pending{opacity:.6;border-style:dashed}.pending-flag{text-transform:uppercase;letter-spacing:.03em;margin-top:2px;font-size:10px;font-weight:700;display:block}.add-cell-btn{border:1px dashed var(--border-strong);width:100%;color:var(--text-muted);opacity:0;background:0 0;border-radius:6px;padding:5px;font-size:11px;transition:opacity .12s}.day-cell:hover .add-cell-btn{opacity:1}.add-cell-btn:hover{background:var(--surface-sunk);color:var(--text-secondary)}.cell-status-note{text-align:center;width:100%;color:var(--text-muted);opacity:0;border-radius:6px;padding:5px;font-size:11px;font-style:italic;transition:opacity .12s;display:block}.day-cell:hover .cell-status-note{opacity:1}.lower{grid-template-columns:1.3fr 1fr;gap:18px;margin-top:22px;display:grid}.panel{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:16px 18px}.panel h3{align-items:center;gap:8px;margin:0 0 12px;font-size:13px;font-weight:600;display:flex}.panel p{color:var(--text-secondary);margin:0}.scaffold-note{margin-top:4px}.req-row-full{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;padding:11px 0;font-size:13px;display:flex}.req-row-full:last-child{border-bottom:none}.req-approve{flex-shrink:0;align-items:center;gap:10px;display:flex}.req-left{align-items:center;gap:10px;min-width:0;display:flex}.req-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px;margin-top:5px}.req-name{font-weight:500}.req-sub{color:var(--text-muted);font-size:12px}.req-group{border-bottom:1px solid var(--border)}.req-group:last-child,.req-group .req-row-full{border-bottom:none}.req-row-child{background:var(--surface-sunk);border-left:3px solid var(--accent);border-radius:6px;margin:0 0 10px 18px;padding:8px 10px!important}.seahorse-tag{background:var(--accent-light);color:var(--accent-dark);text-transform:uppercase;letter-spacing:.02em;vertical-align:middle;white-space:nowrap;border-radius:10px;margin-right:6px;padding:2px 6px;font-size:10px;font-weight:700;display:inline-block}.warning-tag{color:#993c1d;text-transform:uppercase;letter-spacing:.02em;vertical-align:middle;white-space:nowrap;background:#fbeae3;border-radius:10px;margin-right:6px;padding:2px 6px;font-size:10px;font-weight:700;display:inline-block}.invite-toggle{color:var(--text-secondary);white-space:nowrap;align-items:center;gap:6px;font-size:12px;display:flex}.switch{flex-shrink:0;width:30px;height:17px;display:inline-block;position:relative}.switch input{opacity:0;width:0;height:0}.slider{cursor:pointer;background:var(--border-strong);border-radius:20px;transition:all .15s;position:absolute;inset:0}.slider:before{content:"";background:#fff;border-radius:50%;width:13px;height:13px;transition:all .15s;position:absolute;bottom:2px;left:2px}.switch input:checked+.slider{background:var(--accent)}.switch input:checked+.slider:before{transform:translate(13px)}.roster-row{border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:4px 12px;padding:9px 0;font-size:13px;display:flex}.roster-row:last-child{border-bottom:none}.overlay{z-index:50;background:#13294b73;justify-content:center;align-items:center;padding:16px;display:none;position:fixed;inset:0}.overlay.open{display:flex}.modal{background:var(--surface);border-radius:12px;width:420px;max-width:92vw;max-height:90vh;padding:22px 24px;overflow-y:auto;box-shadow:0 12px 32px #0000002e}.modal-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;display:flex}.modal-head h2{margin:0;font-size:15px;font-weight:600}.modal-close{color:var(--text-muted);background:0 0;border:none;padding:4px;font-size:18px;line-height:1}.field{margin-bottom:14px}.field label{color:var(--text-secondary);margin-bottom:5px;font-size:12px;font-weight:500;display:block}.field input,.field select,.field textarea{border:1px solid var(--border-strong);width:100%;font-family:var(--font);background:var(--surface);color:var(--text);border-radius:6px;padding:8px 10px;font-size:13px}.field textarea{resize:vertical;min-height:60px;line-height:1.5}.field-row{grid-template-columns:1fr 1fr;gap:10px;display:grid}.modal-actions{justify-content:flex-end;gap:8px;margin-top:18px;display:flex}.detail-row{border-bottom:1px solid var(--border);justify-content:space-between;gap:12px;padding:7px 0;font-size:13px;display:flex}.detail-row:last-child{border-bottom:none}.detail-row span:first-child{color:var(--text-secondary)}.conflict-note{background:var(--cust-bg);color:var(--cust-text);border-radius:6px;align-items:flex-start;gap:8px;margin-bottom:14px;padding:9px 11px;font-size:12px;display:flex}.owo-note{background:var(--accent-light);color:var(--accent-dark);border-radius:6px;margin-bottom:4px;padding:9px 11px;font-size:12px;line-height:1.5}.owo-note i{margin-bottom:2px;font-style:normal;font-weight:600;display:block}.people-picker-dropdown{z-index:5;background:var(--surface);border:1px solid var(--border-strong);border-radius:8px;max-height:220px;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow-y:auto;box-shadow:0 8px 20px #00000024}.people-picker-option{text-align:left;width:100%;font-family:var(--font);color:var(--text);cursor:pointer;background:0 0;border:none;flex-direction:column;align-items:flex-start;gap:1px;padding:8px 10px;font-size:13px;display:flex}.people-picker-option:hover{background:var(--surface-sunk)}.people-picker-email{color:var(--text-muted);font-size:11px}.people-picker-empty{color:var(--text-muted);padding:10px;font-size:12px}.rte{border:1px solid var(--border-strong);border-radius:6px;overflow:hidden}.rte-toolbar{background:var(--surface-sunk);border-bottom:1px solid var(--border-strong);flex-wrap:wrap;gap:4px;padding:6px;display:flex}.rte-btn{color:var(--text);cursor:pointer;font-size:12px;font-weight:600;font-family:var(--font);background:0 0;border:1px solid #0000;border-radius:4px;padding:4px 9px}.rte-btn:hover{background:var(--surface);border-color:var(--border-strong)}.rte-content{background:var(--surface);max-height:50vh;color:var(--text);padding:10px 12px;font-size:13px;line-height:1.6;overflow-y:auto}.rte-content:focus{outline:none}.rte-content:empty:before{content:attr(data-placeholder);color:var(--text-muted)}.rte-content ul,.rte-content ol{margin:0 0 8px;padding-left:22px}.rte-content p{margin:0 0 8px}.rte-content h3{margin:0 0 8px;font-size:14px}.rich-text-display{color:var(--text);line-height:1.5}.rich-text-display ul,.rich-text-display ol{margin:0 0 8px;padding-left:20px}.rich-text-display p{margin:0 0 8px}.rich-text-display h3{margin:0 0 6px;font-size:13px}.rich-text-display>:last-child{margin-bottom:0}.feedback-widget{z-index:40;position:fixed;bottom:20px;right:20px}.feedback-fab{background:var(--accent-dark);color:#fff;cursor:pointer;border:none;border-radius:50%;justify-content:center;align-items:center;width:48px;height:48px;font-size:19px;display:flex;box-shadow:0 6px 18px #00000038}.feedback-fab:hover{filter:brightness(1.08)}.feedback-panel{background:var(--surface);border:1px solid var(--border-strong);border-radius:10px;width:280px;padding:14px;position:absolute;bottom:58px;right:0;box-shadow:0 10px 30px #0003}.feedback-panel-head{color:var(--text);justify-content:space-between;align-items:center;margin-bottom:10px;font-size:13px;font-weight:600;display:flex}.feedback-type-toggle{gap:6px;margin-bottom:8px;display:flex}.feedback-type-toggle button{border:1px solid var(--border-strong);background:var(--surface);font-size:12px;font-family:var(--font);cursor:pointer;color:var(--text);border-radius:6px;flex:1;padding:6px}.feedback-type-toggle button.active{background:var(--accent-light);border-color:var(--accent-dark);color:var(--accent-dark);font-weight:600}.feedback-panel textarea{border:1px solid var(--border-strong);width:100%;font-family:var(--font);background:var(--surface);color:var(--text);resize:vertical;border-radius:6px;min-height:70px;padding:8px 10px;font-size:13px}.feedback-sent{color:var(--text);margin:0;font-size:13px}.report-table{border-collapse:collapse;width:100%;font-size:13px}.report-table th,.report-table td{text-align:left;border-bottom:1px solid var(--border);padding:8px 10px}.report-table th{color:var(--text-muted);text-transform:uppercase;letter-spacing:.03em;font-size:11px;font-weight:600}.report-table td input[type=text],.report-table td select{border:1px solid var(--border-strong);font-family:var(--font);background:var(--surface);color:var(--text);border-radius:6px;padding:5px 8px;font-size:13px}.report-table td input[type=checkbox]{width:16px;height:16px}.login-screen{justify-content:center;align-items:center;min-height:100svh;padding:24px;display:flex}.login-card{background:var(--surface);border:1px solid var(--border);text-align:center;border-radius:12px;width:100%;max-width:380px;padding:40px 36px;box-shadow:0 12px 32px #13294b14}.login-logo{width:auto;height:32px;margin-bottom:24px}.login-card h1{color:var(--navy);margin:0 0 10px;font-size:20px;font-weight:600}.login-sub{color:var(--text-secondary);margin:0 0 24px;font-size:13px;line-height:1.5}.app-loading{min-height:100svh;color:var(--text-muted);justify-content:center;align-items:center;display:flex}@media (width<=640px){.app{padding:16px 12px 60px}.topbar{margin-bottom:18px}.brand-name{font-size:14px}.top-actions .btn-ghost{padding:6px 8px}.status-strip{grid-template-columns:1fr}.toolbar{align-items:stretch}.toolbar-left{flex-direction:column;align-items:stretch;gap:8px;width:100%}.week-nav{justify-content:space-between}.toolbar select.filter{width:100%}.toolbar>.btn-primary{justify-content:center;width:100%}.cal{min-width:712px}.lower{grid-template-columns:1fr;gap:14px}.panel{padding:14px}.req-row-full{flex-direction:column;align-items:flex-start}.req-approve{flex-direction:column;align-items:stretch;width:100%}.req-approve select{flex:1;width:100%;min-width:0}.req-approve .invite-toggle{justify-content:space-between}.req-approve .btn{justify-content:center;width:100%}.req-row-child{margin-left:8px}.modal{width:100%;padding:18px 16px}.field-row{grid-template-columns:1fr;gap:0}.modal-actions{flex-direction:column-reverse}.modal-actions .btn{justify-content:center;width:100%}}
