:root{
  --snow:#F5F8FA;
  --panel:#FFFFFF;
  --navy:#101B26;
  --navy-soft:#4C5C6B;
  --piste-green:#2F8F55;
  --piste-blue:#2C6FA8;
  --piste-black:#171C21;
  --frost:#D6EAF0;
  --frost-line:#C4DEE6;
  --danger:#C1442D;
  --radius:14px;
  --shadow: 0 1px 2px rgba(16,27,38,0.04), 0 8px 24px rgba(16,27,38,0.06);
}

*{ box-sizing:border-box; }
html,body{ margin:0; padding:0; }
body{
  background:var(--snow);
  color:var(--navy);
  font-family:'IBM Plex Sans', system-ui, sans-serif;
  -webkit-font-smoothing:antialiased;
  min-height:100vh;
}

::selection{ background:var(--frost); }
:focus-visible{ outline:2px solid var(--piste-blue); outline-offset:2px; border-radius:4px; }

h1,h2,h3{ font-family:'Space Grotesk', sans-serif; margin:0; }
.mono{ font-family:'IBM Plex Mono', monospace; }

.app{ max-width:960px; margin:0 auto; padding:0 20px 80px; }

.hero{ position:relative; overflow:hidden; padding:56px 20px 40px; margin-bottom:8px; }
.hero-inner{ max-width:960px; margin:0 auto; position:relative; z-index:2; }
.peaks{ position:absolute; left:0; right:0; bottom:0; width:100%; height:120px; z-index:1; opacity:0.9; }
.eyebrow{
  display:flex; align-items:center; gap:8px;
  font-family:'IBM Plex Mono', monospace; font-size:12px; letter-spacing:0.14em; text-transform:uppercase;
  color:var(--piste-blue); font-weight:500; margin-bottom:14px;
}
.eyebrow::before{ content:''; width:8px; height:8px; background:var(--piste-blue); border-radius:50%; display:inline-block; }
.hero h1{ font-size:clamp(34px, 6vw, 54px); font-weight:700; letter-spacing:-0.02em; line-height:1.02; }
.hero p.tagline{ margin-top:12px; font-size:16px; color:var(--navy-soft); max-width:480px; line-height:1.5; }

.rider-badge{
  margin-top:24px; display:inline-flex; align-items:center; gap:10px;
  background:var(--panel); border:1px solid var(--frost-line); border-radius:999px;
  padding:8px 16px 8px 8px; box-shadow:var(--shadow); font-size:14px;
}
.rider-badge .avatar{
  width:26px; height:26px; border-radius:50%; background:var(--piste-blue);
  color:#fff; display:flex; align-items:center; justify-content:center;
  font-family:'Space Grotesk',sans-serif; font-weight:700; font-size:12px;
}
.rider-badge img.avatar{ object-fit:cover; }
.rider-badge button{ background:none; border:none; color:var(--navy-soft); font-size:12px; cursor:pointer; text-decoration:underline; font-family:inherit; padding:0; }
.rider-badge button:hover{ color:var(--navy); }

.panel{ background:var(--panel); border:1px solid var(--frost-line); border-radius:var(--radius); padding:28px; margin-bottom:24px; box-shadow:var(--shadow); }
.panel-head{ display:flex; align-items:baseline; justify-content:space-between; gap:12px; margin-bottom:20px; flex-wrap:wrap; }
.panel-head h2{ font-size:21px; }
.panel-head .hint{ font-size:13px; color:var(--navy-soft); }

