/* ==========================================================================
   Trip Board — оформление.
   Цвета заданы токенами в :root. Чтобы сменить палитру под другую поездку,
   достаточно поменять значения здесь, остальное подхватится.
   ========================================================================== */
:root{
  --ground:#F3F1ED; --surface:#FFFFFF; --sunk:#EAE7E1;
  --ink:#1A1816; --muted:#6B6560; --faint:#948D86;
  --line:#DFDAD2; --line2:#C9C2B8;
  --accent:#B02A55; --accent-bg:#FBE8EE;
  --open:#1B6844; --open-bg:#DFF0E7;
  --soon:#8E5410; --soon-bg:#FAEBD6;
  --shut:#8A837C; --shut-bg:#EDEAE5;
  --bad:#A32219;  --bad-bg:#FBE3E0;
  --note-bg:#FFF3BF; --note-ink:#5C4404; --note-line:#E8B800;
  --sans:"Bricolage Grotesque",ui-sans-serif,system-ui,-apple-system,sans-serif;
  --serif:"Literata",Georgia,serif;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --ground:#141519; --surface:#1D1F24; --sunk:#25282E;
    --ink:#ECE8E2; --muted:#9E9891; --faint:#7B756E;
    --line:#2E313A; --line2:#3D414A;
    --accent:#F07DA1; --accent-bg:#3A2029;
    --open:#6FC79B; --open-bg:#1A3227;
    --soon:#E0A55C; --soon-bg:#382C18;
    --shut:#7B756E; --shut-bg:#262931;
    --bad:#F58C82;  --bad-bg:#3A1F1C;
    --note-bg:#4A3B08; --note-ink:#FFE79A; --note-line:#E8B800;
  }
}
:root[data-theme="dark"]{
  --ground:#141519; --surface:#1D1F24; --sunk:#25282E;
  --ink:#ECE8E2; --muted:#9E9891; --faint:#7B756E;
  --line:#2E313A; --line2:#3D414A;
  --accent:#F07DA1; --accent-bg:#3A2029;
  --open:#6FC79B; --open-bg:#1A3227;
  --soon:#E0A55C; --soon-bg:#382C18;
  --shut:#7B756E; --shut-bg:#262931;
  --bad:#F58C82;  --bad-bg:#3A1F1C;
  --note-bg:#4A3B08; --note-ink:#FFE79A; --note-line:#E8B800;
}

*{box-sizing:border-box}
/* иначе display:flex у .days/.ctl/.tabs перебивает атрибут hidden */
[hidden]{display:none !important}
html,body{margin:0}
body{background:var(--ground);color:var(--ink);font-family:var(--serif);
  font-size:15px;line-height:1.5;-webkit-text-size-adjust:100%}
.wrap{max-width:780px;margin:0 auto;padding-inline:16px;padding-block:0 56px}

h1{font-family:var(--sans);font-weight:700;font-size:clamp(23px,6vw,33px);
  margin:16px 0 2px;letter-spacing:-.02em;text-wrap:balance}
.sub{font-family:var(--sans);color:var(--muted);margin:0 0 12px;font-size:13px}
.sub b{color:var(--accent)}

/* ------------ верхняя панель ------------ */
.bar{position:sticky;top:env(safe-area-inset-top,0px);z-index:30;
  background:var(--ground);padding-block:8px 10px;
  border-bottom:1px solid var(--line);margin-bottom:14px}
.modes{display:flex;gap:4px;background:var(--sunk);padding:3px;border-radius:11px;
  margin-bottom:9px}
.modes button{flex:1;font-family:var(--sans);font-size:14px;font-weight:700;
  border:0;background:transparent;color:var(--muted);padding:9px 4px;
  border-radius:9px;cursor:pointer}
.modes button.on{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.13)}

.days{display:flex;gap:6px;overflow-x:auto;padding-bottom:6px;scrollbar-width:none}
.days::-webkit-scrollbar{display:none}
.day{flex:0 0 auto;font-family:var(--sans);font-weight:500;font-size:11.5px;
  padding:6px 10px;border-radius:999px;border:1px solid var(--line2);
  background:var(--surface);color:var(--muted);cursor:pointer;line-height:1.2;
  text-align:center;min-width:50px}
