/* ===== DZEN · Энергия — общий каркас (палитру задаёт тема) ===== */
@font-face{font-family:'Cormorant Garamond';src:url('../assets/fonts/cormorant.woff2') format('woff2'),url('../assets/fonts/cormorant.ttf') format('truetype');font-weight:250 700;font-display:swap}
@font-face{font-family:'Cormorant Garamond';src:url('../assets/fonts/cormorant-italic.woff2') format('woff2'),url('../assets/fonts/cormorant-italic.ttf') format('truetype');font-weight:250 700;font-style:italic;font-display:swap}
@font-face{font-family:'Inter';src:url('../assets/fonts/inter.woff2') format('woff2'),url('../assets/fonts/inter.ttf') format('truetype');font-weight:100 900;font-display:swap}

*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
[hidden]{display:none!important}
html{scroll-behavior:smooth}
body{font-family:'Inter',-apple-system,system-ui,sans-serif;background:#000;color:var(--tx);
  font-size:16px;line-height:1.55;-webkit-font-smoothing:antialiased}
.app{max-width:520px;margin:0 auto;min-height:100dvh;position:relative;background:var(--bg);overflow:hidden}

.serif{font-family:'Cormorant Garamond',Georgia,serif}
h1.display{font-size:clamp(40px,10.5vw,56px);line-height:1.04;letter-spacing:-.01em;font-weight:var(--dispw);font-family:var(--dispf)}
h1 em{font-style:italic}
h2{font-size:clamp(23px,6.2vw,30px);font-weight:var(--h2w);letter-spacing:-.015em;line-height:1.15}
.sub{color:var(--tx2);font-size:16px;margin-top:10px}
.small{font-size:13.5px;color:var(--tx2);line-height:1.5}
.tiny{font-size:11.5px;color:var(--tx2);letter-spacing:.04em}
.center{text-align:center}
.eyebrow{font-size:11.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--acc-d);margin-bottom:10px}
.brandline{font-family:'Cormorant Garamond',serif;font-style:italic;font-size:15px;letter-spacing:.12em;opacity:.85}
.bignum{font-size:clamp(92px,28vw,140px);font-weight:250;line-height:.95;font-family:'Cormorant Garamond',serif;font-variant-numeric:lining-nums tabular-nums;margin:6px 0 10px}