button{ font-family:inherit; cursor:pointer; }
.btn{ background:var(--navy); color:#fff; border:none; border-radius:9px; padding:10px 18px; font-size:14px; font-weight:500; transition:transform 0.12s ease, background 0.15s ease; }
.btn:hover{ background:#233242; }
.btn:active{ transform:scale(0.97); }
.btn.secondary{ background:transparent; color:var(--navy); border:1px solid var(--frost-line); }
.btn.secondary:hover{ background:var(--frost); }
.btn.small{ padding:6px 12px; font-size:13px; }
.btn.join{ background:var(--piste-green); color:#fff; border:none; }
.btn.join:hover{ background:#287A49; }
.btn.full{ width:100%; }

input[type=text], input[type=email], input[type=password], input[type=date], input[type=time], input[type=number], textarea, select{
  font-family:inherit; font-size:14px; color:var(--navy);
  background:var(--snow); border:1px solid var(--frost-line); border-radius:8px;
  padding:9px 12px; width:100%;
}
input[type=time]{ font-family:'IBM Plex Mono',monospace; letter-spacing:0.05em; }
/* без браузерных стрелок-спиннеров — выбиваются из общего визуала */
input[type=number]::-webkit-outer-spin-button,
input[type=number]::-webkit-inner-spin-button{ -webkit-appearance:none; margin:0; }
input[type=number]{ -moz-appearance:textfield; appearance:textfield; }
textarea{ resize:vertical; min-height:80px; }
label{ font-size:12px; font-weight:600; color:var(--navy-soft); text-transform:uppercase; letter-spacing:0.04em; display:block; margin-bottom:6px; }
.field{ margin-bottom:14px; }
.field-row{ display:grid; grid-template-columns:1fr 1fr; gap:12px; }

.avail-form{ display:flex; gap:10px; align-items:end; flex-wrap:wrap; margin-bottom:20px; }
.avail-form .field{ margin-bottom:0; flex:1; min-width:130px; }
.avail-columns{ display:grid; grid-template-columns:1fr 1fr; gap:20px; }
.avail-col h3{ font-size:13px; text-transform:uppercase; letter-spacing:0.05em; color:var(--navy-soft); margin-bottom:10px; font-family:'IBM Plex Mono',monospace; font-weight:500; }
.range-chip{
  display:flex; align-items:center; justify-content:space-between; gap:8px;
  background:var(--snow); border:1px solid var(--frost-line); border-radius:8px;
  padding:8px 10px; font-size:13px; margin-bottom:6px; font-family:'IBM Plex Mono',monospace;
}
.range-chip button{ background:none; border:none; color:var(--danger); font-size:14px; line-height:1; padding:2px; }
.empty-note{ font-size:13px; color:var(--navy-soft); font-style:italic; padding:6px 0; }

.overlap-banner{
  margin-top:20px; padding:14px 16px; border-radius:10px;
  background:linear-gradient(90deg, rgba(47,143,85,0.10), rgba(44,111,168,0.10));
  border:1px solid var(--frost-line); font-size:14px;
}
.overlap-banner strong{ display:block; margin-bottom:6px; font-family:'Space Grotesk',sans-serif; font-size:14px; }
.overlap-dates{ display:flex; flex-wrap:wrap; gap:8px; margin-top:8px; }
.overlap-dates span{ background:var(--piste-green); color:#fff; font-family:'IBM Plex Mono',monospace; font-size:12px; padding:4px 10px; border-radius:999px; }

.trip-grid{ display:grid; grid-template-columns:repeat(auto-fill, minmax(230px,1fr)); gap:16px; }
.trip-card{
  border:1px solid var(--frost-line); border-radius:12px; padding:18px; cursor:pointer; background:var(--snow);
  transition:transform 0.15s ease, box-shadow 0.15s ease, border-color 0.15s ease;
  display:flex; flex-direction:column; gap:10px;
}
.trip-card:hover{ transform:translateY(-3px); box-shadow:var(--shadow); border-color:transparent; }
.trip-card-top{ display:flex; align-items:flex-start; justify-content:space-between; gap:10px; }
.trip-card h3{ font-size:18px; line-height:1.2; }
.trip-dates{ font-family:'IBM Plex Mono',monospace; font-size:12.5px; color:var(--navy-soft); }
.trip-notes-preview{ font-size:13px; color:var(--navy-soft); line-height:1.4; }

.badge{ flex-shrink:0; width:22px; height:22px; }
.badge.idea{ background:var(--piste-green); border-radius:50%; }
.badge.planned{ background:var(--piste-blue); border-radius:4px; }
.badge.booked{ background:var(--piste-black); transform:rotate(45deg); border-radius:2px; width:17px; height:17px; margin:2px; }

.status-label{ font-size:11px; font-family:'IBM Plex Mono',monospace; text-transform:uppercase; letter-spacing:0.06em; }
.status-label.idea{ color:var(--piste-green); }
.status-label.planned{ color:var(--piste-blue); }
.status-label.booked{ color:var(--piste-black); }

.empty-state{ text-align:center; padding:40px 20px; color:var(--navy-soft); font-size:14px; border:1px dashed var(--frost-line); border-radius:12px; }

.overlay{ position:fixed; inset:0; background:rgba(16,27,38,0.45); display:flex; align-items:center; justify-content:center; padding:20px; z-index:50; }
.modal{ background:var(--panel); border-radius:16px; padding:28px; max-width:480px; width:100%; max-height:86vh; overflow-y:auto; box-shadow:0 20px 60px rgba(16,27,38,0.25); }
.modal-head{ display:flex; justify-content:space-between; align-items:flex-start; margin-bottom:18px; gap:10px; }
.modal-close{ background:none; border:none; font-size:20px; color:var(--navy-soft); line-height:1; padding:4px; }
.modal-close:hover{ color:var(--navy); }

.checklist-item{ display:flex; align-items:center; gap:8px; margin-bottom:6px; font-size:14px; }
.checklist-item input[type=checkbox]{ width:16px; height:16px; accent-color:var(--piste-blue); }
.checklist-item.done span{ text-decoration:line-through; color:var(--navy-soft); }
.checklist-add{ display:flex; gap:8px; margin-top:8px; }
.checklist-add input{ flex:1; }

.modal-actions{ display:flex; gap:10px; margin-top:20px; }
.modal-actions .btn.danger-outline{ background:none; border:1px solid var(--danger); color:var(--danger); margin-left:auto; }
.modal-actions .btn.danger-outline:hover{ background:rgba(193,68,45,0.08); }

.loading-screen{ display:flex; flex-direction:column; align-items:center; justify-content:center; min-height:60vh; gap:14px; color:var(--navy-soft); font-family:'IBM Plex Mono',monospace; font-size:13px; }
.spinner{ width:28px; height:28px; border-radius:50%; border:3px solid var(--frost-line); border-top-color:var(--piste-blue); animation:spin 0.8s linear infinite; }
@keyframes spin{ to{ transform:rotate(360deg); } }
@media (prefers-reduced-motion: reduce){ .spinner{ animation:none; } .trip-card{ transition:none; } }

.auth-gate .field{ margin-bottom:16px; }
.auth-toggle{ text-align:center; margin-top:14px; font-size:13px; color:var(--navy-soft); }
.auth-toggle button{ background:none; border:none; color:var(--piste-blue); text-decoration:underline; font-family:inherit; font-size:13px; }
.auth-error{ background:rgba(193,68,45,0.08); border:1px solid var(--danger); color:var(--danger); border-radius:8px; padding:10px 12px; font-size:13px; margin-bottom:14px; }

/* ---------- бейдж пользователя ---------- */
.badge-sep{ color:var(--frost-line); }
.admin-tag{
  background:var(--piste-black); color:#fff;
  font-family:'IBM Plex Mono',monospace; font-size:10px; font-weight:500;
  text-transform:uppercase; letter-spacing:0.06em;
  padding:2px 8px; border-radius:999px;
}
.version-chip{
  position:relative; display:inline-flex; align-items:center;
  background:rgba(44,111,168,0.10); color:var(--piste-blue); border:none;
  border-radius:999px; padding:3px 10px; font-size:12px;
  font-family:'IBM Plex Mono',monospace; cursor:pointer;
}
.version-chip:hover{ background:rgba(44,111,168,0.18); }
.vc-dot{
  position:absolute; top:-2px; right:-2px; width:7px; height:7px;
  border-radius:50%; background:var(--danger); border:1.5px solid var(--snow);
}
.patch-build{ font-size:12px; color:var(--navy-soft); font-family:'IBM Plex Mono',monospace; margin-bottom:18px; }
.patch-ver{ border-top:1px solid var(--frost-line); padding-top:14px; margin-top:14px; }
.patch-ver:first-of-type{ border-top:none; padding-top:0; margin-top:0; }
.patch-vh{ display:flex; align-items:baseline; gap:10px; margin-bottom:8px; }
.patch-vnum{ font-size:15px; font-weight:600; font-family:'IBM Plex Mono',monospace; }
.patch-new{
  background:rgba(47,143,85,0.14); color:var(--piste-green);
  font-size:10px; padding:1px 7px; border-radius:999px; font-weight:600;
  text-transform:uppercase; letter-spacing:0.04em;
}
.patch-vdate{ font-size:12px; color:var(--navy-soft); font-family:'IBM Plex Mono',monospace; margin-left:auto; }
.patch-grp{ font-size:12px; color:var(--navy-soft); font-weight:600; text-transform:uppercase; letter-spacing:0.04em; margin:10px 0 4px; }
.patch-li{ display:flex; gap:6px; font-size:13.5px; line-height:1.5; margin:3px 0; }
.patch-li span{ color:var(--piste-green); flex-shrink:0; }

/* ---------- выбор видимости ---------- */
.vis-picker{ font-size:13px; }
.checkbox-line{
  display:flex; align-items:center; gap:8px; font-size:13px; font-weight:400;
  text-transform:none; letter-spacing:0; color:var(--navy); margin-bottom:6px; cursor:pointer;
}
.checkbox-line input[type=checkbox]{ width:15px; height:15px; accent-color:var(--piste-blue); }
.vis-users{ padding:8px 0 2px 22px; }
.mini-avatar{
  width:20px; height:20px; border-radius:50%; color:#fff; flex-shrink:0;
  display:inline-flex; align-items:center; justify-content:center;
  font-family:'Space Grotesk',sans-serif; font-weight:700; font-size:9px;
  vertical-align:middle;
}
.vis-details{ margin-top:10px; font-size:13px; }
.vis-details summary{ cursor:pointer; color:var(--navy-soft); font-size:12px; text-transform:uppercase; letter-spacing:0.04em; font-weight:600; }
.vis-details[open] summary{ margin-bottom:8px; }

/* ---------- отпуска ---------- */
.avail-form{ display:block; margin-bottom:20px; }
.avail-form-row{ display:flex; gap:10px; align-items:end; flex-wrap:wrap; }
.avail-form-row .field{ margin-bottom:0; flex:1; min-width:130px; }
.vac-card{
  background:var(--snow); border:1px solid var(--frost-line); border-radius:10px;
  padding:10px 12px; margin-bottom:8px;
}
.vac-main{ display:flex; align-items:baseline; justify-content:space-between; gap:8px; flex-wrap:wrap; }
.vac-range{ font-family:'IBM Plex Mono',monospace; font-size:13px; font-weight:500; }
.vac-len{ font-size:12px; color:var(--navy-soft); white-space:nowrap; }
.vac-foot{ display:flex; align-items:center; justify-content:space-between; gap:8px; margin-top:6px; }
.vac-vis{
  background:none; border:1px solid var(--frost-line); border-radius:999px;
  font-size:12px; color:var(--navy-soft); padding:3px 10px;
}
.vac-vis:hover{ background:var(--frost); color:var(--navy); }
.vac-del{ background:none; border:none; color:var(--danger); font-size:14px; line-height:1; padding:2px; }
.vac-friend{ margin-bottom:14px; }
.vac-friend-head{
  display:flex; align-items:center; gap:8px; margin-bottom:6px;
  font-size:13px; font-weight:600;
}

/* ---------- календарь ---------- */
.cal-toggle{
  margin-top:18px; width:100%; background:none; border:1px dashed var(--frost-line);
  border-radius:10px; padding:10px; font-size:13px; color:var(--piste-blue); font-weight:500;
}
.cal-toggle:hover{ background:var(--frost); }
.cal-panel{ margin-top:14px; border:1px solid var(--frost-line); border-radius:12px; padding:16px; }
.cal-head{ display:flex; align-items:center; justify-content:space-between; margin-bottom:12px; }
.cal-title{ font-family:'Space Grotesk',sans-serif; font-weight:600; font-size:16px; text-transform:capitalize; }
.cal-nav{
  background:var(--snow); border:1px solid var(--frost-line); border-radius:8px;
  width:32px; height:32px; font-size:15px; color:var(--navy);
}
.cal-nav:hover{ background:var(--frost); }
.cal-grid{ display:grid; grid-template-columns:repeat(7,1fr); gap:4px; }
.cal-weekdays{ margin-bottom:4px; }
.cal-weekdays div{
  text-align:center; font-family:'IBM Plex Mono',monospace; font-size:11px;
  color:var(--navy-soft); text-transform:uppercase; padding:2px 0;
}
.cal-day{
  min-height:44px; border-radius:8px; border:1px solid transparent;
  padding:4px 5px; display:flex; flex-direction:column; justify-content:space-between;
  background:var(--snow); font-size:12px;
}
.cal-day.empty{ background:none; }
.cal-day.mine{ border-color:var(--piste-blue); background:rgba(44,111,168,0.10); }
.cal-day.all{ background:rgba(47,143,85,0.18); border-color:var(--piste-green); }
.cal-day.today .cal-num{ font-weight:700; text-decoration:underline; }
.cal-num{ font-family:'IBM Plex Mono',monospace; }
.cal-dots{ display:flex; gap:2px; flex-wrap:wrap; }
.cal-dot{ width:6px; height:6px; border-radius:50%; display:inline-block; }
.cal-legend{ display:flex; gap:14px; flex-wrap:wrap; margin-top:12px; font-size:12px; color:var(--navy-soft); }
.legend-item{ display:inline-flex; align-items:center; gap:5px; }
.legend-swatch{ width:12px; height:12px; border-radius:4px; display:inline-block; }
.legend-swatch.mine{ background:rgba(44,111,168,0.25); border:1px solid var(--piste-blue); }
.legend-swatch.all{ background:rgba(47,143,85,0.35); border:1px solid var(--piste-green); }

/* ---------- поездки ---------- */
.trip-people{ display:flex; gap:6px; flex-wrap:wrap; }
.p-pill{
  display:inline-flex; align-items:center; gap:3px;
  background:var(--panel); border:1px solid var(--frost-line); border-radius:999px;
  padding:2px 7px 2px 2px; font-size:13px;
}
.trip-vis-hint{ font-size:11.5px; color:var(--navy-soft); }
.modal-section{ border-top:1px solid var(--frost-line); padding-top:16px; margin-top:16px; }
.modal-section h4{
  font-family:'IBM Plex Mono',monospace; font-size:12px; font-weight:500;
  text-transform:uppercase; letter-spacing:0.05em; color:var(--navy-soft); margin:0 0 10px;
}
.participant-row{
  display:flex; align-items:center; gap:8px; margin-bottom:8px; font-size:13.5px; flex-wrap:wrap;
}
.participant-name em{ font-style:normal; color:var(--navy-soft); font-size:12px; }
.participant-dates{ font-family:'IBM Plex Mono',monospace; font-size:12px; color:var(--navy-soft); margin-left:auto; }
.equip-tag{ font-size:12.5px; white-space:nowrap; }
.join-box{ background:var(--snow); border-radius:10px; padding:14px; border-top:none; }
.join-actions{ display:flex; gap:10px; align-items:center; flex-wrap:wrap; }
.join-actions .danger-outline{ background:none; border:1px solid var(--danger); color:var(--danger); }
.radio-row{ display:flex; gap:8px; flex-wrap:wrap; }
.radio-pill{
  display:inline-flex; align-items:center; gap:6px; cursor:pointer;
  border:1px solid var(--frost-line); border-radius:999px; padding:7px 14px;
  font-size:13.5px; font-weight:400; text-transform:none; letter-spacing:0; color:var(--navy);
  background:var(--panel);
}
.radio-pill:has(input:checked){ border-color:var(--piste-blue); background:rgba(44,111,168,0.08); }
.radio-pill input{ accent-color:var(--piste-blue); }

/* ---------- диалог пересечения ---------- */
.overlap-question{ font-size:14px; color:var(--navy-soft); margin:0 0 14px; }
.overlap-trip-list{ margin-bottom:6px; }
.radio-line{ display:flex; align-items:center; gap:10px; cursor:pointer; }
.overlap-trip{
  border:1px solid var(--frost-line); border-radius:10px; padding:10px 12px; margin-bottom:8px;
}
.overlap-trip:has(input:checked){ border-color:var(--piste-blue); background:rgba(44,111,168,0.06); }
.overlap-trip-info{ display:flex; flex-direction:column; gap:2px; }
.overlap-trip-info strong{ font-family:'Space Grotesk',sans-serif; font-size:15px; }

/* ---------- инвайт ---------- */
.invite-box{ display:flex; gap:8px; }
.invite-box input{ flex:1; font-family:'IBM Plex Mono',monospace; font-size:12px; }
.invite-note{
  background:rgba(44,111,168,0.08); border:1px solid var(--frost-line); color:var(--navy);
  border-radius:8px; padding:10px 12px; font-size:13px; margin-bottom:14px; line-height:1.5;
}
.invite-note.blocked{ text-align:center; }

/* ---------- счётчик до ближайшей поездки ---------- */
.cd-banner{
  display:flex; align-items:center; gap:14px; position:relative; overflow:hidden;
  background:rgba(44,111,168,0.08); border:1px solid #C7DEF3; border-radius:12px;
  padding:14px 18px; margin-bottom:16px; text-decoration:none;
}
.cd-banner:hover{ background:rgba(44,111,168,0.14); }
.cd-emo{ font-size:24px; position:relative; z-index:1; }
.cd-msg{ font-size:14px; color:#185FA5; position:relative; z-index:1; }
.cd-msg b{ color:var(--navy); }
.cd-time{
  font-family:'IBM Plex Mono',monospace; font-weight:500; font-variant-numeric:tabular-nums;
  font-size:16px; color:#0C447C; margin-left:auto; position:relative; z-index:1; white-space:nowrap;
}
.cd-banner.cd-day0{ background:rgba(47,143,85,0.12); border-color:#B9E0C8; }
.cd-banner.cd-day0 .cd-msg{ color:var(--piste-green); font-weight:600; }
.cd-banner.cd-day0 .cd-time{ color:var(--piste-green); }
.cd-flakes{ position:absolute; inset:0; pointer-events:none; z-index:0; }
.cd-flake{ position:absolute; top:-16px; color:#8FC0EA; animation:cd-fall linear infinite; }
.cd-banner.cd-day0 .cd-flake{ color:#7FD0A0; }
@keyframes cd-fall{ from{ transform:translateY(-16px) rotate(0); opacity:0.9; } to{ transform:translateY(90px) rotate(360deg); opacity:0.15; } }
@media (prefers-reduced-motion: reduce){ .cd-flake{ animation:none; display:none; } }
@media (max-width: 640px){
  .cd-banner{ flex-wrap:wrap; }
  .cd-msg{ font-size:13px; }
  .cd-time{ font-size:14px; margin-left:0; width:100%; }
}

/* ---------- вкладки главной ---------- */
.main-tabs{ display:flex; gap:8px; margin-bottom:20px; }
.main-tab{
  display:inline-flex; align-items:center; gap:8px;
  border:1px solid var(--navy-soft); border-radius:10px;
  background:var(--panel); color:var(--navy);
  font-size:15px; font-weight:600; padding:9px 18px;
  cursor:pointer; text-decoration:none;
  transition:background 0.12s ease, color 0.12s ease;
}
.main-tab .tab-count{
  display:inline-flex; align-items:center; justify-content:center;
  min-width:19px; height:19px; padding:0 6px; border-radius:999px;
  font-size:11px; font-family:'IBM Plex Mono',monospace;
  background:#E6F1FB; color:#185FA5;
}
.main-tab:hover{ background:var(--navy); color:#fff; }
.main-tab:hover .tab-count{ background:rgba(255,255,255,0.2); color:#fff; }
.main-tab.on{ border-bottom:3px solid var(--piste-blue); padding-bottom:7px; }
@media (max-width: 640px){
  .main-tab{ flex:1; justify-content:center; }
}

/* ---------- ссылка в бейдже ---------- */
.badge-link{ color:var(--piste-blue); font-size:12px; text-decoration:underline; }
.badge-link:hover{ color:var(--navy); }

/* ---------- админка ---------- */
.admin-card{ padding:24px; }
.admin-head{ display:flex; align-items:baseline; justify-content:space-between; gap:10px; flex-wrap:wrap; margin-bottom:16px; }
.admin-scroll{ overflow-x:auto; }
.admin-table{ width:100%; border-collapse:collapse; font-size:13.5px; }
.admin-table th{
  text-align:left; font-size:11px; color:var(--navy-soft); text-transform:uppercase;
  letter-spacing:0.04em; font-weight:600; padding:0 12px 10px; border-bottom:1px solid var(--frost-line); white-space:nowrap;
}
.admin-table td{ padding:12px; border-bottom:1px solid var(--frost-line); vertical-align:middle; }
.admin-num{ text-align:center; font-family:'IBM Plex Mono',monospace; }
.admin-urow{ cursor:pointer; }
.admin-urow:hover{ background:var(--snow); }
.admin-urow.blocked{ opacity:0.6; }
.admin-u{ display:flex; align-items:center; gap:10px; }
.admin-uname{ font-weight:500; display:flex; align-items:center; gap:6px; white-space:nowrap; }
.admin-chev{ color:var(--navy-soft); font-size:12px; display:inline-block; transition:transform 0.15s ease; }
.admin-chev.open{ transform:rotate(90deg); }
.admin-you{ font-size:11px; color:var(--navy-soft); font-weight:400; }
.admin-umail{ font-size:12px; color:var(--navy-soft); font-family:'IBM Plex Mono',monospace; }
.admin-when{ font-family:'IBM Plex Mono',monospace; font-size:12px; color:var(--navy-soft); white-space:nowrap; }
.admin-act{ text-align:right; white-space:nowrap; }
.admin-st{ display:inline-flex; align-items:center; gap:5px; font-size:12px; white-space:nowrap; }
.admin-dot{ width:7px; height:7px; border-radius:50%; }
.admin-st.act{ color:var(--piste-green); } .admin-st.act .admin-dot{ background:var(--piste-green); }
.admin-st.blk{ color:var(--danger); } .admin-st.blk .admin-dot{ background:var(--danger); }
.admin-st.susp{ color:#B4532A; } .admin-st.susp .admin-dot{ background:#EF9F27; }
.admin-exp td{ background:var(--snow); padding:0; }
.admin-exphead{ font-size:11px; color:var(--navy-soft); text-transform:uppercase; letter-spacing:0.04em; padding:12px 16px 6px; }
.btn.danger-outline{ background:none; border:1px solid var(--danger); color:var(--danger); }
.btn.danger-outline:hover{ background:rgba(193,68,45,0.08); }
.admin-lh{ display:grid; grid-template-columns:160px 150px 1fr; gap:12px; padding:7px 16px; font-size:12.5px; border-top:1px solid var(--frost-line); }
.admin-lh-t{ font-family:'IBM Plex Mono',monospace; }
.admin-lh-ip{ font-family:'IBM Plex Mono',monospace; color:var(--navy-soft); }
.admin-lh-dev{ color:var(--navy-soft); }
.admin-lh-foot{ padding:8px 16px 14px; font-size:12px; color:var(--navy-soft); }
.admin-lh-load{ padding:12px 16px; font-size:13px; color:var(--navy-soft); }
@media (max-width: 640px){
  .admin-lh{ grid-template-columns:1fr; gap:2px; padding:8px 16px; }
}

/* ---------- страница поездки ---------- */
.trip-page{ padding-top:32px; }
.tp-back{ display:inline-block; font-size:13px; color:var(--navy-soft); text-decoration:none; margin-bottom:14px; }
.tp-back:hover{ color:var(--navy); text-decoration:underline; }
.tp-head{ display:flex; justify-content:space-between; align-items:flex-start; gap:12px; flex-wrap:wrap; margin-bottom:18px; }
.tp-title{ font-size:30px; margin:4px 0 6px; }
.tp-actions{ display:flex; gap:8px; }
.tp-meta{ display:flex; gap:12px; align-items:center; flex-wrap:wrap; margin-top:2px; }
.tp-dates{ font-size:17px; font-weight:600; }
.tp-year{ color:var(--navy-soft); font-weight:400; }
.tp-days{
  display:inline-flex; background:rgba(44,111,168,0.10); color:#185FA5;
  border-radius:999px; padding:4px 12px; font-size:14px; font-weight:500;
}
.tp-avas{ display:flex; align-items:center; }
.tp-avas .mini-avatar{ font-size:10px; border:2px solid var(--snow); }
.tp-avas .mini-avatar + .mini-avatar, .tp-avas .tp-more{ margin-left:-8px; }
.tp-more{
  width:28px; height:28px; border-radius:50%; background:var(--frost); color:var(--navy-soft);
  display:inline-flex; align-items:center; justify-content:center;
  font-size:11px; font-weight:600; border:2px solid var(--snow); flex-shrink:0;
}
.tp-card{
  background:var(--panel); border:1px solid var(--frost-line); border-radius:var(--radius);
  padding:20px 22px; margin-bottom:14px; box-shadow:var(--shadow);
}
.tp-card-head{
  display:flex; justify-content:space-between; align-items:baseline; gap:10px; flex-wrap:wrap;
  font-size:13px; font-weight:600; text-transform:uppercase; letter-spacing:0.05em;
  color:var(--navy-soft); font-family:'IBM Plex Mono',monospace; margin-bottom:14px;
}
.tp-card-head .hint{ text-transform:none; letter-spacing:0; font-family:'IBM Plex Sans',sans-serif; font-weight:400; }
.tp-grid{ display:grid; grid-template-columns:repeat(auto-fit, minmax(300px, 1fr)); gap:14px; margin-bottom:14px; }
.tp-grid .tp-card{ margin-bottom:0; }

/* таймлайн */
.tl-ticks{ position:relative; margin-left:150px; height:16px; font-family:'IBM Plex Mono',monospace; font-size:11px; color:var(--navy-soft); }
.tl-ticks span{ position:absolute; white-space:nowrap; }
.tl-row{ display:flex; align-items:center; margin:20px 0; cursor:pointer; border-radius:8px; }
.tl-row:hover .tl-name{ text-decoration:underline; }
.tl-person{ width:150px; display:flex; align-items:center; gap:8px; font-size:13px; flex-shrink:0; padding-right:8px; }
.tl-name em{ font-style:normal; color:var(--navy-soft); font-size:11px; }
.tl-sub{ display:block; font-size:11px; color:var(--navy-soft); }
.tl-track{ position:relative; flex:1; height:26px; }
.tl-ribbon{
  position:absolute; top:4px; bottom:4px; border-radius:6px; overflow:hidden;
  box-shadow:inset 0 1px 0 rgba(255,255,255,0.4), inset 0 -3px 4px rgba(16,27,38,0.22);
}
.tl-ribbon .seg{ position:absolute; top:0; bottom:0; }
.seg-green{ background:#2F8F55; }
.seg-amber{ background:#EF9F27; }
.tl-ghost{
  position:absolute; top:6px; bottom:6px; border-radius:5px;
  background:rgba(196,194,186,0.22);
  background-image:repeating-linear-gradient(-45deg, rgba(136,135,128,0.22) 0 3px, transparent 3px 10px);
  box-shadow:inset 0 2px 3px rgba(16,27,38,0.16);
}
.seg-cap{
  position:absolute; top:4px; bottom:4px; background:#2C6FA8; min-width:7px;
  box-shadow:inset 0 1px 0 rgba(255,255,255,0.35), inset 0 -2px 3px rgba(16,27,38,0.3);
}
.seg-cap.l{ border-radius:6px 0 0 6px; }
.seg-cap.r{ border-radius:0 6px 6px 0; }
.legend-swatch.absent{
  background:rgba(196,194,186,0.35);
  background-image:repeating-linear-gradient(-45deg, rgba(136,135,128,0.3) 0 2px, transparent 2px 6px);
}
.fl-time{ position:absolute; top:-14px; font-size:10px; font-family:'IBM Plex Mono',monospace; color:#2C6FA8; white-space:nowrap; }
.fl-time-r{ transform:translateX(-100%); }
.tl-date{ position:absolute; top:100%; font-size:10px; font-family:'IBM Plex Mono',monospace; color:var(--navy-soft); white-space:nowrap; }
.tl-date-r{ transform:translateX(-100%); }

.part-panel{
  margin:-6px 0 20px 150px; background:var(--snow); border:1px solid var(--frost-line);
  border-left:3px solid var(--piste-blue); padding:12px 14px; border-radius:0 8px 8px 0;
}
.part-grid{ display:grid; grid-template-columns:repeat(auto-fit, minmax(190px, 1fr)); gap:12px; }
.part-title{ font-size:12px; color:var(--navy-soft); margin-bottom:6px; font-weight:600; }
.part-line{ font-size:13px; }
.part-line.mono{ font-family:'IBM Plex Mono',monospace; font-size:12px; }
.part-sub{ font-size:12px; color:var(--navy-soft); margin-bottom:4px; }

/* билеты */
.fl-row{ display:flex; align-items:center; gap:12px; padding:10px 0; border-bottom:1px solid var(--frost-line); }
.fl-row:last-of-type{ border-bottom:none; }
.fl-row button{ flex-shrink:0; }
.fl-body{ flex:1; min-width:0; }
.fl-meta{ display:flex; align-items:center; gap:6px; font-size:12px; color:var(--navy-soft); margin-bottom:3px; flex-wrap:wrap; }
.fl-meta .mono{ font-size:12px; }
.fl-route{ display:flex; align-items:baseline; gap:6px; flex-wrap:wrap; font-size:14.5px; }
.fl-route.small{ font-size:13px; }
.fr-end{ white-space:nowrap; }
.fr-time{ font-family:'IBM Plex Mono',monospace; font-size:0.9em; }
.fr-city{ font-weight:600; }
.fr-code{ font-family:'IBM Plex Mono',monospace; font-size:11px; color:var(--navy-soft); }
.fr-arr{ color:var(--navy-soft); }

/* трансферы и жильё */
.tr-item{ border:1px solid var(--frost-line); border-radius:10px; padding:10px 12px; margin-bottom:8px; cursor:pointer; }
.tr-item:hover{ border-color:var(--piste-blue); }
.tr-item.open{ border-color:var(--piste-blue); }
.lo-item{ border:1px solid var(--frost-line); border-radius:10px; padding:10px 12px; margin-bottom:8px; }
.tr-head{ display:flex; justify-content:space-between; gap:10px; font-size:13.5px; flex-wrap:wrap; }
.tr-price{ font-weight:600; white-space:nowrap; }
.dir-pill{ font-size:11px; padding:2px 8px; border-radius:999px; margin-right:4px; }
.dir-pill.to{ background:rgba(44,111,168,0.12); color:var(--piste-blue); }
.dir-pill.back{ background:rgba(192,138,0,0.14); color:#854F0B; }
.tr-body{ border-top:1px solid var(--frost-line); margin-top:10px; padding-top:10px; }
.tr-meta{ display:flex; gap:14px; flex-wrap:wrap; font-size:12.5px; color:var(--navy-soft); margin-top:6px; }
.tr-foot{ display:flex; align-items:center; justify-content:space-between; gap:8px; margin-top:10px; flex-wrap:wrap; }
.tr-riders{ display:flex; gap:4px; flex-wrap:wrap; }
.tr-actions{ display:flex; gap:8px; }
.btn.danger-soft{ background:none; border:1px solid var(--danger); color:var(--danger); }
.btn.danger-soft:hover{ background:rgba(193,68,45,0.08); }
.tr-form-row{ display:grid; grid-template-columns:2fr 1fr 1fr; gap:12px; }

/* логотипы и бейджи авиакомпаний */
.al-logo{ width:20px; height:20px; border-radius:50%; vertical-align:-5px; flex-shrink:0; object-fit:contain; background:#fff; border:1px solid var(--frost-line); }
.al-badge{
  display:inline-flex; align-items:center; justify-content:center;
  min-width:28px; padding:1px 6px; border-radius:5px; flex-shrink:0;
  font-family:'IBM Plex Mono',monospace; font-size:11px; font-weight:600; vertical-align:-2px;
}

/* автокомплит справочников */
.ac-wrap{ position:relative; }
.ac-hint{ font-size:12px; color:var(--navy-soft); margin-top:4px; min-height:17px; display:flex; align-items:center; gap:6px; }
.ac-list{
  position:absolute; left:0; right:0; top:100%; z-index:30; min-width:220px;
  background:var(--panel); border:1px solid var(--frost-line); border-radius:8px;
  margin-top:4px; box-shadow:var(--shadow); overflow:hidden;
}
.ac-row{ display:flex; align-items:center; gap:8px; padding:8px 10px; font-size:13px; cursor:pointer; }
.ac-row:hover{ background:var(--snow); }
.ac-code{
  font-family:'IBM Plex Mono',monospace; font-size:12px;
  background:var(--snow); border:1px solid var(--frost-line); border-radius:5px;
  padding:1px 6px; min-width:38px; text-align:center; flex-shrink:0;
}
.ac-dim{ color:var(--navy-soft); }
.ac-add{ color:var(--piste-blue); }
.ac-mini{ display:flex; gap:6px; padding:8px 10px; align-items:center; flex-wrap:wrap; }
.ac-mini input{ font-size:13px; padding:6px 8px; }
.ac-mini .ac-mini-code{ width:56px; text-transform:uppercase; flex:0 0 56px; }
.ac-mini .ac-mini-name{ flex:1 1 90px; min-width:90px; }
.ac-mini .btn{ flex:0 0 auto; }
.flight-ref{ display:flex; gap:8px; }
.flight-ref input:last-child{ flex:1; min-width:0; }

/* чипы участников */
.chips-all-btn{ background:none; border:none; color:var(--piste-blue); font-size:11px; text-decoration:underline; padding:0; margin-left:6px; text-transform:none; letter-spacing:0; }
.chips-row{ display:flex; gap:8px; flex-wrap:wrap; }
.p-chip{
  display:inline-flex; align-items:center; gap:6px; cursor:pointer; user-select:none;
  border:1px solid var(--frost-line); border-radius:999px; padding:4px 12px 4px 4px;
  font-size:13px; color:var(--navy-soft); background:var(--panel);
}
.p-chip .mini-avatar{ opacity:0.5; }
.p-chip.on{ border-color:var(--chip-color); background:var(--snow); color:var(--navy); }
.p-chip.on .mini-avatar{ opacity:1; }

@media (max-width: 640px){
  .avail-columns{ grid-template-columns:1fr; }
  .field-row{ grid-template-columns:1fr; }
  .tr-form-row{ grid-template-columns:1fr; }
  .hero{ padding-top:40px; padding-left:14px; padding-right:14px; }
  .participant-dates{ margin-left:0; width:100%; }

  /* меньше отступов на узких экранах — контенту больше места */
  .app{ padding-left:14px; padding-right:14px; }
  .panel{ padding:18px 14px; margin-bottom:16px; }
  .tp-card{ padding:16px 14px; }
  .modal{ padding:20px 16px; }

  /* форма отпуска: поля дат в столбик, не слипаются */
  .avail-form-row{ flex-direction:column; align-items:stretch; }
  .avail-form-row .field{ min-width:0; }

  /* бейдж пользователя переносится, а не обрезается */
  .rider-badge{ flex-wrap:wrap; row-gap:2px; }

  /* таймлайн, вариант «прореживание»: полоса на всю ширину,
     слева только аватар, времена рейсов — в панели участника по тапу */
  .tl-person{ width:36px; }
  .tl-person .tl-name{ display:none; }
  .tl-ticks{ margin-left:44px; }
  .fl-time{ display:none; }
  .tl-row{ margin:22px 0; }
  .part-panel{ margin-left:0; }
}
