/* Мини-апп: «Карта» и «Профиль». Тот же язык, что у carta.html: плоские тональные поверхности на тихом фоне,
   один шрифт (иерархия размером и весом), вода как единственный акцент, скругления 20–28 px, без теней и градиентов.
   Разговор живёт в Telegram, здесь его нет. */
:root{
  --bg:#eef2f2; --surface:#ffffff; --ink:#0f2227; --ink-2:#52676e; --line:#e3ebeb;
  --water:#19707c; --water-pale:#d9ebea; --foam:#ffffff; --mark:rgba(25,112,124,.2);
  --active:#c2502a; --active-bg:#fbe6dc; --active-ink:#9c3a18;
  --watch:#9a7210;  --watch-bg:#f6ecc9;  --watch-ink:#7a5a08;
  --clear:#3b7a4b;  --clear-bg:#dcefe0;  --clear-ink:#2c6a3c;
  --font:"Geologica",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  color-scheme:light;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{height:100%;margin:0}
body{background:var(--bg);color:var(--ink);font:400 15px/1.5 var(--font);overflow:hidden;-webkit-text-size-adjust:100%}
h1,h2,h3,p,ul,ol{margin:0}
ul,ol{padding:0;list-style:none}
button{font:inherit;color:inherit;border:0;background:none;cursor:pointer;padding:0}
a{color:inherit}
:focus-visible{outline:2px solid var(--water);outline-offset:2px;border-radius:8px}
p,li{color:var(--ink-2)}
b.k{font-weight:600;color:var(--ink);background:linear-gradient(transparent 56%,var(--mark) 56%);padding:0 1px}

.st-active{--c:var(--active);--cbg:var(--active-bg);--cink:var(--active-ink)}
.st-watch{--c:var(--watch);--cbg:var(--watch-bg);--cink:var(--watch-ink)}
.st-clear{--c:var(--clear);--cbg:var(--clear-bg);--cink:var(--clear-ink)}
.st-hyp{--c:var(--water);--cbg:var(--water-pale);--cink:var(--water)}
.st-off{--c:#8a9a9f;--cbg:var(--line);--cink:var(--ink-2)}

/* оболочка */
#app{height:100%;display:flex;flex-direction:column}
.views{flex:1;min-height:0;position:relative}
.view{position:absolute;inset:0;display:none}
.view.on{display:block}
#map{height:100%}
#map.carta{background:var(--bg)}
#map iframe{display:block;width:100%;height:100%;border:0}
.scroll{height:100%;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
.page{max-width:640px;margin:0 auto;padding:28px 16px 36px;display:flex;flex-direction:column;gap:28px}
section{display:flex;flex-direction:column;gap:12px;min-width:0}
body.gated .tabbar{display:none}

/* нижняя навигация */
.tabbar{display:flex;gap:6px;padding:8px 12px calc(8px + env(safe-area-inset-bottom,0px));background:var(--surface);border-top:1px solid var(--line)}
.tabbar button{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;padding:2px 0 0;color:var(--ink-2);font-size:12px;font-weight:500;letter-spacing:.01em}
.tabbar .ic{width:60px;height:32px;border-radius:16px;display:grid;place-items:center;transition:background .2s}
.tabbar svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.tabbar button.on{color:var(--water);font-weight:600}
.tabbar button.on .ic{background:var(--water-pale)}

/* заголовки */
.hero{display:flex;flex-direction:column;gap:10px}
.eyebrow{font-size:12px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--water)}
h1{font-size:clamp(32px,9vw,38px);font-weight:600;line-height:1.08;letter-spacing:-.02em;text-wrap:balance;color:var(--ink)}
.dir{font-size:17px;line-height:1.45;max-width:36ch;text-wrap:pretty}
.sec-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:0 4px}
h2{font-size:21px;font-weight:600;line-height:1.2;letter-spacing:-.01em;color:var(--ink)}
.sec-note{font-size:13px;color:var(--ink-2)}
.lbl{font-size:11.5px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--water);margin-bottom:6px}
.note{font-size:13.5px;line-height:1.6;color:var(--ink-2);padding:0 4px}

