@charset "UTF-8";:root{--df-radius: 12px;--df-radius-sm: 8px;--df-space-1: 4px;--df-space-2: 8px;--df-space-3: 12px;--df-space-4: 16px;--df-space-5: 24px;--df-space-6: 32px;--df-tap: 44px;--df-safe-b: env(safe-area-inset-bottom, 0px);--df-safe-l: env(safe-area-inset-left, 0px);--df-safe-r: env(safe-area-inset-right, 0px);--df-tabbar-h: 60px;--df-actionbar-h: 68px;--df-font-sans: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--df-font-num: ui-monospace, "SF Mono", "Cascadia Mono", "Roboto Mono", Menlo, Consolas, monospace;--df-font-size-display: 40px;--df-line-height-display: 48px;--df-font-size-h1: 24px;--df-font-size-h2: 18px;--df-font-size-body: 14px;--df-font-size-label: 12px;--df-on-accent: #04211f;--df-viz-bg: #16233a;--df-viz-ink: #e6edf7;--df-viz-deck: #dbe3ef;--df-viz-window: #33465f;--df-viz-bollard: #9fb0c8;--df-viz-wave: #7ec4ef;--df-viz-wave-soft: #bfe3fb;--df-mark-aft: #b48cf2;--df-mark-mid: #6fd5f5;--df-mark-fwd: #f58cc0;--df-mark-ink: #121a2b}:root,:root[data-theme=dark]{color-scheme:dark;--df-bg: #0b1220;--df-surface: #111c2e;--df-surface-2: #18263c;--df-border: #24344f;--df-text: #e6edf7;--df-text-muted: #93a4bf;--df-accent: #12b5b0;--df-accent-strong: #0e9a96;--df-accent-weak: #0e3b3a;--df-safe: #2fbf71;--df-warning: #f2b33d;--df-critical: #e5484d;--df-brass: #e9a93c;--df-water: #1e6fa8;--df-water-top: #2e8bc7;--df-hull: #c9d3e2;--df-hull-line: #4b5d78;--df-shadow-1: 0 1px 2px rgba(3, 10, 22, .24);--df-shadow-2: 0 6px 20px rgba(3, 10, 22, .32)}:root[data-theme=light]{color-scheme:light;--df-bg: #eef3f9;--df-surface: #ffffff;--df-surface-2: #f4f8fc;--df-border: #dbe4f0;--df-text: #0a1220;--df-text-muted: #54657f;--df-accent: #0a7370;--df-accent-strong: #085b58;--df-accent-weak: #d7f0ef;--df-safe: #157f45;--df-warning: #8a5a0b;--df-critical: #b3282d;--df-brass: #8a5a10;--df-on-accent: #ffffff;--df-water: #1e6fa8;--df-water-top: #2e8bc7;--df-hull: #c9d3e2;--df-hull-line: #4b5d78;--df-shadow-1: 0 1px 2px rgba(11, 18, 32, .08);--df-shadow-2: 0 6px 20px rgba(11, 18, 32, .14)}*{box-sizing:border-box}html,body{margin:0;padding:0;min-height:100%}body{background:var(--df-bg);color:var(--df-text);font-family:var(--df-font-sans);font-size:var(--df-font-size-body);line-height:1.5;-webkit-font-smoothing:antialiased}.num{font-variant-numeric:tabular-nums}.caption{font-size:var(--df-font-size-label);text-transform:uppercase;letter-spacing:.04em;color:var(--df-text-muted);font-weight:600}.card{background:var(--df-surface);border:1px solid var(--df-border);border-radius:var(--df-radius);box-shadow:var(--df-shadow-1)}.pill{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;font-size:var(--df-font-size-label);font-weight:600;white-space:nowrap}.pill.ok{background:color-mix(in srgb,var(--df-safe) 16%,transparent);color:var(--df-safe)}.pill.warn{background:color-mix(in srgb,var(--df-warning) 16%,transparent);color:var(--df-warning)}.pill.crit{background:color-mix(in srgb,var(--df-critical) 16%,transparent);color:var(--df-critical)}.pill.prog{background:color-mix(in srgb,var(--df-accent) 16%,transparent);color:var(--df-accent)}.pill.pend{background:color-mix(in srgb,var(--df-warning) 16%,transparent);color:var(--df-warning)}.alert{border-radius:var(--df-radius-sm);padding:var(--df-space-3) var(--df-space-4);font-size:var(--df-font-size-body)}.alert ul{margin:var(--df-space-1) 0 0;padding-left:var(--df-space-4)}.alert-warning{background:color-mix(in srgb,var(--df-warning) 12%,transparent);border:1px solid var(--df-warning)}.alert-critical{background:color-mix(in srgb,var(--df-critical) 12%,transparent);border:1px solid var(--df-critical);color:var(--df-critical)}.btn{font:inherit;font-weight:600;border-radius:var(--df-radius-sm);padding:10px 18px;min-height:44px;border:1px solid transparent;cursor:pointer;transition:background .15s,border-color .15s,opacity .15s;display:inline-flex;align-items:center;justify-content:center;gap:8px;text-decoration:none}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--df-accent);color:var(--df-on-accent)}.btn-primary:hover:not(:disabled){background:var(--df-accent-strong)}.btn-secondary{background:var(--df-surface-2);color:var(--df-text);border-color:var(--df-border)}.btn-secondary:hover:not(:disabled){border-color:var(--df-accent)}.btn-ghost{background:transparent;color:var(--df-text-muted)}.btn-ghost:hover:not(:disabled){color:var(--df-text)}.btn.sm{min-height:34px;padding:6px 12px}@media(pointer:coarse){.btn.sm{min-height:var(--df-tap)}}.field{background:var(--df-surface-2);border:1px solid var(--df-border);border-radius:var(--df-radius-sm);color:var(--df-text);font:inherit;padding:10px 12px;width:100%;min-height:44px;outline:none}.field:focus{box-shadow:0 0 0 2px var(--df-accent);border-color:var(--df-accent)}.field.warn{border-color:var(--df-warning)}.field::placeholder{color:var(--df-text-muted);opacity:.7}input.field[type=number]{-moz-appearance:textfield;appearance:textfield}input.field[type=number]::-webkit-outer-spin-button,input.field[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.stepper{position:relative;display:block}.stepper>input.field{padding-right:34px}.stepper .steps{position:absolute;right:6px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:2px}.stepper .steps button{width:22px;height:16px;padding:0;line-height:1;cursor:pointer;background:var(--df-surface);color:var(--df-text-muted);border:1px solid var(--df-border);border-radius:5px;font-size:10px}.stepper .steps button:hover{color:var(--df-text);border-color:var(--df-accent)}.stepper .steps button:disabled{opacity:.4;cursor:not-allowed}a{color:var(--df-accent)}@media(max-width:600px){.df-table-cards{overflow:visible;background:transparent;border:none;box-shadow:none;padding:0;min-width:0}.df-table-cards .tr.th,.df-table-cards thead{display:none}.df-table-cards table,.df-table-cards tbody,.df-table-cards tr,.df-table-cards td{display:block;width:auto}.df-table-cards table{min-width:0}.df-table-cards>.tr:not(.no-card,.th),.df-table-cards tbody tr:not(.no-card){display:flex;flex-direction:column;align-items:stretch;gap:var(--df-space-2);margin-bottom:var(--df-space-3);padding:var(--df-space-3);border:1px solid var(--df-border);border-radius:var(--df-radius);background:var(--df-surface);box-shadow:var(--df-shadow-1)}.df-table-cards>.tr:not(.no-card,.th):last-child,.df-table-cards tbody tr:not(.no-card):last-child{margin-bottom:0}.df-table-cards>.tr>.cell,.df-table-cards tbody td{display:flex;align-items:baseline;justify-content:space-between;gap:var(--df-space-3);padding:0;border:none;text-align:left}.df-table-cards>.tr>.cell[data-label]:before,.df-table-cards tbody td[data-label]:before{content:attr(data-label);flex:0 0 auto;color:var(--df-text-muted);font-size:var(--df-font-size-label);font-weight:600;letter-spacing:.04em;text-transform:uppercase}.df-table-cards>.tr>.cell:not([data-label]),.df-table-cards tbody td:not([data-label]){display:block}.df-table-cards .vessel,.df-table-cards .port,.df-table-cards .status{align-items:flex-start}.df-table-cards .actions{margin-top:var(--df-space-1)}.df-table-cards .actions .btn{flex:1;min-height:var(--df-tap)}.df-table-cards .actions .btn.danger{flex:0 0 auto}}df-modal [modal-actions]{display:flex;justify-content:flex-end;gap:10px;width:100%}@media(max-width:600px){df-modal [modal-actions]{gap:var(--df-space-2)}df-modal [modal-actions] .btn{flex:1;min-height:var(--df-tap)}}@media(max-width:600px){.only-desktop{display:none}}@media(max-width:600px){df-action-bar .btn{flex:1 1 0;min-width:0;min-height:var(--df-tap);padding-left:var(--df-space-3);padding-right:var(--df-space-3);gap:6px}df-action-bar .btn .lbl{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}df-action-bar .btn.icon-only{flex:0 0 auto;width:var(--df-tap);padding:0}df-action-bar .btn-primary{flex:1.4 1 0}.shell.typing df-action-bar{transform:translateY(120%)}}.df-scroll-x{overflow-x:auto;overscroll-behavior-x:contain;background:linear-gradient(to right,var(--df-surface) 30%,transparent) left/24px 100% no-repeat,linear-gradient(to left,var(--df-surface) 30%,transparent) right/24px 100% no-repeat,radial-gradient(farthest-side at 0 50%,rgba(3,10,22,.22),transparent) left/12px 100% no-repeat,radial-gradient(farthest-side at 100% 50%,rgba(3,10,22,.22),transparent) right/12px 100% no-repeat;background-attachment:local,local,scroll,scroll}
