:root {
  /* iOS dark — System Colors */
  --bg:#000000;
  --bg2:#1C1C1E;
  --bg3:#2C2C2E;
  --surface:#1C1C1E;
  --surface2:#2C2C2E;
  --border:#38383A;
  --separator:rgba(84,84,88,0.65);
  --accent:#0A84FF;      /* systemBlue dark */
  --accent2:#64D2FF;
  --glow:rgba(10,132,255,0.25);
  --green:#30D158;       /* systemGreen dark */
  --red:#FF453A;         /* systemRed dark */
  --orange:#FF9F0A;      /* systemOrange dark */
  --yellow:#FFD60A;
  --purple:#BF5AF2;      /* systemPurple dark */
  --text:#FFFFFF;        /* label */
  --text2:#EBEBF599;     /* secondaryLabel ~60% */
  --text3:#EBEBF54D;     /* tertiaryLabel ~30% */
  --fill1:rgba(120,120,128,0.36);
  --fill2:rgba(120,120,128,0.32);
  --fill3:rgba(120,120,128,0.20);
  --r:18px; --r2:14px;
  --r-pill:999px;
  --r-btn:12px;
  --tag-row-gap:4px;     /* s031 (p.126): row gap of the wrapped tag line of a card */
  --jr-map-h:220px;      /* s038 (p.164): track map in the «Журнал дня» sheet */
  --shadow-card:0 0 0 .5px rgba(255,255,255,.03);
  --shadow-elev:0 8px 28px rgba(0,0,0,.5), 0 1px 3px rgba(0,0,0,.3);
  --shadow-btn:0 1px 2px rgba(0,0,0,.18);
  --tint-blue:rgba(10,132,255,.16);
  --tint-green:rgba(48,209,88,.18);
  --tint-orange:rgba(255,159,10,.18);
  --tint-red:rgba(255,69,58,.18);
  --tint-yellow:rgba(255,214,10,.18);   /* s031 (p.126): trust «штат · слоты ПроДокторов» */
  --teal:#40CBE0;        /* systemTeal dark — s027 (p.110): private clinic pill */
  --tint-teal:rgba(64,203,224,.16);
  --noise-opacity:0;
  --ease:cubic-bezier(0.32, 0.72, 0, 1);  /* iOS spring */
}
:root[data-theme="light"] {
  /* iOS light — System Colors */
  --bg:#F2F2F7;          /* systemGroupedBackground */
  --bg2:#FFFFFF;
  --bg3:#E5E5EA;
  --surface:#FFFFFF;     /* systemBackground */
  --surface2:#F2F2F7;
  --border:#C6C6C8;
  --separator:rgba(60,60,67,0.29);
  --accent:#007AFF;      /* systemBlue */
  --accent2:#5AC8FA;
  --glow:rgba(0,122,255,0.18);
  --green:#34C759;
  --red:#FF3B30;
  --orange:#FF9500;
  --yellow:#FFCC00;
  --purple:#AF52DE;
  --text:#000000;
  --text2:#3C3C4399;     /* secondaryLabel light */
  --text3:#3C3C4399;
  --fill1:rgba(120,120,128,0.16);
  --fill2:rgba(120,120,128,0.12);
  --fill3:rgba(120,120,128,0.08);
  --shadow-card:0 1px 3px rgba(0,0,0,.06), 0 .5px 1px rgba(0,0,0,.04);
  --shadow-elev:0 12px 32px rgba(0,0,0,.10), 0 1px 4px rgba(0,0,0,.05);
  --shadow-btn:0 1px 2px rgba(0,0,0,.08);
  --tint-blue:rgba(0,122,255,.12);
  --tint-green:rgba(52,199,89,.14);
  --tint-orange:rgba(255,149,0,.14);
  --tint-red:rgba(255,59,48,.12);
  --tint-yellow:rgba(255,204,0,.20);    /* s031 (p.126) */
  --teal:#0E7C8F;        /* systemTeal darkened for contrast on white — s027 (p.110) */
  --tint-teal:rgba(48,176,199,.14);
  --noise-opacity:0;
}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
html,body{-ms-content-zooming:none;-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{font-family:-apple-system,BlinkMacSystemFont,'SF Pro Text','SF Pro Display','Segoe UI',Roboto,sans-serif;background:var(--bg);color:var(--text);min-height:100vh;overflow-x:hidden}
body::before{content:'';position:fixed;inset:0;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.04'/%3E%3C/svg%3E");pointer-events:none;z-index:0;opacity:var(--noise-opacity)}

/* HEADER — iOS large-title style */
.header{position:sticky;top:0;z-index:100;padding:calc(env(safe-area-inset-top, 0px) + 12px) 16px 8px;background:color-mix(in srgb, var(--bg) 72%, transparent);backdrop-filter:saturate(180%) blur(24px);-webkit-backdrop-filter:saturate(180%) blur(24px);border-bottom:.5px solid transparent;transition:border-color .2s var(--ease)}
.header.scrolled{border-bottom-color:var(--separator)}
.header-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px;min-height:32px}
.logo{display:flex;align-items:center;gap:8px}
.logo-icon{width:30px;height:30px;background:var(--accent);border-radius:8px;display:flex;align-items:center;justify-content:center;color:#fff;box-shadow:0 1px 2px rgba(0,0,0,.08)}
.logo-icon svg{width:18px;height:18px}
.logo-text{font-size:17px;font-weight:600;letter-spacing:-.4px;color:var(--text)}
.header-right{display:flex;align-items:center;gap:2px}
.hbtn{width:34px;height:34px;background:transparent;border:0;border-radius:8px;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:18px;color:var(--accent);transition:opacity .15s, background-color .15s}
.hbtn:active{background:var(--fill2);opacity:.7}
.hbtn svg{width:22px;height:22px}
.header-stats{font-size:13px;color:var(--text2);padding:0;background:transparent;border:0}
.large-title{--c:0;font-size:34px;font-weight:700;letter-spacing:-.6px;color:var(--text);padding:0 16px calc(4px * (1 - var(--c)));margin-bottom:calc(6px * (1 - var(--c)));transform-origin:left center;transform:scale(calc(1 - 0.45 * var(--c)));opacity:calc(1 - var(--c));max-height:calc(60px * (1 - var(--c)));overflow:hidden;pointer-events:none;will-change:transform,opacity,max-height}
.search-wrap{position:relative;margin-top:4px}
.search-input{width:100%;background:var(--fill2);border:0;border-radius:10px;padding:8px 12px 8px 34px;color:var(--text);font-family:inherit;font-size:17px;outline:none;-webkit-appearance:none}
.search-input::placeholder{color:var(--text2)}
.search-input:focus{background:var(--fill1)}
.search-icon{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--text2);font-size:14px;pointer-events:none;display:flex}
.search-icon svg{width:16px;height:16px}

/* FILTERS — iOS-style без горизонтального скролла */
.filters{padding:6px 16px 0;display:flex;flex-direction:column;gap:8px}
.filter-row{display:flex;gap:8px;align-items:center}
/* s022 (p.97): «Контакты» — secondary filters behind «Фильтры · N»; other views keep the flat rows (display:contents) */
.fx-toggle{display:none;align-items:center;gap:6px;width:100%;padding:7px 12px;border:0;border-radius:var(--r-pill);background:var(--fill2);color:var(--text);font-size:14px;font-weight:500;font-family:inherit;text-align:left;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:opacity .15s, background-color .15s}
.fx-toggle:active{opacity:.6}
.fx-toggle.active{background:var(--tint-blue);color:var(--accent);font-weight:600}
.fx-toggle .fx-lbl{flex:1;min-width:0}
.fx-toggle .select-chevron{transition:transform .15s}
.filters.fx-open .fx-toggle .select-chevron{transform:rotate(180deg)}
.filters-more{display:contents}
.filters.fx-on .fx-toggle{display:flex}
.filters.fx-on .filters-more{display:flex;flex-direction:column;gap:8px;padding:8px 10px;border-radius:12px;background:var(--fill2)}
.filters.fx-on:not(.fx-open) .filters-more{display:none}
.filter-row-label{font-size:13px;color:var(--text2);font-weight:500;letter-spacing:0;text-transform:none;flex-shrink:0;padding-top:0;min-width:54px}
/* iOS Segmented Control */
.seg-control{display:flex;flex:1;background:var(--fill2);border-radius:9px;padding:2px;min-width:0}
.seg-control .seg{flex:1 1 0;min-width:0;padding:5px 6px;border-radius:7px;background:transparent;border:0;font-size:13px;font-weight:500;color:var(--text);text-align:center;font-family:inherit;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-tap-highlight-color:transparent;transition:background-color .15s, font-weight .15s, color .15s}
.seg-control .seg.on{background:var(--surface);box-shadow:0 1px 2px rgba(0,0,0,.08), 0 1px 1px rgba(0,0,0,.04);font-weight:600;color:var(--text)}
:root[data-theme="light"] .seg-control{background:rgba(120,120,128,0.12)}
.ftag{flex-shrink:0;padding:7px 14px;border-radius:var(--r-pill);border:0;font-size:14px;font-weight:500;color:var(--accent);background:var(--tint-blue);cursor:pointer;transition:opacity .15s, background-color .15s, transform .12s;white-space:nowrap;font-family:inherit;-webkit-tap-highlight-color:transparent}
.ftag:active{opacity:.6}
.ftag.on{color:#fff;background:var(--accent)}
/* iOS-style select field (pill button with right chevron) */
.select-field{flex-shrink:0;display:inline-flex;align-items:center;gap:6px;padding:7px 10px 7px 14px;border-radius:var(--r-pill);border:0;background:var(--tint-blue);color:var(--accent);font-size:14px;font-weight:500;font-family:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:opacity .15s, background-color .15s}
.select-field:active{opacity:.6}
.select-field.has-selection{background:var(--accent);color:#fff}
.select-chevron{width:14px;height:14px;opacity:.6}
/* Picker list inside modal */
.picker-search-wrap{position:relative;padding:10px 16px}
.picker-search{width:100%;background:var(--fill2);border:0;border-radius:10px;padding:8px 12px 8px 34px;color:var(--text);font-family:inherit;font-size:17px;outline:none}
.picker-search-icon{position:absolute;left:26px;top:50%;transform:translateY(-50%);color:var(--text2);pointer-events:none;display:flex}
.picker-search-icon svg{width:16px;height:16px}
.picker-list{background:var(--surface);border-top:.5px solid var(--separator);max-height:60vh;overflow-y:auto}
.picker-row{display:flex;align-items:center;gap:12px;padding:11px 16px;cursor:pointer;border-bottom:.5px solid var(--separator);font-size:16px;color:var(--text);-webkit-tap-highlight-color:transparent}
.picker-row:active{background:var(--fill2)}
.picker-row .check{width:18px;height:18px;flex-shrink:0;color:var(--accent);opacity:0}
.picker-row.selected .check{opacity:1}
.picker-row .label{flex:1;line-height:1.3}
.picker-row .label small{display:block;font-size:13px;color:var(--text2);margin-top:2px}
.picker-header-btn{background:none;border:0;color:var(--accent);font-size:17px;font-family:inherit;cursor:pointer;padding:6px 4px;-webkit-tap-highlight-color:transparent}
.picker-header-btn:active{opacity:.5}
.picker-header-btn.bold{font-weight:600}
/* Non-tappable section caption inside a picker list (city sheet: ВАО / ЦАО / Область) */
.picker-group{padding:6px 16px;background:var(--fill2);color:var(--text2);font-size:13px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;border-bottom:.5px solid var(--separator)}
.picker-empty{padding:30px 16px;text-align:center;color:var(--text2);font-size:14px}
/* отдельные расцветки для type убраны — все одинаковые iOS-стайл */
.ftag.ped.on, .ftag.ter.on, .ftag.type-all.on,
.ftag.city-all.on{background:var(--accent);color:#fff}
.ftag.city.on{background:#7c3aed;border-color:#7c3aed}
.ftag.due.on{background:var(--orange)}
.ftag.ok.on{background:var(--green)}
.ftag.sort-btn.on{background:var(--accent);box-shadow:0 2px 8px var(--glow);color:white;border-color:transparent}

/* CONTENT */
.content{padding:8px 0 calc(100px + env(safe-area-inset-bottom, 0px));position:relative;z-index:1}
.section-label{font-size:13px;font-weight:400;letter-spacing:.06em;text-transform:uppercase;color:var(--text2);margin:22px 16px 8px;font-family:inherit;font-feature-settings:"tnum"}
/* Tabular numerals везде где важна сетка цифр (даты, часы, расстояния, счётчики) */
.freq-badge, .today-badge, .in-base-badge, .route-leg, .task-meta,
.task-meta .pill, .header-stats, .doctor-sub, .doctor-hours, .tab-badge,
.dist-pill, .eta-pill, .wait-pill, .late-pill,
.cs-badge, .freq-ok, .freq-due, .freq-over{font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}

/* CARDS — iOS inset-grouped list */
.cards-list{background:var(--surface);border-radius:var(--r);margin:0 16px;overflow:hidden;box-shadow:var(--shadow-card)}
.doctor-card{background:transparent;border:0;border-radius:0;padding:14px 14px 14px 18px;display:flex;align-items:center;gap:12px;cursor:pointer;position:relative;animation:cardIn .25s var(--ease) backwards;min-height:68px}
.doctor-card + .doctor-card{border-top:.5px solid var(--separator)}
.doctor-card:active{background:var(--fill2)}
.doctor-card.due-soon{}
.doctor-card.overdue{}
@keyframes cardIn{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}
.doctor-avatar{width:44px;height:44px;border-radius:50%;flex-shrink:0;background:linear-gradient(135deg, var(--fill1), var(--fill3));display:flex;align-items:center;justify-content:center;font-size:20px;overflow:hidden;box-shadow:inset 0 0 0 .5px rgba(0,0,0,.08), 0 1px 2px rgba(0,0,0,.04)}
.doctor-avatar img{width:100%;height:100%;object-fit:cover}
.doctor-info{flex:1;min-width:0;padding-right:8px}
.doctor-name{font-size:17px;font-weight:600;margin-bottom:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--text);letter-spacing:-.3px}
.doctor-name-rest{font-size:13px;font-weight:500;color:var(--text2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:1px;letter-spacing:-.1px}
/* address: up to 2 lines in list cards (Schedule incl. each branch row, Today, Contacts), full text in the card */
.doctor-sub{font-size:13px;color:var(--text2);white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;word-break:normal;overflow-wrap:anywhere}
.doctor-hours{margin-top:3px;display:flex;flex-wrap:wrap;gap:5px}
.doctor-spec-tag{font-size:13px;font-weight:400;margin-bottom:1px;color:var(--text2);display:flex;flex-wrap:wrap;align-items:center;column-gap:6px;row-gap:var(--tag-row-gap);white-space:nowrap;min-width:0}   /* s031 (p.126): pills wrap to a second line instead of being cut */
.doctor-info .doctor-spec-tag > span[class]{margin-left:0;max-width:100%}   /* s031 (p.126): spacing by the gap, so a wrapped pill starts at the left edge */
.doctor-info .doctor-spec-tag > .trust-pill{white-space:normal}   /* s031 (p.126): a pill wider than the column (narrow phones) wraps its own text */
.today-badge{display:inline-flex;align-items:center;gap:3px;background:var(--tint-green);color:var(--green);padding:2px 9px;border-radius:var(--r-pill);font-size:11px;font-weight:600;white-space:nowrap;flex-shrink:0;letter-spacing:.1px}
.in-base-badge{display:inline-flex;align-items:center;background:var(--tint-blue);color:var(--accent);padding:2px 9px;border-radius:var(--r-pill);font-size:11px;font-weight:600;white-space:nowrap;flex-shrink:0;letter-spacing:.1px}
.doctor-spec-tag.ped{color:var(--purple)}
.doctor-spec-tag.ter{color:var(--accent)}
.doctor-spec-tag.other{color:var(--text2)}
.doctor-meta{display:flex;flex-direction:column;align-items:flex-end;gap:4px;flex-shrink:0;align-self:flex-start;margin-top:1px}
.freq-badge{font-size:12px;font-weight:600;padding:3px 10px;border-radius:var(--r-pill);white-space:nowrap;font-family:inherit;letter-spacing:.1px}
.freq-ok{background:var(--tint-green);color:var(--green)}
.freq-due{background:var(--tint-orange);color:var(--orange)}
.freq-over{background:var(--tint-red);color:var(--red)}
.freq-never{background:var(--fill2);color:var(--text3)}   /* s022: no visit yet */
.vs-date{margin-left:6px;font-size:13px;color:var(--text2);font-variant-numeric:tabular-nums}   /* s022: last visit dd.mm next to the badge */
.rel-dot{width:8px;height:8px;border-radius:50%}
.rel-5{background:var(--green)}.rel-4{background:#84cc16}.rel-3{background:var(--orange)}.rel-2{background:#FF7E1D}.rel-1{background:var(--red)}

.empty-state{text-align:center;padding:50px 20px;color:var(--text2)}
.empty-state .ei{font-size:44px;margin-bottom:14px;opacity:.5}
.empty-state .et{font-size:17px;font-weight:600;color:var(--text);margin-bottom:6px}
.empty-state .es{font-size:14px;line-height:1.5}

/* iOS TAB BAR */
.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:200;display:flex;justify-content:space-around;background:color-mix(in srgb, var(--bg2) 72%, transparent);backdrop-filter:saturate(180%) blur(24px);-webkit-backdrop-filter:saturate(180%) blur(24px);border-top:.5px solid var(--separator);padding:6px 0 calc(6px + env(safe-area-inset-bottom, 0px))}
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))){
  .tabbar{background:var(--bg2)}
  .header{background:var(--bg)}
}
.tabbar .tab{flex:1;background:none;border:0;padding:6px 4px 4px;display:flex;flex-direction:column;align-items:center;gap:2px;font-size:10px;font-weight:500;color:var(--text2);font-family:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}
.tabbar .tab svg{width:24px;height:24px}
.tabbar .tab.on{color:var(--accent)}
.tabbar .tab:active{opacity:.5}
.tabbar .tab .tab-badge{position:absolute;top:2px;right:calc(50% - 18px);background:var(--red);color:#fff;font-size:10px;font-weight:700;min-width:18px;height:18px;border-radius:var(--r-pill);display:inline-flex;align-items:center;justify-content:center;padding:0 5px;line-height:1;box-shadow:0 0 0 2px var(--bg2);font-variant-numeric:tabular-nums}
.tabbar .tab{position:relative}

/* ===== Карта маршрута ===== */
.view-routemap{position:fixed;top:0;left:0;right:0;bottom:calc(60px + env(safe-area-inset-bottom, 0px));background:var(--bg);z-index:99;display:none;flex-direction:column;padding-top:env(safe-area-inset-top, 0px)}
.view-routemap.on{display:flex}

/* Tasks view (s003) */
.view-tasks{position:fixed;top:0;left:0;right:0;bottom:calc(60px + env(safe-area-inset-bottom, 0px));background:var(--bg);z-index:150;display:none;flex-direction:column;padding-top:env(safe-area-inset-top, 0px)}
.view-tasks.on{display:flex}
/* s052 (p.127): «Планирование» overlay — frame only, the page itself is styled by /plan/plan.css */
.view-plan{position:fixed;top:0;left:0;right:0;bottom:calc(60px + env(safe-area-inset-bottom, 0px));background:var(--bg);z-index:150;display:none;flex-direction:column;padding-top:env(safe-area-inset-top, 0px)}
.view-plan.on{display:flex}
.view-tasks-header{padding:14px 16px 8px;display:flex;align-items:center;justify-content:space-between;gap:10px}
.view-tasks-header .title{font-size:22px;font-weight:800;letter-spacing:-.4px;color:var(--text)}
.view-tasks-header .actions{display:flex;gap:6px}
.tasks-segments{padding:0 16px 8px}
.tasks-origin{display:flex;gap:6px;padding:0 16px 8px;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.tasks-origin::-webkit-scrollbar{display:none}
.tasks-origin .ftag{font-size:13px;padding:6px 12px}
.task-meta .pill.origin{color:var(--text2)}
.task-meta .pill.src{color:var(--purple,#bf5af2)}
.tasks-search{padding:0 16px 8px;display:none}
.tasks-search.on{display:block}
.tasks-search input{width:100%;padding:9px 12px;border-radius:9px;border:1px solid var(--separator);background:var(--fill2);color:var(--text);font-size:14px;font-family:inherit;outline:none}
.tasks-list{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:0 0 100px}
.tasks-list .section-h{padding:14px 16px 6px;font-size:11px;font-weight:700;color:var(--text3);text-transform:uppercase;letter-spacing:1px;font-family:'JetBrains Mono',monospace}
.tasks-list .section-h .cnt{margin-left:6px;color:var(--text3)}
.task-row{display:flex;align-items:flex-start;gap:10px;padding:10px 16px;border-bottom:1px solid var(--separator);position:relative;background:var(--bg);transition:background-color .15s;-webkit-tap-highlight-color:transparent;cursor:pointer}
.task-row:active{background:var(--fill2)}
.task-row.completed .task-title{text-decoration:line-through;color:var(--text3)}
.task-check{flex-shrink:0;width:22px;height:22px;border-radius:50%;border:1.5px solid var(--text3);margin-top:1px;display:flex;align-items:center;justify-content:center;cursor:pointer;-webkit-tap-highlight-color:transparent;background:transparent;transition:background-color .15s, border-color .15s}
.task-check.done{background:var(--accent);border-color:var(--accent);color:#fff}
.task-check.done:after{content:'✓';font-size:12px;font-weight:700}
.task-check.p1{border-color:#5856d6}
.task-check.p2{border-color:var(--orange,#ff9500)}
.task-check.p3{border-color:#ff3b30}
.task-body{flex:1;min-width:0}
.task-title{font-size:15px;color:var(--text);font-weight:500;line-height:1.3;word-wrap:break-word}
.task-title .flag{margin-right:4px}
.task-meta{margin-top:4px;display:flex;flex-wrap:wrap;gap:6px;font-size:12px;color:var(--text2);align-items:center}
.task-meta .pill{display:inline-flex;align-items:center;gap:4px;padding:2px 9px;background:var(--fill2);border-radius:var(--r-pill);font-size:11px;font-weight:500}
.task-meta .pill.contact{color:var(--accent)}
.task-meta .pill.place{color:#34c759}
.task-meta .pill.due-overdue{color:#ff3b30;background:rgba(255,59,48,0.12)}
.task-meta .pill.due-today{color:var(--orange,#ff9500);background:rgba(255,149,0,0.12)}
.task-meta .pill.due-future{color:var(--text2)}
.task-meta .pill.tag{color:var(--text2)}
/* Swipe-actions wrapper для task-row */
.task-row-wrap{position:relative;overflow:hidden;background:var(--bg);border-bottom:1px solid var(--separator);touch-action:pan-y}
.task-row-wrap .task-row{border-bottom:0;will-change:transform;transition:transform .25s cubic-bezier(.2,.7,.3,1.1);background:var(--bg)}
.task-row-wrap.swiping .task-row{transition:none}
.task-row-wrap.removing{max-height:80px;transition:max-height .25s ease, opacity .2s ease;opacity:1}
.task-row-wrap.removing.gone{max-height:0;opacity:0;overflow:hidden}
.task-row-wrap .swipe-bg{position:absolute;top:0;bottom:0;width:50%;display:flex;align-items:center;font-size:20px;color:#fff;font-weight:600;padding:0 22px;pointer-events:none;opacity:0;transition:background-color .15s, opacity .12s}
.task-row-wrap .swipe-bg .swipe-ico{display:inline-flex;align-items:center;gap:6px;font-size:15px;letter-spacing:.2px}
.task-row-wrap .swipe-bg.left{right:0;justify-content:flex-end;background:#34c759}
.task-row-wrap .swipe-bg.left.danger{background:#ff3b30}
.task-row-wrap .swipe-bg.right{left:0;justify-content:flex-start;background:#0a84ff}
.task-row-wrap.show-left .swipe-bg.left{opacity:1}
.task-row-wrap.show-right .swipe-bg.right{opacity:1}
/* Confirm bottom-sheet */
.confirm-sheet{position:fixed;left:0;right:0;top:0;bottom:0;z-index:300;display:none;pointer-events:none}
.confirm-sheet.on{display:block;pointer-events:auto}
.confirm-sheet .cs-bg{position:absolute;inset:0;background:rgba(0,0,0,.5);opacity:0;transition:opacity .2s}
.confirm-sheet.on .cs-bg{opacity:1}
.confirm-sheet .cs-body{position:absolute;left:8px;right:8px;bottom:calc(8px + env(safe-area-inset-bottom, 0px));background:var(--bg2);border-radius:14px;padding:14px;transform:translateY(20px);opacity:0;transition:transform .25s cubic-bezier(.2,.7,.3,1.1), opacity .2s}
.confirm-sheet.on .cs-body{transform:translateY(0);opacity:1}
.confirm-sheet .cs-title{font-size:15px;font-weight:600;color:var(--text);text-align:center;padding:10px 8px 6px}
.confirm-sheet .cs-desc{font-size:13px;color:var(--text2);text-align:center;padding:0 8px 10px;line-height:1.4}
.confirm-sheet .cs-btn{display:block;width:100%;padding:13px 0;border-radius:10px;border:0;font-family:inherit;font-size:16px;font-weight:500;cursor:pointer;-webkit-tap-highlight-color:transparent;margin-top:6px}
.confirm-sheet .cs-btn.primary{background:var(--accent);color:#fff}
.confirm-sheet .cs-btn.danger{background:#ff3b30;color:#fff;font-weight:600}
.confirm-sheet .cs-btn.cancel{background:var(--fill2);color:var(--text)}
.tasks-empty{padding:60px 24px;text-align:center;color:var(--text3);font-size:14px;line-height:1.5}
.tasks-quick-add{position:fixed;left:0;right:0;bottom:calc(60px + env(safe-area-inset-bottom, 0px));padding:8px 12px max(12px,env(safe-area-inset-bottom, 0px));background:linear-gradient(to top, var(--bg) 70%, transparent);z-index:151;display:none}
.tasks-quick-add.on{display:block}
.tasks-quick-add .qa-row{display:flex;gap:6px;align-items:center;background:var(--surface);border:1px solid var(--separator);border-radius:14px;padding:8px 10px;box-shadow:0 4px 16px rgba(0,0,0,.1)}
.tasks-quick-add input{flex:1;border:0;background:transparent;color:var(--text);font-size:15px;font-family:inherit;outline:none;padding:4px 6px;min-width:0}
.tasks-quick-add .qa-add{flex-shrink:0;width:34px;height:34px;border-radius:10px;background:var(--accent);color:#fff;border:0;font-size:18px;font-weight:600;cursor:pointer;-webkit-tap-highlight-color:transparent}
.tasks-quick-add .qa-add:disabled{opacity:.4}
.tasks-quick-add .qa-chips{display:flex;flex-wrap:wrap;gap:4px;padding:6px 10px 0;font-size:11px;color:var(--text3)}
.tasks-quick-add .qa-chip{display:inline-flex;align-items:center;gap:3px;padding:2px 7px;background:var(--accent);color:#fff;border-radius:9px;font-size:11px;font-weight:500}
.tasks-quick-add .qa-chip.contact{background:var(--accent)}
.tasks-quick-add .qa-chip.date{background:var(--orange,#ff9500)}
.tasks-quick-add .qa-chip.priority{background:#ff3b30}
.tasks-quick-add .qa-chip.tag{background:var(--text3)}
.tasks-quick-add .qa-chip .x{margin-left:4px;opacity:.8;cursor:pointer}
.task-group{border-bottom:1px solid var(--separator)}
.task-group-h{display:flex;align-items:center;justify-content:space-between;padding:12px 16px 8px;cursor:pointer;-webkit-tap-highlight-color:transparent}
.task-group-h .label{font-size:14px;font-weight:600;color:var(--text);display:flex;align-items:center;gap:6px}
.task-group-h .label .ico{font-size:16px}
.task-group-h .cnt{font-size:12px;color:var(--text3);font-family:'JetBrains Mono',monospace}
.task-group-h .arrow{color:var(--text3);font-size:11px;transition:transform .15s}
.task-group.collapsed .arrow{transform:rotate(-90deg)}
.task-group-body{display:block}
.task-group.collapsed .task-group-body{display:none}
/* Task detail modal */
.task-detail-row{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--separator)}
.task-detail-row .ll{flex:0 0 90px;font-size:12px;color:var(--text3);text-transform:uppercase;letter-spacing:.5px;font-family:'JetBrains Mono',monospace}
.task-detail-row .vv{flex:1;font-size:14px;color:var(--text)}
.task-detail-row select,.task-detail-row input[type="text"],.task-detail-row input[type="datetime-local"],.task-detail-row input[type="date"]{width:100%;background:var(--fill2);border:1px solid var(--separator);color:var(--text);font-family:inherit;font-size:14px;padding:7px 9px;border-radius:8px;outline:none}
.task-priority-segs{display:flex;gap:4px}
.task-priority-segs .pseg{flex:1;padding:6px 0;border-radius:8px;border:1px solid var(--separator);background:var(--fill2);color:var(--text2);font-size:13px;text-align:center;cursor:pointer;-webkit-tap-highlight-color:transparent;font-family:inherit}
.task-priority-segs .pseg.on{background:var(--accent);color:#fff;border-color:var(--accent);font-weight:600}
.task-priority-segs .pseg.p1.on{background:#5856d6;border-color:#5856d6}
.task-priority-segs .pseg.p2.on{background:var(--orange,#ff9500);border-color:var(--orange,#ff9500)}
.task-priority-segs .pseg.p3.on{background:#ff3b30;border-color:#ff3b30}
.repeat-dow{min-width:36px;padding:6px 10px;border-radius:8px;border:1px solid var(--separator);background:var(--fill2);color:var(--text2);font-size:13px;cursor:pointer;-webkit-tap-highlight-color:transparent;font-family:inherit}
.repeat-dow.on{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}
.subtask-row{display:flex;align-items:center;gap:8px;padding:5px 0}
.subtask-row .sb-check{flex-shrink:0;width:18px;height:18px;border-radius:50%;border:1.5px solid var(--text3);display:flex;align-items:center;justify-content:center;cursor:pointer;-webkit-tap-highlight-color:transparent;background:transparent}
.subtask-row .sb-check.done{background:var(--accent);border-color:var(--accent);color:#fff}
.subtask-row .sb-check.done:after{content:'✓';font-size:10px}
.subtask-row input{flex:1;background:transparent;border:0;color:var(--text);font-family:inherit;font-size:14px;outline:none;padding:3px 0}
.subtask-row.done input{text-decoration:line-through;color:var(--text3)}
.subtask-row .sb-del{flex-shrink:0;color:var(--text3);background:transparent;border:0;font-size:14px;cursor:pointer;padding:4px}
.contact-picker-row{display:flex;align-items:center;gap:8px;padding:9px 12px;border-bottom:1px solid var(--separator);cursor:pointer;-webkit-tap-highlight-color:transparent}
.contact-picker-row:active{background:var(--fill2)}
.contact-picker-row .ico{font-size:18px;flex-shrink:0}
.contact-picker-row .name{flex:1;font-size:14px;color:var(--text)}
.contact-picker-row .place{font-size:11px;color:var(--text3)}
/* Tasks section in contact card */
.ct-tasks-block{margin-bottom:14px}
.ct-tasks-row{display:flex;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--separator);border-radius:10px;margin-bottom:6px;cursor:pointer;-webkit-tap-highlight-color:transparent}
.ct-tasks-row:active{background:var(--fill2)}
.ct-tasks-row .tt{flex:1;min-width:0;font-size:13px;color:var(--text);line-height:1.3}
.ct-tasks-row .due{flex-shrink:0;font-size:11px;color:var(--text3)}
.ct-tasks-row.completed .tt{text-decoration:line-through;color:var(--text3)}
.ct-tasks-add{display:flex;align-items:center;gap:6px;padding:8px 10px;border:1px dashed var(--separator);border-radius:10px;color:var(--accent);font-size:13px;cursor:pointer;-webkit-tap-highlight-color:transparent}
.view-routemap-header{padding:14px 16px 10px;font-size:22px;font-weight:800;letter-spacing:-.4px;color:var(--text)}
.view-routemap-canvas{flex:1;min-height:0;margin:0 12px 12px;border-radius:14px;overflow:hidden;background:var(--bg2)}
.view-routemap-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px 32px;text-align:center;color:var(--text3);font-size:14px}
.view-routemap-empty .icon{font-size:48px;margin-bottom:12px;opacity:.6}
.route-marker-num{background:var(--accent);color:#fff;font-weight:700;font-size:13px;width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;border:2px solid #fff;box-shadow:0 2px 6px rgba(0,0,0,.3)}
.route-marker-num.doctor{background:#ff3b30}
.route-marker-num.finish{background:#5856d6;width:32px;height:32px;font-size:16px}
/* Override Leaflet tooltip to match system look */
.leaflet-tooltip{font-family:inherit;font-size:12px;font-weight:500;background:var(--bg);color:var(--text);border:.5px solid var(--separator);box-shadow:0 4px 12px rgba(0,0,0,.15)}
.leaflet-tooltip-top:before,.leaflet-tooltip-bottom:before,.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{display:none}

/* Чекбокс «в плане» на карточке контакта */
.plan-check{flex-shrink:0;width:28px;height:28px;border-radius:50%;border:1.5px solid var(--border);background:transparent;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .15s var(--ease);-webkit-tap-highlight-color:transparent;padding:0;margin-left:0}
.plan-check svg{width:16px;height:16px;color:#fff;opacity:0;transition:opacity .15s var(--ease)}
.plan-check.on{background:var(--accent);border-color:var(--accent)}
.plan-check.on svg{opacity:1}
/* Contact is in the plan only on other days (not on planDate): accent outline, no fill */
.plan-check.part{border-color:var(--accent)}
.plan-check.part svg{opacity:.5;color:var(--accent)}
.plan-check:active{transform:scale(.88)}

/* Шапка вкладки «Сегодня» */
.today-header{padding:10px 16px 12px;display:flex;flex-direction:column;align-items:stretch;gap:10px}
.today-count{font-size:13px;color:var(--text2);font-weight:500}
/* s022 (p.96): quarter summary pill above the day strip; colour by quarter.status */
.q-pill{align-self:flex-start;max-width:100%;display:block;border:0;border-radius:var(--r-pill);padding:5px 12px;background:var(--fill3);color:var(--text2);font-size:12px;font-weight:600;font-family:inherit;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;-webkit-tap-highlight-color:transparent}
.q-pill:active{opacity:.6}
.q-pill.st-green, .q-head.st-green .q-st{background:var(--tint-green);color:var(--green)}
.q-pill.st-yellow, .q-head.st-yellow .q-st{background:var(--tint-orange);color:var(--orange)}
.q-pill.st-red, .q-head.st-red .q-st{background:var(--tint-red);color:var(--red)}
.q-head{padding:14px 16px 12px;border-bottom:.5px solid var(--separator)}
.q-big{font-size:22px;font-weight:700;color:var(--text);font-variant-numeric:tabular-nums}
.q-big .q-of{font-size:15px;font-weight:500;color:var(--text2)}
.q-bar{position:relative;height:8px;margin:10px 0 8px;border-radius:var(--r-pill);background:var(--fill2);overflow:hidden}
.q-bar .q-fill{position:absolute;left:0;top:0;bottom:0;border-radius:var(--r-pill);background:var(--text3)}
.q-head.st-green .q-fill{background:var(--green)}
.q-head.st-yellow .q-fill{background:var(--orange)}
.q-head.st-red .q-fill{background:var(--red)}
.q-bar .q-exp{position:absolute;top:0;bottom:0;width:2px;background:var(--text)}
.q-st{display:inline-block;padding:3px 10px;border-radius:var(--r-pill);font-size:12px;font-weight:600}
.q-row{display:flex;align-items:baseline;gap:12px;padding:11px 16px;border-bottom:.5px solid var(--separator);font-size:15px;color:var(--text)}
.q-row .q-l{flex:1;min-width:0}
.q-row .q-v{flex-shrink:0;font-weight:600;font-variant-numeric:tabular-nums}
.q-note{padding:10px 16px 16px;font-size:12px;color:var(--text3);line-height:1.45}
/* s022 (p.99): «📍 Рядом» bar on «Сегодня» — nearest not-done plan contact within 200 m (watchPosition while the tab is open) */
.nearby-bar{display:flex;align-items:center;gap:8px;padding:8px 6px 8px 12px;border-radius:var(--r2);background:var(--tint-blue);color:var(--text);font-size:14px;line-height:1.3}
.nearby-bar .nb-txt{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.nearby-bar .nb-lpu{color:var(--text2)}
.nb-btn{flex-shrink:0;border:0;border-radius:var(--r-pill);padding:7px 12px;background:var(--green);color:#fff;font-size:13px;font-weight:600;font-family:inherit;cursor:pointer;white-space:nowrap;-webkit-tap-highlight-color:transparent}
.nb-btn.info{background:var(--tint-orange);color:var(--orange)}
.nearby-bar.mode-b{background:var(--tint-orange)}
.nearby-bar.mode-b .nb-txt{-webkit-line-clamp:3}
.nb-btn.add{background:var(--accent)}
.nb-btn:disabled{opacity:.5}
.nb-x{flex-shrink:0;border:0;background:transparent;color:var(--text2);font-size:16px;padding:6px 8px;font-family:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}
.today-count.other-day{align-self:flex-start;color:var(--orange);background:var(--tint-orange);border-radius:var(--r-pill);padding:4px 10px;font-weight:600}   /* s019: plan is not for today */
/* Plan day strip on «Сегодня»: today + next working days, «Ещё…» opens the native 14-day select */
.plan-days{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;margin:0 -16px;padding:0 16px}
.plan-days::-webkit-scrollbar{display:none}
.pd-chip{display:inline-flex;align-items:center;gap:6px}
.pd-chip .pd-pre{font-weight:600}
.pd-n{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:var(--r-pill);background:var(--accent);color:#fff;font-size:11px;font-weight:700;line-height:1;font-variant-numeric:tabular-nums}
.pd-chip.on .pd-n{background:#fff;color:var(--accent)}
.pd-more{position:relative;flex-shrink:0;display:inline-flex;align-items:center;padding:7px 14px;border-radius:var(--r-pill);background:var(--fill3);color:var(--text2);font-size:14px;font-weight:500;white-space:nowrap;overflow:hidden}
.pd-more select{position:absolute;inset:0;width:100%;height:100%;opacity:0;border:0;-webkit-appearance:none;appearance:none;font-size:16px;cursor:pointer}
/* «В план» sheet: one row per day */
.pds-sub{padding:10px 16px;font-size:13px;color:var(--text2);line-height:1.3}
.pds-trust{display:flex;align-items:center;gap:10px;padding:4px 16px 10px;font-size:13px;color:var(--text)}   /* s031 (p.126): «показать непроверенных» in the «В план» sheet */
.pds-trust .pds-trust-l{flex:1;min-width:0;line-height:1.3}
.pds-trust small{display:block;font-size:11px;color:var(--text3)}
.pd-row.loading .check{opacity:0}
.pd-row.loading, .pd-row.busy{opacity:.5;pointer-events:none}
.pd-row .pd-cnt{flex-shrink:0;font-size:12px;font-weight:600;padding:3px 10px;border-radius:var(--r-pill);background:var(--fill3);color:var(--text2);font-variant-numeric:tabular-nums}
.pd-row.selected .pd-cnt{background:var(--tint-blue);color:var(--accent)}
/* Address sections (s021): a doctor list grouped by the branch address, styled after .picker-group */
.addr-group{display:flex;align-items:center;gap:8px;padding:6px 10px 6px 16px;background:var(--fill2);color:var(--text2);font-size:13px;font-weight:600;border-bottom:.5px solid var(--separator)}
.addr-group + .addr-group, .doctor-card + .addr-group{border-top:.5px solid var(--separator)}
.addr-group .ag-label{flex:1;min-width:0;color:var(--text);line-height:1.3;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
.addr-group .ag-n{flex-shrink:0;font-weight:500;font-variant-numeric:tabular-nums}
.addr-group.off .ag-label{color:var(--text2)}
.addr-add{flex-shrink:0;border:0;border-radius:var(--r-pill);padding:4px 11px;background:var(--tint-blue);color:var(--accent);font-size:12px;font-weight:600;font-family:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;white-space:nowrap}
.addr-add:active{opacity:.6}
.addr-add[disabled]{background:var(--fill3);color:var(--text2);pointer-events:none}
.sd-plan-btn{width:100%;border:0;border-radius:var(--r-btn);padding:11px 14px;font-size:14px;font-weight:600;font-family:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;background:var(--accent);color:#fff;box-shadow:var(--shadow-btn);transition:transform .12s var(--ease), opacity .15s;margin-bottom:12px}
.sd-plan-btn.on{background:var(--fill2);color:var(--text);box-shadow:none}
.sd-plan-btn:active{opacity:.85;transform:scale(.98)}
.btn-clear-plan{background:var(--red);color:#fff;border:0;border-radius:var(--r-btn);padding:9px 14px;font-size:13px;font-weight:600;cursor:pointer;font-family:inherit;-webkit-tap-highlight-color:transparent;box-shadow:var(--shadow-btn);transition:transform .12s var(--ease), opacity .15s}
.btn-clear-plan:active{opacity:.8;transform:scale(.97)}
.btn-clear-plan[disabled]{opacity:.35;pointer-events:none;box-shadow:none}
.btn-here{background:var(--accent);color:#fff;border:0;border-radius:var(--r-btn);padding:9px 14px;font-size:13px;font-weight:600;cursor:pointer;font-family:inherit;-webkit-tap-highlight-color:transparent;display:inline-flex;align-items:center;gap:5px;box-shadow:var(--shadow-btn);transition:transform .12s var(--ease), opacity .15s, background-color .15s}
.btn-here:active{opacity:.85;transform:scale(.97)}
.btn-here.busy{opacity:.6;pointer-events:none}
.btn-here.off{background:var(--fill1);color:var(--text2);box-shadow:none}
.today-actions{display:flex;gap:8px;flex-wrap:nowrap;align-items:flex-start;justify-content:space-around}
/* iOS «Places»-style action tiles — circle icon + caption */
.action-tile{background:transparent;border:0;padding:0;display:inline-flex;flex-direction:column;align-items:center;gap:5px;cursor:pointer;font-family:inherit;-webkit-tap-highlight-color:transparent;width:64px;flex-shrink:0;transition:opacity .15s, transform .12s var(--ease)}
.action-tile:active{transform:scale(.94);opacity:.85}
.action-tile .tile-icon{width:48px;height:48px;border-radius:50%;background:var(--fill2);color:var(--text);display:inline-flex;align-items:center;justify-content:center;box-shadow:var(--shadow-card);transition:background-color .15s, color .15s, box-shadow .15s}
.action-tile .tile-icon svg{width:22px;height:22px}
.action-tile .tile-label{font-size:11px;font-weight:600;color:var(--text2);text-align:center;letter-spacing:-.1px;max-width:72px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.2}
.action-tile.primary .tile-icon{background:var(--accent);color:#fff;box-shadow:var(--shadow-btn)}
.action-tile.primary .tile-label{color:var(--text)}
.action-tile.on .tile-icon{background:var(--accent);color:#fff;box-shadow:var(--shadow-btn)}
.action-tile.on .tile-label{color:var(--accent)}
.action-tile.danger .tile-icon{background:var(--tint-red);color:var(--red)}
.action-tile.danger:active .tile-icon{background:var(--red);color:#fff}
.action-tile.busy{opacity:.55;pointer-events:none}
.action-tile[disabled]{opacity:.35;pointer-events:none}
.route-summary{padding:6px 16px 10px;display:flex;align-items:center;gap:10px;font-size:12px;color:var(--text2);border-bottom:.5px solid var(--separator)}
.route-summary .from{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.route-summary .from.stale-warn{color:#a86b00;font-weight:600}
.route-summary .from.stale-bad{color:var(--red);font-weight:700}
.route-summary .totals{font-weight:600;color:var(--accent);white-space:nowrap}
.route-leg{display:flex;align-items:center;gap:5px;margin-top:3px;font-size:11px;font-weight:600;color:var(--accent);font-feature-settings:"tnum"}
.route-leg .order{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;background:var(--accent);color:#fff;font-size:10px;font-weight:700;line-height:1}
.route-leg .finish-mark{display:inline-flex;align-items:center;gap:3px;margin-left:6px;padding:2px 9px;border-radius:var(--r-pill);background:var(--tint-blue);font-size:10px;font-weight:700;letter-spacing:.3px;text-transform:uppercase}
.navi-row{display:flex;align-items:center;margin-top:3px}   /* s024 (p.101b): 🧭 without a route row */
.navi-btn{margin-left:auto;border:0;background:transparent;color:var(--accent);font-size:16px;line-height:1;padding:2px 6px;cursor:pointer;-webkit-tap-highlight-color:transparent;border-radius:6px}
.navi-btn:active{background:color-mix(in srgb, var(--accent) 18%, transparent)}
.map-popup-navi{display:inline-flex;align-items:center;gap:4px;margin-top:6px;padding:5px 10px;background:var(--accent);color:#fff;border:0;border-radius:8px;font-size:12px;font-weight:600;cursor:pointer;font-family:inherit;-webkit-tap-highlight-color:transparent;text-decoration:none}
.map-popup-navi:active{opacity:.8}

/* Финиш-картчока (home) в конце списка на «Сегодня» */
.finish-home-card{display:flex;align-items:center;gap:14px;padding:14px 16px;background:color-mix(in srgb, var(--accent) 8%, transparent);border-top:.5px solid var(--separator);border-bottom:.5px solid var(--separator);font-family:inherit}
.finish-home-card .icon{font-size:24px;width:42px;height:42px;display:flex;align-items:center;justify-content:center;background:var(--card);border-radius:50%}
.finish-home-card .body{flex:1;min-width:0}
.finish-home-card .label{font-size:15px;font-weight:600;color:var(--text)}
.finish-home-card .sub{font-size:12px;color:var(--text2);margin-top:2px}
.finish-home-card .leg{font-size:11px;font-weight:600;color:var(--accent);margin-top:4px;font-feature-settings:"tnum"}

/* Кнопка-пилюля «🏁 Финиш» в шапке Сегодня */
.finish-btn{background:var(--fill1);color:var(--text);border:0;border-radius:10px;padding:8px 12px;font-size:13px;font-weight:600;cursor:pointer;font-family:inherit;-webkit-tap-highlight-color:transparent;display:inline-flex;align-items:center;gap:5px;max-width:170px;overflow:hidden}
.finish-btn .val{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.finish-btn:active{opacity:.7}
.finish-btn.on{background:var(--accent);color:#fff}

/* Picker rows */
.finish-row{display:flex;align-items:center;gap:12px;padding:14px 16px;border-bottom:.5px solid var(--separator);cursor:pointer;-webkit-tap-highlight-color:transparent;font-family:inherit;background:transparent;border-left:0;border-right:0;border-top:0;width:100%;text-align:left}
.finish-row:active{background:var(--fill2)}
.finish-row .rdot{flex-shrink:0;width:20px;height:20px;border-radius:50%;border:2px solid var(--border);display:flex;align-items:center;justify-content:center}
.finish-row.on .rdot{border-color:var(--accent)}
.finish-row.on .rdot::after{content:"";width:10px;height:10px;border-radius:50%;background:var(--accent)}
.finish-row.disabled{opacity:.4;pointer-events:none}
.finish-row .body{flex:1;min-width:0}
.finish-row .ttl{font-size:15px;color:var(--text);font-weight:500}
.finish-row .sub{font-size:12px;color:var(--text2);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.finish-sec-label{padding:14px 16px 6px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--text3)}

/* Route timing settings */
.route-cfg-row{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:.5px solid var(--separator)}
.route-cfg-row:last-of-type{border-bottom:0}
.route-cfg-label{flex:1;font-size:14px;color:var(--text)}
.route-cfg-input{width:60px;background:var(--fill1);border:0;border-radius:8px;padding:6px 8px;font-size:14px;color:var(--text);font-family:inherit;text-align:right;font-feature-settings:"tnum"}
.route-cfg-unit{font-size:12px;color:var(--text3);min-width:24px}

/* TSPTW в карточках маршрута: ETA / ожидание / не работает / поздно */
.tsptw-info{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:3px;font-size:11px;font-weight:600;font-feature-settings:"tnum"}
.tsptw-eta{color:var(--accent);background:color-mix(in srgb, var(--accent) 12%, transparent);padding:1px 7px;border-radius:8px}
.tsptw-wait{color:#a86b00;background:color-mix(in srgb, #ffb84d 18%, transparent);padding:1px 7px;border-radius:8px}
.tsptw-wait.over{color:#fff;background:#ff9500}
.tsptw-noday{color:#a86b00;background:color-mix(in srgb, #ffb84d 18%, transparent);padding:1px 7px;border-radius:8px}
/* s021: day v2 — tight window, «Не влезли» / «Сделано» blocks, day summary, swipe «Визит сделан» */
.tsptw-tight{color:var(--orange);background:var(--tint-orange);padding:1px 7px;border-radius:8px}
.uf-reason{color:var(--text2);background:var(--fill2);padding:1px 7px;border-radius:8px}
.tsptw-unknown{color:var(--text2);background:var(--fill2);padding:1px 7px;border-radius:8px}
.tsptw-unknown .uk-win{white-space:nowrap}
.done-at{color:var(--green);background:var(--tint-green);padding:1px 7px;border-radius:8px}
.done-undo{border:0;border-radius:var(--r-pill);padding:2px 10px;background:var(--fill2);color:var(--text);font-size:11px;font-weight:600;font-family:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}
.addr-group.day-block{border-top:.5px solid var(--separator);padding-top:9px;padding-bottom:9px}
.addr-group.day-block.done-h .ag-label{color:var(--green)}
.plan-check.done{background:var(--green);border-color:var(--green)}
.plan-check.done svg{opacity:1}
.card-wrap{position:relative;overflow:hidden;touch-action:pan-y}
.card-wrap + .card-wrap, .doctor-card + .card-wrap, .card-wrap + .doctor-card, .card-wrap + .finish-home-card{border-top:.5px solid var(--separator)}
.card-wrap > .doctor-card{background:var(--surface);will-change:transform;transition:transform .25s cubic-bezier(.2,.7,.3,1.1)}
.card-wrap > .doctor-card:active{background:var(--fill2)}
.card-wrap.swiping > .doctor-card{transition:none}
.card-wrap .swipe-bg{position:absolute;inset:0;display:flex;align-items:center;padding:0 22px;color:#fff;font-size:15px;font-weight:600;pointer-events:none;opacity:0;transition:opacity .12s}
.card-wrap .swipe-bg.right{justify-content:flex-start;background:var(--green)}
.card-wrap .swipe-bg.left{justify-content:flex-end;background:var(--orange)}
.card-wrap.show-right .swipe-bg.right, .card-wrap.show-left .swipe-bg.left{opacity:1}
.card-wrap.is-done .doctor-avatar, .card-wrap.is-done .doctor-info > :not(.tsptw-info), .card-wrap.is-done .doctor-meta{opacity:.45}
.today-count .ds-done{color:var(--green);font-weight:600}
.today-count .ds-fin{font-weight:700}
.today-count .ds-fin.ok{color:var(--green)}
.today-count .ds-fin.over{color:var(--orange)}
.d-done{display:flex;align-items:center;gap:8px;margin-bottom:12px}
.d-done-btn.future{opacity:.45}   /* s022 (p.97): a future plan date — tap explains why */
.d-done-btn{flex:1;border:0;border-radius:12px;padding:11px 14px;background:var(--green);color:#fff;font-size:15px;font-weight:600;font-family:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}
.d-done-btn.undo{flex:0 0 auto;background:var(--fill2);color:var(--text)}
.d-done-at{flex:1;font-size:14px;font-weight:600;color:var(--green)}
/* s038 (p.163): «не приняли» — red marks (done stays green); the doctor-card row wraps when both buttons do not fit */
.d-done{flex-wrap:wrap}
.d-noshow-btn{flex:0 0 auto;border:0;border-radius:var(--r-btn);padding:11px 14px;background:var(--tint-red);color:var(--red);font-size:15px;font-weight:600;font-family:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}
.d-noshow-btn.on{background:var(--red);color:#fff}
.d-noshow-btn.wide{flex:1 1 100%}   /* marked, or next to a done visit — own full-width row */
.d-noshow-btn.future{opacity:.45}
.noshow-at{color:var(--red);background:var(--tint-red);padding:1px 7px;border-radius:var(--r-pill)}
.noshow-undo{border:0;border-radius:var(--r-pill);padding:2px 10px;background:var(--fill2);color:var(--text);font-size:11px;font-weight:600;font-family:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}
.card-wrap .swipe-bg.left.noshow{background:var(--red)}
.card-wrap.is-noshow > .doctor-card{box-shadow:inset 3px 0 0 var(--red)}
.addr-group.day-block.noshow-h .ag-label{color:var(--red)}
.today-count .ds-noshow{color:var(--red);font-weight:600}
/* s038 (p.163/p.164): summary pill next to the quarter pill, «Не приняли» sheet, «Журнал дня» sheet */
.ns-row{display:flex;align-items:center;gap:8px;min-width:0}
.ns-row .ns-pill{flex:0 1 auto;min-width:0}
.ns-row .jr-pill{flex:0 0 auto}
.ns-pill, .jr-pill{max-width:100%;border:0;border-radius:var(--r-pill);padding:5px 12px;background:var(--fill3);color:var(--text2);font-size:12px;font-weight:600;font-family:inherit;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;-webkit-tap-highlight-color:transparent}
.ns-pill:active, .jr-pill:active{opacity:.6}
.ns-pill.has{background:var(--tint-red);color:var(--red)}
.ns-periods{padding:10px 16px;display:flex}
.ns-head{padding:4px 16px 12px;font-size:13px;color:var(--text2);border-bottom:.5px solid var(--separator)}
.ns-head .ns-big{font-size:22px;font-weight:700;color:var(--text);font-variant-numeric:tabular-nums;margin-right:4px}
.ns-sec{padding:14px 16px 6px;font-size:13px;font-weight:600;color:var(--text2);text-transform:uppercase;letter-spacing:.4px}
.ns-doc, .ns-day{display:flex;align-items:center;gap:10px;width:100%;padding:10px 16px;border:0;border-bottom:.5px solid var(--separator);background:transparent;color:var(--text);font-family:inherit;font-size:15px;text-align:left;cursor:pointer;-webkit-tap-highlight-color:transparent}
.ns-doc:active, .ns-day:active{background:var(--fill2)}
.ns-doc .ns-main, .ns-day .ns-main{flex:1;min-width:0;line-height:1.3}
.ns-doc .ns-sub, .ns-day .ns-sub{display:block;font-size:12px;color:var(--text2);margin-top:2px;overflow-wrap:anywhere}
.ns-n{flex-shrink:0;min-width:24px;padding:2px 8px;border-radius:var(--r-pill);background:var(--tint-red);color:var(--red);font-size:12px;font-weight:700;text-align:center;font-variant-numeric:tabular-nums}
.ns-msg{padding:28px 16px;text-align:center;font-size:14px;color:var(--text2);line-height:1.45}
.jr-bar{display:flex;align-items:center;gap:8px;padding:10px 16px}
.jr-nav{flex:0 0 auto;width:36px;height:36px;border:0;border-radius:var(--r-pill);background:var(--fill2);color:var(--text);font-size:20px;font-weight:600;font-family:inherit;line-height:1;cursor:pointer;-webkit-tap-highlight-color:transparent}
.jr-nav[disabled]{opacity:.35;pointer-events:none}
.jr-date-l{position:relative;flex:1;min-width:0;display:flex;align-items:center;justify-content:center;height:36px;border-radius:var(--r-pill);background:var(--fill3);color:var(--text);font-size:15px;font-weight:600;overflow:hidden}
.jr-date-l input{position:absolute;inset:0;width:100%;height:100%;opacity:0;border:0;-webkit-appearance:none;appearance:none;font-size:16px;cursor:pointer}
.jr-map{display:none;height:var(--jr-map-h);margin:0 16px 8px;border-radius:var(--r2);overflow:hidden;background:var(--fill3)}
.jr-ev{display:flex;align-items:flex-start;gap:10px;padding:10px 16px;border-bottom:.5px solid var(--separator);font-size:15px;color:var(--text)}
.jr-ev .jr-t{flex-shrink:0;min-width:44px;font-weight:600;font-variant-numeric:tabular-nums;color:var(--text2)}
.jr-ev .jr-main{flex:1;min-width:0;line-height:1.3}
.jr-ev .jr-sub{display:block;font-size:12px;color:var(--text2);margin-top:2px;overflow-wrap:anywhere}
.jr-ev.t-noshow .jr-what{color:var(--red)}
.jr-ev.t-done .jr-what{color:var(--green)}
.jr-ev.t-here .jr-what{color:var(--accent)}
.jr-tag{display:inline-block;margin-left:6px;padding:0 6px;border-radius:var(--r-pill);background:var(--fill2);color:var(--text2);font-size:11px;font-weight:600}
.route-cfg-hint{display:block;font-size:11px;color:var(--text3);margin-top:2px;line-height:1.3}
.route-cfg-input.wide{width:84px}
.route-cfg-note{font-size:12px;color:var(--text2);margin-top:8px;line-height:1.45;font-variant-numeric:tabular-nums}   /* s022 */

/* Home в настройках */
.home-set-btn{background:var(--accent);color:#fff;border:0;border-radius:10px;padding:9px 14px;font-size:13px;font-weight:600;cursor:pointer;font-family:inherit;-webkit-tap-highlight-color:transparent;display:inline-flex;align-items:center;gap:5px;margin-right:6px}
.home-set-btn:active{opacity:.7}
.home-set-btn.secondary{background:var(--fill1);color:var(--text)}
.home-set-btn.danger{background:transparent;color:var(--red);padding:9px 8px}

/* Разделитель «без координат» */

/* Кнопка «Без расписания» в шапке (под поиском) */
/* CS-кнопка в header (рядом с обновлением) */
.cs-hbtn,.bell-hbtn{position:relative}
.cs-hbtn-badge{position:absolute;top:1px;right:1px;background:var(--orange, #ff9500);color:#fff;border-radius:9px;padding:0 5px;font-size:10px;font-weight:700;min-width:16px;height:16px;line-height:16px;text-align:center;box-shadow:0 0 0 2px var(--bg);font-feature-settings:"tnum"}
.cs-hbtn-badge.zero{display:none}
/* Notifications overlay */
#notif-overlay{position:fixed;inset:0;background:var(--bg);z-index:200;display:none;flex-direction:column;overflow:hidden}
#notif-overlay.open{display:flex}
.notif-header{padding:max(16px,env(safe-area-inset-top)) 16px 12px;display:flex;align-items:center;justify-content:space-between;gap:10px;border-bottom:1px solid var(--separator)}
.notif-title{font-size:20px;font-weight:700;color:var(--text)}
.notif-close{background:transparent;border:0;color:var(--accent);font-size:16px;font-weight:500;cursor:pointer;padding:6px;font-family:inherit}
.notif-segments{padding:10px 16px;display:flex;gap:0;border-bottom:1px solid var(--separator)}
.notif-segments .seg-control{flex:1}
.notif-list{flex:1;overflow-y:auto;padding:8px 0 max(40px,env(safe-area-inset-bottom));-webkit-overflow-scrolling:touch}
.notif-row{display:flex;gap:12px;padding:12px 16px;border-bottom:1px solid var(--separator);position:relative;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background-color .15s}
.notif-row:active{background:var(--fill2)}
.notif-row.unread{background:rgba(10,132,255,0.04)}
.notif-row.unread:before{content:'';position:absolute;left:6px;top:50%;transform:translateY(-50%);width:6px;height:6px;border-radius:50%;background:var(--accent)}
.notif-ico{flex-shrink:0;width:34px;height:34px;border-radius:9px;display:flex;align-items:center;justify-content:center;font-size:18px}
.notif-ico.success{background:rgba(52,199,89,0.15);color:#34c759}
.notif-ico.warning{background:rgba(255,149,0,0.15);color:#ff9500}
.notif-ico.error{background:rgba(255,59,48,0.15);color:#ff3b30}
.notif-ico.info{background:rgba(10,132,255,0.15);color:#0a84ff}
.notif-body{flex:1;min-width:0}
.notif-row-title{font-size:14px;font-weight:600;color:var(--text);margin-bottom:2px}
.notif-row-body{font-size:13px;color:var(--text2);line-height:1.4;white-space:pre-line}
.notif-row-time{font-size:11px;color:var(--text3);margin-top:4px;font-feature-settings:"tnum"}
.notif-empty{padding:60px 24px;text-align:center;color:var(--text3);font-size:14px;line-height:1.5}
.notif-mark-all{padding:10px 16px;text-align:right;border-bottom:1px solid var(--separator)}
.notif-mark-all button{background:transparent;border:0;color:var(--accent);font-size:13px;font-weight:500;cursor:pointer;padding:4px;font-family:inherit}
/* Schedule status in Settings */
.sched-status-card{background:var(--fill2);border-radius:10px;padding:12px 14px;margin-bottom:12px;font-size:13px;line-height:1.5}
.sched-pill{display:inline-block;padding:2px 8px;border-radius:12px;font-size:11px;font-weight:600;vertical-align:middle}
.sched-pill.ok{background:rgba(52,199,89,0.15);color:#34c759}
.sched-pill.partial{background:rgba(255,149,0,0.15);color:#ff9500}
.sched-pill.warn{background:var(--tint-orange);color:var(--orange)}
.sched-warn{margin-top:6px;padding:6px 8px;border-radius:8px;background:var(--tint-orange);color:var(--orange);font-size:12px;white-space:pre-line}   /* s022 p.88: rerun advised */
.sched-offline{padding:calc(var(--net-gap) - 2px) var(--net-gap);border-radius:var(--r-btn);background:var(--tint-orange);color:var(--orange);font-weight:600}   /* s026 p.104: offline, no copy — as .net-banner.off */
.sched-pill.error{background:rgba(255,59,48,0.15);color:#ff3b30}

/* Менеджер кастомного расписания */
.cs-section{padding:8px 16px}
.cs-section-title{font-size:11px;color:var(--text3);text-transform:uppercase;letter-spacing:.5px;font-weight:700;margin:14px 0 6px;padding:0 16px}
.cs-lpu-row{display:flex;align-items:center;gap:10px;padding:10px 12px;background:var(--surface);border:.5px solid var(--separator);border-radius:10px;margin-bottom:6px;cursor:pointer;-webkit-tap-highlight-color:transparent}
.cs-lpu-row .cs-lpu-check{width:22px;height:22px;border-radius:6px;border:2px solid var(--text3);display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .15s}
.cs-lpu-row.checked .cs-lpu-check{background:var(--accent);border-color:var(--accent)}
.cs-lpu-row.checked .cs-lpu-check svg{display:block}
.cs-lpu-row .cs-lpu-check svg{display:none;width:14px;height:14px;color:#fff}
.cs-lpu-row .cs-lpu-text{flex:1;font-size:13px;color:var(--text);line-height:1.3}
.cs-lpu-row .cs-lpu-count{font-size:11px;color:var(--text3);font-weight:600}

.cs-doc-group{margin-bottom:12px}
.cs-doc-group-hd{font-size:12px;color:var(--text2);font-weight:700;padding:8px 16px 4px}
.cs-doc-row{display:flex;align-items:center;gap:10px;padding:10px 12px;background:var(--surface);border:.5px solid var(--separator);border-radius:10px;margin:0 0 6px;cursor:pointer;-webkit-tap-highlight-color:transparent}
.cs-doc-row .cs-doc-info{flex:1;min-width:0}
.cs-doc-row .cs-doc-name{font-size:14px;font-weight:600;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cs-doc-row .cs-doc-status{font-size:11px;color:var(--text3);margin-top:2px}
.cs-doc-row .cs-doc-status.warn{color:var(--orange, #ff9500)}
.cs-doc-row .cs-doc-status.stale{color:var(--red)}
.cs-doc-actions{display:flex;gap:6px;flex-shrink:0}
.cs-action-btn{background:var(--fill2);border:0;border-radius:var(--r-pill);padding:7px 12px;font-size:12px;color:var(--text);cursor:pointer;-webkit-tap-highlight-color:transparent;font-weight:600;transition:transform .12s var(--ease), opacity .15s}
.cs-action-btn:active{transform:scale(.96);opacity:.85}
.cs-action-btn.primary{background:var(--accent);color:#fff;box-shadow:var(--shadow-btn)}
.cs-confirm{background:color-mix(in srgb, var(--green) 15%, transparent);color:var(--green);border-color:color-mix(in srgb, var(--green) 40%, transparent)}

/* Редактор расписания */
.cs-day-row{display:flex;align-items:center;gap:10px;padding:9px 12px;border-bottom:.5px solid var(--separator)}
.cs-day-label{width:34px;font-size:13px;font-weight:700;color:var(--text)}
.cs-day-row.off .cs-day-label{color:var(--text3)}
.cs-day-check{width:22px;height:22px;border-radius:6px;border:2px solid var(--text3);display:flex;align-items:center;justify-content:center;flex-shrink:0;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:all .15s}
.cs-day-row.on .cs-day-check{background:var(--accent);border-color:var(--accent)}
.cs-day-row.on .cs-day-check svg{display:block}
.cs-day-check svg{display:none;width:14px;height:14px;color:#fff}
.cs-day-times{display:flex;align-items:center;gap:6px;flex:1}
.cs-day-times input[type="time"]{flex:1;font-size:14px;padding:6px 8px;border:.5px solid var(--separator);border-radius:6px;background:var(--bg2,#f7f7f9);color:var(--text);font-family:inherit}
.cs-day-times .cs-dash{color:var(--text3);font-size:14px}
.cs-day-row.off .cs-day-times{opacity:.35;pointer-events:none}
.cs-editor-actions{padding:14px 16px;display:flex;gap:10px}
.cs-editor-actions .cs-delete{margin-left:auto;background:transparent;color:var(--red);border:1px solid color-mix(in srgb, var(--red) 30%, transparent);padding:8px 12px;border-radius:8px;font-size:13px;font-weight:600;-webkit-tap-highlight-color:transparent;cursor:pointer}

/* Бейдж 🛠 в карточке + истечение */
.doctor-hours .cs-flag{margin-left:6px;font-size:11px;color:var(--text3);font-weight:500}
.doctor-hours .cs-flag.warn{color:var(--orange, #ff9500);font-weight:600}
.doctor-hours .cs-flag.stale{color:var(--red);font-weight:600}
.doctor-hours .cs-flag.emias-noslot{color:var(--accent);font-weight:600}
.doctor-hours .cs-flag.basis{color:var(--text3);font-weight:500}   /* s027 (p.110): what the hours mean (shift / manual schedule) */

/* MODAL */
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.4);backdrop-filter:blur(2px);z-index:300;display:flex;align-items:flex-end;opacity:0;pointer-events:none;transition:opacity .25s var(--ease)}
.modal-overlay.open{opacity:1;pointer-events:all}
.modal{width:100%;max-width:680px;margin:0 auto;background:var(--surface);border-radius:14px 14px 0 0;border:0;padding:0 0 calc(40px + env(safe-area-inset-bottom, 0px));max-height:92vh;overflow-y:auto;transform:translateY(100%);transition:transform .35s var(--ease)}
.modal-overlay.open .modal{transform:translateY(0)}
.modal-handle{width:36px;height:5px;background:var(--text3);opacity:.4;border-radius:3px;margin:6px auto 0}
.modal-header{padding:14px 20px 14px;display:flex;align-items:center;justify-content:space-between;border-bottom:.5px solid var(--separator)}
.modal-title{font-size:17px;font-weight:800;letter-spacing:-.3px}
.modal-close{width:30px;height:30px;background:var(--surface);border:1px solid var(--border);border-radius:8px;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:14px;color:var(--text2);transition:all .15s}
.modal-close:hover{background:var(--surface2);color:var(--text)}
.modal-body{padding:18px 20px}

/* FORM */
.fg{margin-bottom:14px}
.fl{display:block;font-size:11px;font-weight:700;letter-spacing:.8px;text-transform:uppercase;color:var(--text3);margin-bottom:6px;font-family:ui-monospace,'SF Mono',Menlo,monospace}
.fi,.fta{width:100%;background:var(--surface);border:1px solid var(--border);border-radius:var(--r2);padding:10px 12px;color:var(--text);font-family:-apple-system,BlinkMacSystemFont,'SF Pro Text','SF Pro Display','Segoe UI',Roboto,sans-serif;font-size:14px;outline:none;transition:all .2s}
.fi:focus,.fta:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--glow)}
.fta{resize:none;min-height:90px;line-height:1.6}
.photo-picker{width:72px;height:72px;border-radius:16px;background:var(--surface);border:2px dashed var(--border);display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;position:relative;transition:all .2s;flex-shrink:0}
.photo-picker:hover{border-color:var(--accent)}
.photo-picker img{width:100%;height:100%;object-fit:cover;position:absolute;inset:0}
#photo-file{display:none}
.rel-wrap{display:flex;align-items:center;gap:10px}
.rel-slider{flex:1;-webkit-appearance:none;height:4px;border-radius:2px;background:var(--border);outline:none;cursor:pointer}
.rel-slider::-webkit-slider-thumb{-webkit-appearance:none;width:18px;height:18px;border-radius:50%;background:var(--accent);box-shadow:0 2px 6px var(--glow);cursor:pointer}
.rel-val{font-family:ui-monospace,'SF Mono',Menlo,monospace;font-size:13px;font-weight:700;min-width:20px;text-align:center}
.btn-save{width:100%;background:linear-gradient(135deg,var(--accent),#1d4ed8);border:none;border-radius:var(--r2);padding:14px;color:white;font-family:-apple-system,BlinkMacSystemFont,'SF Pro Text','SF Pro Display','Segoe UI',Roboto,sans-serif;font-size:15px;font-weight:700;cursor:pointer;margin-top:6px;transition:all .2s;box-shadow:0 4px 14px var(--glow)}
.btn-save:hover{transform:translateY(-1px)}
.btn-action{flex:1;padding:10px;border-radius:var(--r2);border:1px solid var(--border);background:var(--surface);color:var(--text2);font-family:-apple-system,BlinkMacSystemFont,'SF Pro Text','SF Pro Display','Segoe UI',Roboto,sans-serif;font-size:12px;font-weight:700;cursor:pointer;transition:all .15s;display:flex;align-items:center;justify-content:center;gap:5px}
.btn-action:hover{background:var(--surface2);color:var(--text)}
.btn-action.danger{color:var(--red);border-color:rgba(239,68,68,.3)}
.btn-action.danger:hover{background:rgba(239,68,68,.1)}
.btn-small{padding:7px 12px;background:var(--surface);border:1px solid var(--border);border-radius:8px;color:var(--text2);font-family:-apple-system,BlinkMacSystemFont,'SF Pro Text','SF Pro Display','Segoe UI',Roboto,sans-serif;font-size:12px;font-weight:600;cursor:pointer;transition:all .15s}
.btn-small:hover{background:var(--surface2);border-color:var(--accent);color:var(--accent2)}

/* DETAIL */
.detail-photo{width:100%;height:180px;background:var(--bg3);display:flex;align-items:center;justify-content:center;font-size:60px;overflow:hidden}
.detail-photo img{width:100%;height:100%;object-fit:cover}
.detail-name{font-size:20px;font-weight:800;letter-spacing:-.4px;margin-bottom:3px}
.detail-spec{font-size:12px;font-weight:700;color:var(--accent2);letter-spacing:.5px;text-transform:uppercase;margin-bottom:14px}
.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:14px}
.dc{background:var(--surface);border:1px solid var(--border);border-radius:var(--r2);padding:9px 11px}
.dc-l{font-size:10px;color:var(--text3);font-weight:700;text-transform:uppercase;letter-spacing:.8px;font-family:ui-monospace,'SF Mono',Menlo,monospace;margin-bottom:3px}
.dc-v{font-size:13px;font-weight:700}
.nb{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:12px;margin-bottom:10px}
.nb-l{font-size:10px;color:var(--text3);font-weight:700;text-transform:uppercase;letter-spacing:1px;font-family:ui-monospace,'SF Mono',Menlo,monospace;margin-bottom:6px}
.nb-t{font-size:13px;line-height:1.7;color:var(--text2);white-space:pre-wrap}
.action-row{display:flex;gap:8px;margin-top:14px}

/* VISIT LOG */
.visit-log{display:flex;flex-direction:column;gap:7px}
.visit-item{display:flex;align-items:flex-start;gap:10px;padding:10px;background:var(--surface);border-radius:var(--r2);border:1px solid var(--border)}
.vdot{width:7px;height:7px;border-radius:50%;background:var(--accent);margin-top:4px;flex-shrink:0}
.vdate{font-family:ui-monospace,'SF Mono',Menlo,monospace;font-size:10px;color:var(--text3);margin-bottom:1px}
.vnote{font-size:12px;color:var(--text2);line-height:1.5;white-space:pre-wrap}

/* RECORD */
.record-btn{width:100%;padding:14px;background:transparent;border:2px solid var(--border);border-radius:var(--r);color:var(--text2);font-family:-apple-system,BlinkMacSystemFont,'SF Pro Text','SF Pro Display','Segoe UI',Roboto,sans-serif;font-size:14px;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;transition:all .2s}
.record-btn:hover{border-color:var(--red);color:var(--red)}
.record-btn.recording{border-color:var(--red);background:rgba(239,68,68,.1);color:var(--red);animation:pulse 1.5s infinite}

/* Recording active UI */
.rec-active{background:linear-gradient(135deg,rgba(239,68,68,.07),rgba(239,68,68,.015));border:1px solid rgba(239,68,68,.28);border-radius:var(--r);padding:18px 16px 14px;margin-top:6px}
.rec-active.paused{background:linear-gradient(135deg,rgba(245,158,11,.07),rgba(245,158,11,.015));border-color:rgba(245,158,11,.3)}
.rec-status{display:flex;align-items:center;justify-content:center;gap:12px;margin-bottom:10px}
.rec-dot{width:12px;height:12px;border-radius:50%;background:#ef4444;animation:recPulse 1.4s ease-in-out infinite;box-shadow:0 0 0 0 rgba(239,68,68,.55)}
.rec-active.paused .rec-dot{background:#f59e0b;animation:none;opacity:.65;box-shadow:none}
@keyframes recPulse{0%{transform:scale(1);box-shadow:0 0 0 0 rgba(239,68,68,.55)}70%{transform:scale(1.15);box-shadow:0 0 0 12px rgba(239,68,68,0)}100%{transform:scale(1);box-shadow:0 0 0 0 rgba(239,68,68,0)}}
.rec-time{font-size:26px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--text);letter-spacing:1.5px;font-family:ui-monospace,'SF Mono',Menlo,monospace}
.rec-label{font-size:10px;color:var(--text3);text-transform:uppercase;letter-spacing:1.4px;font-weight:700;font-family:ui-monospace,'SF Mono',Menlo,monospace;text-align:center;margin-bottom:14px}
.rec-waves{display:flex;align-items:center;justify-content:center;gap:4px;height:34px;margin-bottom:14px}
.rec-waves span{display:block;width:4px;background:#ef4444;border-radius:3px;transform-origin:center;animation:recWave 1s ease-in-out infinite}
.rec-waves span:nth-child(1){animation-delay:0s;height:32%}
.rec-waves span:nth-child(2){animation-delay:.12s;height:62%}
.rec-waves span:nth-child(3){animation-delay:.24s;height:95%}
.rec-waves span:nth-child(4){animation-delay:.36s;height:50%}
.rec-waves span:nth-child(5){animation-delay:.48s;height:78%}
.rec-waves span:nth-child(6){animation-delay:.6s;height:38%}
.rec-waves span:nth-child(7){animation-delay:.72s;height:66%}
@keyframes recWave{0%,100%{transform:scaleY(.35)}50%{transform:scaleY(1.15)}}
.rec-active.paused .rec-waves span{animation-play-state:paused;background:#f59e0b;opacity:.55}
.rec-controls{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}
.rec-ctl{padding:11px 6px;border-radius:10px;font-size:13px;font-weight:600;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:5px;font-family:inherit;transition:transform .1s,opacity .15s}
.rec-ctl:active{transform:scale(.95)}
.rec-cancel{background:rgba(120,120,128,.16);color:var(--text2)}
.rec-pause{background:rgba(245,158,11,.16);color:#d97706}
.rec-finish{background:#10b981;color:#fff;box-shadow:0 1px 3px rgba(16,185,129,.3)}
@keyframes pulse{0%,100%{box-shadow:0 0 0 0 rgba(239,68,68,.3)}50%{box-shadow:0 0 0 8px rgba(239,68,68,0)}}

/* AI */
.ai-proc{background:linear-gradient(135deg,rgba(168,85,247,.08),rgba(59,130,246,.06));border:1px solid rgba(168,85,247,.22);border-radius:var(--r);padding:14px;margin-top:8px;display:none}
.ai-proc.show{display:block}
.ai-step{display:flex;align-items:center;gap:8px;padding:5px 0;font-size:12px;color:var(--text2)}
.ai-step .dot{width:7px;height:7px;border-radius:50%;background:var(--text3);flex-shrink:0;transition:background .3s}
.ai-step.active .dot{background:var(--purple);animation:blink 1s infinite}
.ai-step.done .dot{background:var(--green)}
@keyframes blink{0%,100%{opacity:1}50%{opacity:.3}}
.ai-res{background:linear-gradient(135deg,rgba(168,85,247,.05),rgba(59,130,246,.04));border:1px solid rgba(168,85,247,.18);border-radius:var(--r);padding:14px;margin-top:8px;display:none}
.ai-res.show{display:block}
.ai-badge{display:inline-block;font-size:10px;font-weight:700;background:rgba(168,85,247,.18);color:var(--purple);padding:2px 7px;border-radius:5px;font-family:ui-monospace,'SF Mono',Menlo,monospace;margin-bottom:8px}
.ai-text{font-size:12px;line-height:1.7;color:var(--text2);white-space:pre-wrap;margin-bottom:10px}
.ai-actions{display:flex;gap:7px}
.ai-rec{background:linear-gradient(135deg,rgba(16,185,129,.06),rgba(59,130,246,.04));border:1px solid rgba(16,185,129,.18);border-radius:var(--r);padding:12px;margin-bottom:10px}
.ai-rec-l{font-size:10px;font-weight:700;color:var(--green);text-transform:uppercase;letter-spacing:1px;font-family:ui-monospace,'SF Mono',Menlo,monospace;margin-bottom:5px}
.ai-rec-t{font-size:12px;line-height:1.6;color:var(--text2);white-space:pre-wrap}

/* REL MAP */
.rel-map{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:14px;margin-bottom:10px}
.rel-map-t{font-size:10px;font-weight:700;color:var(--text3);text-transform:uppercase;letter-spacing:1px;font-family:ui-monospace,'SF Mono',Menlo,monospace;margin-bottom:10px}
.rel-chart{display:flex;align-items:flex-end;gap:5px;height:54px;margin-bottom:6px}
.rb-wrap{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;height:100%;justify-content:flex-end}
.rb{width:100%;border-radius:3px 3px 0 0;min-height:3px;transition:height .5s}
.rb-date{font-family:ui-monospace,'SF Mono',Menlo,monospace;font-size:8px;color:var(--text3);white-space:nowrap}
.rel-trend{font-size:11px;color:var(--text2)}

/* SETTINGS */
.s-section{margin-bottom:20px}
.s-title{font-size:10px;font-weight:700;color:var(--text3);text-transform:uppercase;letter-spacing:1px;font-family:ui-monospace,'SF Mono',Menlo,monospace;margin-bottom:8px}
/* BASE MANAGER (Настройки → База) */
.base-tools{position:sticky;top:0;background:var(--surface);padding-bottom:10px;z-index:2}
.base-search{width:100%;box-sizing:border-box;padding:9px 12px;border-radius:10px;border:0;background:var(--fill2);color:var(--text);font-size:15px;font-family:inherit;outline:none}
.base-search::placeholder{color:var(--text3)}
.base-subtools{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 2px 2px}
.base-count{font-size:11px;color:var(--text3)}
.base-sort{background:var(--fill2);border:0;color:var(--accent);font-size:12px;font-weight:600;padding:4px 11px;border-radius:var(--r-pill);font-family:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;white-space:nowrap}
.base-sort:active{opacity:.6}
.base-row-meta{flex-shrink:0;display:flex;flex-direction:column;align-items:flex-end;gap:3px}
.base-date{font-size:11px;color:var(--text3);font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}
.base-list{display:flex;flex-direction:column}
.base-row{display:flex;align-items:center;gap:10px;padding:11px 2px;border-bottom:1px solid var(--separator)}
.base-row:last-child{border-bottom:0}
.base-row.is-hidden .base-row-name{color:var(--text3)}
.base-row.is-hidden .base-row-sub{color:var(--text3);opacity:.7}
.base-row-main{flex:1;min-width:0}
.base-row-name{font-size:15px;color:var(--text);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.base-row-sub{font-size:12px;color:var(--text2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}
.base-empty{text-align:center;color:var(--text3);font-size:13px;padding:30px 10px}
.base-hint{font-size:11px;color:var(--text3);line-height:1.45;margin-top:14px;padding:0 2px}
.ios-sw{flex-shrink:0;position:relative;width:51px;height:31px;border-radius:999px;background:rgba(120,120,128,0.4);border:0;padding:0;cursor:pointer;transition:background-color .2s var(--ease);-webkit-tap-highlight-color:transparent}
.ios-sw.on{background:var(--green)}
.ios-sw::after{content:"";position:absolute;top:2px;left:2px;width:27px;height:27px;border-radius:50%;background:#fff;box-shadow:0 2px 5px rgba(0,0,0,.28);transition:transform .2s var(--ease)}
.ios-sw.on::after{transform:translateX(20px)}
.base-mark{flex-shrink:0;font-size:12px;font-weight:600;padding:3px 9px;border-radius:var(--r-pill);font-variant-numeric:tabular-nums;font-feature-settings:"tnum";white-space:nowrap}
.base-mark--ok{background:var(--tint-green);color:var(--green)}
.base-mark--due{background:var(--tint-orange);color:var(--orange)}
.base-mark--over{background:var(--tint-red);color:var(--red)}
.base-mark--none{background:var(--fill2);color:var(--text3)}
.kw{position:relative}
.kw .fi{padding-right:40px}
.tv{position:absolute;right:10px;top:50%;transform:translateY(-50%);background:none;border:none;cursor:pointer;color:var(--text3);font-size:14px}
.pta{min-height:130px;font-size:12px}
input[type=file].hidden{display:none}

/* FEEDBACK */
.fb-emoji-row{display:flex;justify-content:space-between;margin:18px 0 6px}
.fb-emoji-btn{width:52px;height:52px;border-radius:14px;border:2px solid var(--border);background:var(--surface);font-size:26px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s;flex-direction:column;gap:1px}
.fb-emoji-btn:hover{border-color:var(--accent);background:var(--surface2);transform:scale(1.08)}
.fb-emoji-btn.selected{border-color:var(--accent);background:rgba(59,130,246,.15);box-shadow:0 0 0 3px var(--glow)}
.fb-emoji-label{font-size:8px;font-weight:700;color:var(--text3);font-family:ui-monospace,'SF Mono',Menlo,monospace;text-transform:uppercase;letter-spacing:.5px}
.fb-counter{display:inline-flex;align-items:center;gap:5px;background:rgba(16,185,129,.1);border:1px solid rgba(16,185,129,.25);border-radius:8px;padding:4px 10px;font-family:ui-monospace,'SF Mono',Menlo,monospace;font-size:11px;color:var(--green);font-weight:700}

/* TOAST */
/* s024 (p.101): offline banner above the tab bar (between .tabbar 200 and .view-tasks 150), sync sheet, offline-only controls */
:root{--tabbar-h:60px;--net-banner-h:30px;--net-gap:8px;--toast-bottom:100px}
.net-banner{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom, 0px) + var(--net-gap));z-index:190;display:block;width:max-content;max-width:calc(100% - 4 * var(--net-gap));min-height:var(--net-banner-h);padding:calc(var(--net-gap) - 2px) 14px;border:0;border-radius:var(--r2);text-align:center;background:linear-gradient(var(--tint-blue),var(--tint-blue)),var(--bg2);color:var(--accent);font-family:inherit;font-size:13px;font-weight:600;line-height:1.3;box-shadow:var(--shadow-btn);cursor:pointer;-webkit-tap-highlight-color:transparent}
.net-banner[hidden]{display:none}
.net-banner .nb-line{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.net-banner.off{background:linear-gradient(var(--tint-orange),var(--tint-orange)),var(--bg2);color:var(--orange)}
.net-banner.fail{background:linear-gradient(var(--tint-red),var(--tint-red)),var(--bg2);color:var(--red)}
.net-banner:active{opacity:.7}
body.net-on .content{padding-bottom:calc(100px + 2 * var(--net-banner-h) + env(safe-area-inset-bottom, 0px))}
body.net-on .tasks-quick-add{bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom, 0px) + 2 * var(--net-banner-h))}
body.net-on .toast{bottom:calc(var(--toast-bottom) + 2 * var(--net-banner-h))}
body.net-off :is(#here-btn,#route-sort-btn,#finish-btn,#rec-btn,#sched-refresh-btn,#push-enable-btn,#push-disable-btn,#push-test-btn,#cs-hbtn){opacity:.35}
.sync-head{font-size:13px;color:var(--text2);line-height:1.45;padding:4px 16px 10px}
.sync-row{display:flex;align-items:center;gap:8px;padding:10px 16px;border-top:.5px solid var(--separator)}
.sync-main{flex:1;min-width:0}
.sync-lbl{font-size:14px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sync-st{font-size:12px;color:var(--text2);margin-top:2px}
.sync-row.st-failed .sync-st{color:var(--red)}
.sync-btn{flex-shrink:0;border:0;border-radius:var(--r-pill);padding:6px 12px;background:var(--tint-blue);color:var(--accent);font-family:inherit;font-size:13px;font-weight:600;cursor:pointer}
.sync-btn.del{background:var(--fill3);color:var(--text2)}
.sync-empty{padding:16px;text-align:center;color:var(--text3);font-size:13px}
.sync-actions{padding:12px 16px calc(12px + env(safe-area-inset-bottom, 0px))}
.sync-actions .btn-small{width:100%}
.off-card{background:var(--fill2);border-radius:var(--r-btn);padding:10px 12px;font-size:13px;line-height:1.5}
.off-row{display:flex;justify-content:space-between;gap:8px}
.off-l{color:var(--text2);flex-shrink:0}
.off-v{color:var(--text);text-align:right}
.off-v.off-stale{color:var(--orange);font-weight:600}
.off-actions{display:flex;gap:var(--net-gap);margin-top:var(--net-gap)}
.off-actions .btn-small{flex:1}
.toast{position:fixed;bottom:var(--toast-bottom);left:50%;transform:translateX(-50%) translateY(20px);background:var(--surface2);border:1px solid var(--border);border-radius:10px;padding:9px 18px;font-size:13px;font-weight:600;color:var(--text);z-index:500;opacity:0;transition:all .3s;white-space:nowrap;box-shadow:0 6px 20px rgba(0,0,0,.4);pointer-events:none}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.last-visit-date{font-size:12px;color:var(--text2);margin-top:2px;white-space:nowrap;font-family:inherit}
mark{background:rgba(59,130,246,.28);color:var(--text);border-radius:2px;padding:0 1px}
::-webkit-scrollbar{width:3px}
::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}
a{color:var(--accent2)}
code{color:var(--accent2);font-family:ui-monospace,'SF Mono',Menlo,monospace;font-size:11px}
.today-badge.off{background:color-mix(in srgb,#e8890c 16%,transparent);color:#b5650a}
.select-native{-webkit-appearance:none;appearance:none;min-width:0;padding:7px 30px 7px 14px;border-radius:var(--r-pill);border:0;background:var(--tint-blue) url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23007aff' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>") no-repeat right 10px center/14px 14px;color:var(--accent);font-size:14px;font-weight:500;font-family:inherit;line-height:1.2;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}
.select-native.has-selection{background-color:var(--accent);color:#fff;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>")}
.today-badge.none{background:var(--fill2);color:var(--text3);font-weight:500}
.today-badge.gone{background:var(--tint-red);color:var(--red)}
.branch-row{margin-top:4px}.branch-row+.branch-row{margin-top:8px;padding-top:6px;border-top:1px dashed var(--fill2)}
#sd-branch-seg{flex-wrap:wrap;gap:2px}#sd-branch-seg .seg{flex:1 1 45%}
  /* s015: contact added by hand — clinical center outside EMIAS */
  .src-center{display:inline-block;margin-left:6px;padding:1px 7px;border-radius:999px;font-size:10px;font-weight:600;letter-spacing:.2px;background:rgba(191,90,242,.14);color:var(--purple,#bf5af2);vertical-align:middle}
  /* s021: contact from the EMIAS schedule caches (all EMIAS doctors are contacts) */
  .src-emias{display:inline-block;margin-left:6px;padding:1px 7px;border-radius:var(--r-pill);font-size:10px;font-weight:600;letter-spacing:.2px;background:var(--tint-blue);color:var(--accent);vertical-align:middle}
  .doctor-spec-tag .src-emias + .in-base-badge{margin-left:6px}
  /* s027 (p.110): contact from a private clinic (ProDoctorov cache) */
  .src-private{display:inline-block;margin-left:6px;padding:1px 7px;border-radius:var(--r-pill);font-size:10px;font-weight:600;letter-spacing:.2px;background:var(--tint-teal);color:var(--teal);vertical-align:middle}
  .doctor-spec-tag .src-private + .in-base-badge{margin-left:6px}
  .doctor-spec-tag .src-emias + .src-private{margin-left:4px}
  .br-more{color:var(--accent);font-weight:500;white-space:nowrap}
  .base-row-sub .src-emias, .base-row-sub .src-center, .base-row-sub .src-private{margin-left:0;margin-right:6px}
  #d-branches-block{margin-bottom:12px;padding:10px;background:var(--bg2);border-radius:8px}
  .dbr-row{padding:8px 8px 9px;border-radius:8px;border:1px solid transparent;cursor:pointer;-webkit-tap-highlight-color:transparent}
  .dbr-row + .dbr-row{margin-top:4px}
  .dbr-row.on{border-color:var(--separator);background:var(--fill3)}
  .dbr-addr{font-size:13px;font-weight:600;color:var(--text)}
  .dbr-meta{font-size:11px;color:var(--text3);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .dbr-hours{font-size:12px;color:var(--text2);margin-top:3px}
  .dbr-hours.works{color:var(--green);font-weight:600}
  .dbr-hours.gone{color:var(--red)}
  .dbr-plan{margin-top:7px;width:100%;padding:8px 10px;border:0;border-radius:var(--r-btn);background:var(--tint-blue);color:var(--accent);font-size:13px;font-weight:600;font-family:inherit;cursor:pointer}
  .dbr-plan.on{background:var(--tint-green);color:var(--green)}
  /* s027 (p.110): private branch — price, phone (tel:) and ProDoctorov links */
  .dbr-basis{color:var(--text3);font-weight:500}
  .dbr-free{font-size:11px;color:var(--text3);margin-top:2px;font-variant-numeric:tabular-nums}   /* s027 (p.117): free slots under the shift */
  .shift-sum{font-size:12px;color:var(--text2);margin-top:4px;font-variant-numeric:tabular-nums}   /* s027 (p.117): weekly shifts under the address */
  /* s031 (p.126): trust of a private record — badge, hours basis caption, phone check tiles */
  .trust-pill{display:inline-block;margin-left:6px;padding:1px 7px;border-radius:var(--r-pill);font-size:10px;font-weight:600;letter-spacing:.2px;vertical-align:middle;white-space:nowrap}
  .trust-pill.t-site, .trust-pill.t-manual{background:var(--tint-green);color:var(--green)}
  .trust-pill.t-staff_slots{background:var(--tint-yellow);color:var(--orange)}
  .trust-pill.t-staff, .trust-pill.t-off{background:var(--fill3);color:var(--text2)}
  .doctor-spec-tag .src-private + .trust-pill{margin-left:4px}
  .trust-line{margin-top:4px;font-size:11px;color:var(--text3);line-height:1.5}
  .trust-line .trust-pill{margin-left:0;margin-right:6px}
  .pc-box{margin-top:10px;padding:10px 8px 8px;border-radius:var(--r-btn);background:var(--fill3)}
  .pc-title{font-size:12px;font-weight:600;color:var(--text2);margin-bottom:8px;text-align:center}
  .pc-tiles{display:flex;justify-content:center;gap:24px}
  .action-tile.pc-tile{width:104px}
  .action-tile.pc-tile .tile-label{max-width:104px;white-space:normal;text-overflow:clip}
  .action-tile.pc-gone .tile-icon{color:var(--red)}
  .action-tile.pc-ok .tile-icon{color:var(--green)}
  .action-tile.pc-gone.on .tile-icon{background:var(--red);color:#fff}
  .action-tile.pc-ok.on .tile-icon{background:var(--green);color:#fff}
  .action-tile.pc-tile.on .tile-label{color:var(--text)}
  .pc-note{margin-top:8px;font-size:12px;color:var(--text2);text-align:center;line-height:1.35;overflow-wrap:anywhere}
  .dbr-plan.unsure, .sd-plan-btn.unsure{background:var(--fill3);color:var(--text2)}
  .dbr-price{font-size:12px;color:var(--text2);margin-top:2px;font-variant-numeric:tabular-nums}
  .dbr-links{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
  .dbr-link{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:var(--r-pill);background:var(--tint-blue);color:var(--accent);font-size:12px;font-weight:600;text-decoration:none;-webkit-tap-highlight-color:transparent}
  .sd-links .dbr-links{margin-top:8px}
  .dc-v .dbr-link{padding:0;background:none;font-size:inherit}
  /* s018: Telegram Login Widget on the login screen; the password form stays as a secondary fallback */
  .tg-login{display:flex;flex-direction:column;align-items:center;gap:16px;margin-bottom:20px}
  .tg-login[hidden]{display:none}
  .tg-login-widget{display:flex;justify-content:center;min-height:40px}
  .tg-login-or{display:flex;align-items:center;gap:10px;width:100%;font-size:13px;color:var(--text3)}
  .tg-login-or::before,.tg-login-or::after{content:'';flex:1;height:.5px;background:var(--separator)}
  /* s018 v2: with Telegram on, the password form is hidden behind «Войти по паролю» until tapped */
  #login-screen:not(.pw-open) .tg-login-or{display:none}
  .tg-pw-btn{display:none;align-items:center;justify-content:center;border:none;border-radius:var(--r-pill);background:var(--fill2);color:var(--accent);font-family:inherit;font-size:15px;font-weight:600;padding:10px 20px;cursor:pointer}
  #login-screen.tg-on:not(.pw-open) .tg-pw-btn{display:inline-flex}
  #login-screen.tg-on:not(.pw-open) .pw-form{display:none}
  .login-notice{color:var(--red);font-size:13px;text-align:center;margin-bottom:16px}
/* s055 (p.185): hours basis — caption next to the hours (cards, lists, «Сегодня»), pills of the «Часы» filter, stale MO data, tail stops */
.hb-cap{display:inline-block;margin-left:6px;font-size:11px;font-weight:500;color:var(--text3);white-space:nowrap;vertical-align:middle}
.hb-cap.hb-prodoctorov, .hb-cap.hb-none{color:var(--orange)}
.hb-cap.stale{color:var(--orange);font-weight:600}
.doctor-hours .hb-cap:first-child{margin-left:0}
.hb-pill{display:inline-block;padding:1px 8px;border-radius:var(--r-pill);font-size:12px;font-weight:600;white-space:nowrap;vertical-align:1px}
.hb-pill.hb-emias{background:var(--tint-blue);color:var(--accent)}
.hb-pill.hb-prodoctorov{background:var(--tint-orange);color:var(--orange)}
.hb-pill.hb-site{background:var(--tint-teal);color:var(--teal)}
.hb-pill.hb-manual{background:var(--tint-green);color:var(--green)}
.hb-pill.hb-none{background:var(--fill3);color:var(--text2)}
.picker-row .label small.hb-hint{font-size:12px}
.sched-warn.sched-age{background:var(--fill3);color:var(--text2)}
.tsptw-unknown.tsptw-tail{color:var(--orange);background:var(--tint-orange)}
/* s055b (Stas 02.11): one hours-basis pill per card (instead of the trust pill) and the small green phone-confirmation mark */
.hb-pill.hb-card{margin-left:6px;padding:1px 7px;font-size:10px;letter-spacing:.2px;vertical-align:middle}
.doctor-spec-tag .src-private + .hb-pill.hb-card, .doctor-spec-tag .src-center + .hb-pill.hb-card{margin-left:4px}
.trust-line .hb-pill.hb-card{margin-left:0;margin-right:6px}
.hb-pill.stale{box-shadow:inset 0 0 0 1px var(--orange)}
.pc-mark{display:inline-block;margin-left:6px;font-size:10px;font-weight:600;color:var(--green);white-space:nowrap;vertical-align:middle}
.doctor-info .doctor-spec-tag > .hb-pill{white-space:normal}
