/* Floating contents with a quiet, flat control surface. */
html:has(.blog-page--article) { scrollbar-gutter:stable; }
.toc-widget { position:fixed;inset:0;z-index:80;pointer-events:none; }
.toc-backdrop { position:absolute;inset:0;background:#0003;backdrop-filter:blur(4px);opacity:0;visibility:hidden;transition:opacity .5s,visibility .5s; }
.toc-island { position:absolute;bottom:calc(30px + env(safe-area-inset-bottom,0px));left:50%;transform:translateX(-50%);width:min(280px,calc(100vw - 32px));height:56px;border:1px solid #e4e0d9;border-radius:30px;background:#faf9f6;color:#191815;box-shadow:0 12px 30px #00000017;pointer-events:auto;overflow:hidden;transition:width .5s cubic-bezier(.22,1,.36,1),height .5s cubic-bezier(.22,1,.36,1),border-radius .5s cubic-bezier(.22,1,.36,1);animation:toc-arrive .6s cubic-bezier(.22,1,.36,1) both; }
.toc-trigger { position:absolute;inset:0;display:flex;align-items:center;gap:13px;width:100%;height:100%;padding:0 19px;background:none;border:0;border-radius:inherit;text-align:left;cursor:pointer;color:inherit;transition:opacity .3s,filter .3s,transform .5s; }
.toc-trigger:focus-visible { outline:3px solid var(--berry);outline-offset:-5px; }
.toc-dot { flex:none;width:8px;height:8px;border-radius:50%;background:var(--berry); }
.toc-current { display:block;min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:500 13px/1.4 var(--font-body); }
.toc-progress { flex:none;transform:rotate(-90deg); }
.toc-progress circle { fill:none;stroke-width:2.5; }
.toc-progress__track { stroke:#dedbd4; }
.toc-progress__value { stroke:var(--berry);stroke-linecap:round;stroke-dasharray:100;stroke-dashoffset:100;transition:stroke-dashoffset .15s linear; }
.toc-panel { position:absolute;inset:0;display:flex;flex-direction:column;opacity:0;pointer-events:none;transform:scale(1.04);transition:opacity .25s,transform .5s cubic-bezier(.22,1,.36,1); }
.toc-panel__header { display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 15px 8px 24px;flex:none; }
.toc-panel__header h2 { font:600 11px/1.4 var(--font-body);letter-spacing:.07em;text-transform:uppercase;color:#706b65; }
.toc-close { display:grid;place-items:center;flex:none;width:38px;height:38px;background:none;border:0;border-radius:50%;cursor:pointer;color:#706b65; }
.toc-close:hover { color:#171512;background:#ebe8e2; }
.toc-close svg { width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round; }
.toc-list { flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;padding:0 12px 8px;scrollbar-width:thin;scrollbar-color:#cec7bd transparent; }
.toc-list ol { list-style:none;padding:0;margin:0; }
.toc-list a { position:relative;display:block;padding:11px 25px 11px calc(12px + var(--toc-depth)*14px);margin-bottom:2px;border-radius:12px;font:400 13px/1.5 var(--font-body);color:#6e6a65;transition:color .2s,background .2s;overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
.toc-list a:hover { color:#171512;background:#eeeae4; }
.toc-list a[aria-current] { font-weight:500;color:var(--berry);background:#ece4e6; }
.toc-list a[aria-current]:after { content:'';position:absolute;top:17px;right:11px;width:5px;height:5px;border-radius:50%;background:var(--berry); }
.toc-list a:focus-visible,.toc-close:focus-visible { outline:2px solid var(--berry);outline-offset:-2px; }
.toc-panel__footer { display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 24px;padding:13px 0 18px;border-top:1px solid #e4dfd7;flex:none;font:400 11px/1.3 var(--font-body);color:#706b65; }
.toc-percentage { font-variant-numeric:tabular-nums;color:var(--berry); }
.is-expanded .toc-backdrop { opacity:1;visibility:visible;pointer-events:auto; }
.is-expanded .toc-island { width:min(360px,calc(100vw - 32px));height:min(420px,calc(100dvh - 120px));border-radius:26px; }
.is-expanded .toc-trigger { opacity:0;filter:blur(4px);transform:scale(.95);pointer-events:none; }
.is-expanded .toc-panel { opacity:1;pointer-events:auto;transform:scale(1);transition-delay:.1s; }
@keyframes toc-arrive { from { opacity:0;translate:0 45px; } to { opacity:1;translate:0 0; } }
@media(max-width:600px) { .toc-island { bottom:calc(20px + env(safe-area-inset-bottom,0px)); } }
@media(prefers-reduced-motion:reduce) { .toc-widget,.toc-widget * { animation:none!important;transition:none!important; } }
@media print { .toc-widget { display:none!important; } }
