:root { --navy:#123047; --blue:#176b87; --sand:#f5f0e8; }
body { color:#263640; }
.app-header { color:#fff; background:linear-gradient(115deg,var(--navy),var(--blue)); box-shadow:0 5px 20px rgba(18,48,71,.18); }
.brand-mark { display:grid; place-items:center; width:52px; height:52px; color:#fff; text-decoration:none; font-size:25px; background:rgba(255,255,255,.14); border:1px solid rgba(255,255,255,.25); border-radius:14px; transition:background-color .15s,transform .15s; }.brand-mark:hover { color:#fff; background:rgba(255,255,255,.24); transform:translateY(-1px); }
.card { border-radius:16px; overflow:hidden; }.nav-tabs { border:0; gap:.25rem; }.nav-tabs .nav-link { color:#536773; border:0; border-bottom:3px solid transparent; padding:.8rem 1.1rem; }.nav-tabs .nav-link.active { color:var(--blue); border-bottom-color:var(--blue); font-weight:700; }
.section-heading { display:flex; justify-content:space-between; align-items:start; gap:1rem; margin-bottom:1.5rem; }.section-heading h2 { font-size:1.35rem; margin:0 0 .3rem; }.section-heading p { color:#70818b; margin:0; }.btn-primary { background:var(--blue); border-color:var(--blue); }
.table thead th { color:#73828b; text-transform:uppercase; font-size:.72rem; letter-spacing:.05em; border-top:0; }.table td { padding-top:.8rem; padding-bottom:.8rem; }.empty-state { text-align:center; color:#84939b!important; padding:3rem!important; }.ship-summary { max-width:300px; }.role-captain { background:#198754; }.role-boatswain { background:#ffc107; color:#332701; }.role-speaker { background:#6f42c1; }.role-service { background:#0d6efd; }.role-matrix .form-check-input { width:1.25rem; height:1.25rem; }.role-matrix th { white-space:nowrap; }.dependency-forbidden { background:#b02a37; }.dependency-avoid { background:#d98c10; color:#222; }.dependency-prefer { background:#198754; }
.calculation-form { background:var(--sand); padding:1.25rem; border-radius:12px; }.stats-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:1rem; }.stats-grid div { background:#fff; border:1px solid #e4e9ec; padding:1rem; border-radius:10px; }.stats-grid span { display:block; color:#71818a; font-size:.8rem; }.stats-grid strong { font-size:1.55rem; }.replacement-badge { background:#f1c75b; color:#342a0d; }.detail-button { border:0; background:none; color:var(--blue); font-size:.72rem; }.detail-box { margin-top:.4rem; padding:.5rem; background:#f2f5f6; border-radius:6px; font-size:.75rem; }.score-pill { display:inline-block; min-width:32px; padding:.2rem .4rem; text-align:center; background:#edf1f3; border-radius:20px; }.cycle-info { background:#edf5f7; border-left:3px solid var(--blue); padding:.75rem 1rem; }
@media (max-width:767px) { .section-heading { flex-direction:column; }.stats-grid { grid-template-columns:repeat(2,1fr); }.nav-tabs .nav-link { padding:.65rem .5rem; font-size:.82rem; } }
.schedule-matrix table { min-width:1100px; table-layout:fixed; }.schedule-matrix thead th { background:#eef3f5; text-align:center; vertical-align:middle; }.schedule-matrix .date-column { width:100px; position:sticky; left:0; z-index:2; background:#f8fafb; }.schedule-matrix .date-column span,.schedule-matrix .date-column small { display:block; }.schedule-matrix .date-column small { color:#84939b; margin-top:.2rem; }.ship-day-cell { min-width:165px; padding:.4rem!important; }.crew-entry { display:flex; align-items:center; flex-wrap:wrap; gap:.35rem; min-height:25px; padding:.2rem 0; border-bottom:1px solid #edf0f2; }.crew-entry:last-of-type { border-bottom:0; }.crew-role { display:inline-flex; align-items:center; justify-content:center; flex:0 0 42px; width:42px; height:20px; color:#fff; border-radius:4px; padding:0 .2rem; font-size:.62rem; line-height:1; font-weight:800; text-transform:none; }.crew-role.role-boatswain { color:#332701; }.crew-person { flex:1 1 auto; min-width:0; border:0; background:none; padding:0; color:#263640; font-size:.78rem; line-height:1.1; font-weight:600; text-align:left; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }.crew-person:hover { color:var(--blue); text-decoration:underline; }.crew-person.is-free-day { color:#b15a00; }.crew-missing { flex:1; color:#b02a37; font-size:.72rem; font-weight:700; white-space:nowrap; }.crew-entry .detail-box { flex:0 0 100%; }.cell-score { color:#8a989f; text-align:right; font-size:.62rem; margin-top:.2rem; }
