:root{--bg:#0d1b2e;--panel:#13263f;--panel-border:#24456b;--text:#e6eef8;--muted:#8ea6c4;--accent:#f5c542;--ok:#4cd480;--bad:#ef5b5b;--pending:#5aa9f5;--radius:6px;--font-ui:system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:ui-monospace, "SF Mono", Menlo, monospace;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);font-family:var(--font-ui);margin:0;line-height:1.5}.shell{gap:16px;max-width:960px;margin:0 auto;padding:32px 16px;display:grid}.masthead h1{color:var(--accent);font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase;margin:0}.masthead p{color:var(--muted);margin:0}.panel{background:var(--panel);border:2px solid var(--panel-border);border-radius:var(--radius);padding:16px;overflow-x:auto}.panel h2{margin:0 0 12px;font-size:1.1rem}.muted{color:var(--muted);font-weight:400}.error{color:var(--bad)}.hint code,.mono{font-family:var(--font-mono);font-size:.85em}.status-grid{gap:32px;margin:0;display:flex}.status dt{color:var(--muted);font-size:.85rem}.status dd{align-items:center;gap:8px;margin:0;display:flex}.dot{width:10px;height:10px;display:inline-block}.dot-ok{background:var(--ok)}.dot-bad{background:var(--bad)}.clock{flex-wrap:wrap;align-items:baseline;gap:12px;margin-bottom:12px;display:flex}.clock-time{font-family:var(--font-mono);color:var(--accent);font-size:1.5rem}.actions{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px;display:flex}button{font:inherit;color:var(--bg);background:var(--accent);border-radius:var(--radius);cursor:pointer;border:0;padding:6px 12px}button:disabled{opacity:.6;cursor:wait}.events{border-collapse:collapse;width:100%;font-size:.9rem}.events th,.events td{text-align:left;border-top:1px solid var(--panel-border);padding:6px 8px}.events th{color:var(--muted);font-weight:400}.tag{color:var(--bg);border-radius:3px;padding:1px 6px;font-size:.8rem}.tag-pending{background:var(--pending)}.tag-done{background:var(--ok)}.tag-failed{background:var(--bad)}.masthead{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:12px;display:flex}.masthead-side{justify-items:end;gap:4px;display:grid}.masthead-side .clock{margin:0}.masthead-side .clock-time{font-size:1.1rem}.status-line{color:var(--muted);align-items:center;gap:6px;font-size:.85rem;display:inline-flex}h3{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin:16px 0 8px;font-size:.95rem;font-weight:400}input,select{font:inherit;color:var(--text);background:var(--bg);border:1px solid var(--panel-border);border-radius:var(--radius);padding:4px 8px}input[type=color]{width:44px;height:32px;padding:2px}input.narrow{width:5.5em}label{color:var(--muted);gap:4px;font-size:.85rem;display:grid}label>input,label>select{font-size:1rem}.form-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));align-items:end;gap:12px;display:grid}.form-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.colors{gap:8px;display:flex}.inline-form{flex-wrap:wrap;align-items:center;gap:6px;display:inline-flex}.inline-form.planner{align-items:end;gap:12px;display:flex}button.secondary{color:var(--text);border:1px solid var(--accent);background:0 0}button.secondary:disabled{cursor:not-allowed;opacity:.4}button.link{color:var(--accent);background:0 0;padding:0;text-decoration:underline}.airline-header{border-left-width:8px}.airline-title{align-items:center;gap:12px;display:flex}.airline-title h2{margin:0}.swatch{outline-offset:0;outline:3px solid;width:20px;height:20px}.stats{flex-wrap:wrap;gap:12px 32px;margin:12px 0 0;display:flex}.stats dt{color:var(--muted);font-size:.8rem}.stats dd{font-family:var(--font-mono);margin:0;font-size:1.1rem}.estimate{border:1px dashed var(--panel-border);border-radius:var(--radius);padding:12px}.milestones{flex-wrap:wrap;gap:8px;margin:12px 0 0;display:flex}.model-cards{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;display:grid}.model-card{border:1px solid var(--panel-border);border-radius:var(--radius);gap:6px;padding:12px;display:grid}.model-card .actions{margin:0}.num{text-align:right;font-family:var(--font-mono)}.negative{color:var(--bad)}.positive{color:var(--ok)}.small{font-size:.8rem}.tag-scheduled{background:var(--muted)}.tag-departed{background:var(--pending)}.tag-arrived{background:var(--ok)}.tag-cancelled{background:var(--bad)}.tag-ferry{background:var(--accent);margin-left:6px}.event-list{gap:4px;margin:0;padding:0;list-style:none;display:grid}.event-list .muted{min-width:7.5em;font-family:var(--font-mono);font-size:.85em;display:inline-block}.return-report{border-color:var(--accent)}
