/* Часослов — книга: переплёт, разворот, листание, дела, заметки, оглавление, статистика, архив, настройки. */
.book-view{position:relative}
.book-toolbar{display:flex;flex-wrap:wrap;gap:10px 14px;align-items:center;margin:0 auto 16px;max-width:1180px}
.weekstrip{display:flex;align-items:stretch;gap:6px;flex:1 1 560px;min-width:0}
.ws-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px;flex:1;min-width:0}
.ws-btn{width:44px;min-height:58px;border-radius:8px;border:1px solid rgba(243,214,150,.25);background:rgba(255,235,190,.06);color:var(--on-desk);display:grid;place-items:center;transition:background-color .2s}
.ws-btn:hover{background:rgba(255,235,190,.16)}
.ws-day{position:relative;display:grid;justify-items:center;align-content:center;gap:1px;min-height:58px;padding:5px 2px 6px;border-radius:8px;border:1px solid rgba(243,214,150,.2);background:rgba(255,235,190,.06);color:var(--on-desk);text-decoration:none;
  transition:background-color .2s,transform .2s var(--ease-out),border-color .2s}
.ws-day:hover{background:rgba(255,235,190,.15)}
.ws-day .dow{font:700 .72rem/1 var(--font-ui);color:var(--on-desk-soft)}
.ws-day .num{font:700 1.3rem/1.1 var(--font-display)}
.ws-day .marks{display:flex;gap:3px;height:8px;align-items:center}
.ws-day .mk{width:6px;height:6px;border-radius:50%;background:var(--on-desk-soft)}
.ws-day .mk.star{background:#ff7a64;box-shadow:0 0 6px #ff7a64aa}
.ws-day .mk.note{border-radius:1px;background:var(--brass-2)}
.ws-day .cnt{position:absolute;top:3px;right:5px;font:700 .68rem var(--font-ui);color:var(--on-desk-soft)}
.ws-day.today{border-color:var(--brass-1);box-shadow:0 0 0 1px var(--brass-3),0 0 14px rgba(224,162,59,.4)}
.ws-day[aria-current='date']{background:linear-gradient(180deg,#f5e4ac,#c9a04f);color:#2a1a08;border-color:#7a5a24}
.ws-day[aria-current='date'] .dow,.ws-day[aria-current='date'] .cnt{color:#4a3512}
.ws-day[aria-current='date'] .mk{background:#4a3512}
.ws-day.drop{border-style:dashed;border-color:var(--brass-1);background:rgba(243,214,150,.28);transform:translateY(-2px)}
.tb-right{display:flex;gap:8px;align-items:center;flex:0 1 auto;margin-left:auto}
.searchbox{position:relative;flex:1 1 220px;min-width:180px}
.searchbox .i{position:absolute;left:12px;top:11px;width:20px;height:20px;color:var(--on-desk-soft);pointer-events:none}
.searchbox input{padding-left:40px;background:rgba(20,10,4,.5);color:var(--on-desk);border-color:rgba(243,214,150,.35)}
.searchbox input::placeholder{color:var(--on-desk-soft)}
.search-pop{position:absolute;z-index:30;left:0;right:0;top:calc(100% + 6px);min-width:300px;max-height:60vh;overflow:auto;padding:8px;border-radius:8px;background:var(--paper-grain),var(--paper);color:var(--ink);box-shadow:0 24px 40px -12px #000e,0 0 0 1px #0006}
.search-pop h4{font:700 .8rem var(--font-ui);color:var(--ink-soft);margin:6px 6px 2px}
.search-pop a{display:grid;gap:1px;padding:7px 8px;border-radius:6px;text-decoration:none;color:var(--ink);min-height:44px;align-content:center}
.search-pop a:hover,.search-pop a:focus-visible{background:rgba(42,32,23,.1)}
.search-pop .t{font:500 1.25rem/1.1 var(--font-hand);color:var(--ink-blue)}
.search-pop .d{font:700 .74rem var(--font-ui);color:var(--ink-soft)}
.search-pop mark{background:rgba(224,162,59,.5);color:inherit;border-radius:2px}
.search-pop .none{padding:12px 8px;color:var(--ink-soft)}

/* ---------- переплёт ---------- */
.book-stage{position:relative;max-width:1180px;margin:0 auto}
.book{position:relative;padding:clamp(10px,1.7vw,24px);border-radius:12px 18px 18px 12px;
  background:linear-gradient(rgba(20,9,4,.35),rgba(20,9,4,.5)),#3a2216 url(/img/cover.webp) 50% 40%/170% auto;
  box-shadow:0 40px 70px -26px #000,0 14px 26px -8px #000b,inset 0 0 0 1px rgba(255,220,160,.1),inset 0 2px 8px rgba(255,220,160,.18),inset 0 -8px 20px rgba(0,0,0,.5)}
.book::before{content:'';position:absolute;inset:5px;border:1.5px dashed rgba(226,188,108,.5);border-radius:8px 14px 14px 8px;pointer-events:none}
.book .corner{position:absolute;width:clamp(30px,4vw,48px);aspect-ratio:1;background:url(/img/corner.svg) center/contain no-repeat;filter:drop-shadow(0 2px 2px rgba(0,0,0,.5));pointer-events:none;z-index:3}
.book .corner.tl{left:-3px;top:-3px}.book .corner.tr{right:-3px;top:-3px;transform:scaleX(-1)}
.book .corner.bl{left:-3px;bottom:-3px;transform:scaleY(-1)}.book .corner.br{right:-3px;bottom:-3px;transform:scale(-1,-1)}
.spread{position:relative;display:grid;grid-template-columns:1fr 1fr;perspective:2600px;border-radius:3px;background:var(--paper-2);
  box-shadow:0 0 0 1px rgba(0,0,0,.45),0 2px 0 var(--paper-edge),0 3px 0 #efe3c4,0 4px 0 var(--paper-edge),0 5px 0 #e9dcbb,0 6px 0 #8a7650,0 14px 20px -4px #000a}
.spread::after{content:'';position:absolute;z-index:6;left:50%;top:0;bottom:0;width:70px;margin-left:-35px;pointer-events:none;
  background:linear-gradient(90deg,transparent,rgba(70,40,12,.22) 40%,rgba(30,16,4,.5) 50%,rgba(70,40,12,.22) 60%,transparent)}
.page{color-scheme:light;position:relative;min-height:clamp(560px,76vh,760px);padding:clamp(18px,2.6vw,34px) clamp(18px,3.4vw,48px) 30px;background:var(--paper-grain),var(--paper);color:var(--ink);overflow:hidden}
.page::before{content:'';position:absolute;inset:0;background:rgba(18,10,4,var(--page-dim));pointer-events:none}
.page-left{border-radius:3px 0 0 3px;padding-right:clamp(30px,4.6vw,62px)}
.page-right{border-radius:0 3px 3px 0;padding-left:clamp(30px,4.6vw,62px)}
.page>*{position:relative}
.page h2{font:700 clamp(1.4rem,2vw,1.8rem)/1.1 var(--font-display);color:var(--ink)}
.page .hand-title{font:400 clamp(1.7rem,2.4vw,2.2rem)/1 var(--font-script);color:var(--ink-blue)}
.page .muted{color:var(--ink-soft)}
.page-corner{position:absolute!important;display:block;bottom:0;width:78px;height:78px;border:0;background:transparent;z-index:9;color:var(--ink-soft)}
.page-corner.next{right:0}.page-corner.prev{left:0}
.page-corner::before{content:'';position:absolute;bottom:0;width:30px;height:30px;transition:width .3s var(--ease-out),height .3s var(--ease-out)}
.page-corner.next::before{right:0;background:linear-gradient(315deg,#6a553a 0 50%,#f6ecd2 50%,#d9c8a0);border-radius:100% 0 0 0;box-shadow:-3px -3px 8px rgba(0,0,0,.3)}
.page-corner.prev::before{left:0;background:linear-gradient(45deg,#6a553a 0 50%,#f6ecd2 50%,#d9c8a0);border-radius:0 100% 0 0;box-shadow:3px -3px 8px rgba(0,0,0,.3)}
.page-corner:hover::before,.page-corner:focus-visible::before{width:56px;height:56px}
.ribbon{position:absolute;z-index:8;left:50%;top:-6px;width:20px;margin-left:-10px;height:clamp(110px,18vh,160px);pointer-events:none;
  background:linear-gradient(90deg,#7d1a14,#b8372a 45%,#8f1f19);clip-path:polygon(0 0,100% 0,100% 100%,50% 88%,0 100%);filter:drop-shadow(1px 3px 2px rgba(0,0,0,.5));transform-origin:50% 0;animation:sway 7s ease-in-out infinite}
@keyframes sway{0%,100%{transform:rotate(-.6deg)}50%{transform:rotate(.7deg)}}
.tabs-edge{position:absolute;z-index:2;right:-8px;top:70px;display:grid;gap:6px}
.tabs-edge a{display:block;writing-mode:vertical-rl;padding:12px 7px 12px 12px;border-radius:0 8px 8px 0;background:var(--tab,var(--brass-2));color:#2a1a08;font:700 .82rem/1 var(--font-ui);text-decoration:none;box-shadow:3px 3px 6px #0008,inset 0 1px 0 #fff6;
  transition:transform .25s var(--ease-out);min-height:44px;min-width:36px}
.tabs-edge a:hover,.tabs-edge a:focus-visible{transform:translateX(8px)}

/* ---------- листающийся лист ---------- */
.leaf{position:absolute;z-index:20;top:0;bottom:0;width:50%;transform-style:preserve-3d;pointer-events:none;will-change:transform}
.leaf.fwd{left:50%;transform-origin:left center}
.leaf.bwd{left:0;transform-origin:right center}
.leaf-face{position:absolute;inset:0;overflow:hidden;backface-visibility:hidden;-webkit-backface-visibility:hidden}
.leaf-face.back{transform:rotateY(180deg)}
.leaf-face .page{height:100%;min-height:0}
.leaf-shade{position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,rgba(20,10,2,.55),rgba(20,10,2,0) 70%);opacity:0}
.leaf.bwd .leaf-shade{background:linear-gradient(270deg,rgba(20,10,2,.55),rgba(20,10,2,0) 70%)}
.leaf-cast{position:absolute;z-index:19;top:0;bottom:0;width:50%;pointer-events:none;opacity:0;background:linear-gradient(90deg,rgba(15,8,2,.5),transparent 55%)}
.leaf-cast.bwd{left:0;background:linear-gradient(270deg,rgba(15,8,2,.5),transparent 55%)}.leaf-cast.fwd{left:50%}

/* ---------- страница дня ---------- */
.day-head{display:flex;align-items:flex-end;gap:14px;padding-bottom:10px;border-bottom:2px solid var(--ink);margin-bottom:12px;position:relative}
.day-head::after{content:'';position:absolute;left:0;right:0;bottom:-6px;border-bottom:1px solid var(--ink-soft)}
.day-num{font:900 clamp(3rem,6vw,4.6rem)/.85 var(--font-display);color:var(--ink);letter-spacing:-.02em}
.day-meta{display:grid;gap:2px;padding-bottom:4px;min-width:0}
.day-month{font:400 clamp(1.6rem,2.6vw,2.1rem)/1 var(--font-script);color:var(--ink-blue)}
.day-dow{font:700 .95rem/1 var(--font-ui);color:var(--ink-soft)}
.badge-today{display:inline-block;margin-left:8px;padding:2px 9px;border-radius:99px;background:var(--seal);color:#fff1e0;font:700 .72rem var(--font-ui);vertical-align:middle;transform:rotate(-3deg)}
.day-tools{margin-left:auto;display:flex;gap:4px;padding-bottom:2px}
.tool-ink{width:44px;height:44px;display:grid;place-items:center;border:0;border-radius:50%;background:transparent;color:var(--ink);transition:background-color .2s}
.tool-ink:hover{background:rgba(42,32,23,.12)}
.quick-add{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:14px 0 16px}
.quick-add .input{flex:1 1 180px;min-width:0;font:500 1.5rem/1.1 var(--font-hand);background:transparent;border:0;border-bottom:2px solid var(--ink-soft);border-radius:0;padding:.2em .3em;color:var(--ink-blue);min-height:44px}
.quick-add .input:focus{box-shadow:none;border-bottom-color:var(--ink-blue);background:rgba(255,252,240,.4)}
.quick-add .time{flex:0 0 112px;font:700 1rem var(--font-ui);border:0;border-bottom:2px solid var(--ink-soft);border-radius:0;background:transparent;color:var(--ink);min-height:44px}
.star-toggle{width:44px;height:44px;border:0;border-radius:50%;background:transparent;color:var(--ink-faint);display:grid;place-items:center;transition:color .2s,transform .25s var(--ease-out)}
.star-toggle .i{width:26px;height:26px}
.star-toggle[aria-pressed='true']{color:var(--ink-red)}
.star-toggle[aria-pressed='true'] .i{fill:currentColor}
.star-toggle:hover{transform:scale(1.12) rotate(-8deg)}
.add-btn{min-height:44px;padding:0 16px;border-radius:8px;border:2px solid var(--ink);background:var(--ink);color:var(--paper);font:700 .95rem var(--font-ui);transition:transform .12s,background-color .2s}
.add-btn:hover{background:#3a2c1e}.add-btn:active{transform:scale(.97)}

.red-block{position:relative;margin:20px 0 14px;padding:14px 12px 4px 14px;border:2px solid var(--ink-red);border-radius:5px 16px 5px 16px;background:rgba(160,42,29,.06);box-shadow:inset 0 0 0 1px rgba(160,42,29,.2)}
.red-label{position:absolute;top:-17px;left:18px;padding:0 10px;background:var(--paper);font:400 1.55rem/1 var(--font-script);color:var(--ink-red);display:flex;align-items:center;gap:6px}
.red-label .i{width:18px;height:18px;fill:currentColor;stroke-width:1}
.tasks{list-style:none;margin:0;padding:0}
.task{position:relative;display:grid;grid-template-columns:44px minmax(0,1fr) auto;align-items:start;min-height:46px;border-bottom:1.5px solid var(--rule);background:transparent;transition:background-color .2s,opacity .2s}
.task.dragging{opacity:.35}
.task.over-before{box-shadow:0 -3px 0 0 var(--ink-blue)}
.task.over-after{box-shadow:0 3px 0 0 var(--ink-blue)}
.chk{position:relative;width:44px;height:46px;display:grid;place-items:center;border:0;background:transparent;color:var(--ink)}
.chk svg{width:30px;height:30px;overflow:visible}
.chk .ring{fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;transition:stroke .2s}
.chk .tick{fill:none;stroke:var(--verdigris);stroke-width:3.2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset .38s var(--ease-out) .05s}
.chk .blot{fill:var(--ink-blue);opacity:0;transform-origin:14px 14px;transform:scale(0)}
.chk:hover .ring{stroke:var(--ink-blue)}
.task.done .chk .tick{stroke-dashoffset:0}
.task.done .chk .ring{stroke:var(--verdigris)}
.task.just-done .chk .blot{animation:blot .7s var(--ease-out)}
@keyframes blot{0%{opacity:.5;transform:scale(.2)}55%{opacity:.35;transform:scale(1.5)}100%{opacity:0;transform:scale(1.9)}}
.task-main{min-width:0;padding:5px 4px 5px 2px}
.task-title{position:relative;display:inline;font:500 1.65rem/1.12 var(--font-hand);color:var(--ink-blue);cursor:text;word-break:break-word;transition:color .3s}
.task-title:hover{background:rgba(31,53,102,.06)}
.task.done .task-title{color:var(--ink-faint)}
.title-wrap{position:relative;display:inline-block;max-width:100%}
.strike{position:absolute;left:-2%;top:56%;width:104%;height:12px;overflow:visible;pointer-events:none}
.strike path{fill:none;stroke:var(--ink-red);stroke-width:2;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset .5s var(--ease-io) .12s}
.task.done .strike path{stroke-dashoffset:0}
.title-input{width:100%;font:500 1.65rem/1.12 var(--font-hand);color:var(--ink-blue);background:rgba(255,252,240,.6);border:0;border-bottom:2px solid var(--ink-blue);padding:0 2px;min-height:34px}
.task-meta{display:flex;flex-wrap:wrap;gap:5px;margin-top:2px}
.chip{display:inline-flex;align-items:center;gap:4px;padding:1px 8px;border-radius:99px;background:rgba(42,32,23,.08);color:var(--ink-soft);font:700 .76rem/1.5 var(--font-ui)}
.chip .i{width:13px;height:13px;stroke-width:2}
.chip.prio{background:rgba(160,42,29,.12);color:var(--ink-red);letter-spacing:.04em}
.chip.tag{color:var(--ink-blue);background:rgba(31,53,102,.09)}
.chip.time{background:rgba(42,32,23,.12);color:var(--ink)}
.chip.focus{background:rgba(47,111,93,.14);color:#23584a}
.chip.late{background:rgba(160,42,29,.14);color:var(--ink-red)}
.task-actions{display:flex;align-items:center;gap:0;padding-top:1px}
.t-btn{width:44px;height:44px;display:grid;place-items:center;border:0;border-radius:50%;background:transparent;color:var(--ink-faint);transition:color .2s,background-color .2s,transform .25s var(--ease-out),opacity .2s}
.t-btn:hover{color:var(--ink);background:rgba(42,32,23,.1)}
.t-btn .i{width:22px;height:22px}
.t-btn.star[aria-pressed='true']{color:var(--ink-red)}
.t-btn.star[aria-pressed='true'] .i{fill:currentColor}
.t-btn.star.pop{animation:starPop .6s var(--ease-out)}
@keyframes starPop{0%{transform:scale(.4) rotate(-40deg)}55%{transform:scale(1.55) rotate(12deg)}100%{transform:scale(1) rotate(0)}}
.t-btn.go{color:var(--verdigris)}
.t-btn.go:hover{background:rgba(47,111,93,.14);color:#1d4d40}
@media (hover:hover){.task:not(:hover):not(:focus-within) .t-btn:not(.star){opacity:0}.task .t-btn:focus-visible{opacity:1!important}}
.stamp{position:absolute;right:92px;top:8px;padding:0 .55em;border:2.5px solid var(--verdigris);border-radius:5px;color:var(--verdigris);font:700 .82rem/1.45 var(--font-ui);letter-spacing:.16em;text-transform:uppercase;opacity:0;transform:rotate(-8deg) scale(1);pointer-events:none;mix-blend-mode:multiply}
.task.done .stamp{opacity:.62}
.task.just-done .stamp{animation:stampIn .55s cubic-bezier(.2,1.5,.4,1)}
@keyframes stampIn{0%{opacity:0;transform:rotate(-14deg) scale(2.4)}60%{opacity:.9;transform:rotate(-8deg) scale(.92)}100%{opacity:.62;transform:rotate(-8deg) scale(1)}}
.task.starred.done .stamp{border-color:var(--ink-red);color:var(--ink-red)}
.task.starred-big.just-done::after{content:'';position:absolute;inset:-6px -4px;border-radius:10px;background:radial-gradient(circle at 20% 50%,rgba(47,111,93,.25),transparent 60%);animation:fadeOut .8s forwards;pointer-events:none}
@keyframes fadeOut{to{opacity:0}}
.page-foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin-top:18px;padding-top:12px;border-top:1.5px dashed var(--ink-faint)}
.progress-line{display:grid;gap:4px;font:700 .85rem var(--font-ui);color:var(--ink-soft);min-width:140px}
.progress-line svg{width:100%;height:10px;overflow:visible}
.progress-line path{fill:none;stroke-linecap:round;stroke-width:1.3}
.progress-line .bg{stroke:rgba(42,32,23,.18)}.progress-line .fg{stroke:var(--verdigris);transition:stroke-dashoffset .8s var(--ease-out)}
.link-ink{border:0;background:none;padding:6px 2px;min-height:44px;color:var(--ink-blue);font:700 .95rem var(--font-ui);text-decoration:underline;text-decoration-style:dotted;text-underline-offset:4px}
.link-ink:hover{text-decoration-style:solid}

/* заметки */
.note-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px}
.save-state{margin-left:auto;font:700 .8rem var(--font-ui);color:var(--ink-faint);display:inline-flex;align-items:center;gap:6px;min-height:24px;transition:color .3s}
.save-state.saving{color:var(--ink-soft)}.save-state.saved{color:var(--verdigris)}.save-state.error{color:var(--ink-red)}
.save-state .i{width:15px;height:15px}
.stickers{display:flex;gap:6px;align-items:center}
.sticker{width:30px;height:30px;border-radius:50% 50% 50% 8%;border:2px solid rgba(42,32,23,.35);background:var(--sc);position:relative;padding:0;transition:transform .2s var(--ease-out)}
.sticker::before{content:'';position:absolute;inset:-9px}
.sticker:hover{transform:scale(1.15)}
.sticker[aria-pressed='true']{box-shadow:0 0 0 2px var(--paper),0 0 0 4px var(--ink)}
.sticker.none{background:repeating-linear-gradient(45deg,transparent 0 4px,rgba(42,32,23,.25) 4px 5px)}
[data-c='red']{--sc:#c7503d}[data-c='amber']{--sc:#e0a23b}[data-c='green']{--sc:#6fa872}[data-c='teal']{--sc:#3fa9a2}[data-c='blue']{--sc:#6089cf}[data-c='violet']{--sc:#9573cc}
.note-wrap{position:relative;min-height:380px;margin-top:4px;padding-left:20px}
.note-wrap::before{content:'';position:absolute;left:8px;top:0;bottom:0;width:2px;background:var(--margin-rule)}
.note-edit,.note-view{display:block;width:100%;min-height:340px;font:500 1.55rem/34px var(--font-hand);color:var(--ink-blue);background:repeating-linear-gradient(transparent 0 33px,var(--rule) 33px 34px);background-attachment:local;border:0;padding:0 4px 0 8px;margin:0;resize:vertical;outline:none;white-space:pre-wrap;word-break:break-word}
.note-edit:focus{background-color:rgba(255,252,240,.35)}
.note-view{cursor:text;white-space:normal}
.note-view>*{margin:0}
.note-view .ph{color:var(--ink-faint);font-style:normal}
.note-view h1{font:400 2.1rem/68px var(--font-script);color:var(--ink-red)}
.note-view h2{font:400 1.8rem/34px var(--font-script);color:var(--ink-red);font-size:1.8rem}
.note-view h3{font:700 1.5rem/34px var(--font-hand);color:var(--ink)}
.note-view ul,.note-view ol{padding-left:1.4em}
.note-view li{line-height:34px}
.note-view blockquote{border-left:3px solid var(--ink-faint);padding-left:12px;color:var(--ink-soft)}
.note-view strong{font-weight:700;color:var(--ink)}
.note-view del{color:var(--ink-faint)}
.note-view code{font:600 1rem var(--font-ui);background:rgba(42,32,23,.1);padding:0 4px;border-radius:3px}
.note-view .todo{display:flex;align-items:flex-start;gap:8px;list-style:none;margin-left:-1.4em}
.note-view .todo button{flex:none;width:40px;height:34px;margin-right:-10px;display:grid;place-items:center;border:0;background:none;color:var(--ink);padding:0}
.note-view .todo button svg{width:22px;height:22px}
.note-view .todo.on span{color:var(--ink-faint);text-decoration:line-through;text-decoration-color:var(--ink-red)}
.note-tools{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px}
.tag-edit{display:flex;flex-wrap:wrap;gap:5px;align-items:center;flex:1 1 200px}
.tag-edit .input{flex:1 1 120px;min-height:36px;font:700 .9rem var(--font-ui);padding:.2em .6em}
.tag-x{border:0;background:none;color:inherit;padding:0;min-width:32px;min-height:32px;margin:-6px -8px -6px 0;line-height:1;font-size:1.1rem}
.focus-today b{white-space:nowrap}
.focus-today{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:16px;padding:10px 12px;border:1.5px dashed var(--ink-faint);border-radius:8px;font:700 .95rem var(--font-ui);color:var(--ink-soft)}
.focus-today b{font:900 1.5rem var(--font-display);color:var(--ink)}

/* ---------- оглавление и календарь ---------- */
.toc-year{font:900 1.1rem var(--font-display);color:var(--ink-soft);margin:14px 0 4px}
.toc-list{list-style:none;margin:0;padding:0}
.toc-list a{display:flex;align-items:baseline;gap:8px;min-height:44px;padding:8px 6px;border-radius:6px;text-decoration:none;color:var(--ink);transition:background-color .2s}
.toc-list a:hover{background:rgba(42,32,23,.08)}
.toc-list a[aria-current='true']{background:rgba(160,42,29,.09)}
.toc-list .nm{font:500 1.6rem/1 var(--font-hand);color:var(--ink-blue);text-transform:capitalize}
.toc-list .lead{flex:1;border-bottom:2px dotted var(--ink-faint);transform:translateY(-5px);min-width:16px}
.toc-list .ct{font:700 .85rem var(--font-ui);color:var(--ink-soft);text-align:right}
.cal-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px}
.cal-head .ttl{font:400 2.2rem/1 var(--font-script);color:var(--ink-blue);text-transform:capitalize}
.cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.cal .dw{font:700 .78rem var(--font-ui);color:var(--ink-soft);text-align:center;padding:4px 0}
.cal-cell{position:relative;min-height:clamp(56px,8vh,78px);padding:4px 5px;border:1.5px solid var(--rule);border-radius:4px;color:var(--ink);text-decoration:none;display:grid;align-content:space-between;transition:background-color .2s,transform .2s var(--ease-out),border-color .2s}
.cal-cell:hover{background:rgba(42,32,23,.09);transform:translateY(-2px);border-color:var(--ink-soft)}
.cal-cell .n{font:700 1.05rem/1 var(--font-display)}
.cal-cell .sm{font:700 .72rem var(--font-ui);color:var(--ink-soft);display:flex;gap:4px;align-items:center;flex-wrap:wrap}
.cal-cell.out{opacity:.35}
.cal-cell.today{border-color:var(--seal);box-shadow:inset 0 0 0 1px var(--seal)}
.cal-cell.today .n{color:var(--seal)}
.cal-cell .stk{position:absolute;right:0;top:0;width:14px;height:14px;background:var(--sc);clip-path:polygon(0 0,100% 0,100% 100%)}
.cal-cell .st{color:var(--ink-red);width:12px;height:12px;fill:currentColor;stroke-width:1}

/* ---------- списки: важное и архив ---------- */
.grp-title{font:400 1.7rem/1 var(--font-script);color:var(--ink-red);margin:18px 0 4px;display:flex;align-items:center;gap:8px}
.grp-title.neutral{color:var(--ink-blue)}
.grp-title small{font:700 .8rem var(--font-ui);color:var(--ink-soft)}
.page .task-date{display:inline-flex;align-items:center;gap:4px;font:700 .76rem var(--font-ui);color:var(--ink);text-decoration:none;background:rgba(42,32,23,.1);border-radius:99px;padding:1px 9px}
.page .task-date:hover{background:rgba(42,32,23,.2)}
.arch-filter{margin:10px 0 6px}
.arch-row{opacity:.92}
.arch-row .task-title{color:var(--ink-soft)}

/* ---------- статистика ---------- */
.stat-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:12px 0 16px}
.stat-card{padding:10px 12px 8px;border:1.5px solid var(--ink-soft);border-radius:4px;background:rgba(255,250,235,.28);position:relative;overflow:hidden}
.stat-card::after{content:'';position:absolute;right:-14px;top:-14px;width:46px;height:46px;border-radius:50%;border:2px dashed var(--ink-faint);opacity:.5}
.stat-card b{display:block;font:900 clamp(2rem,3.4vw,2.8rem)/1 var(--font-display);color:var(--ink);font-variant-numeric:lining-nums tabular-nums}
.stat-card b small{font:700 .95rem var(--font-ui);color:var(--ink-soft);margin-left:4px}
.stat-card>span{font:700 .85rem var(--font-ui);color:var(--ink-soft)}
.stat-card.hot b{color:var(--ink-red)}
.range-tabs{margin:6px 0 4px}
.chart{width:100%;height:auto;overflow:visible}
.chart text{font:700 10px var(--font-ui);fill:var(--ink-soft)}
.chart .grid{stroke:var(--rule);stroke-width:1}
.chart .bar{fill:var(--ink-blue);transform-box:fill-box;transform-origin:50% 100%;animation:barGrow .7s var(--ease-out) backwards;animation-delay:calc(var(--i) * 18ms)}
.chart .bar.today{fill:var(--ink-red)}
.chart .bar.zero{opacity:.18}
@keyframes barGrow{from{transform:scaleY(0)}}
.heat{width:100%;height:auto}
.heat rect{rx:2;transition:opacity .2s}
.heat .l0{fill:rgba(42,32,23,.1)}.heat .l1{fill:#b9c9a3}.heat .l2{fill:#8fb184}.heat .l3{fill:#4f8a66}.heat .l4{fill:#1f5a45}.heat .lx{fill:transparent}
.heat text{font:700 9px var(--font-ui);fill:var(--ink-soft)}
.top-list{list-style:none;margin:6px 0 0;padding:0;display:grid;gap:4px}
.top-list li{display:grid;grid-template-columns:1fr auto;gap:4px 10px;align-items:baseline}
.top-list .nm{font:500 1.4rem/1.1 var(--font-hand);color:var(--ink-blue);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.top-list .tm{font:700 .85rem var(--font-ui);color:var(--ink-soft)}
.top-list .bar-b{grid-column:1/-1;height:5px;border-radius:3px;background:rgba(42,32,23,.12);overflow:hidden}
.top-list .bar-b i{display:block;height:100%;background:var(--verdigris);transform-origin:left;animation:grow .9s var(--ease-out) backwards}
@keyframes grow{from{transform:scaleX(0)}}
.ach-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:10px;margin-top:8px}
.ach{display:grid;justify-items:center;gap:4px;text-align:center;padding:6px 4px}
.ach .medal{position:relative;width:62px;height:62px;border-radius:50%;display:grid;place-items:center;border:2.5px solid var(--verdigris);color:var(--verdigris);background:radial-gradient(circle,rgba(47,111,93,.12),transparent 70%);transform:rotate(-6deg)}
.ach .medal::after{content:'';position:absolute;inset:4px;border-radius:50%;border:1.5px dashed currentColor;opacity:.6}
.ach .medal .i{width:28px;height:28px}
.ach.lock .medal{border-color:var(--ink-faint);color:var(--ink-faint);border-style:dashed;background:none;filter:grayscale(1)}
.ach b{font:700 .82rem/1.15 var(--font-ui);color:var(--ink)}
.ach small{font:400 .75rem/1.2 var(--font-ui);color:var(--ink-soft)}
.ach.got .medal{animation:medal .8s var(--ease-out) backwards}
@keyframes medal{from{transform:rotate(-40deg) scale(.4);opacity:0}}

/* ---------- настройки ---------- */
.set-group{padding:12px 0 14px;border-top:1.5px dashed var(--ink-faint)}
.set-group:first-of-type{border-top:0}
.set-group h3{font:400 1.7rem/1 var(--font-script);color:var(--ink-red);margin-bottom:8px}
.set-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 14px;min-height:44px}
.set-row>span{font:700 .98rem var(--font-ui)}
.set-row small{display:block;font:400 .82rem/1.3 var(--font-ui);color:var(--ink-soft);font-weight:400}
.set-row .input,.set-row .select{width:auto;min-width:120px;max-width:200px}
.theme-pick{display:grid;grid-template-columns:repeat(auto-fit,minmax(88px,1fr));gap:8px;margin:6px 0}
.theme-pick button{display:grid;justify-items:center;gap:4px;padding:8px 4px;border-radius:8px;border:2px solid rgba(42,32,23,.3);background:rgba(255,250,235,.3);color:var(--ink);font:700 .82rem var(--font-ui);transition:border-color .2s,transform .2s var(--ease-out),background-color .2s}
.theme-pick button:hover{transform:translateY(-2px)}
.theme-pick button[aria-pressed='true']{border-color:var(--ink-red);background:rgba(160,42,29,.1)}
.theme-pick .pv{width:100%;height:56px;border-radius:6px;background:#1c0f08;display:grid;place-items:center;overflow:hidden}
.theme-pick svg{width:46px;height:46px}
.guest-note{display:flex;gap:12px;align-items:flex-start;margin:0 0 14px;padding:10px 12px;border:1.5px dashed var(--ink-red);border-radius:8px;background:rgba(160,42,29,.06);font:500 1.15rem/1.2 var(--font-hand);color:var(--ink)}
.guest-note .btn{flex:none;font-family:var(--font-ui)}

/* ---------- мобильный вид: одна страница ---------- */
.m-tabs{display:none}
@media (max-width:900px){
  .book-stage{perspective:1600px}
  .spread{grid-template-columns:1fr}
  .spread::after{display:none}
  .page{min-height:60vh;border-radius:3px!important;padding:20px 18px 28px}
  .spread[data-mtab='left'] .page-right,.spread[data-mtab='right'] .page-left{display:none}
  .m-tabs{display:flex;gap:6px;margin:0 auto 12px;max-width:1180px}
  .m-tabs .seg{flex:1;display:flex}
  .m-tabs .seg button{flex:1}
  .m-tabs .seg{background:rgba(20,10,4,.5);border-color:rgba(243,214,150,.4)}
  .m-tabs .seg button{color:var(--on-desk)}
  .m-tabs .seg button[aria-pressed='true']{background:var(--brass-2);color:#2a1a08}
  .tabs-edge,.ribbon{display:none}
  .leaf{width:100%!important;left:0!important}
  .leaf.fwd{transform-origin:left center}.leaf.bwd{transform-origin:right center}
  .weekstrip{flex-basis:100%}
  .tb-right{width:100%;flex-wrap:wrap}
  .searchbox{flex:1 1 100%}
  .tb-right .btn{flex:1 1 auto}
  .task{grid-template-columns:44px minmax(0,1fr)}
  .task-actions{grid-column:2;justify-content:flex-start;margin:-6px 0 4px -6px}
  .stamp{right:10px;top:auto;bottom:10px}
  .task-title,.title-input{font-size:1.5rem}
  .stat-cards{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:520px){
  .ws-btn{width:34px}
  .ws-day .cnt{display:none}
  .ws-day .num{font-size:1.1rem}
  .book{padding:8px}
  .day-num{font-size:3.2rem}
  .cal-cell{min-height:50px;padding:3px}
}