.day b{display:block;font-size:15px;font-weight:700;color:var(--ink)}
.day.on{background:var(--accent);border-color:var(--accent);color:#fff}
.day.on b{color:#fff}
.day.lvl-bad{border-color:var(--bad);border-width:2px}
.day.lvl-warn{border-color:var(--soon);border-width:2px}

.ctl{display:flex;gap:7px;align-items:center;flex-wrap:wrap;margin-top:8px}
select,.btn{font-family:var(--sans);font-size:13.5px;font-weight:600;
  background:var(--surface);color:var(--ink);border:1px solid var(--line2);
  border-radius:9px;padding:7px 10px;cursor:pointer}
select{font-variant-numeric:tabular-nums}
.btn.on{background:var(--accent);border-color:var(--accent);color:#fff}
.daynote{font-family:var(--sans);font-size:12.5px;color:var(--muted);
  margin-top:8px;line-height:1.45}
.daynote.warn{color:var(--soon)}
.daynote.bad{color:var(--bad);font-weight:500}
.tabs{display:flex;gap:4px;margin-top:9px;background:var(--sunk);padding:3px;border-radius:11px}
.tabs button{flex:1;font-family:var(--sans);font-size:13px;font-weight:600;border:0;
  background:transparent;color:var(--muted);padding:7px 4px;border-radius:9px;cursor:pointer}
.tabs button.on{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.12)}

/* ------------ карточки справочника ------------ */
.cityhead{font-family:var(--sans);font-size:11.5px;font-weight:700;letter-spacing:.12em;
  text-transform:uppercase;color:var(--faint);margin:20px 0 8px}
.card{background:var(--surface);border:1px solid var(--line);border-radius:13px;
  padding:13px 14px;margin-bottom:9px}
.card.anchor{border-left:3px solid var(--accent)}
.card.visited{opacity:.6}
.top{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:5px}
.pill{font-family:var(--sans);font-size:11.5px;font-weight:700;padding:3px 9px;
  border-radius:999px;white-space:nowrap}
.pill.o{background:var(--open-bg);color:var(--open)}
.pill.s{background:var(--soon-bg);color:var(--soon)}
.pill.c{background:var(--shut-bg);color:var(--shut)}
.pill.x{background:var(--bad-bg);color:var(--bad)}
.hours{font-family:var(--sans);font-size:12.5px;color:var(--muted);font-variant-numeric:tabular-nums}
.tagA{font-family:var(--sans);font-size:10.5px;font-weight:700;letter-spacing:.07em;
  color:var(--accent);background:var(--accent-bg);padding:3px 7px;border-radius:5px}
.card h3{font-family:var(--sans);font-weight:700;font-size:16.5px;margin:2px 0 4px;
  line-height:1.25;text-wrap:balance}
.meta{font-family:var(--sans);font-size:12px;color:var(--muted);margin-bottom:7px}
.what{margin:0 0 5px;font-size:14px}
.what.clamp{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.more{font-family:var(--sans);font-size:12px;color:var(--accent);background:none;border:0;
  padding:0;cursor:pointer;font-weight:600}
.tip{margin:6px 0 0;font-size:13px;color:var(--muted);border-left:2px solid var(--line2);
  padding-left:9px}
.usernote{margin-top:8px;font-size:13.5px;padding:8px 10px;border-radius:8px;
  background:var(--note-bg);color:var(--note-ink);border-left:3px solid var(--note-line);
  font-weight:600}
.acts{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}
.act{font-family:var(--sans);font-size:12px;font-weight:600;border:1px solid var(--line2);
  background:var(--surface);color:var(--muted);border-radius:8px;padding:6px 9px;cursor:pointer}
.act.on{background:var(--accent);border-color:var(--accent);color:#fff}
.act.done.on{background:var(--open);border-color:var(--open)}
.act select{font-size:12px;padding:5px 7px}

/* ------------ планировщик ------------ */
.dayblock{background:var(--surface);border:1px solid var(--line);border-radius:14px;
  padding:13px 14px;margin-bottom:12px}
.dayblock.pool{background:var(--sunk);border-style:dashed}
.dayblock.over{border-color:var(--soon)}
.dhead{display:flex;align-items:baseline;gap:9px;flex-wrap:wrap;margin-bottom:3px}
.dhead h2{font-family:var(--sans);font-size:17px;font-weight:700;margin:0;letter-spacing:-.01em}
.dbase{font-family:var(--sans);font-size:12px;font-weight:600;color:var(--accent);
  background:var(--accent-bg);padding:2px 8px;border-radius:5px}
.dsun{font-family:var(--sans);font-size:11.5px;color:var(--faint);
  font-variant-numeric:tabular-nums;margin-left:auto}
.dsum{font-family:var(--sans);font-size:12px;color:var(--muted);margin:7px 0 10px;
  padding:6px 9px;background:var(--sunk);border-radius:8px}
.dayblock.pool .dsum{background:var(--surface)}
.dsum.over{background:var(--soon-bg);color:var(--soon);font-weight:600}
.pcard{background:var(--ground);border:1px solid var(--line);border-radius:10px;
  padding:9px 11px;margin-bottom:7px}
.dayblock.pool .pcard{background:var(--surface)}
.pcard.dragging{opacity:.4}
.pcard.closed{border-color:var(--bad);background:var(--bad-bg)}
.pcard h4{font-family:var(--sans);font-size:14.5px;font-weight:700;margin:0 0 3px;line-height:1.3}
.pmeta{font-family:var(--sans);font-size:11.5px;color:var(--muted);margin-bottom:6px}
.pwarn{font-family:var(--sans);font-size:11.5px;font-weight:600;color:var(--bad);margin-bottom:5px}
.pacts{display:flex;gap:5px;align-items:center;flex-wrap:wrap}
.mini{font-family:var(--sans);font-size:12px;font-weight:700;border:1px solid var(--line2);
  background:var(--surface);color:var(--muted);border-radius:7px;padding:4px 9px;cursor:pointer;
  min-width:32px}
.mini:disabled{opacity:.3;cursor:default}
.grip{cursor:grab;color:var(--faint);font-size:15px;padding:0 3px}

.empty{text-align:center;color:var(--muted);font-family:var(--sans);padding:26px 12px;
  background:var(--surface);border:1px dashed var(--line2);border-radius:13px}
.dayblock .empty{padding:14px;background:transparent;border:0;font-size:13px}

form.add{background:var(--surface);border:1px solid var(--line);border-radius:13px;
  padding:13px 14px;margin-top:12px}
form.add input,form.add textarea{width:100%;font-family:var(--serif);font-size:14px;
  padding:8px 10px;border:1px solid var(--line2);border-radius:8px;background:var(--ground);
  color:var(--ink);margin-bottom:7px}
summary{font-family:var(--sans);font-size:13px;font-weight:600;color:var(--accent);
  cursor:pointer;padding:9px 0}
footer{margin-top:24px;font-family:var(--sans);font-size:11.5px;color:var(--faint);
  line-height:1.6;border-top:1px solid var(--line);padding-top:14px}
.sync{margin-top:7px;font-size:11px}
.sync.err{color:var(--soon)}
button:focus-visible,select:focus-visible,input:focus-visible,textarea:focus-visible{
  outline:2px solid var(--accent);outline-offset:2px}

/* ---- расписание на неделю в карточке ---- */
.week{display:flex;flex-wrap:wrap;gap:4px;margin:7px 0 2px}
.wd{font-family:var(--sans);font-size:11px;color:var(--muted);background:var(--sunk);
  border-radius:6px;padding:3px 6px;font-variant-numeric:tabular-nums;white-space:nowrap}
.wd b{font-weight:700;color:var(--ink);margin-right:4px}
.wd.shut{color:var(--shut);opacity:.75}
.wd.shut b{color:var(--shut)}
.wd.now{background:var(--accent-bg);color:var(--accent)}
.wd.now b{color:var(--accent)}
.closedline{font-family:var(--sans);font-size:11.5px;color:var(--soon);margin-top:4px}

/* ---- ссылки, оформленные как кнопки действий ---- */
a.act{text-decoration:none;display:inline-block}
a.act:hover{border-color:var(--accent);color:var(--accent)}

/* ---- справочные разделы: строка таблицы как пара ключ-значение ---- */
.kv{display:flex;gap:10px;padding:6px 0;border-top:1px solid var(--line);font-size:13.5px}
.kv:first-of-type{border-top:0}
.k{font-family:var(--sans);font-size:11.5px;font-weight:600;color:var(--faint);
  flex:0 0 34%;line-height:1.4;text-transform:uppercase;letter-spacing:.04em}
.v{flex:1;min-width:0;overflow-wrap:anywhere}
@media (max-width:420px){
  .kv{flex-direction:column;gap:2px}
  .k{flex:none}
}

/* ---- поле времени ---- */
input[type="time"]{font-family:var(--sans);font-size:14px;font-weight:600;
  background:var(--surface);color:var(--ink);border:1px solid var(--line2);
  border-radius:9px;padding:7px 10px;font-variant-numeric:tabular-nums;min-width:104px}

/* ---- раскрывающаяся карточка в плане ---- */
.ptitle{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;
  background:none;border:0;padding:0 0 3px;cursor:pointer;text-align:left;
  font-family:var(--sans);font-size:14.5px;font-weight:700;color:var(--ink);line-height:1.3}
.chev{color:var(--faint);font-size:10px;flex:0 0 auto}
.pcard.open{background:var(--surface);border-color:var(--line2)}
.dayblock.pool .pcard.open{background:var(--ground)}
.pcard .what{font-size:13.5px;margin:7px 0 0}
.pcard .tip{font-size:12.5px}
.pcard .acts{margin-top:8px}

/* ---- пройденные дни ---- */
.pastrow{margin-bottom:12px}
.dayblock.done{padding:0;background:var(--sunk);border-style:dashed}
.pastbar{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;
  background:none;border:0;padding:11px 14px;cursor:pointer;text-align:left;
  font-family:var(--sans);font-size:13px;font-weight:600;color:var(--muted)}
.pastcount{font-weight:400;font-size:11.5px;color:var(--faint);white-space:nowrap}
.dayblock.waspast{opacity:.78}

/* ---- переключатель приоритета из трёх положений ---- */
.prio3{display:flex;gap:0;border:1px solid var(--line2);border-radius:8px;
  overflow:hidden;flex:1 1 100%;min-width:0}
.p3{flex:1;font-family:var(--sans);font-size:11.5px;font-weight:600;
  border:0;border-right:1px solid var(--line2);background:var(--surface);
  color:var(--muted);padding:7px 4px;cursor:pointer;white-space:nowrap;
  min-width:0;overflow:hidden;text-overflow:ellipsis}
.p3:last-child{border-right:0}
.p3.must.on{background:var(--accent);color:#fff}
.p3.unl.on {background:var(--soon-bg);color:var(--soon)}
.p3.no.on  {background:var(--shut);color:#fff}

/* ---- «вряд ли»: приглушено, но на месте ---- */
.card.unlikely{opacity:.6}
.card.unlikely h3{color:var(--muted)}
.pcard.unlikely{opacity:.6}
/* ---- «нет»: видно только во вкладке «Все», зачёркнуто ---- */
.card.skip{opacity:.45}
.card.skip h3{text-decoration:line-through;color:var(--muted)}

/* ---- карта ---- */
#mapWrap{margin-bottom:14px}
#map{height:min(66vh,540px);border-radius:13px;border:1px solid var(--line);
  margin-top:9px;background:var(--sunk);z-index:1}
.leaflet-container{font-family:var(--sans);border-radius:13px}
.leaflet-popup-content{margin:11px 13px;font-family:var(--serif);font-size:13.5px;line-height:1.45}
.leaflet-popup-content b{font-family:var(--sans);font-size:14.5px;display:block;margin-bottom:3px}
.leaflet-popup-content .pmeta{margin:4px 0 6px}
.leaflet-popup-content a{color:var(--accent)}
.pinlabel{display:flex;align-items:center;justify-content:center;
  width:26px;height:26px;border-radius:50%;border:2px solid #fff;
  box-shadow:0 1px 4px rgba(0,0,0,.4);font-family:var(--sans);font-weight:700;
  font-size:12px;color:#fff}
.pin-must{background:#B02A55}
.pin-none{background:#4A6FA5}
.pin-unl {background:#8A837C}
.maplegend{display:flex;flex-wrap:wrap;gap:12px;margin-top:9px;
  font-family:var(--sans);font-size:11.5px;color:var(--muted)}
.maplegend span{display:flex;align-items:center;gap:5px}
.dot{width:13px;height:13px;border-radius:50%;display:inline-block}
.dot.must{background:#B02A55}
.dot.none{background:#4A6FA5}
.dot.unl{background:#8A837C}
.dot.num{width:18px;height:18px;background:#B02A55;color:#fff;font-size:10px;
  display:flex;align-items:center;justify-content:center;font-weight:700}