/* река (иллюстрация) */
.river{width:100%;height:auto;display:block;overflow:hidden;border-radius:20px}
.river .edge{fill:none;stroke:var(--water);stroke-opacity:.16;stroke-linecap:round;stroke-linejoin:round}
.river .band{fill:none;stroke:var(--water-pale);stroke-linecap:round;stroke-linejoin:round}
.river .sheen{fill:none;stroke:var(--foam);stroke-opacity:.28;stroke-linecap:round;stroke-linejoin:round}
.river .sl{fill:none;stroke:var(--water);stroke-linecap:round;stroke-linejoin:round}
@media (prefers-reduced-motion:no-preference){
  .river .sl{animation:flow var(--d,3s) linear infinite}
  @keyframes flow{to{stroke-dashoffset:calc(var(--len) * -1)}}
}
.river-card{background:var(--surface);border-radius:28px;padding:10px 10px 18px;display:flex;flex-direction:column;gap:14px}
.river-card p{padding:0 14px;font-size:14.5px}

/* поверхности и списки */
.surface{background:var(--surface);border-radius:28px;padding:18px 20px}
.surface p+p{margin-top:8px}
.rows{background:var(--surface);border-radius:28px;overflow:hidden}
.rows li+li::before{content:"";display:block;height:1px;background:var(--line);margin:0 20px}
.row{all:unset;box-sizing:border-box;width:100%;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;align-items:center;padding:15px 20px;cursor:pointer}
.row:hover{background:var(--bg)}
.row:focus-visible{outline:2px solid var(--water);outline-offset:-2px}
.row .t{display:block;font-weight:600;color:var(--ink);line-height:1.3}
.row .n{display:block;color:var(--ink-2);font-size:14px;margin-top:2px}
.row.danger .t{color:var(--active-ink)}
.chev{width:7px;height:7px;border-right:2px solid var(--water);border-bottom:2px solid var(--water);transform:rotate(-45deg);margin-right:4px}
.sw{width:50px;height:30px;border-radius:15px;background:var(--line);position:relative;transition:background .2s;flex:none}
.sw::after{content:"";position:absolute;left:3px;top:3px;width:24px;height:24px;border-radius:50%;background:#fff;transition:transform .2s}
.row[aria-checked="true"] .sw{background:var(--water)}
.row[aria-checked="true"] .sw::after{transform:translateX(20px)}
.num{width:28px;height:28px;border-radius:50%;background:var(--cbg,var(--water-pale));color:var(--cink,var(--water));display:inline-grid;place-items:center;font-size:13px;font-weight:600;line-height:1;flex:none}

/* кнопки */
.pill{border-radius:999px;padding:11px 20px;font-weight:500;font-size:15px;line-height:1.2;border:1.5px solid var(--water);color:var(--water);background:none;text-align:center}
.pill.fill{background:var(--water);color:#fff}
.pill.quiet{border-color:var(--line);color:var(--ink-2)}
.pill.danger{border-color:var(--active);color:var(--active-ink)}
.pill.small{padding:7px 14px;font-size:14px}
.pill:active{filter:brightness(.94)}
.acts{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.link{background:none;border:0;padding:6px 0;color:var(--water);font-size:14px;font-weight:500}
.link.warn{color:var(--active-ink)}

/* профиль */
.me-card{background:var(--surface);border-radius:28px;padding:10px 10px 22px}
.me-card .river{border-radius:20px}
.avatar{width:68px;height:68px;border-radius:50%;background:var(--water);color:#fff;font-size:28px;font-weight:600;display:grid;place-items:center;margin:-34px 0 0 12px;border:5px solid var(--surface);position:relative}
.me-name{padding:10px 14px 0}
.me-name h1{font-size:28px}
.me-name p{margin-top:4px;font-size:14.5px}
.plan-text{white-space:pre-wrap;color:var(--ink-2)}
.help{background:var(--active-bg);border-radius:28px;padding:18px 20px;display:flex;flex-direction:column;gap:12px}
.help p{color:var(--active-ink);font-weight:500;line-height:1.45}
.help .phones{display:flex;flex-direction:column;gap:8px}
.help a{display:flex;justify-content:space-between;gap:12px;align-items:center;background:var(--surface);color:var(--active-ink);text-decoration:none;border-radius:18px;padding:11px 16px;font-size:14px}
.help a b{font-weight:600;white-space:nowrap}
.foot{font-size:13px;color:var(--ink-2);line-height:1.55;padding:0 4px;text-align:center}

/* запасной вид карты (пока готовой карты нет) */
.cards{display:flex;flex-direction:column;gap:12px}
.pcard{background:var(--surface);border-radius:28px;padding:18px 20px 16px;display:flex;flex-direction:column;gap:10px}
.ph{display:grid;grid-template-columns:28px minmax(0,1fr) auto;column-gap:14px;align-items:center}
.ph h3{font-size:17px;font-weight:600;line-height:1.25;color:var(--ink);text-wrap:balance}
.state{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:500;color:var(--cink);white-space:nowrap}
.state i{width:8px;height:8px;border-radius:50%;background:var(--c);display:inline-block}
.pbody{display:flex;flex-direction:column;gap:12px;padding-left:42px}
.step{background:var(--water-pale);border-radius:20px;padding:14px 16px}
.step p{color:var(--ink-2)}
details.full>summary{list-style:none;cursor:pointer;color:var(--ink-2);font-size:13.5px;font-weight:500;display:inline-flex;align-items:center;gap:6px}
details.full>summary::-webkit-details-marker{display:none}
details.full>summary::after{content:"+";font-size:16px;line-height:1;color:var(--water)}
details.full[open]>summary::after{content:"\2212"}
.q{background:var(--bg);border-radius:14px;padding:10px 14px;margin-top:6px;font-size:14px;line-height:1.55}
.mood{background:var(--surface);border-radius:28px;padding:22px 20px 16px}
.bars{display:flex;align-items:flex-end;gap:8px;height:110px}
.bars div{flex:1;min-width:0;border-radius:10px 10px 4px 4px;background:var(--water);position:relative;min-height:4px}
.bars small{position:absolute;top:-19px;left:0;right:0;text-align:center;font-size:12px;font-weight:600;color:var(--ink)}
.mood .note{padding:12px 0 0}
.tl li{background:var(--surface);border-radius:24px;padding:14px 18px 15px;display:flex;flex-direction:column;gap:4px}
.tl li+li{margin-top:10px}
.tl .snum{font-size:11.5px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--water)}
.tl p{color:var(--ink-2)}

/* шторка */
.sheet-bg{position:fixed;inset:0;background:rgba(15,34,39,.42);z-index:5;opacity:0;pointer-events:none;transition:opacity .2s}
.sheet-bg.on{opacity:1;pointer-events:auto}
.sheet{position:fixed;left:0;right:0;bottom:0;z-index:6;background:var(--surface);border-radius:28px 28px 0 0;padding:10px 20px calc(20px + env(safe-area-inset-bottom,0px));max-height:84%;overflow-y:auto;transform:translateY(105%);transition:transform .28s cubic-bezier(.2,.8,.2,1);visibility:hidden;max-width:640px;margin:0 auto}
.sheet.on{transform:none;visibility:visible}
.grab{width:40px;height:4px;border-radius:2px;background:var(--line);margin:0 auto 18px}
.sheet-text{color:var(--ink);font-size:15.5px;line-height:1.5;white-space:pre-wrap;margin-bottom:14px}
.sheet-text+.sheet-text{color:var(--ink-2)}
.opts{display:flex;flex-direction:column;gap:8px;margin-bottom:8px}
.opt{width:100%;text-align:left;background:var(--bg);border-radius:18px;padding:14px 18px;font-weight:500;color:var(--ink)}
.opt:active{background:var(--water-pale)}
.opt.danger{background:var(--active-bg);color:var(--active-ink)}
.opt.quiet{color:var(--ink-2)}
.sheet .close{display:block;margin:8px auto 0;color:var(--water);font-weight:500;padding:10px 20px}

.toast{position:fixed;left:50%;top:calc(14px + env(safe-area-inset-top,0px));transform:translate(-50%,-8px);background:var(--ink);color:#fff;padding:11px 18px;border-radius:20px;font-size:14px;line-height:1.35;z-index:9;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;max-width:calc(100% - 32px);text-align:center}
.toast.on{opacity:1;transform:translate(-50%,0)}
.empty{color:var(--ink-2);padding:24px 20px;text-align:center;font-size:14px}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}

/* дыхание: серия, счётчик и награды */
.breath{display:flex;flex-direction:column;gap:16px}
.bnums{display:flex;gap:28px}
.bnum{display:flex;flex-direction:column}
.bnum b{font-size:32px;font-weight:600;line-height:1.1;color:var(--ink)}
.bnum span{font-size:13px;color:var(--ink-2)}
.badges{display:flex;flex-wrap:wrap;gap:8px}
.badge{padding:6px 12px;border-radius:999px;background:var(--water-pale);color:var(--water);font-size:14px;font-weight:500}
.badge.off{background:var(--line);color:var(--ink-2);font-weight:400;opacity:.75}
