/* «Не По Сценарию» — единый продукт. Надстройка над базой «Софиста» (style.css): шапка разделов, Дело второго дня, кодекс с тенями,
   бестиарий, скрытый уровень, закулисье. Правило цвета: красный — только нить давления, «хотя» — бархат #6B1B26,
   тени взглядов — три тона «Хора» (холодный, колючий, тихий), «вижу» — бирюзовый. */
:root{--velvet:#6B1B26;--t-cold:#3FD2FF;--t-thorn:#FF3F8E;--t-quiet:#FFC857}

/* ---------- чат: нити не красные, пока их не назвали (красный — только давление) ---------- */
.threads path{stroke:var(--soot);stroke-width:2;stroke-dasharray:5 6;opacity:.5}
.threads path.cut{stroke:var(--thread);stroke-width:2.8;opacity:1;stroke-dasharray:500}
.threads path.cut.clean{stroke:var(--seen)}
.tag::before{background:var(--soot)}
.msgs{gap:6px;padding:8px 10px 6px}
.msg{padding:6px 10px 5px;font-size:15px;max-width:62%}
.msg.m0{max-width:80%}
.msg.clean::before{background:var(--seen)}
.vizhu.clean{color:var(--soot);background:var(--seen);border-color:var(--soot)}
.chip.clean{background:var(--chalk);color:var(--soot)}
.reveal.clean{border-left:9px solid var(--seen)}
.tray{min-height:0}
.opts4{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:8px}
.opts4 .opt{flex:none;min-height:46px;font-size:15.5px}
.opt small{display:block;margin-top:2px;font:500 10.5px/1.1 "Golos Text",sans-serif;color:var(--ink-soft)}
.opt.clean{background:color-mix(in srgb,var(--seen) 22%,var(--chalk))}
.hint2{margin-top:7px;font-size:12.5px;line-height:1.3;font-weight:600;background:color-mix(in srgb,var(--lamp) 45%,var(--chalk));border:2px solid var(--soot);padding:5px 9px}
.prompt.mono{font-size:12px}

/* ---------- Находка и красное «хотя» ---------- */
.viewcard .kk{font-size:11px;color:#0d7b75;font-weight:700}
.hotya{margin-top:16px;background:var(--velvet);color:var(--chalk);border:2px solid var(--soot);box-shadow:var(--shadow);padding:12px 16px 15px;position:relative;animation:pop .5s .15s cubic-bezier(.3,1.7,.5,1) both}
.hotya .hl{font:400 36px/1 "Ruslan Display",serif;letter-spacing:.01em}
.hotya .hv{font-size:10.5px;opacity:.8;margin-top:3px}
.hotya p{margin-top:8px;font-size:15.5px;line-height:1.38;font-weight:500}
.pnote{margin-top:12px;font-size:13.5px;color:var(--ink-soft)}
.slip .stampv{background:var(--seen)}

/* ---------- две крупицы ---------- */
.cr2{position:relative;background:var(--chalk);border:2px solid var(--soot);box-shadow:var(--shadow);padding:26px 16px 14px;margin-top:18px;transform:rotate(-.4deg)}
.cr2:nth-child(2){transform:rotate(.4deg)}
.cr2::before{content:"";position:absolute;top:-11px;left:50%;width:70px;height:22px;margin-left:-35px;background:color-mix(in srgb,var(--lamp) 80%,transparent);border:1.5px solid rgba(28,20,17,.3);transform:rotate(-2deg)}
.cr2n{position:absolute;top:8px;left:16px;font-size:10.5px;color:var(--ink-soft)}
.cr2 q{display:block;quotes:none;font:600 20px/1.25 "Golos Text",sans-serif}
.cr2 .bsrc{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-top:12px;font-size:11px;color:var(--ink-soft)}
.vstamp{background:var(--tc,transparent);color:var(--soot)}
.cr2-act{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:14px}
@media (min-width:560px){.cr2-act{grid-template-columns:repeat(4,1fr)}}
.cr2-act button{min-height:50px;border:2px solid var(--soot);border-radius:4px;background:var(--chalk);box-shadow:3px 3px 0 var(--soot);font-weight:700;font-size:14px;transition:transform .08s,box-shadow .08s}
.cr2-act button:active{transform:translate(2px,2px);box-shadow:1px 1px 0 var(--soot)}
.cr2-done{margin-top:12px;font-size:13.5px;line-height:1.3;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.cr2-done .stp{border:3px solid var(--seen);color:#0d7b75;padding:1px 8px;font-size:12px;transform:rotate(-5deg)}
.cr2-done .stp.out{border-color:var(--ink-soft);color:var(--ink-soft)}
.cr2-done .undo{margin-left:auto;text-decoration:underline;font-size:11px}
.cr2.st-out{opacity:.7}
.cr2 .fit{margin-top:12px}
#toend:disabled{opacity:.45;box-shadow:none}

/* ---------- финал: сетка на 4 столбца, клиффхэнгер ---------- */
.grid{grid-template-columns:auto repeat(4,38px)}
.cell{width:38px;height:38px}
.cell.void{visibility:hidden}
.tomorrow{font-size:14px}
.tomorrow .bub{margin-top:4px;background:var(--canvas);border:2px solid var(--soot);padding:8px 12px;border-radius:4px 14px 14px 14px;text-align:left;font-weight:600;font-size:15px;line-height:1.3}
.tomorrow .bub b{display:block;font:600 10.5px "IBM Plex Mono",monospace;text-transform:uppercase;color:var(--ink-soft);margin-bottom:2px}
.tomorrow small{display:block;margin-top:7px;font-size:10px;color:var(--ink-soft);letter-spacing:.04em}

/* ---------- шапка разделов ---------- */
.appbar{position:sticky;top:0;z-index:30;background:color-mix(in srgb,var(--canvas) 96%,transparent);border-bottom:2px solid var(--soot);padding:calc(4px + env(safe-area-inset-top)) var(--gut) 0;backdrop-filter:blur(3px)}
.ab-row{display:flex;justify-content:space-between;align-items:center;min-height:48px;max-width:1180px;margin:0 auto;padding-bottom:10px}
.brand{font-size:17px;line-height:1.04;text-decoration:none;color:var(--soot);letter-spacing:.01em}
.brand .ini{font-style:normal;color:var(--seen)}
.ab-r{display:flex;align-items:center;gap:8px}
.flame{position:relative;display:flex;align-items:center;gap:4px;min-height:40px;padding:0 10px 0 8px;border:2px solid var(--soot);background:var(--chalk);border-radius:20px;box-shadow:2px 2px 0 var(--soot)}
.flame .fi svg{display:block;width:17px;height:21px}
.flame b{font:700 15px "IBM Plex Mono",monospace}
.flame .trace{position:absolute;right:6px;top:100%;margin-top:3px;font:500 8px/1 "IBM Plex Mono",monospace;letter-spacing:.03em;opacity:.38;white-space:nowrap;pointer-events:none}
.lupa,.gear{display:grid;place-items:center;width:40px;height:40px;border:2px solid var(--soot);background:var(--chalk);border-radius:4px;box-shadow:2px 2px 0 var(--soot)}
.lupa svg,.gear svg{width:22px;height:22px}
.lupa[aria-pressed="true"]{background:var(--seen)}
.gear.cur{background:var(--soot)}
.gear.cur svg *{stroke:var(--chalk)}
body.lupa-on [data-insp]{cursor:help}
.flame.burn{animation:burn .9s ease-in forwards}
@keyframes burn{0%{transform:none}25%{transform:scale(1.18) rotate(-5deg)}100%{transform:scale(.15) translateY(-14px);opacity:0;filter:grayscale(1)}}
.flame.burn::after{content:"";position:absolute;left:50%;top:50%;width:5px;height:5px;border-radius:50%;background:var(--lamp);box-shadow:-16px -12px 0 var(--thread),14px -16px 0 var(--lamp),0 -24px 0 var(--soot),-20px 6px 0 var(--soot),18px 8px 0 var(--thread);animation:sparks .9s ease-out forwards}
@keyframes sparks{from{transform:scale(.3);opacity:1}to{transform:scale(2.4) translateY(-12px);opacity:0}}
.tabs{display:flex;gap:4px;max-width:1180px;margin:0 auto}
.tabs a{flex:1;text-align:center;text-decoration:none;color:var(--soot);font:600 12px "IBM Plex Mono",monospace;text-transform:uppercase;letter-spacing:.05em;padding:9px 6px 8px;border:2px solid var(--soot);border-bottom:0;border-radius:4px 4px 0 0;background:var(--chalk);position:relative;margin-bottom:-2px}
.tabs a.cur{background:var(--soot);color:var(--chalk)}
.plus1{display:inline-block;margin-left:6px;background:var(--lamp);color:var(--soot);border:2px solid var(--soot);padding:0 4px;font-size:10px;border-radius:8px;animation:pop .5s cubic-bezier(.3,1.9,.5,1)}
.wrap{padding-top:18px}
.screen.scroll .wrap h1{margin-top:6px}
.sect{font:400 26px/1 "Ruslan Display",serif;margin-top:28px}

/* лист-ловушка: выбор приёма в скрытом уровне, похвала, всплывающая подсказка */
.trapsheet,.praise{position:fixed;left:0;right:0;bottom:0;z-index:100;display:none;padding:0 var(--gut) calc(14px + env(safe-area-inset-bottom));pointer-events:none}
.trapsheet.on,.praise.on{display:block}
.ts-in,.pr-in{pointer-events:auto;max-width:520px;margin:0 auto;background:var(--chalk);border:3px solid var(--soot);box-shadow:var(--shadow-lg);padding:14px 16px 12px;animation:pop .35s cubic-bezier(.3,1.5,.5,1)}
.ts-k,.pr-k{font-size:11px;color:#0d7b75;font-weight:700}
.ts-in h3,.pr-in h3{font:400 27px/1.05 "Ruslan Display",serif;margin-top:3px}
.ts-in p,.pr-in p{margin-top:6px;font-size:14.5px;line-height:1.35}
.ts-close{display:block;margin:10px auto 0;font-size:11px;text-decoration:underline;color:var(--ink-soft)}
.pr-in .pr-b{font-size:12.5px;color:var(--ink-soft)}
.trophy{display:flex;align-items:center;gap:10px;margin-top:10px;border:2px dashed var(--soot);padding:8px 10px;background:color-mix(in srgb,var(--lamp) 28%,var(--chalk))}
.trophy .tr-ico svg{display:block;width:26px;height:32px}
.trophy b{display:block;font-size:14px}
.trophy small{font-size:10.5px;color:var(--ink-soft)}
.pr-act{display:flex;gap:9px;margin-top:12px}
.pr-act .btn{flex:1;text-decoration:none;color:var(--soot);min-height:44px;font-size:14px}
.toast{position:fixed;left:50%;bottom:22px;transform:translate(-50%,16px);background:var(--soot);color:var(--chalk);padding:10px 16px;border-radius:4px;font-weight:600;font-size:14px;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;z-index:120;max-width:90vw;text-align:center}
.toast.on{opacity:1;transform:translate(-50%,0)}

/* ---------- «Дело» (домашний) ---------- */
.wrap.home{max-width:720px}
.week{list-style:none;display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.week li{border:2px solid var(--soot);background:var(--chalk);padding:6px 2px 5px;text-align:center;font-size:11px;line-height:1.15}
.week li .mono{display:block;font-size:10px;color:var(--ink-soft)}
.week li b{font-size:10.5px;font-weight:600}
.week li.today{background:var(--lamp);box-shadow:3px 3px 0 var(--soot);transform:translateY(-2px)}
.todaycard{margin-top:18px;background:var(--chalk);border:2px solid var(--soot);box-shadow:var(--shadow-lg);padding:18px 16px 16px}
.todaycard h1{font-size:30px}
.tc-act{display:flex;align-items:center;gap:14px;margin-top:16px;flex-wrap:wrap}
.tc-act .btn{text-decoration:none;color:var(--soot)}
.tiles{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:16px}
.tile{display:block;text-decoration:none;color:var(--soot);background:var(--chalk);border:2px solid var(--soot);box-shadow:var(--shadow);padding:12px 12px 14px;transition:transform .08s,box-shadow .08s}
.tile:active{transform:translate(3px,3px);box-shadow:1px 1px 0 var(--soot)}
.tile b{display:block;font-size:21px;line-height:1.05}
.tile span{display:block;margin-top:5px;font-size:13px;line-height:1.3;color:var(--ink-soft)}
.fineprint{margin-top:20px;font-size:10.5px;color:var(--ink-soft);text-align:center}

/* ---------- Дело второго дня ---------- */
.wrap.d2{max-width:1100px}
.d2head h1{font-size:30px}
.d2grid{display:grid;grid-template-columns:minmax(0,1fr);gap:18px;margin-top:14px}
.phone.d2p{flex:none;width:100%;max-width:400px;margin:0 auto;min-height:0}
.phone.warm{--seen:var(--lamp)}
.phone.warm .ava.g{background:var(--soot);font:700 12px "IBM Plex Mono",monospace}
.d2m{overflow:visible;padding:10px 12px 12px;gap:8px}
.d2msg{position:relative;align-self:flex-start;max-width:80%;background:var(--chalk);border:2px solid var(--soot);border-radius:4px 16px 16px 16px;padding:6px 11px 6px;font-size:15.5px;line-height:1.25;box-shadow:2px 2px 0 var(--soot);animation:msgin .4s both}
.d2msg small{display:block;font:600 10.5px "IBM Plex Mono",monospace;color:var(--ink-soft);margin-bottom:1px;text-transform:uppercase;letter-spacing:.04em}
.d2msg.re{background:color-mix(in srgb,var(--lamp) 38%,var(--chalk))}
.d2msg.tg.seen::before{content:"";position:absolute;left:-2px;right:-2px;bottom:-2px;height:7px;background:var(--seen);z-index:-1}
.d2msg .vizhu{position:absolute;right:-10px;top:-12px;transform:rotate(9deg);font:600 11px "IBM Plex Mono",monospace;color:var(--seen);border:2.5px solid var(--seen);background:var(--chalk);padding:1px 6px;border-radius:3px}
.tag2{position:absolute;right:-8px;top:-18px;width:44px;height:44px;display:grid;place-items:center;z-index:3}
.tag2 .dang{position:absolute;left:50%;bottom:100%;margin-bottom:-14px;height:34px;border-left:2px dashed var(--soot);opacity:.5}
.tag2 span{display:grid;place-items:center;width:36px;height:30px;background:var(--chalk);border:2px solid var(--soot);box-shadow:2px 2px 0 var(--soot);font:700 17px "IBM Plex Mono",monospace;border-radius:2px;margin-top:10px}
.tag2.open span{background:var(--lamp)}
.tag2.wait{opacity:.6}
.d2k{font-size:11px;color:var(--ink-soft)}
.d2side h2{font:400 28px/1.05 "Ruslan Display",serif;margin-top:4px}
.d2side .slips{margin-top:12px}
.scales{display:flex;flex-direction:column;gap:7px;margin-top:8px}
.sc{display:grid;grid-template-columns:96px 1fr;gap:8px;align-items:center}
.sc .mono{font-size:11px}
.trk{display:flex;gap:4px}
.trk i{flex:1;height:30px;border:2px solid var(--soot);display:grid;place-items:center;font:700 13px "IBM Plex Mono",monospace;font-style:normal;color:var(--ink-soft)}
.trk i.on.pos{background:var(--seen);color:var(--soot)}
.trk i.on.neg{background:var(--soot);color:var(--chalk)}
.trk i.on.zero{background:var(--canvas-dk);color:var(--soot)}
.scn{font-size:12.5px;color:var(--ink-soft);margin-top:4px}
.d2next{margin-top:16px;text-align:right}
.d2next .btn{text-decoration:none;color:var(--soot)}

/* ---------- кодекс: тени взглядов, сферы, лист ---------- */
.shadowbox{margin-top:18px;border:3px solid var(--soot);box-shadow:var(--shadow-lg);background:#15121d;overflow:hidden}
.shadows{display:block;width:100%;height:auto}
.legend{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}
.vchip{display:inline-block;background:var(--tc);color:var(--soot);border:2px solid var(--soot);padding:2px 8px;font:600 11px "IBM Plex Mono",monospace;text-transform:uppercase;letter-spacing:.04em;border-radius:3px}
.vchip.sm{font-size:8.5px;padding:1px 5px;margin-top:4px}
.lgnote{margin-top:8px;font-size:12.5px;color:var(--ink-soft);line-height:1.35}
.spheres{margin-top:10px;display:flex;flex-direction:column;gap:6px}
.sph{display:grid;grid-template-columns:74px 1fr;grid-template-areas:"l d" ". m";align-items:center;gap:2px 10px;background:var(--chalk);border:2px solid var(--soot);padding:6px 10px}
.sph .sl{grid-area:l;font-size:11px}
.sph .sd{grid-area:d}
.sph .sd i{display:inline-block;width:18px;height:18px;border:2px solid var(--soot);border-radius:50%;margin-right:5px;vertical-align:middle}
.sph .sd em{font-size:12px;color:var(--ink-soft);font-style:normal}
.sph .sm{grid-area:m;font-size:9.5px;background:var(--lamp);border:1.5px solid var(--soot);padding:1px 6px;justify-self:start}
.sph.none{border-style:dashed;background:transparent}
.sheet{list-style:none;margin-top:10px;background:var(--chalk);border:2px solid var(--soot);box-shadow:var(--shadow-lg);padding:2px 12px 8px}
.srow{display:grid;grid-template-columns:24px 34px 1fr;gap:10px;align-items:start;padding:10px 0;border-bottom:1px solid rgba(28,20,17,.2)}
.srow .sn{font:700 18px "IBM Plex Mono",monospace;padding-top:5px}
.srow .sab b{display:grid;place-items:center;width:34px;height:34px;background:var(--tc);border:2px solid var(--soot);font:700 12px "IBM Plex Mono",monospace}
.srow .sb q{quotes:none;display:block;font-weight:600;font-size:15.5px;line-height:1.25}
.srow .ss{font-size:10.5px;color:var(--ink-soft);margin-top:4px;line-height:1.35}
.srow .ss em{font-style:normal;color:var(--soot);font-weight:700}
.srow.own{border:2px dashed var(--soot);margin:4px -6px;padding:10px 6px;background:linear-gradient(90deg,color-mix(in srgb,var(--tc) 30%,transparent),color-mix(in srgb,var(--tc2,var(--tc)) 30%,transparent))}
.srow.pocket .sab b{outline:2px dashed var(--soot);outline-offset:2px;opacity:.85}
.srow.empty{color:var(--ink-soft);border-bottom:1px dashed var(--ink-soft)}
.srow.empty .sb{padding-top:6px;font-size:12.5px}
.tens{display:grid;grid-template-columns:1fr auto;gap:0 10px;align-items:center;padding:0 0 8px;margin-top:-6px}
.tens svg{grid-column:1/-1;width:100%;height:20px}
.tens span{font-size:9.5px;color:var(--ink-soft);line-height:1.3}
.tens .fork{border:2px solid var(--soot);background:var(--chalk);padding:4px 10px;font:600 11px "IBM Plex Mono",monospace;text-transform:uppercase;box-shadow:2px 2px 0 var(--soot)}
.cx-btns{display:flex;align-items:center;gap:12px;margin-top:14px}
.cx-btns .mono{font-size:11px;color:var(--ink-soft)}
.compose{margin-top:14px;background:var(--chalk);border:2px dashed var(--soot);padding:14px}
.compose h3{font-size:24px}
.compose .lb{display:block;margin-top:12px;font-size:10.5px;color:var(--ink-soft)}
.compose textarea{width:100%;margin-top:6px;border:2px solid var(--soot);background:var(--canvas);padding:9px 10px;font:500 15px "Golos Text",sans-serif;color:var(--soot);resize:none;border-radius:3px}
.vcs{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.vc{border:2px solid var(--soot);background:var(--chalk);padding:5px 9px;font-size:12.5px;font-weight:600;border-radius:3px;text-align:left}
.vc.on{background:var(--tc,var(--seen));box-shadow:2px 2px 0 var(--soot)}
.compose .btn{margin-top:14px}
.cside{margin-top:26px}
.seg{display:flex;border:2px solid var(--soot);background:var(--chalk);box-shadow:var(--shadow)}
.seg button{flex:1;padding:11px 4px;font:600 10.5px/1.15 "IBM Plex Mono",monospace;text-transform:uppercase;letter-spacing:.03em;border-right:2px solid var(--soot);text-align:center}
.seg button:last-child{border-right:0}
.seg button.on{background:var(--soot);color:var(--chalk)}
.cside .panel{margin-top:14px;background:var(--chalk);border:2px solid var(--soot);box-shadow:var(--shadow);padding:14px 14px 16px}
.cside .cap{font-size:13px;color:var(--ink-soft);line-height:1.35}
.sharecard.v2{width:min(100%,284px);aspect-ratio:9/16;padding:12px 12px 10px;margin:14px auto 0}
.sharecard.v2 .sc-n{gap:6px}
.sc-note{border-left:7px solid var(--tc,var(--soot));font-size:12px}
.thr2{display:flex;flex-direction:column;align-items:center;margin:-2px 0}
.thr2 svg{width:80px;height:34px}
.thr2 b{font-size:19px;font-weight:400;margin-top:-4px}
.linkbox{display:flex;flex-direction:column;gap:3px;margin-top:9px;font-size:10px;color:var(--ink-soft)}
.linkbox code{font:600 12.5px "IBM Plex Mono",monospace;background:var(--canvas);border:2px dashed var(--soot);padding:6px 8px;color:var(--soot);word-break:break-all;text-transform:none;letter-spacing:0}
.cmp{margin-top:14px;box-shadow:none;border:0;padding:0;background:transparent}
.backup .bk-row b{display:block;font:400 21px/1.05 "Ruslan Display",serif}
.backup .bk-row span{display:block;margin-top:3px;font-size:13px;color:var(--ink-soft);line-height:1.35}
.backup .btn{margin-top:10px;width:100%}
.forkbox{margin-top:14px;background:var(--chalk);border:2px dashed var(--soot);padding:12px 14px}
.forkbox b{font-size:11px;color:var(--ink-soft)}
.forkbox p{margin-top:5px;font-size:14.5px;font-weight:600;line-height:1.3}
.forkbox .fo{display:flex;flex-direction:column;gap:7px;margin-top:10px}
.forkbox .fo .btn{min-height:42px;font-size:14px;box-shadow:3px 3px 0 var(--soot)}

/* ---------- бестиарий ---------- */
.wrap.bs{max-width:1100px}
.bs-head h1{font-size:38px}
.bs-count{margin-top:10px;font-size:11.5px}
.lupa-card{background:var(--chalk);border:2px solid var(--soot);box-shadow:var(--shadow-lg);padding:14px;margin-top:18px}
.lc-top{display:flex;justify-content:space-between;gap:8px;font-size:10.5px;color:var(--ink-soft)}
.artifact{margin-top:10px;border:3px solid var(--soot);background:var(--canvas);border-radius:16px;padding:10px;display:flex;flex-direction:column;gap:7px;max-width:430px}
.af-h{display:flex;justify-content:space-between;gap:8px;font-size:10px;color:var(--ink-soft)}
.af-t{font:700 17px/1.2 "Golos Text",sans-serif;padding:0 2px}
.lz{position:relative;text-align:left;border:2px solid var(--soot);padding:7px 10px;font-weight:600;font-size:15px;line-height:1.25;background:var(--chalk);border-radius:6px;box-shadow:2px 2px 0 var(--soot)}
.lz:active{transform:translate(2px,2px);box-shadow:0 0 0 var(--soot)}
.lz.sel{background:color-mix(in srgb,var(--lamp) 60%,var(--chalk))}
.lz.done{background:color-mix(in srgb,var(--seen) 22%,var(--chalk))}
.lz .vizhu{position:absolute;right:-6px;top:-10px;transform:rotate(7deg);font:600 10.5px "IBM Plex Mono",monospace;color:var(--seen);border:2.5px solid var(--seen);background:var(--chalk);padding:1px 6px;border-radius:3px}
.lupa-card .opts4{max-width:430px}
.lupa-card .qline{margin-top:12px}
.lupa-card .prompt{padding-top:12px}
.lp-foot{display:flex;gap:12px;align-items:center;margin-top:12px;flex-wrap:wrap}
.lp-score{font-size:10.5px;color:var(--ink-soft)}
.lp-note{margin-top:10px;font-size:12px;color:var(--ink-soft);line-height:1.35}
.lp-res{margin-top:12px}
.lp-res b{display:block;font-size:14.5px;line-height:1.35;margin-bottom:10px}
.exam{margin-top:16px;border:2px dashed var(--soot);padding:8px 12px;font-size:11px;display:flex;flex-direction:column;gap:2px}
.exam span{color:var(--ink-soft)}
.beasts{display:grid;gap:16px;grid-template-columns:minmax(0,1fr);margin-top:12px}
.beast{display:grid;grid-template-columns:104px minmax(0,1fr);gap:12px;background:var(--chalk);border:2px solid var(--soot);box-shadow:var(--shadow);padding:12px}
.beast .creat{width:100%;height:auto}
.b-k{font-size:10px;color:#0d7b75;font-weight:700}
.beast h3{font-size:26px;line-height:1;margin-top:3px}
.beast dt{margin-top:8px;font-size:10px;color:var(--ink-soft)}
.beast dt.weak{color:#0d7b75}
.beast dd{font-size:13.5px;line-height:1.3;margin-top:2px}
.beast.trophy-new{box-shadow:5px 5px 0 var(--lamp),5px 5px 0 2px var(--soot)}
.lockedrow{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:12px}
.beast.locked{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-height:88px;border-style:dashed;background:transparent;box-shadow:none;padding:8px 4px}
.beast.locked .q{font-size:34px;line-height:1;color:var(--ink-soft)}
.beast.locked span{font-size:8.5px;color:var(--ink-soft);text-align:center}

/* ---------- закулисье ---------- */
.traps{list-style:none;display:flex;flex-direction:column;gap:10px;margin-top:12px}
.trap{display:grid;grid-template-columns:16px minmax(0,1fr);gap:10px;background:var(--chalk);border:2px solid var(--soot);padding:10px 12px;box-shadow:var(--shadow)}
.trap .tdot{width:14px;height:14px;border:2px solid var(--soot);border-radius:50%;margin-top:4px;background:var(--chalk)}
.trap.caught .tdot{background:var(--seen)}
.trap.open .tdot{background:var(--lamp)}
.trap.revealed .tdot{background:var(--soot)}
.trap b{font-size:15.5px}
.trap em{display:block;font-style:normal;font-size:10px;color:var(--ink-soft);margin:2px 0 4px}
.trap p{font-size:13.5px;line-height:1.35}
.trap small{display:block;margin-top:5px;font-size:9.5px;color:var(--ink-soft)}
.trap.later{opacity:.6;border-style:dashed;box-shadow:none}
.stats{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px}
.stats div{background:var(--chalk);border:2px solid var(--soot);padding:10px 12px;box-shadow:var(--shadow)}
.stats b{display:block;font:400 28px/1 "Ruslan Display",serif;color:var(--soot)}
.stats span{display:block;font-size:12.5px;line-height:1.3;margin-top:4px;color:var(--ink-soft)}
.help{margin-top:22px;border:2px solid var(--soot);padding:12px 14px;background:color-mix(in srgb,var(--seen) 16%,var(--chalk));font-size:14px;line-height:1.35}
.help b{display:block;font:400 21px "Ruslan Display",serif;margin-bottom:3px}

@media (min-width:900px){
  .ab-row{padding-bottom:12px}
  .tabs a{font-size:13px;padding:10px 8px 9px}
  .todaycard h1{font-size:40px}
  .tiles{gap:18px}
  .d2grid{grid-template-columns:400px minmax(0,1fr);gap:48px;align-items:start}
  .phone.d2p{margin:0}
  .d2head h1{font-size:46px}
  .d2side h2{font-size:34px}
  .cx-main{min-width:0}
  .shadows{max-height:560px}
  .cside{margin-top:0;position:sticky;top:116px}
  .beasts{grid-template-columns:1fr 1fr}
  .lockedrow{grid-template-columns:repeat(8,minmax(0,1fr))}
  .lupa-card{display:grid;grid-template-columns:minmax(0,430px) minmax(0,1fr);gap:0 36px;align-items:start}
  .lupa-card .lc-top{grid-column:1/-1}
  .lupa-card .artifact{grid-column:1}
  .lupa-card>.opts4,.lupa-card>.qline,.lupa-card>.prompt,.lupa-card>.lp-res,.lupa-card>.hint2{grid-column:2}
  .lupa-card .lp-foot,.lupa-card .lp-note{grid-column:1/-1}
  .stats{grid-template-columns:repeat(4,1fr)}
  .trap{padding:12px 16px}
  .traps{display:grid;grid-template-columns:1fr 1fr}
  #scr-end .grid{grid-template-columns:auto repeat(4,48px)}
  #scr-end .cell{width:48px;height:48px}
  .bs-head h1{font-size:54px}
  .week li{padding:10px 2px 8px;font-size:12px}
}

/* чат: время в строку с текстом, чтобы пять реплик влезали в телефон */
.msg time{display:inline-block;float:right;margin:7px 0 0 10px;line-height:1}
.msg::after{content:"";display:block;clear:both}
.msg{line-height:1.22}
.typing{padding:6px 12px}
.chead{padding:6px 14px 7px}
.day{margin-bottom:-2px}
@media (max-width:899px){.msgs{padding:6px 10px 4px;gap:5px}#scr-chat .head{padding-bottom:4px}}
.pocketcard{margin-top:16px;background:var(--chalk);border:2px dashed var(--soot);padding:14px}
.pocketcard h3{font:400 22px/1.05 "Ruslan Display",serif}
.pocketcard .pcs{display:flex;flex-direction:column;gap:8px;margin-top:10px}
.pocketcard .pc{display:grid;grid-template-columns:auto 1fr;gap:10px;align-items:center;font-size:14px;font-weight:600;line-height:1.25}
.pocketcard .pc i{width:12px;height:12px;border:2px solid var(--soot);background:var(--tc)}
.pocketcard .pc small{display:block;font:600 9.5px "IBM Plex Mono",monospace;text-transform:uppercase;color:var(--ink-soft);margin-top:2px}
.pocketcard .pk{margin-top:10px;font-size:11px;color:var(--ink-soft)}
@media (min-width:900px){.spheres{display:grid;grid-template-columns:1fr 1fr}.shadows{max-height:640px}}
.cr2-act button{font-size:13.5px;padding:0 4px}

/* ---------- «Помощь» с первого экрана ---------- */
.helpchip{position:absolute;top:calc(10px + env(safe-area-inset-top));right:var(--gut);z-index:40;min-height:30px;padding:0 10px;border:2px solid var(--soot);background:var(--chalk);border-radius:4px;box-shadow:2px 2px 0 var(--soot);font-size:10.5px}
body.scr-home .helpchip,body.scr-day2 .helpchip,body.scr-codex .helpchip,body.scr-bestiary .helpchip,body.scr-backstage .helpchip,body.scr-settings .helpchip{display:none}
.helpb{min-height:40px;padding:0 9px;border:2px solid var(--soot);background:var(--chalk);border-radius:4px;box-shadow:2px 2px 0 var(--soot);font-size:10.5px}
@media (max-width:420px){.ab-r{gap:6px}.helpb{padding:0 7px;font-size:10px}.flame{padding:0 8px 0 6px}}
.slots i.pk{background:var(--lamp)}
.cell.q{border:2.5px dashed var(--soot);background:transparent}
.pocketnote{margin-top:10px;font-size:10.5px;color:var(--ink-soft);text-align:center}
.lupa-host{display:block}

/* ---------- первая сессия: отклик на ход ---------- */
.react{margin-top:18px;background:var(--chalk);border:2px solid var(--soot);box-shadow:var(--shadow);padding:12px 14px 13px;animation:pop .4s cubic-bezier(.3,1.6,.5,1)}
.react .rl{font-size:16px;line-height:1.3;font-weight:600}
.react .rl b{display:block;font-size:10.5px;color:var(--ink-soft);margin-bottom:2px}
.react .scales{margin-top:10px}
.d2ask{align-self:flex-start;font:400 26px/1 "Ruslan Display",serif;margin:2px 2px 4px}
.pcb{display:flex;gap:8px;margin-top:8px}
.pcb button{min-height:36px;padding:0 12px;border:2px solid var(--soot);background:var(--chalk);box-shadow:2px 2px 0 var(--soot);border-radius:3px;font:700 13px "Golos Text",sans-serif;text-transform:none;letter-spacing:0}

/* ---------- настройки и замок Закулисья ---------- */
.wrap.set{max-width:680px}
.setlist{list-style:none;display:flex;flex-direction:column;gap:12px;margin-top:14px}
.srw{display:flex;align-items:center;justify-content:space-between;gap:14px;background:var(--chalk);border:2px solid var(--soot);box-shadow:var(--shadow);padding:12px 14px;text-decoration:none;color:var(--soot)}
.srw b{display:block;font:400 21px/1.05 "Ruslan Display",serif}
.srw span{display:block;margin-top:4px;font-size:13.5px;line-height:1.3;color:var(--ink-soft)}
.srw strong{color:var(--soot)}
.srw .btn{flex:none;min-height:42px;text-decoration:none;color:var(--soot)}
.srw .arr{font:700 20px "IBM Plex Mono",monospace;color:var(--soot)}
.srw.block details{width:100%}
.adults summary{font:400 21px/1.05 "Ruslan Display",serif;cursor:pointer;min-height:32px;display:flex;align-items:center}
.adults p{margin-top:8px;font-size:13.5px;line-height:1.35;color:var(--ink-soft)}
.locked{max-width:480px;margin:40px auto 0;background:var(--chalk);border:2px dashed var(--soot);padding:22px 18px;text-align:center}
.locked p{margin:10px 0 16px;font-size:15px;color:var(--ink-soft)}
.locked .btn{text-decoration:none;color:var(--soot)}

/* ---------- правки по итогам рендера ---------- */
.helpchip{top:calc(8px + env(safe-area-inset-top));min-height:22px;padding:0 8px;font-size:9.5px;box-shadow:1px 1px 0 var(--soot)}
.pocket{flex-wrap:wrap}
.pocket .slots{flex-basis:100%;max-width:none}
.d2m.thread .d2msg{padding-right:30px;margin-right:10px}
.btn:disabled{opacity:.45;box-shadow:none;cursor:default}
.srw .arr{margin:0}

/* ===== ревью Codex 03.11: цены (Р1), «У меня другая причина», шкала Тимура и «Без нитей» (Р3), проверка (Р2), Лупа и ловушка (Р15) ===== */

/* Р1: цены сцены — только показ. Строки чека с пунктиром, без рамок-кнопок, без поля; направление — факт, без красного и зелёного */
.cost{margin-top:12px;padding-top:9px;border-top:2px dashed var(--soot)}
.cost-k{display:flex;justify-content:space-between;align-items:baseline;gap:4px 10px;flex-wrap:wrap;font-size:10.5px;color:var(--ink-soft)}
.cost-k .cost-l{text-transform:none;letter-spacing:0;font-weight:500;font-size:10.5px}
.cost ul{list-style:none;margin-top:4px}
.cost li{display:grid;grid-template-columns:92px 22px minmax(0,1fr);gap:6px;align-items:baseline;padding:6px 0;border-bottom:1px dotted rgba(28,20,17,.45);font-size:14.5px;line-height:1.25;user-select:none}
.cost li:last-child{border-bottom:0}
.cost .cl{font-size:10.5px;color:var(--ink-soft)}
.cost .ca{font:700 17px/1 "IBM Plex Mono",monospace;text-align:center;color:var(--soot)}
.cost .ct{font-weight:600}
.d2side .cost{background:var(--chalk);border:2px dashed var(--soot);padding:9px 12px 4px;margin-top:8px}

/* Находка и «У меня другая причина» */
.viewcard h3{font-size:23px;line-height:1.08}
.otherr{display:inline-flex;align-items:center;min-height:44px;margin-top:8px;padding:0 2px;font-weight:600;font-size:14.5px;text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:2px;color:var(--soot)}
.otherr[aria-expanded="true"]{text-decoration-style:dashed}
.reasons{margin-top:6px;padding-top:10px;border-top:1px dashed var(--ink-soft)}
.reasons .kk{font-size:10.5px;color:var(--ink-soft)}
.reasons ul{list-style:none;display:flex;flex-direction:column;gap:9px;margin-top:8px}
.reasons li{border-left:6px solid var(--tc,var(--soot));padding:3px 0 3px 10px}
.reasons li .vstamp{display:inline-block;transform:none;font-size:10.5px;border-width:2px;padding:0 6px;margin-bottom:3px}
.reasons q{display:block;quotes:none;font-weight:600;font-size:15.5px;line-height:1.3}
.reasons .lb{display:block;margin-top:12px;font-size:10.5px;color:var(--ink-soft)}
.myreason{width:100%;min-height:46px;margin-top:5px;padding:8px 10px;border:2px solid var(--soot);border-radius:3px;background:var(--canvas);font:500 16px "Golos Text",sans-serif;color:var(--soot)}
.rs-foot{display:flex;gap:6px 12px;align-items:center;flex-wrap:wrap;margin-top:9px}
.rs-foot .btn{min-height:42px;font-size:14px}
.rs-count{font-size:10px;color:var(--ink-soft)}
.rs-count.over{color:var(--thread)}
.rs-done{margin-top:10px;font-size:13.5px;line-height:1.3}
.rs-done b{display:inline-block;border:2px solid var(--seen);color:#0d7b75;padding:0 6px;margin-right:6px;font-size:10.5px}

/* Р15: «Чем отбиваешь?» — последняя реплика Тимура как контекст */
.ctx{margin-top:14px;max-width:88%;background:var(--chalk);border:2px solid var(--soot);border-radius:4px 16px 16px 16px;box-shadow:3px 3px 0 var(--soot);padding:8px 12px 10px}
.ctx b{display:block;font-size:10px;color:var(--ink-soft);margin-bottom:2px}
.ctx q{display:block;quotes:none;font-weight:600;font-size:18px;line-height:1.25}

/* Р3: шкала «Как Тимур себя чувствует» перед инверсией (8 → 3, 1,2 с, не пропускается) */
.feel{position:absolute;left:50%;top:34%;transform:translate(-50%,-50%);width:min(88%,380px);z-index:60;background:var(--chalk);border:2px solid var(--soot);box-shadow:var(--shadow-lg);padding:14px 14px 12px;animation:pop .3s cubic-bezier(.3,1.5,.5,1) both}
.feel-k{font-size:11px;color:var(--ink-soft)}
.feel-row{display:flex;align-items:center;gap:10px;margin-top:9px}
.feel .notches{display:flex;gap:3px;flex:1}
.feel .notches i{flex:1;height:20px;border:1.5px solid var(--soot);background:transparent;transition:background .35s}
.feel .notches i.on{background:var(--soot)}
.feel.drop .notches i.on{background:var(--thread)}
.feel-n{font-size:20px;min-width:52px;text-align:right}

/* Р3: ход «Без нитей» */
#scr-honest.on{overflow-y:auto}
#scr-honest .stage{min-height:176px;flex:1 0 176px}
.honestside{flex:none}
.honestside .say{margin-top:12px}
.feelbox{padding:10px var(--gut) 0}
.hres{margin:10px var(--gut) 0;background:var(--chalk);border:2px solid var(--soot);box-shadow:var(--shadow);padding:10px 12px;font-weight:600;font-size:15px;line-height:1.3}
.hres.ok{border-left:9px solid var(--seen)}
.hres small{display:block;margin-top:5px;font-size:10px;color:var(--ink-soft);font-weight:600}
.stampv2{display:inline-block;border:3px solid var(--seen);color:#0d7b75;padding:1px 9px;font-size:13px;transform:rotate(-4deg);margin-bottom:7px}
.hbtns{display:flex;gap:10px;justify-content:flex-end;margin:10px var(--gut) 0}
.honesthand{padding-top:12px}
.invites{display:flex;flex-direction:column;gap:10px}
.inv{text-align:left;background:var(--chalk);border:2px solid var(--soot);box-shadow:var(--shadow);padding:11px 14px;font-weight:600;font-size:16px;line-height:1.25;min-height:50px;transition:transform .1s,box-shadow .1s,opacity .2s}
.inv:active{transform:translate(2px,2px);box-shadow:1px 1px 0 var(--soot)}
.inv:disabled{cursor:default;opacity:.5}
.inv.chosen:disabled{opacity:1;box-shadow:var(--shadow-lg)}
.stray{position:absolute;right:14%;top:30px;width:40px;z-index:5;pointer-events:none;animation:pop .4s both}
.stray svg{display:block;width:40px;height:150px}
.stray span{position:absolute;top:94px;right:42px;white-space:nowrap;background:var(--chalk);border:2px solid var(--soot);padding:1px 7px;font-size:11px;transform:rotate(-4deg)}
body.honest-done #honestinv{margin-top:2px}
@media (min-width:900px){
  #scr-honest.on{display:grid;grid-template-columns:minmax(0,1fr) 440px;grid-template-rows:auto minmax(0,1fr) auto;grid-template-areas:"head side" "stage side" "hand side";overflow:hidden}
  #scr-honest .head{grid-area:head}#scr-honest .stage{grid-area:stage;min-height:0}
  #scr-honest .honestside{grid-area:side;padding:40px 0 28px;border-left:2px solid var(--soot);background:var(--canvas);position:relative;z-index:8;overflow-y:auto}
  #scr-honest .honestside .say{margin-top:0}
  #scr-honest .honesthand{grid-area:hand;padding:10px 32px 24px}
  .invites{flex-direction:row;gap:16px}.inv{flex:1;font-size:18px;padding:14px 16px}
}

/* Р2: проверка оснований в Деле */
.d2pin{align-self:stretch;background:var(--chalk);border:2px dashed var(--soot);padding:5px 10px 6px;font-size:13.5px;line-height:1.25;font-weight:600;margin-bottom:2px}
.d2pin .mono{display:block;font-size:9.5px;color:var(--ink-soft)}
.chk{margin-top:12px;background:var(--chalk);border:2px solid var(--soot);border-left:9px solid var(--lamp);box-shadow:var(--shadow);padding:9px 12px 10px;animation:pop .4s both}
.chk .kk{font-size:10.5px;color:var(--ink-soft)}
.chk .pin{margin-top:7px;border:2px dashed var(--soot);padding:5px 9px 6px;font-weight:600;font-size:14.5px}
.chk .pin small{display:block;font-size:9.5px;color:var(--ink-soft);margin-bottom:1px}
.chk p{margin-top:7px;font-weight:700;font-size:15.5px;line-height:1.3}
.chk>small{display:block;margin-top:6px;font-size:9.5px;color:var(--ink-soft)}
.d2btns{display:flex;gap:10px;margin-top:12px}
.d2btns .btn{flex:1}
.d2note{margin-top:6px;font-size:10px;color:var(--ink-soft)}

/* Р15: Лупа — одна порция в день, счёт, «Мало данных»; счётчик проверок в режиме лупы; лестница существа; полоса недели */
.lupastrip{display:none;justify-content:center;gap:5px;margin:0 calc(-1 * var(--gut));padding:5px 0 6px;font-size:10.5px;background:var(--seen);border-top:2px solid var(--soot)}
body.lupa-on .lupastrip{display:flex}
.lupastrip b{font-size:12px}
.ts-k{display:flex;justify-content:space-between;gap:8px}
.lp-foot .btn{flex:1}
.lp-score{display:flex;flex-wrap:wrap;gap:3px 12px;margin-top:10px;font-size:10.5px;color:var(--ink-soft)}
.lp-score .idx{color:var(--soot)}
.lp-tomorrow{margin-top:6px;font-size:10.5px;color:var(--ink-soft)}
.ladder{list-style:none;display:flex;flex-wrap:wrap;gap:5px;margin-top:10px}
.ladder li{font-size:9.5px;border:2px dashed var(--ink-soft);color:var(--ink-soft);padding:2px 7px}
.ladder li.on{border:2px solid var(--soot);background:var(--seen);color:var(--soot)}
.ladnote{font-size:13px;margin-top:6px}
.week li .gd{display:block;font-size:9px;color:var(--ink-soft);margin-top:1px;letter-spacing:0}
.weeknote{margin-top:8px;font-size:10px;color:var(--ink-soft);text-transform:none;letter-spacing:.01em;font-weight:500}
.todaycard.wait{background:color-mix(in srgb,var(--lamp) 28%,var(--chalk))}
.todaycard.wait h1{font-size:27px}
.cmpsum{margin-top:12px;font-size:14.5px;line-height:1.35}
.trap.more{opacity:.7}
.endline{margin-top:28px;text-align:center;font-size:27px;line-height:1.15}

/* Р7: «Подгоняю» пересматривает связи (вопрос по каждой связи, область действия) */
.tens2{margin-top:12px;padding-top:10px;border-top:1px dashed var(--ink-soft)}
.tens2 .kk{font-size:10px;color:var(--ink-soft)}
.tens2 .tq{margin-top:5px;font-weight:700;font-size:15px}
.tens2 q{display:block;quotes:none;margin-top:4px;font-size:14px;font-weight:500;color:var(--ink-soft)}
.tn-act,.scope-act{display:flex;flex-wrap:wrap;gap:8px;margin-top:9px}
.tn-act button,.scope-act button{min-height:42px;padding:0 12px;border:2px solid var(--soot);border-radius:4px;background:var(--chalk);box-shadow:2px 2px 0 var(--soot);font-weight:700;font-size:13.5px}
.scope-act button{min-height:38px;font-weight:600;font-size:13px;box-shadow:none;border-style:dashed}
.tn-act button[aria-pressed="true"]{background:var(--seen)}
.scope-act button[aria-pressed="true"]{background:var(--lamp);border-style:solid}
.tn-say{margin-top:7px;font-size:10px;color:var(--ink-soft)}
/* красная нить «Это тоже нить» — у края сцены, подпись вдоль нити */
.stray{right:22%}
.stray span{writing-mode:vertical-rl;left:46px;right:auto;top:18px;transform:none;padding:7px 2px}

/* ===== правки по судейским замечаниям (03.11) ===== */
/* «Проверить» — первая кнопка в лотке тапнутой строки, на всю ширину */
.opts4 .opt.chkbtn{grid-column:1/-1;background:color-mix(in srgb,var(--lamp) 40%,var(--chalk));min-height:44px}
.opts4 .opt.chkbtn:disabled{opacity:.55;box-shadow:none}
/* бирка-раскрытие в Лупе: название приёма, которое игрок не назвал верно */
.lz .vizhu.late{color:var(--chalk);background:var(--thread);border-color:var(--soot)}
/* счёт Лупы: разбор спрятан под «?» */
.lp-why{margin-top:8px}
.lp-why summary{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border:2px solid var(--soot);border-radius:50%;background:var(--chalk);font:700 13px "IBM Plex Mono",monospace;cursor:pointer;list-style:none}
.lp-why summary::-webkit-details-marker{display:none}
.lp-why[open] summary{background:var(--lamp)}
.lp-why .lp-note{margin-top:8px}
/* экран ожидания: пузырь Тимура вместо правила */
.waitbub{margin-top:12px;background:var(--canvas);border:2px solid var(--soot);padding:9px 13px;border-radius:4px 16px 16px 16px;box-shadow:3px 3px 0 var(--soot);font-weight:600;font-size:17px;line-height:1.3;max-width:94%}
.waitbub b{display:block;font-size:10.5px;text-transform:uppercase;color:var(--ink-soft);margin-bottom:2px}
.todaycard.wait h1{margin-top:14px}
.todaycard.wait .tc-act .lupabtn{width:100%;justify-content:center;text-align:center;min-height:52px;font-size:16px}
.tiles.one{grid-template-columns:1fr}
.pr-in .hunt{font-size:14.5px}

/* ТЗ §3: лампочки 2–3 без слов — значок и прибавка; Отдых в полосе недели; запись для наблюдателя в «Для взрослых» */
.lamp.bare{padding:2px 7px 2px 4px}
.week li.rest{background:transparent;border-style:dashed;opacity:.72}
.week li.rest b{font-weight:500}
.adults-meta{list-style:none;margin:10px 0 0;padding:8px 10px;border:2px dashed var(--soot);font-size:12px;line-height:1.7}
.adults-meta b{font-family:"IBM Plex Mono",monospace;font-weight:600;font-size:12px;text-transform:none;letter-spacing:0;display:inline}