.scr{display:none;min-height:100dvh;position:relative}
.scr.on{display:flex;flex-direction:column;animation:scrIn .5s cubic-bezier(.22,.9,.3,1)}
@keyframes scrIn{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.scr-center{align-items:center;justify-content:center;text-align:center;gap:6px}
.pad{padding:26px 20px 38px;display:flex;flex-direction:column;gap:14px}
.pad-h{padding:0 26px}

/* кино-фон */
.scr-cinema{color:#F4F1EA;justify-content:flex-end}
.cinefade{position:absolute;inset:0;overflow:hidden;background:#101010}
.cinefade img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;
  transition:opacity 2.6s ease;animation:kb 18s ease-in-out infinite alternate}
.cinefade img.show{opacity:1}
@keyframes kb{from{transform:scale(1)}to{transform:scale(1.09) translateY(-1.5%)}}
.cine-veil{position:absolute;inset:0;background:var(--veil)}
.cine-content{position:relative;padding:34px 24px calc(44px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:14px}
.ticker{font-size:12.5px;letter-spacing:.06em;opacity:.75;text-transform:uppercase}
.cine-sub{font-size:16.5px;line-height:1.6;opacity:.92;max-width:42ch}

/* кнопки */
.btn{border:0;border-radius:var(--btnr);padding:17px 26px;font-family:'Inter',sans-serif;
  font-size:16.5px;font-weight:700;cursor:pointer;width:100%;transition:transform .15s,opacity .2s;touch-action:manipulation}
.btn:active{transform:scale(.97)}
.btn:disabled{opacity:.35;cursor:default}
.btn-pri{background:var(--btn);color:var(--btntx);box-shadow:var(--btnsh)}
.btn-sec{background:var(--soft);color:var(--acc-d)}
.btn-ghost{background:transparent;color:var(--tx2);font-weight:550}
.btn:focus-visible{outline:3px solid var(--acc);outline-offset:2px}

/* квиз */
.quiz-top{padding:18px 20px 0;display:flex;flex-direction:column;gap:14px}
.quiz-progress{display:flex;gap:6px}
.quiz-progress i{flex:1;height:3px;border-radius:2px;background:var(--line);transition:background .3s}
.quiz-progress i.done{background:var(--acc)}
.quiz-back{background:none;border:0;font-size:22px;color:var(--tx2);cursor:pointer;width:44px;height:44px;margin-left:-12px}
.quiz-body{flex:1;display:flex;flex-direction:column;padding:8px 20px 36px}
.q{display:flex;flex-direction:column;flex:1;animation:scrIn .45s ease}
.q-num{font-size:12px;letter-spacing:.16em;color:var(--tx2);margin-bottom:12px}
.q-expl{margin-top:12px;background:var(--card);border:1px solid var(--line);border-radius:16px;
  padding:13px 15px;font-size:13.5px;color:var(--tx2);line-height:1.55}
.q-expl b{color:var(--tx)}
.q-expl summary{cursor:pointer;font-weight:650;color:var(--acc-d);list-style:none}
.q-expl summary::before{content:'?  ';font-weight:800}
.q-mid{flex:1;display:flex;flex-direction:column;justify-content:center;gap:8px;min-height:200px}
.q-value{text-align:center;font-family:'Cormorant Garamond',serif;font-size:clamp(56px,18vw,86px);
  line-height:1;font-variant-numeric:lining-nums tabular-nums}
.q-word{text-align:center;font-size:15px;color:var(--tx2);min-height:24px;font-weight:600}
.q-foot{display:flex;flex-direction:column;gap:10px}

/* ползунок */
.sld{--fill:0%;position:relative;padding:18px 0}
.sld input{-webkit-appearance:none;appearance:none;width:100%;height:56px;background:none;cursor:pointer;position:relative;z-index:2}
.sld-track{position:absolute;left:0;right:0;top:50%;height:14px;transform:translateY(-50%);
  border-radius:99px;background:var(--line);overflow:hidden}
.sld-fill{position:absolute;left:0;top:0;bottom:0;width:var(--fill);
  background:linear-gradient(90deg,var(--acc) 0%,var(--acc-d) 100%);border-radius:99px;transition:width .06s linear}
.sld input::-webkit-slider-thumb{-webkit-appearance:none;width:34px;height:34px;border-radius:50%;
  background:var(--thumb);border:3px solid var(--thumbline);box-shadow:0 4px 14px rgba(0,0,0,.3)}
.sld input::-moz-range-thumb{width:30px;height:30px;border-radius:50%;background:var(--thumb);border:3px solid var(--thumbline)}
.sld-ends{display:flex;justify-content:space-between;font-size:12px;color:var(--tx2);margin-top:-6px}
.can-viz{display:flex;justify-content:center;margin-bottom:4px;color:var(--canline)}
.can-viz svg{width:100px;height:162px}

/* результат */
.res-scaleline{position:relative;height:10px;border-radius:99px;margin:6px 0 18px;
  background:linear-gradient(90deg,#C0563E,#C2791B,#A8C96B)}
.res-dot{position:absolute;top:50%;left:0;width:22px;height:22px;border-radius:50%;
  background:var(--bg);border:3px solid var(--tx);transform:translate(-50%,-50%);transition:left 1.4s cubic-bezier(.22,.9,.3,1)}
.factors{display:flex;flex-direction:column;gap:10px;margin:10px 0}
.factor{display:grid;grid-template-columns:112px 1fr 34px;gap:10px;align-items:center;font-size:13.5px}
.factor .fbar{height:8px;border-radius:99px;background:var(--line);overflow:hidden}
.factor .fbar i{display:block;height:100%;border-radius:99px;background:var(--acc);width:0;transition:width 1s ease .3s}
.factor.low .fbar i{background:#C0563E}
.factor .fval{text-align:right;color:var(--tx2);font-variant-numeric:tabular-nums}
.leak-card{background:var(--leakbg);border-radius:var(--r);padding:16px 18px;font-size:14.5px;line-height:1.55}
.leak-card b{color:#C0563E}

/* полка */
.shelf-row-title{font-size:14px;font-weight:800;letter-spacing:.02em;padding:0 20px;margin-bottom:10px}
.shelf{display:flex;gap:13px;overflow-x:auto;padding:6px 20px 18px;scroll-snap-type:x mandatory;scrollbar-width:none}
.shelf::-webkit-scrollbar{display:none}
.poster{flex:0 0 60%;scroll-snap-align:center;border-radius:var(--r);overflow:hidden;position:relative;
  aspect-ratio:2/3;cursor:pointer;border:0;padding:0;text-align:left;background:var(--card);
  transition:transform .3s cubic-bezier(.22,.9,.3,1),box-shadow .3s;box-shadow:var(--cardsh)}
.poster img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.poster-veil{position:absolute;inset:0;background:linear-gradient(180deg,transparent 42%,rgba(20,19,15,.8))}
.poster-txt{position:absolute;left:15px;right:15px;bottom:13px;color:#F4F1EA}
.poster-title{font-family:'Cormorant Garamond',serif;font-size:23px;font-weight:600;line-height:1.1}
.poster-line{font-size:12.5px;opacity:.85;margin-top:4px;line-height:1.4}
.poster-badge{position:absolute;top:12px;left:12px;background:rgba(20,19,15,.6);color:#F4F1EA;
  backdrop-filter:blur(6px);border-radius:99px;padding:5px 11px;font-size:11px}
.poster-check{position:absolute;top:12px;right:12px;width:30px;height:30px;border-radius:50%;
  background:var(--acc);color:#14130F;display:none;align-items:center;justify-content:center;font-weight:800;font-size:16px}
.poster.sel{transform:scale(1.03);box-shadow:0 0 0 3px var(--acc),0 16px 40px rgba(0,0,0,.35)}
.poster.sel .poster-check{display:flex}
.shelf-hint{min-height:44px;font-size:14px;color:var(--tx2);text-align:center;line-height:1.5;padding:0 20px}
.shelf-hint b{color:var(--acc-d)}

/* карточки/дом */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:18px;display:flex;flex-direction:column;gap:10px;box-shadow:var(--cardsh)}
.card-title{font-size:12px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--tx2)}
.home-hero{position:relative;min-height:380px;display:flex;color:#F4F1EA}
.home-hero-content{position:relative;flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:36px 20px 28px;text-align:center}
.home-season{font-size:13px;letter-spacing:.14em;text-transform:uppercase;opacity:.85}
.ring-wrap{position:relative;width:185px;height:185px;margin-top:6px}
.ring-wrap svg{width:100%;height:100%;transform:rotate(-90deg)}
.ring-center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.ring-num{font-size:54px;font-weight:250;line-height:1;font-variant-numeric:tabular-nums}
.ring-label{font-size:12px;opacity:.8}
#spark{width:100%;height:90px}
.spark-legend{display:flex;justify-content:space-between}
.achv-row{display:flex;gap:10px;flex-wrap:wrap}
.achv{display:flex;flex-direction:column;align-items:center;gap:4px;width:70px;text-align:center}
.achv .a-ic{width:54px;height:54px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:23px;background:var(--soft)}
.achv.locked .a-ic{background:transparent;border:1.5px dashed var(--line);filter:grayscale(1);opacity:.5}
.achv .a-t{font-size:10.5px;color:var(--tx2);line-height:1.25}
.h-title{font-family:'Cormorant Garamond',serif;font-size:23px;font-weight:600}
.h-actions{display:flex;flex-direction:column;gap:8px;margin-top:8px}
.dzen-banner{display:flex;gap:14px;align-items:center;background:var(--soft);border-radius:var(--r);padding:14px}
.dzen-banner img{width:74px;height:98px;object-fit:cover;border-radius:14px;flex:none}
.dzen-banner-title{font-family:'Cormorant Garamond',serif;font-size:20px;font-weight:600;margin-bottom:4px}
.home-foot{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;padding:6px 2px 20px}
.home-foot a{color:var(--tx2)}

/* голос */
.voice-btn{border:1.5px dashed var(--acc-d);background:var(--soft);color:var(--acc-d);border-radius:18px;
  padding:14px 16px;font-size:14.5px;font-weight:700;cursor:pointer;width:100%;text-align:left;display:flex;gap:10px;align-items:center}
.voice-btn.listening{border-style:solid;background:rgba(192,86,62,.14);color:#C0563E;border-color:#C0563E;animation:vp 1.2s ease-in-out infinite}
@keyframes vp{0%,100%{box-shadow:0 0 0 0 rgba(192,86,62,.25)}50%{box-shadow:0 0 0 10px rgba(192,86,62,0)}}
.voice-line{min-height:18px}
.check-block{margin:8px 0 4px}
.check-q{font-size:17px;font-weight:700;margin-bottom:2px}
.check-word{font-size:13.5px;color:var(--tx2);min-height:20px;text-align:right;font-weight:600}
.dayres-emoji{font-size:64px;animation:pop .7s cubic-bezier(.2,1.6,.4,1)}
@keyframes pop{from{transform:scale(0)}to{transform:scale(1)}}
.streak-pill{background:var(--soft);color:var(--acc-d);font-weight:800;border-radius:99px;padding:10px 20px;font-size:15px;margin:10px 0 16px}

/* ачивка */
#confetti{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.achieve-wrap{position:relative;display:flex;flex-direction:column;gap:14px;align-items:center;padding:40px 20px 44px;width:100%}
#share-card{width:min(84%,340px);border-radius:20px;box-shadow:0 24px 60px rgba(0,0,0,.4);animation:pop .8s cubic-bezier(.2,1.4,.4,1)}
.share-row{display:flex;flex-direction:column;gap:10px;width:100%}

/* шторки */
.sheet{position:fixed;inset:0;background:rgba(10,10,8,.55);z-index:50;display:none;align-items:flex-end;justify-content:center}
.sheet.on{display:flex;animation:fi .3s ease}
@keyframes fi{from{opacity:0}to{opacity:1}}
.sheet-card{background:var(--bg);border-radius:26px 26px 0 0;padding:14px 20px calc(28px + env(safe-area-inset-bottom));
  width:100%;max-width:520px;display:flex;flex-direction:column;gap:12px;animation:su .35s cubic-bezier(.22,.9,.3,1)}
@keyframes su{from{transform:translateY(60%)}to{transform:none}}
.sheet-grab{width:42px;height:4px;border-radius:2px;background:var(--line);margin:0 auto 4px}
.sheet-list{padding-left:20px;display:flex;flex-direction:column;gap:6px}
.sheet input,.sheet select{border:1px solid var(--line);background:var(--card);border-radius:12px;
  padding:11px 14px;font-family:'Inter',sans-serif;font-size:15px;color:var(--tx);width:100%}
.remind-time{display:flex;align-items:center;justify-content:space-between;gap:10px}
.remind-time input{width:auto}

/* ===== сводка недели в ленте ===== */
.summary-msg{max-width:94%;width:94%;padding:16px 16px 12px}
.sum-top{display:flex;gap:16px;align-items:center;margin-bottom:14px}
.sum-ring{position:relative;width:92px;height:92px;flex:none}
.sum-ring svg{width:100%;height:100%}
.sum-arc{transition:stroke-dashoffset 1.1s cubic-bezier(0,0,.2,1)}
.sum-ring-c{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1}
.sum-ring-c b{font-size:30px;font-weight:250;font-variant-numeric:tabular-nums;letter-spacing:-.03em}
.sum-ring-c span{font-size:10px;color:var(--tx3);letter-spacing:.04em;margin-top:2px}
.sum-side{min-width:0}
.sum-eyebrow{font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--acc-d);font-weight:700}
.sum-habit{font-size:19px;font-weight:750;letter-spacing:-.02em;margin-top:3px;line-height:1.2;text-wrap:balance}
.sum-note{font-size:12.5px;color:var(--tx3);margin-top:3px}
.sum-bars{width:100%;height:88px;margin-top:14px;display:block;overflow:visible}
.sum-bars rect{animation:barIn .5s cubic-bezier(0,0,.2,1) backwards;transform-box:fill-box;transform-origin:bottom}
.sum-bars rect:nth-of-type(1){animation-delay:.05s}.sum-bars rect:nth-of-type(2){animation-delay:.1s}
.sum-bars rect:nth-of-type(3){animation-delay:.15s}.sum-bars rect:nth-of-type(4){animation-delay:.2s}
.sum-bars rect:nth-of-type(5){animation-delay:.25s}.sum-bars rect:nth-of-type(6){animation-delay:.3s}
.sum-bars rect:nth-of-type(7){animation-delay:.35s}
@keyframes barIn{from{transform:scaleY(0)}to{transform:scaleY(1)}}
.bar-val{fill:var(--tx2)}
.bar-day{fill:var(--tx3)}
.bar-day.now{fill:var(--tx)}
.stats-row{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.stat{text-align:center;padding:10px 6px;border-radius:14px;background:var(--soft)}
.stat-num{font-size:24px;font-weight:250;line-height:1.05;font-variant-numeric:tabular-nums;letter-spacing:-.03em}
.stat-lab{font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--tx3);margin-top:2px;font-weight:600}

/* ===== чат ===== */
.chat-app{display:flex;flex-direction:column;height:100dvh}
.chat-head{display:flex;align-items:center;gap:12px;padding:14px 16px;background:var(--card);
  border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5}
.chat-ava{width:44px;height:44px;border-radius:50%;object-fit:cover;background:var(--soft)}
.chat-head-name{font-weight:800;font-size:15px;white-space:nowrap}
.chat-head-st{font-size:12px;color:var(--acc-d)}
.chat-head-btns{margin-left:auto;display:flex;gap:6px}
.chip-ic{border:0;background:var(--soft);color:var(--acc-d);border-radius:12px;width:38px;height:38px;font-size:17px;cursor:pointer}
.chat-scroll{flex:1;overflow-y:auto;padding:16px 14px 8px;display:flex;flex-direction:column;gap:10px}
.msg{max-width:82%;padding:11px 15px;border-radius:20px;font-size:15.5px;line-height:1.5;animation:msgIn .35s cubic-bezier(.22,.9,.3,1);white-space:pre-wrap;word-break:break-word}
@keyframes msgIn{from{opacity:0;transform:translateY(10px) scale(.97)}to{opacity:1;transform:none}}
.msg.bot{align-self:flex-start;background:var(--card);border:1px solid var(--line);border-bottom-left-radius:6px}
.msg.me{align-self:flex-end;background:var(--acc);color:#14130F;border-bottom-right-radius:6px;font-weight:600}
.msg img.msg-img{max-width:100%;border-radius:14px;display:block}
.msg .msg-can{color:var(--canline)}
.typing{align-self:flex-start;display:flex;gap:5px;padding:14px 18px;background:var(--card);border:1px solid var(--line);border-radius:20px;border-bottom-left-radius:6px}
.typing i{width:7px;height:7px;border-radius:50%;background:var(--tx2);animation:tp 1.2s infinite}
.typing i:nth-child(2){animation-delay:.2s}.typing i:nth-child(3){animation-delay:.4s}
@keyframes tp{0%,60%,100%{transform:none;opacity:.4}30%{transform:translateY(-5px);opacity:1}}
.chips{display:flex;gap:8px;flex-wrap:wrap;padding:2px 14px 6px;animation:msgIn .4s ease}
.chip{border:1.5px solid var(--acc);background:transparent;color:var(--acc-d);border-radius:99px;
  padding:9px 16px;font-size:14px;font-weight:700;cursor:pointer;font-family:'Inter',sans-serif}
.chip:active{background:var(--soft)}
.chat-shelf{display:flex;gap:10px;overflow-x:auto;overflow-y:hidden;padding:4px 14px 10px;
  scrollbar-width:none;min-height:250px;align-items:stretch;flex:none}
.chat-shelf::-webkit-scrollbar{display:none}
.chat-shelf{scroll-snap-type:x mandatory;scroll-padding-left:14px}
.chat-shelf .poster{flex:0 0 46%;height:236px;min-height:236px;aspect-ratio:auto;scroll-snap-align:start;background:var(--surface2)}
.chat-shelf .poster img{background:var(--surface2)}
.chat-shelf .poster .poster-txt{left:12px;right:12px;bottom:11px}
.chat-shelf .poster-title{font-size:17px;line-height:1.15}
.chat-shelf .poster-line{font-size:11px;margin-top:3px;line-height:1.3;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.shelf-swipe{padding:0 16px 4px;color:var(--tx3);animation:msgIn .4s ease}
.msg-slider{width:min(78%,300px);align-self:flex-start;background:var(--card);border:1px solid var(--line);
  border-radius:20px;border-bottom-left-radius:6px;padding:12px 16px}
.msg-slider .q-word{text-align:center}
.cancel-bar{display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:8px 14px;background:var(--soft);font-size:12.5px;color:var(--acc-d);
  font-weight:650;letter-spacing:.02em;animation:msgIn .3s ease}
.cancel-bar button{border:0;background:transparent;color:var(--acc-d);font-family:'Inter',sans-serif;
  font-size:13px;font-weight:750;cursor:pointer;padding:8px 10px;margin:-8px -10px -8px 0;min-height:36px}
.cancel-bar button:active{opacity:.6}
.chat-input{display:flex;gap:8px;padding:10px 12px calc(12px + env(safe-area-inset-bottom));
  background:var(--card);border-top:1px solid var(--line);align-items:center}
.chat-input input{flex:1;border:1.5px solid var(--line);background:var(--bg);border-radius:22px;
  padding:12px 16px;font-size:15.5px;font-family:'Inter',sans-serif;color:var(--tx);outline:none}
.chat-input input:focus{border-color:var(--acc)}
.chat-btn{border:0;width:46px;height:46px;border-radius:50%;font-size:19px;cursor:pointer;flex:none;
  display:flex;align-items:center;justify-content:center}
.chat-btn svg{width:24px;height:24px;display:block}
.chat-mic svg{width:26px;height:26px}
.chat-mic{width:58px;height:58px;font-size:27px;background:var(--acc);color:#14130F;
  box-shadow:0 6px 18px rgba(168,201,107,.35)}
.chat-mic.attract{animation:micPulse 2s ease-out infinite}
@keyframes micPulse{0%{box-shadow:0 0 0 0 rgba(168,201,107,.55)}70%{box-shadow:0 0 0 14px rgba(168,201,107,0)}100%{box-shadow:0 0 0 0 rgba(168,201,107,0)}}
.chat-mic.listening{background:#C0563E;color:#F4F1EA;animation:vp 1.2s infinite}
.chat-send{background:var(--btn);color:var(--btntx)}

@media (prefers-reduced-motion:reduce){*{animation-duration:.001s!important;transition-duration:.001s!important}.cinefade img{animation:none}}
@media (min-width:560px){.app{box-shadow:0 0 80px rgba(0,0,0,.5)}}
