*{box-sizing:border-box}:root{--surface-header:#1e293b;--surface-sidebar:#1e293b;--surface-page:#f1f5f9;--accent:#2563eb;--accent-hover:#1d4ed8;--accent-soft:#2563eb2e;--accent-text-soft:#93c5fd;--accent-secondary:#d97706;--accent-secondary-soft:#d9770624}:root[data-theme=deep-teal]{--surface-header:#042f2e;--surface-sidebar:#042f2e;--surface-page:#f0fdfa;--accent:#0d9488;--accent-hover:#0f766e;--accent-soft:#0d948833;--accent-text-soft:#5eead4;--accent-secondary:#b45309;--accent-secondary-soft:#b4530924}:root[data-theme=harbor-blue]{--surface-header:#1e3a8a;--surface-sidebar:#1e3a8a;--surface-page:#eff6ff;--accent:#3b82f6;--accent-hover:#2563eb;--accent-soft:#3b82f633;--accent-text-soft:#bfdbfe;--accent-secondary:#7c3aed;--accent-secondary-soft:#7c3aed24}:root[data-theme=charcoal-steel]{--surface-header:#111827;--surface-sidebar:#111827;--surface-page:#f8fafc;--accent:#64748b;--accent-hover:#475569;--accent-soft:#64748b38;--accent-text-soft:#cbd5e1;--accent-secondary:#b45309;--accent-secondary-soft:#b4530924}:root[data-theme=coastal-slate]{--surface-header:#334155;--surface-sidebar:#334155;--surface-page:#f1f5f9;--accent:#0ea5e9;--accent-hover:#0284c7;--accent-soft:#0ea5e933;--accent-text-soft:#7dd3fc;--accent-secondary:#8b5cf6;--accent-secondary-soft:#8b5cf624}body{margin:0;font-family:Inter,Segoe UI,system-ui,sans-serif}#root{min-height:100vh}.app-shell{min-height:100vh;display:flex}.app-content{flex:1;min-width:0}.board-loading,.board-error{color:#475569;flex-direction:column;justify-content:center;align-items:center;gap:14px;min-height:100vh;font-size:15px;display:flex}.board-error{color:#b91c1c}.dashboard-view-wrapper{min-height:100vh;position:relative}.dashboard-calculating-overlay{-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px);color:#475569;z-index:20;background:#f1f5f9b3;flex-direction:column;justify-content:center;align-items:center;gap:12px;font-size:14px;font-weight:600;display:flex;position:fixed;inset:0 0 0 76px}.auth-gate{background:#0f172a;justify-content:center;align-items:center;min-height:100vh;font-family:Inter,Segoe UI,system-ui,sans-serif;display:flex}.auth-card{text-align:center;background:#fff;border-radius:12px;padding:40px 48px;box-shadow:0 10px 30px #00000040}.auth-card h1{color:#0f172a;margin:0 0 8px;font-size:22px}.auth-card p{color:#64748b;margin:0 0 20px;font-size:14px}.auth-card button{color:#fff;cursor:pointer;background:#2563eb;border:none;border-radius:8px;padding:10px 24px;font-size:14px;font-weight:600}.auth-card button:hover{background:#1d4ed8}.boat-loader{color:var(--accent,#2563eb);flex-direction:column;align-items:center;gap:10px;display:flex}.boat-loader-stage{position:relative}.boat-loader-full .boat-loader-stage{width:140px;height:56px}.boat-loader-inline .boat-loader-stage{width:56px;height:24px}.boat-loader-svg{width:100%;height:100%;position:absolute;inset:0;overflow:hidden}.boat-loader-boat{transform-origin:50% 100%;line-height:1;animation:1.8s ease-in-out infinite boat-loader-bob;position:absolute;bottom:14%;left:50%;transform:translate(-50%)}.boat-loader-full .boat-loader-boat{font-size:28px}.boat-loader-inline .boat-loader-boat{font-size:13px}.boat-loader-water{overflow:hidden}.boat-loader-water-back .boat-loader-wave{animation:2.6s linear infinite boat-loader-wave-scroll}.boat-loader-water-front .boat-loader-wave{animation:1.3s linear infinite boat-loader-wave-scroll}.boat-loader-label{color:#475569;font-size:13px;font-weight:600}@keyframes boat-loader-bob{0%,to{transform:translate(-50%)translateY(0)rotate(-3deg)}50%{transform:translate(-50%)translateY(-4px)rotate(3deg)}}@keyframes boat-loader-wave-scroll{0%{transform:translate(0)}to{transform:translate(-40px)}}.brand-logo{align-items:center;gap:10px;display:inline-flex}.brand-mark{object-fit:contain;flex-shrink:0;width:30px;height:37px}.brand-name{flex-direction:column;line-height:1.05;display:flex}.brand-name-light{color:#f8fafc;font-size:13px;font-weight:400}.brand-name-bold{color:#fff;font-size:15px;font-weight:800}.brand-divider{background:#fff3;width:1px;height:28px}.brand-app-name{letter-spacing:.02em;color:#fff;white-space:nowrap;font-size:19px;font-weight:800}.dashboard-content{flex:1;padding:20px 24px;overflow-y:auto}.dashboard-range-bar{background:#fff;border-radius:10px;align-items:flex-end;gap:14px;margin-bottom:18px;padding:12px 16px;display:flex;box-shadow:0 1px 3px #00000014}.dashboard-range-field{text-transform:uppercase;letter-spacing:.03em;color:#64748b;flex-direction:column;gap:4px;font-size:11px;font-weight:600;display:flex}.dashboard-range-field input[type=date]{color:#0f172a;background:#fff;border:1px solid #e2e8f0;border-radius:6px;padding:6px 10px;font-family:inherit;font-size:13px}.dashboard-range-field input[type=date]:focus{border-color:var(--accent-text-soft);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.dashboard-range-reset{background:var(--accent-soft);color:var(--accent);cursor:pointer;white-space:nowrap;border:none;border-radius:6px;padding:8px 14px;font-size:12px;font-weight:700}.dashboard-range-reset:hover{background:var(--accent);color:#fff}.dashboard-stat-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin-bottom:24px;display:grid}.dashboard-stat-card{border-left:4px solid var(--accent);background:#fff;border-radius:10px;flex-direction:column;padding:16px 18px;display:flex;box-shadow:0 1px 3px #00000014}.dashboard-stat-value{color:var(--surface-header);font-size:28px;font-weight:700}.dashboard-stat-label{color:#64748b;margin-top:2px;font-size:13px}.dashboard-stat-sub{color:#94a3b8;margin-top:6px;font-size:11px}.dashboard-charts-grid{grid-template-columns:repeat(auto-fit,minmax(380px,1fr));gap:16px;display:grid}.dashboard-chart-card{background:#fff;border-radius:10px;padding:16px 18px;box-shadow:0 1px 3px #00000014}.dashboard-chart-wide{grid-column:1/-1}.dashboard-chart-title{color:var(--surface-header);margin:0 0 10px;font-size:14px;font-weight:600}.job-modal-backdrop{z-index:200;background:#0f172a80;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.job-modal{background:#fff;border-radius:14px;flex-direction:column;width:100%;max-width:980px;max-height:90vh;font-family:Inter,Segoe UI,system-ui,sans-serif;display:flex;box-shadow:0 20px 50px #0000004d}.job-modal-header{background:var(--surface-header);border-radius:14px 14px 0 0;justify-content:space-between;align-items:center;padding:18px 24px;display:flex}.job-modal-header h2{color:#f8fafc;margin:0;font-size:17px}.job-modal-close{color:#cbd5e1;cursor:pointer;background:0 0;border:none;border-radius:6px;padding:4px 8px;font-size:16px}.job-modal-close:hover{color:#fff;background:#ffffff1a}.job-modal-body{flex:1;padding:20px 24px;overflow-y:auto}.job-modal-loading{text-align:center;color:#64748b;padding:40px 24px}.job-modal-error{color:#b91c1c;background:#fef2f2;border:1px solid #fecaca;border-radius:8px;margin-bottom:16px;padding:10px 14px;font-size:13px}.job-form-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-bottom:14px;display:grid}.job-field{color:#475569;flex-direction:column;gap:5px;min-width:0;font-size:12px;font-weight:600;display:flex}.job-field input,.job-field select{box-sizing:border-box;width:100%;min-width:0}.job-field-wide{margin-bottom:14px}.job-field input,.job-field select,.job-field textarea{color:#0f172a;resize:vertical;border:1px solid #cbd5e1;border-radius:6px;padding:8px 10px;font-family:inherit;font-size:13px;font-weight:400}.job-field input:focus,.job-field select:focus,.job-field textarea:focus{border-color:var(--accent-text-soft,#93c5fd);box-shadow:0 0 0 3px var(--accent-soft,#2563eb26);outline:none}.job-subsection{border-left:4px solid #0000;border-radius:10px;margin-top:16px;padding:14px 16px}.job-subsection-tugs{background:var(--accent-soft);border-left-color:var(--accent)}.job-subsection-locations{background:var(--accent-secondary-soft);border-left-color:var(--accent-secondary)}.job-subsection-header{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.job-subsection-header h3{text-transform:uppercase;letter-spacing:.03em;margin:0;font-size:13px;font-weight:700}.job-subsection-tugs .job-subsection-header h3{color:var(--accent-hover)}.job-subsection-locations .job-subsection-header h3{color:var(--accent-secondary)}.job-add-row{cursor:pointer;border:none;border-radius:6px;padding:6px 12px;font-size:12px;font-weight:700}.job-subsection-tugs .job-add-row{background:var(--accent);color:#fff}.job-subsection-tugs .job-add-row:hover{background:var(--accent-hover)}.job-subsection-locations .job-add-row{background:var(--accent-secondary);color:#fff}.job-subsection-locations .job-add-row:hover{filter:brightness(1.1)}.job-subsection-empty{color:#64748b;padding:6px 0;font-size:13px}.job-subrow{align-items:center;gap:10px;margin-bottom:8px;display:flex}.job-subrow select,.job-subrow input[type=text]{background:#fff;border:1px solid #cbd5e1;border-radius:6px;flex:1;padding:8px 10px;font-family:inherit;font-size:13px}.log-detail-card{background:#fff;border-radius:8px;margin-bottom:10px;padding:12px}.log-detail-row-top,.log-detail-row-bottom{flex-wrap:wrap;align-items:flex-end;gap:10px;display:flex}.log-detail-row-top{margin-bottom:10px}.log-detail-row-top .job-field,.log-detail-row-bottom .job-field{flex:150px;min-width:0}.log-detail-row-top .job-field span,.log-detail-row-bottom .job-field span{font-size:11px}.log-detail-row-top select,.log-detail-row-bottom input[type=datetime-local]{box-sizing:border-box;border:1px solid #cbd5e1;border-radius:6px;width:100%;min-width:0;padding:7px 8px;font-family:inherit;font-size:12.5px}.log-detail-pastjetty{flex:none;padding-bottom:8px}.job-confirm-check{color:#475569;white-space:nowrap;align-items:center;gap:6px;font-size:12px;font-weight:600;display:flex}.job-remove-row{color:#ef4444;cursor:pointer;background:0 0;border:none;border-radius:6px;flex-shrink:0;padding:4px 6px;font-size:14px}.job-remove-row:hover{background:#fef2f2}.job-modal-actions{border-top:1px solid #e2e8f0;justify-content:space-between;align-items:center;padding:16px 24px;display:flex}.job-modal-actions-right{gap:8px;display:flex}.job-delete-btn,.job-cancel-btn,.job-save-btn{cursor:pointer;border:none;border-radius:6px;padding:9px 18px;font-size:13px;font-weight:600}.job-delete-btn{color:#b91c1c;background:#fef2f2}.job-delete-btn:hover{background:#fee2e2}.job-cancel-btn{color:#475569;background:#f1f5f9}.job-save-btn{background:var(--accent,#2563eb);color:#fff}.job-save-btn:hover{background:var(--accent-hover,#1d4ed8)}.job-delete-btn:disabled,.job-cancel-btn:disabled,.job-save-btn:disabled{opacity:.6;cursor:not-allowed}.board{background:var(--surface-page);color:#0f172a;min-height:100vh;font-family:Inter,Segoe UI,system-ui,sans-serif}.board-header{background:var(--surface-header);color:#f8fafc;z-index:10;justify-content:space-between;align-items:center;padding:20px 28px;display:flex;position:sticky;top:0;box-shadow:0 2px 10px #0f172a40}.board-header-left{align-items:center;gap:14px;display:flex}.board-count{background:#334155;border-radius:999px;justify-content:center;align-items:center;min-width:28px;height:28px;padding:0 8px;font-size:13px;font-weight:600;display:inline-flex}.board-title{letter-spacing:.04em;text-transform:uppercase;margin:0;font-size:20px;font-weight:700}.refresh-countdown{font-variant-numeric:tabular-nums;color:#94a3b8;background:#ffffff0f;border-radius:999px;align-items:center;gap:6px;padding:4px 10px;font-size:12px;font-weight:600;display:inline-flex}.refresh-dot{background:#4ade80;border-radius:50%;width:6px;height:6px;animation:1.6s ease-in-out infinite refresh-pulse}@keyframes refresh-pulse{0%,to{opacity:1}50%{opacity:.35}}.board-header-right{align-items:center;gap:14px;display:flex}.board-clock{font-variant-numeric:tabular-nums;color:#94a3b8;font-size:15px;font-weight:600}.board-add-btn{background:var(--accent);color:#fff;cursor:pointer;white-space:nowrap;border:none;border-radius:8px;padding:8px 16px;font-size:13px;font-weight:700}.board-add-btn:hover{background:var(--accent-hover)}.board-table{max-width:1400px;margin:0 auto;padding:16px}.board-search{color:#0f172a;background:#fff;border:1px solid #0000;border-radius:8px;width:260px;padding:8px 14px;font-family:inherit;font-size:13px}.board-search::placeholder{color:#94a3b8}.board-search:focus{border-color:var(--accent-text-soft);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.board-row.board-row-head{text-transform:uppercase;letter-spacing:.04em;color:#f8fafc;background:var(--surface-header);cursor:default;border:none;border-radius:8px;margin-bottom:10px;padding:10px 16px;font-size:12px;font-weight:600;display:flex}.board-row-head .cell.sortable{font:inherit;text-transform:inherit;letter-spacing:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:none;align-items:center;gap:4px;padding:0 8px;display:flex}.board-row-head .cell.sortable:hover{color:var(--accent-text-soft)}.sort-arrow{font-size:9px}.board-empty{text-align:center;color:#94a3b8;padding:40px 0;font-size:14px}.board-load-sentinel{justify-content:center;padding:20px 0;display:flex}.board-body{flex-direction:column;gap:6px;display:flex}.board-row{cursor:pointer;background:#fff;border:1px solid #e7eaf0;border-radius:8px;flex-wrap:wrap;align-items:center;min-height:44px;padding:8px 44px 8px 16px;transition:box-shadow .15s,border-color .15s;display:flex;position:relative;box-shadow:0 1px 2px #0f172a0f}.board-row:hover{border-color:#cbd5e1;box-shadow:0 4px 10px #0f172a1a}.board-row.board-row-head:hover{box-shadow:none;border:none}.board-row.is-selected{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.cell-rowactions{flex-shrink:0;justify-content:center;align-items:center;width:36px;display:flex}.board-body .cell-rowactions{width:auto;position:absolute;top:50%;right:8px;transform:translateY(-50%)}.row-delete-btn{color:#cbd5e1;cursor:pointer;background:0 0;border:none;border-radius:6px;padding:8px;font-size:20px;line-height:1}.row-delete-btn:hover{color:#dc2626;background:#fef2f2}.cell{box-sizing:border-box;flex-shrink:0;padding:0 8px}.cell-job{width:14%}.cell-tugs{width:12%}.cell-vessel{width:28%}.cell-agent{width:14%}.cell-pilot{align-items:center;width:8%;font-size:15px;font-weight:700;display:flex}.cell-location{width:24%}.cell-log,.cell-jobtype{width:12%}.cell-dispatcher{align-items:center;width:12%;font-size:14px;font-weight:600;display:flex}.cell-fuel{align-items:center;width:10%;font-size:14px;font-weight:600;display:flex}.cell-company{align-items:center;width:9%;font-size:14px;font-weight:600;display:flex}.cell-billing{align-items:center;width:12%;font-size:14px;font-weight:600;display:flex}.board-body .cell-dispatcher,.board-body .cell-fuel,.board-body .cell-company,.board-body .cell-billing,.board-body .cell-pilot{color:#0f172a}.logs-board .cell-log{width:10%}.logs-board .cell-jobtype{width:9%}.logs-board .cell-vessel{width:20%}.logs-board .cell-agent{width:13%}.logs-board .cell-pilot{width:6%}.logs-board .cell-dispatcher{width:9%}.vessels-board .cell-vesid{align-items:center;width:14%;font-size:14px;font-weight:700;display:flex}.vessels-board .cell-vesname{align-items:center;width:32%;font-size:14px;font-weight:600;display:flex}.vessels-board .cell-vestype{align-items:center;width:18%;font-size:13px;display:flex}.vessels-board .cell-vesstatus{align-items:center;width:14%;font-size:13px;display:flex}.vessels-board .cell-vestonnage{align-items:center;width:12%;font-size:13px;display:flex}.vessels-board .cell-vesloa{align-items:center;width:10%;font-size:13px;display:flex}.board-body .cell-vestype,.board-body .cell-vesstatus,.board-body .cell-vestonnage,.board-body .cell-vesloa{color:#334155}.job-type-pill{letter-spacing:.03em;font-size:13px;font-weight:700}.job-datetime{color:#1e293b;margin-top:1px;font-size:14px;font-weight:600}.job-date{color:#64748b}.job-doc{color:#64748b;margin-top:1px;font-size:12px;font-weight:500}.zone-badge{border-radius:6px;justify-content:center;align-items:center;min-width:22px;height:22px;padding:0 6px;font-size:12px;font-weight:700;display:inline-flex}.tug-list{flex-direction:column;gap:2px;margin-top:6px;display:flex}.tug-item{color:#0f172a;font-size:14px;font-weight:600}.confirm-check{color:#16a34a;margin-left:4px;font-weight:700}.vessel-name{color:#0f172a;font-size:15px;font-weight:700}.vessel-meta{color:#475569;margin-top:2px;font-size:13px;font-weight:500}.bow-thruster{color:#2563eb}.agent-name{color:#0f172a;font-size:15px;font-weight:700}.owner-name{margin-top:2px;font-size:14px;font-weight:700}.location-item{color:#1e293b;font-size:14px;font-weight:600;line-height:1.5}.location-pos{color:#64748b;font-size:12px;font-weight:500}.location-empty{color:#cbd5e1}.row-memo{color:#64748b;border-top:1px dashed #e2e8f0;flex-basis:100%;margin-top:10px;padding-top:10px;font-size:12.5px;font-style:italic}.sidebar{background:var(--surface-sidebar);flex-direction:column;flex-shrink:0;align-items:center;gap:6px;width:76px;height:100vh;padding-top:20px;font-family:Inter,Segoe UI,system-ui,sans-serif;display:flex;position:sticky;top:0}.sidebar-item{color:#94a3b8;cursor:pointer;background:0 0;border:none;border-radius:10px;flex-direction:column;justify-content:center;align-items:center;gap:4px;width:60px;height:60px;transition:background .15s,color .15s;display:flex}.sidebar-item:hover:not(.is-active){color:#e2e8f0;background:#ffffff0f}.sidebar-item.is-active{background:var(--accent);color:#fff}.sidebar-icon{font-size:20px;line-height:1}.sidebar-icon-svg{color:currentColor;width:20px;height:20px}.sidebar-label{text-transform:uppercase;letter-spacing:.01em;white-space:nowrap;font-size:8.5px;font-weight:700}.sidebar-divider{background:#ffffff1a;width:40px;height:1px;margin:10px 0}.direction-toggle-v{background:#ffffff0f;border:1px solid #ffffff1a;border-radius:999px;flex-direction:column;gap:2px;padding:4px;display:inline-flex;position:relative}.direction-toggle-v-slider{background:linear-gradient(135deg, var(--accent), var(--accent-hover));height:calc(50% - 4px);box-shadow:0 2px 8px var(--accent-soft);border-radius:999px;transition:transform .25s cubic-bezier(.4,0,.2,1),background .25s,box-shadow .25s;position:absolute;left:4px;right:4px}.direction-toggle-v-slider.slide-up{transform:translateY(0)}.direction-toggle-v-slider.slide-down{background:linear-gradient(135deg,#ea580c,#c2410c);transform:translateY(100%);box-shadow:0 2px 8px #ea580c80}.direction-toggle-v-option{z-index:1;color:#94a3b8;cursor:pointer;background:0 0;border:none;border-radius:999px;justify-content:center;align-items:center;width:38px;height:38px;font-family:inherit;font-size:18px;transition:color .2s;display:flex;position:relative}.direction-toggle-v-option.is-active{color:#fff;cursor:default}.direction-toggle-v-option:not(.is-active):hover{color:#e2e8f0}.settings-wrap{position:relative}.settings-gear{color:#94a3b8;cursor:pointer;background:0 0;border:none;border-radius:6px;padding:4px 8px;font-size:18px}.settings-gear:hover{color:#f8fafc;background:#ffffff14}.settings-popover-backdrop{z-index:100;background:#0f172a66;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.settings-popover{background:#fff;border-radius:12px;width:320px;padding:24px;font-family:Inter,Segoe UI,system-ui,sans-serif;box-shadow:0 10px 30px #00000040}.settings-popover h2{color:#0f172a;margin:0 0 16px;font-size:16px}.settings-field{color:#475569;flex-direction:column;gap:6px;font-size:13px;display:flex}.settings-field input{border:1px solid #cbd5e1;border-radius:6px;padding:8px 10px;font-size:14px}.settings-field+.settings-field{margin-top:16px}.theme-swatches{gap:10px;display:flex}.theme-swatch{cursor:pointer;border:2px solid #0000;border-radius:50%;width:32px;height:32px;padding:0;transition:transform .1s,border-color .15s;box-shadow:inset 0 0 0 1px #0000001a}.theme-swatch:hover{transform:scale(1.08)}.settings-actions{justify-content:flex-end;gap:8px;margin-top:20px;display:flex}.settings-cancel,.settings-save{cursor:pointer;border:none;border-radius:6px;padding:8px 16px;font-size:13px;font-weight:600}.settings-cancel{color:#475569;background:#f1f5f9}.settings-save{background:var(--accent);color:#fff}.settings-save:hover{background:var(--accent-hover)}.theme-swatch.is-active{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}
