/* KTM Voyage CRM — guides module styling [GID].
   Language chips, warning banners, the assignment timeline and the season
   settlement table. Brand tokens come from css/base.css (gold, dark navy). */

/* ---------- page frame ---------- */
.g-page{max-width:1100px}
.g-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:14px}
.g-head h1{font-size:26px;margin-bottom:6px}
.g-intro{color:var(--muted);margin:0;max-width:62ch}
.g-headbtns{display:flex;gap:10px;flex:0 0 auto}
.g-tabs{margin-bottom:16px}
.g-muted{color:var(--muted-2)}
.g-back{display:inline-block;color:var(--muted);font-weight:700;font-size:13px;margin-bottom:12px}
.g-back:hover{color:var(--ink)}
.g-name{font-size:14.5px}

/* ---------- language chips ---------- */
.g-langs{display:inline-flex;gap:5px;flex-wrap:wrap;vertical-align:middle}
.g-chip{display:inline-flex;align-items:center;padding:3px 9px;border-radius:999px;font-size:11px;font-weight:700;letter-spacing:.06em;border:1px solid var(--line);background:#f6f4ee;color:var(--muted)}
.g-chip-nl{background:#eef3fb;border-color:#c9d8ef;color:#3c5f96}
.g-chip-en{background:#fbf7e6;border-color:#e6dcae;color:#6b5f22}
.g-chip-de{background:#f0ece6;border-color:#d9cfc0;color:#6d5b3f}
.g-chip-it{background:#ecf6ee;border-color:#c4e0cb;color:#2f7a46}

/* ---------- warnings ---------- */
.g-warnings{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}
.g-banner{border-radius:var(--radius);padding:11px 15px;font-size:13.5px;font-weight:600;line-height:1.45;border:1px solid}
.g-banner-overlap{background:rgba(202,99,80,.09);border-color:rgba(202,99,80,.4);color:#8e3a2b}
.g-banner-lang{background:#fbf7e6;border-color:#e6dcae;color:#6b5f22}
.g-allclear{background:rgba(47,158,81,.08);border:1px solid rgba(47,158,81,.3);color:#256e3d;border-radius:var(--radius);padding:10px 15px;font-size:13.5px;font-weight:600;margin-bottom:16px}
.g-warncount{color:var(--bad);font-weight:700}

/* ---------- detail header ---------- */
.g-detail-meta{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:8px 0 6px}
.g-rate{font-size:13.5px;color:var(--muted)}
.g-rate b{color:var(--ink)}
.g-contact{display:flex;gap:18px;flex-wrap:wrap;color:var(--muted);font-size:13.5px}
.g-section-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:22px 0 14px}
.g-section-head h2{font-size:19px}

/* ---------- assignment timeline ---------- */
.g-timeline{position:relative;padding-left:26px}
.g-timeline::before{content:"";position:absolute;left:8px;top:8px;bottom:8px;width:2px;background:var(--line);border-radius:2px}
.g-tl-item{position:relative;margin-bottom:14px}
.g-tl-dot{position:absolute;left:-24px;top:18px;width:12px;height:12px;border-radius:50%;background:var(--gold);border:2px solid #fff;box-shadow:0 0 0 2px var(--gold)}
.g-tl-item.has-warn .g-tl-dot{background:var(--bad);box-shadow:0 0 0 2px var(--bad)}
.g-tl-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px 18px}
.g-tl-item.has-warn .g-tl-card{border-color:rgba(202,99,80,.45)}
.g-tl-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:6px}
.g-tl-title{font-size:15px}
.g-tl-dates{display:flex;align-items:center;gap:14px;flex-wrap:wrap;color:var(--muted);font-size:13.5px}
.g-tl-range{font-variant-numeric:tabular-nums;font-weight:700;color:var(--ink)}
.g-tl-days{background:#f6f4ee;border:1px solid var(--line);border-radius:999px;padding:2px 10px;font-size:12px;font-weight:700;color:var(--muted)}
.g-tl-lang{background:#eef3fb;border:1px solid #c9d8ef;border-radius:999px;padding:2px 10px;font-size:12px;font-weight:700;color:#3c5f96}
.g-tl-actions{display:flex;gap:8px;margin-top:11px}
.g-btn-remove:hover{border-color:var(--bad);color:var(--bad)}
.g-badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:3px 10px;font-size:11.5px;font-weight:700}
.g-badge-overlap{background:rgba(202,99,80,.12);color:#8e3a2b}
.g-badge-lang{background:#fbf7e6;color:#6b5f22;border:1px solid #e6dcae}

/* ---------- toolbar: search + filters + count + CSV/print ---------- */
.g-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:14px}
.g-search{flex:1 1 220px;min-width:180px;padding:10px 14px;border:1px solid var(--line);border-radius:8px;font-size:14px;font-family:inherit;background:#fff;color:var(--ink)}
.g-search:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 3px rgba(204,181,45,.18)}
.g-filter{padding:10px 12px;border:1px solid var(--line);border-radius:8px;font-size:13.5px;font-weight:600;background:#fff;color:var(--ink);font-family:inherit}
.g-filter:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 3px rgba(204,181,45,.18)}
.g-warnfilter{display:inline-flex;align-items:center;min-height:40px;margin:0;white-space:nowrap}
.g-count{color:var(--muted);font-size:13px;font-weight:700;white-space:nowrap}
.g-toolbtns{display:flex;gap:8px;margin-left:auto}
.g-toolbtns .btn{min-height:40px}

/* ---------- sortable column headers ---------- */
.g-th-sort{cursor:pointer;user-select:none;white-space:nowrap}
.g-th-sort:hover{color:var(--ink)}
.g-th-sort.on{color:var(--ink)}
.g-th-sort:focus-visible{outline:2px solid var(--gold);outline-offset:-2px}
.g-sort-arrow{display:inline-block;margin-left:5px;font-size:10px;color:var(--gold);min-width:10px}

/* ---------- season settlement ---------- */
.g-season-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:16px}
.g-season-row label{font-size:12px;font-weight:700;color:var(--muted);letter-spacing:.02em}
.g-season-row select{padding:9px 13px;border:1px solid var(--line);border-radius:8px;font-size:14px;font-weight:700;background:#fff;color:var(--ink);font-family:inherit}
.g-season-row select:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 3px rgba(204,181,45,.18)}
.g-set-hint{font-size:12.5px;max-width:56ch}
.g-set-total{display:flex;align-items:center;gap:18px;justify-content:flex-end;background:#fbf7e6;border:1px solid #e6dcae;border-radius:var(--radius);padding:12px 18px;margin-top:12px;font-size:14px}
.g-set-total-amount{font-family:"Playfair Display",Georgia,serif;font-size:18px;color:#292109}

/* ---------- modal bits ---------- */
.g-langpick{display:grid;grid-template-columns:1fr 1fr;gap:2px 14px;padding:4px 2px}
.g-langpick .check{margin:6px 0}
.g-daterow{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}
.g-modal-booking{margin:0 0 14px;font-size:14.5px}
.modal-btnrow{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}

/* ---------- small screens (usable at 390px, targets >= 40px) ---------- */
@media (max-width:720px){
  .g-head{flex-direction:column}
  .g-headbtns{width:100%}
  .g-headbtns .btn{flex:1}
  .g-daterow{grid-template-columns:1fr}
  .g-set-total{flex-wrap:wrap;justify-content:space-between}
  .g-toolbar{gap:10px}
  .g-search{flex-basis:100%}
  .g-toolbtns{margin-left:0;width:100%}
  .g-toolbtns .btn{flex:1}
  .g-season-row{align-items:flex-start;flex-direction:column;gap:8px}
}

/* ---------- print: clean list on paper (shell hidden by print.css) ---------- */
@media print{
  .g-page{max-width:none}
  .g-toolbar,.g-headbtns,.g-tl-actions{display:none!important}
  .g-tl-card{box-shadow:none}
}

/* ---------- P2 polish: long guide/booking names never overflow ---------- */
.g-name,.g-tl-title{overflow-wrap:anywhere}
.g-contact{overflow-wrap:anywhere}

/* ---------- QoL: month calendar (guides × days) ---------- */
.g-cal-bar{align-items:center}
.g-cal-title{font-family:"Playfair Display",Georgia,serif;font-size:18px;color:#292109;min-width:160px;text-align:center}
.g-cal-wrap{overflow-x:auto;background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
.g-cal-table{border-collapse:separate;border-spacing:0;width:100%;min-width:900px}
.g-cal-table th,.g-cal-table td{border-bottom:1px solid #f0eee6;border-right:1px solid #f5f3ec}
.g-cal-table thead th{position:sticky;top:0;background:#faf8f1;z-index:3;padding:6px 2px;font-size:11px;color:var(--muted)}
.g-cal-table thead th.g-cal-day{min-width:30px;text-align:center}
.g-cal-table thead th.g-cal-day b{font-size:12px;color:var(--ink)}
.g-cal-table thead th.g-cal-day.wkend{background:#f4f1e8}
.g-cal-table thead th.g-cal-day.today b{color:#211a05;background:var(--gold);border-radius:50%;display:inline-block;width:20px;height:20px;line-height:20px}
.g-cal-guidehead{text-align:left;padding:6px 12px !important;min-width:150px}
.g-cal-guidecell{position:sticky;left:0;background:#fff;z-index:2;text-align:left;padding:6px 10px;min-width:150px;max-width:200px;border-right:1px solid var(--line) !important}
.g-cal-guidecell b{display:block;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.g-cal-cell{height:38px;min-width:30px;padding:0;position:relative}
.g-cal-cell.today{box-shadow:inset 2px 0 0 var(--gold),inset -2px 0 0 var(--gold)}
.g-cal-cell.occ{cursor:pointer}
.g-cal-cell.occ:hover{filter:brightness(1.1)}
.g-cal-cell.occ.is-start{border-radius:8px 0 0 8px}
.g-cal-cell.occ.is-end{border-radius:0 8px 8px 0}
.g-cal-cell.occ.is-start.is-end{border-radius:8px}
.g-cal-trip{background:#b7a428}
.g-cal-overlap{background:var(--bad,#ca6350)}
.g-cal-lang{background:#c98a1a}
.g-cal-lbl{position:absolute;left:5px;top:50%;transform:translateY(-50%);color:#fff;font-size:10px;font-weight:700;
  white-space:nowrap;pointer-events:none;text-shadow:0 1px 2px rgba(0,0,0,.35);z-index:1;max-width:230px;overflow:hidden;text-overflow:ellipsis}
.g-cal-legend{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:12px;font-size:12.5px;color:var(--muted)}
.g-cal-legend b{color:var(--ink)}
.g-cal-chip{display:inline-flex;align-items:center;gap:6px;font-weight:600;color:var(--ink)}
.g-cal-chip i{display:inline-block;width:16px;height:12px;border-radius:3px}
.g-cal-i-trip{background:#b7a428}
.g-cal-i-overlap{background:var(--bad,#ca6350)}
.g-cal-i-lang{background:#c98a1a}

/* ---------- QoL: quick-assign modal ---------- */
.g-qa-list{display:flex;flex-direction:column;gap:8px;max-height:340px;overflow-y:auto;padding:2px}
.g-qa-hint{margin:6px 2px;font-size:13px}
.g-qa-row{display:flex;align-items:center;gap:12px;background:#fff;border:1px solid var(--line);border-radius:9px;padding:9px 12px;flex-wrap:wrap}
.g-qa-row.best{border-color:var(--gold);background:#fbf7e6}
.g-qa-name{min-width:150px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.g-qa-chips{display:flex;gap:6px;flex-wrap:wrap;flex:1}
.g-qa-chip{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:3px 10px;font-size:11.5px;font-weight:700;white-space:nowrap}
.g-qa-ok{background:rgba(47,158,81,.12);color:#256e3d}
.g-qa-bad{background:rgba(202,99,80,.12);color:#8e3a2b}
.g-qa-neutral{background:rgba(93,100,111,.12);color:var(--muted)}
.g-qa-act{flex:0 0 auto}
@media (max-width:720px){
  .g-qa-row{align-items:flex-start;flex-direction:column;gap:6px}
  .g-qa-act{align-self:flex-end}
  .g-cal-guidecell,.g-cal-guidehead{min-width:110px}
}
@media print{
  .g-cal-bar,.g-cal-legend{display:none!important}
  .g-cal-wrap{overflow:visible;box-shadow:none}
  .g-cal-table{min-width:0}
}
