:root {
  --status-offer:#f4d35e;
  --status-contract:#b8e994;
  --status-booking:#f7a440;
  --status-invoice:#9fd3fb;
  --bg-soft:#f5f7fb;
  --card-border:#e8edf5;
  --text-soft:#64748b;
}

body { background:var(--bg-soft); }
.login-card { border-radius:1rem; }
.legend-row { display:flex; gap:.75rem; flex-wrap:wrap; }
.legend-pill { padding:.35rem .7rem; border-radius:999px; font-size:.875rem; font-weight:600; color:#1f2937; }
.calendar-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(270px,1fr)); gap:1rem; }
.calendar-month { border-radius:1rem; }
.month-days { display:grid; grid-template-columns:repeat(7,1fr); gap:.35rem; }
.day-box { background:#fafafa; border:1px solid #eef1f5; border-radius:.75rem; min-height:62px; padding:.35rem; display:block; text-decoration:none; color:inherit; cursor:pointer; }
.day-number { font-size:.8rem; font-weight:700; color:#475569; }
.day-statuses { display:flex; flex-wrap:wrap; gap:.2rem; margin-top:.25rem; }
.status-chip { width:18px; height:18px; display:inline-flex; align-items:center; justify-content:center; border-radius:50%; font-size:.65rem; font-weight:700; text-decoration:none; color:#111827; }
.status-offer{background:var(--status-offer);} .status-contract{background:var(--status-contract);} .status-booking{background:var(--status-booking);} .status-invoice{background:var(--status-invoice);}
.day-box:hover { transform:translateY(-1px); box-shadow:0 2px 8px rgba(0,0,0,.08); }
.day-box.has-items { border-color:rgba(13,110,253,.25); background:rgba(13,110,253,.03); }

.planner-mini-legend { display:flex; gap:.5rem; flex-wrap:wrap; }
.planner-mini-legend span {
  background:#f8fafc;
  border:1px solid var(--card-border);
  border-radius:999px;
  padding:.45rem .75rem;
  font-size:.875rem;
  color:#334155;
}
.planner-mini-legend strong {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:1.45rem;
  height:1.45rem;
  border-radius:50%;
  background:#0d6efd;
  color:#fff;
  margin-right:.35rem;
  font-size:.8rem;
}

.event-planner-card { border-radius:1.25rem; }
.planner-section {
  background:#fbfcfe;
  border:1px solid var(--card-border);
  border-radius:1rem;
  padding:1rem;
}
.planner-section-head { margin-bottom:1rem; }
.planner-section-head p { color:var(--text-soft); }
.planner-jobs-section { padding:1rem 1rem 1.25rem; }
.planner-info-strip {
  display:flex;
  flex-wrap:wrap;
  gap:.75rem 1.25rem;
  padding:.8rem 1rem;
  border-radius:.85rem;
  background:#f8fafc;
  border:1px solid var(--card-border);
  color:#334155;
  font-size:.95rem;
}
.planner-info-strip strong { color:#0f172a; }

.planner-table-wrap {
  border:1px solid var(--card-border);
  border-radius:1rem;
  background:#fff;
}
.event-job-table { min-width:1200px; }
.event-job-table thead th {
  position:sticky;
  top:0;
  z-index:3;
  background:#f8fafc;
  border-bottom:1px solid var(--card-border);
  white-space:nowrap;
  vertical-align:middle;
}
.event-job-table tbody td {
  border-color:#eef2f7;
  vertical-align:middle;
  background:#fff;
}
.event-job-table tbody tr:nth-child(even) td { background:#fcfdff; }
.event-job-table select, .event-job-table input { min-width:110px; }
.event-job-table .role-select { min-width:150px; }
.role-pill {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:2.5rem;
  padding:.3rem .55rem;
  border-radius:999px;
  background:#e9f2ff;
  color:#0d4da6;
  font-weight:700;
  font-size:.78rem;
}
.sticky-col {
  position:sticky;
  z-index:2;
  background:inherit;
}
.first-col { left:0; }
.second-col { left:135px; }
.third-col { left:245px; }
.event-job-table thead .sticky-col { z-index:4; }
.event-job-table .first-col,
.event-job-table .second-col,
.event-job-table .third-col {
  box-shadow:1px 0 0 #eef2f7;
}

.planner-summary-stack { min-height:100%; }
.planner-summary-card { border-radius:1.25rem; }
.planner-summary-list { display:flex; flex-direction:column; gap:.8rem; }
.planner-summary-list div {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:1rem;
  font-size:.95rem;
}
.planner-summary-list span { color:var(--text-soft); }
.planner-summary-list strong { color:#0f172a; text-align:right; }
.planner-summary-list .is-total {
  margin-top:.35rem;
  padding-top:.85rem;
  border-top:1px solid var(--card-border);
}
.planner-summary-list .is-total strong {
  font-size:1.15rem;
  color:#0d6efd;
}

.badge-soft-warning { background:#fff3cd; color:#7a5900; }
.badge-soft-success { background:#d1e7dd; color:#0f5132; }
.badge-soft-orange { background:#ffe3c2; color:#8a4b00; }
.badge-soft-info { background:#cfe2ff; color:#084298; }
.badge-soft-dark { background:#d3d3d4; color:#1f2328; }
.badge-soft-danger { background:#f8d7da; color:#842029; }
.badge-soft-secondary { background:#e2e3e5; color:#41464b; }

@media (max-width: 1399px) {
  .planner-summary-card.sticky-top { position:static !important; }
}

@media (max-width: 768px) {
  .calendar-grid{grid-template-columns:1fr;}
  .planner-mini-legend { flex-direction:column; align-items:flex-start; }
  .planner-info-strip { font-size:.9rem; }
}

.page-head {
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:1rem;
  flex-wrap:wrap;
}
.list-card, .detail-card { border-radius:1.25rem; }
.metric-card {
  background:#fff;
  border:1px solid var(--card-border);
  border-radius:1rem;
  padding:1rem 1.1rem;
  box-shadow:0 .35rem 1.25rem rgba(15,23,42,.05);
  display:flex;
  flex-direction:column;
  gap:.4rem;
}
.metric-card span { color:var(--text-soft); font-size:.92rem; }
.metric-card strong { font-size:1.6rem; color:#0f172a; }
.detail-grid {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:1rem 1.25rem;
}
.detail-grid div {
  background:#fbfcfe;
  border:1px solid var(--card-border);
  border-radius:.9rem;
  padding:.9rem 1rem;
  min-height:88px;
}
.detail-grid span {
  display:block;
  color:var(--text-soft);
  font-size:.82rem;
  margin-bottom:.35rem;
}
.detail-grid strong {
  display:block;
  color:#0f172a;
  font-size:.98rem;
  font-weight:600;
}
.assignment-chip {
  display:inline-flex;
  align-items:center;
  gap:.35rem;
  background:#f8fafc;
  border:1px solid var(--card-border);
  border-radius:999px;
  padding:.35rem .65rem;
  font-size:.82rem;
  color:#334155;
}
.navbar-dark.bg-dark {
  background:linear-gradient(90deg,#0f172a 0%, #111827 100%) !important;
}
.navbar .nav-link.active {
  font-weight:600;
  color:#fff !important;
}
@media (max-width: 992px) {
  .detail-grid { grid-template-columns:1fr; }
}

.offer-page { color: #1f2937; }
.offer-toolbar { position: sticky; top: 0; background: rgba(255,255,255,.92); backdrop-filter: blur(10px); border-bottom: 1px solid rgba(15,23,42,.08); z-index: 5; }
.offer-sheet-wrapper { display:flex; justify-content:center; padding:2rem 1rem 4rem; }
.offer-sheet { width: 210mm; min-height: 297mm; background:#fff; padding: 18mm 16mm; border-radius: 16px; }
.offer-letterhead { display:flex; justify-content:space-between; gap:2rem; padding-bottom:1rem; border-bottom:2px solid #e5e7eb; margin-bottom:1.5rem; }
.offer-letterhead .brand-title { font-size: 1.6rem; font-weight: 800; }
.offer-letterhead .brand-subtitle { color:#6b7280; }
.offer-meta { min-width: 220px; font-size: .95rem; }
.offer-meta div + div { margin-top: .25rem; }
.address-grid { display:grid; grid-template-columns: 1fr 1fr; gap: 1.25rem; margin-bottom: 1.5rem; }
.section-label { font-size: .78rem; text-transform: uppercase; letter-spacing: .08em; color:#6b7280; margin-bottom: .35rem; }
.offer-table { width:100%; border-collapse: collapse; margin: 1rem 0 1.5rem; }
.offer-table th, .offer-table td { border:1px solid #e5e7eb; padding:.65rem .75rem; vertical-align: top; }
.offer-table thead th { background:#f8fafc; }
.totals-box { width:min(420px,100%); margin-left:auto; border:1px solid #e5e7eb; border-radius:16px; overflow:hidden; margin-top:1rem; }
.totals-box > div { display:flex; justify-content:space-between; gap:1rem; padding:.8rem 1rem; border-bottom:1px solid #e5e7eb; }
.totals-box > div:last-child { border-bottom:none; }
.totals-box .is-total { background:#eff6ff; font-weight:700; }
.signature-block { margin-top:2rem; }
@media print {
  .offer-toolbar { display:none !important; }
  .offer-sheet-wrapper { padding:0; }
  .offer-sheet { width:auto; min-height:auto; box-shadow:none !important; border-radius:0; padding:0; }
  body { background:#fff !important; }
}


.offer-section-title { font-size: 1.05rem; font-weight: 800; margin: 1.5rem 0 .85rem; }
.offer-highlight-grid { display:grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .9rem; margin: 1rem 0 1.35rem; }
.offer-highlight { border:1px solid #e5e7eb; border-radius:14px; padding:.9rem 1rem; background:#f8fafc; }
.offer-highlight span { display:block; font-size:.78rem; text-transform:uppercase; letter-spacing:.06em; color:#64748b; margin-bottom:.3rem; }
.offer-highlight strong { font-size:1rem; color:#0f172a; }
.offer-jobs-table th { white-space: nowrap; }
.offer-jobs-table .job-day-cell { min-width: 120px; }
.offer-jobs-table .job-day-badge { display:inline-block; padding:.2rem .55rem; border-radius:999px; background:#eff6ff; color:#1d4ed8; font-size:.74rem; font-weight:700; margin-bottom:.45rem; }
.offer-jobs-table .job-day-date { font-weight:700; }
.offer-jobs-table .job-main-time, .offer-jobs-table .job-main-lineup, .offer-jobs-table .job-main-net { font-weight:700; }
.offer-jobs-table .job-sub-meta { margin-top:.2rem; font-size:.82rem; color:#64748b; }
.offer-jobs-table .job-musicians-cell { min-width: 240px; }
.offer-jobs-table .job-musician-line { display:block; padding:.2rem 0; }
.offer-note-block { margin-top:1.35rem; padding:1rem 1.1rem; border:1px solid #e5e7eb; border-radius:14px; background:#fafafa; }
.offer-note-block p:last-child { margin-bottom:0; }
@media (max-width: 900px) {
  .offer-highlight-grid, .address-grid { grid-template-columns: 1fr; }
}






.musician-form-page {
    padding: 2rem 1rem 3rem;
}

.musician-form-shell {
    max-width: 1180px;
    margin: 0 auto;
}

.musician-form-head {
    margin-bottom: 1.5rem;
}

.musician-form-title {
    margin: 0 0 0.35rem;
    font-size: 2.25rem;
    line-height: 1.1;
    font-weight: 700;
    color: #111827;
}

.musician-form-subtitle {
    margin: 0;
    color: #6b7280;
    font-size: 1rem;
}

.musician-form {
    display: block;
}

.musician-card {
    display: block;
    background: #ffffff;
    border: 1px solid #dbe2ea;
    border-radius: 18px;
    padding: 1.5rem;
    box-shadow: 0 6px 20px rgba(15, 23, 42, 0.06);
    margin-bottom: 1.25rem;
}

.musician-card-title {
    margin: 0 0 1rem;
    font-size: 1.25rem;
    font-weight: 700;
    color: #111827;
}

.musician-grid {
    display: grid;
    gap: 1rem;
}

.musician-grid-3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.musician-field {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.musician-label {
    display: block;
    margin-bottom: 0.45rem;
    font-size: 0.95rem;
    font-weight: 600;
    color: #374151;
}

.musician-input {
    display: block;
    width: 100%;
    height: 46px;
    padding: 0.75rem 0.9rem;
    border: 1px solid #cbd5e1;
    border-radius: 12px;
    background: #ffffff;
    color: #111827;
    font-size: 1rem;
    outline: none;
    box-sizing: border-box;
}

.musician-input:focus {
    border-color: #2563eb;
    box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.12);
}

.musician-check-field {
    justify-content: flex-end;
}

.musician-check-label {
    display: inline-flex;
    align-items: center;
    gap: 0.6rem;
    min-height: 46px;
    font-weight: 600;
    color: #374151;
}

.musician-check-label input[type="checkbox"] {
    transform: scale(1.15);
}

.musician-note-box {
    min-height: 46px;
    display: flex;
    align-items: center;
    padding: 0.75rem 0.9rem;
    border: 1px dashed #cbd5e1;
    border-radius: 12px;
    background: #f8fafc;
    color: #6b7280;
    font-size: 0.95rem;
    box-sizing: border-box;
}

.musician-form-actions {
    display: flex;
    gap: 0.75rem;
    margin-top: 1.5rem;
}

.musician-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 46px;
    padding: 0.75rem 1.2rem;
    border-radius: 12px;
    text-decoration: none;
    font-weight: 600;
    font-size: 1rem;
    cursor: pointer;
    transition: 0.2s ease;
    box-sizing: border-box;
}

.musician-btn-primary {
    border: 1px solid #2563eb;
    background: #2563eb;
    color: #ffffff;
}

.musician-btn-primary:hover {
    background: #1d4ed8;
    border-color: #1d4ed8;
    color: #ffffff;
}

.musician-btn-secondary {
    border: 1px solid #cbd5e1;
    background: #ffffff;
    color: #111827;
}

.musician-btn-secondary:hover {
    background: #f8fafc;
    color: #111827;
}

.musician-span-2 {
    grid-column: span 2;
}

.musician-span-3 {
    grid-column: span 3;
}

@media (max-width: 991px) {
    .musician-grid-3 {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .musician-span-3 {
        grid-column: span 2;
    }
}

@media (max-width: 640px) {
    .musician-form-title {
        font-size: 1.8rem;
    }

    .musician-grid-3 {
        grid-template-columns: 1fr;
    }

    .musician-span-2,
    .musician-span-3 {
        grid-column: span 1;
    }

    .musician-form-actions {
        flex-direction: column;
    }
}




select.form-control {
    height: calc(2.7rem + 2px);
}