:root{--ink-050:#faf9f7;--ink-100:#efedea;--ink-150:#e4e1dc;--ink-200:#d3cfc8;--ink-300:#b3aea6;--ink-400:#938d84;--ink-500:#767068;--ink-600:#5c574f;--ink-700:#45413b;--ink-800:#2e2b27;--ink-900:#1b1917;--accent:#b8471f;--accent-soft:#b8471f1a;--accent-line:#b8471f4d;--accent-deep:#8e3315;--paper:#fff;--paper-alt:var(--ink-050);--line:var(--ink-150);--line-strong:var(--ink-200);--ok:#2f7d4f;--ok-soft:#2f7d4f14;--warn:#a8690a;--warn-soft:#a8690a14;--bad:#b3261e;--bad-soft:#b3261e14;--slab:#1b1917;--slab-line:#2e2b27;--slab-ink:#e4e1dc;--slab-muted:#938d84;--scrim:#1b191766;color-scheme:light dark;--font-sans:-apple-system, BlinkMacSystemFont, "Pretendard Variable", Pretendard, "Apple SD Gothic Neo", "Segoe UI", "Noto Sans KR", system-ui, sans-serif;--font-mono:ui-monospace, SFMono-Regular, "SF Mono", "JetBrains Mono", Menlo, "D2Coding", Consolas, monospace;--rail:336px;--prose:68ch;--pad:24px;--duration-stagger:40ms;--duration-micro:80ms;--duration-quick:.15s;--duration-fast:.25s;--duration-slow:.4s;--duration-very-slow:.5s;--ease-smooth-out:cubic-bezier(.22, 1, .36, 1);--ease-in-out:ease-in-out;--ease-bounce:cubic-bezier(.34, 1.36, .64, 1);--distance-micro:4px;--distance-small:6px;--distance-medium:12px;--blur-small:2px;--blur-medium:3px;--shake-distance:6px;--shake-overshoot:4px;--shake-dur-a:80ms;--shake-dur-b:60ms;--check-dur:.5s;--check-rotate-from:80deg;--check-path-dur:.35s;--check-path-delay:80ms;--ease-bob:cubic-bezier(.34, 1.35, .64, 1);--page-slide-distance:8px}@media (prefers-color-scheme:dark){:root{--ink-050:#1b1917;--ink-100:#252321;--ink-150:#2d2b29;--ink-200:#393735;--ink-300:#504e4b;--ink-400:#6a6865;--ink-500:#868481;--ink-600:#a3a19e;--ink-700:#c2c0bd;--ink-800:#e3e1dd;--ink-900:#f7f5f1;--accent:#de663b;--accent-soft:#de663b26;--accent-line:#de663b59;--accent-deep:#eb9579;--paper:#161412;--ok:#39975f;--ok-soft:#39975f1f;--warn:#b16f0b;--warn-soft:#b16f0b1f;--bad:#e87a74;--bad-soft:#e87a741f;--slab:#23201d;--slab-line:#3a3632;--scrim:#0009}}@view-transition{navigation:auto}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--paper);color:var(--ink-800);font-family:var(--font-sans);letter-spacing:-.005em;word-break:keep-all;overflow-wrap:break-word;-webkit-font-smoothing:antialiased;margin:0;font-size:17px;line-height:1.72}a{color:inherit}img{max-width:100%;height:auto}::selection{background:var(--accent-soft)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}.mono-label{font-family:var(--font-mono);letter-spacing:.03em;text-transform:uppercase;color:var(--ink-400);font-size:11px;line-height:1.4}.cave-shell{min-height:100vh}.cave-rail{width:var(--rail);background:var(--paper-alt);border-right:1px solid var(--line);z-index:40;flex-direction:column;display:flex;position:fixed;inset:0 auto 0 0}.cave-main{margin-left:var(--rail);padding:72px var(--pad) 120px}.cave-main>*{max-width:var(--prose)}.cave-rail-head{padding:26px var(--pad) 20px;border-bottom:1px solid var(--line);flex-shrink:0}.cave-brand{color:var(--ink-400);font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;align-items:center;gap:8px;margin-bottom:18px;font-size:11px;text-decoration:none;transition:color .15s;display:inline-flex}.cave-brand:hover{color:var(--accent)}.cave-brand svg{width:15px;height:15px}.cave-rail-title{letter-spacing:-.02em;color:var(--ink-900);margin:0;font-size:20px;font-weight:600;line-height:1.3}.cave-rail-sub{color:var(--ink-500);margin:6px 0 0;font-size:14px;line-height:1.5}.cave-progress{align-items:center;gap:10px;margin-top:16px;display:flex}.cave-progress-track{background:var(--ink-150);flex:1;height:3px;overflow:hidden}.cave-progress-fill{background:var(--accent);width:0;height:100%;transition:width .35s}.cave-progress-text{font-family:var(--font-mono);color:var(--ink-400);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:11px}.cave-rail-scroll{scrollbar-width:none;flex:1;min-height:0;padding:8px 0 12px;overflow-y:auto}.cave-rail-scroll::-webkit-scrollbar{display:none}.cave-chapters{margin:0;padding:0;list-style:none}.cave-chapter>a{padding:9px var(--pad);align-items:baseline;gap:13px;text-decoration:none;transition:background .12s;display:flex}.cave-chapter>a:hover{background:var(--ink-100)}.cave-chapter-num{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--ink-300);flex-shrink:0;font-size:12px;transition:color .15s}.cave-chapter-body{flex:1;min-width:0}.cave-chapter-title{color:var(--ink-700);font-size:14px;font-weight:500;line-height:1.4;transition:color .15s;display:block}.cave-chapter-sub{color:var(--ink-400);margin-top:1px;font-size:12.5px;line-height:1.4;display:block}.cave-chapter.is-current>a{background:var(--paper)}.cave-chapter.is-current .cave-chapter-num{color:var(--accent)}.cave-chapter.is-current .cave-chapter-title{color:var(--ink-900);font-weight:600}.cave-chapter.is-done .cave-chapter-num:after{content:"✓";color:var(--ok);margin-left:4px}.cave-outline{padding:0 var(--pad) 0 calc(var(--pad) + 26px);border-left:1px solid #0000;margin:2px 0 10px;list-style:none}.cave-outline a{border-left:1px solid var(--line-strong);color:var(--ink-500);margin-left:-1px;padding:4px 0 4px 12px;font-size:13px;line-height:1.45;text-decoration:none;transition:color .15s,border-color .15s;display:block}.cave-outline a:hover{color:var(--ink-800)}.cave-outline a.is-active{color:var(--accent);border-left-color:var(--accent);font-weight:500}.cave-rail-foot{padding:12px var(--pad);border-top:1px solid var(--line);flex-wrap:wrap;flex-shrink:0;justify-content:space-between;align-items:center;gap:8px;display:flex}.cave-rail-foot .cave-sitelinks{flex-basis:100%}.cave-reset{cursor:pointer;font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-400);background:0 0;border:0;padding:0;font-size:11px}.cave-reset:hover{color:var(--accent)}.cave-railbtn{z-index:60;background:var(--paper);border:1px solid var(--line-strong);cursor:pointer;width:40px;height:40px;color:var(--ink-800);justify-content:center;align-items:center;display:none;position:fixed;top:12px;left:12px}.cave-scrim{z-index:35;background:var(--scrim);display:none;position:fixed;inset:0}.cave-eyebrow{align-items:center;gap:10px;margin-bottom:14px;display:flex}.cave-h1{letter-spacing:-.03em;color:var(--ink-900);text-wrap:balance;margin:0;font-size:clamp(30px,4.2vw,40px);font-weight:650;line-height:1.2}.cave-lede{color:var(--ink-600);margin:18px 0 0;font-size:19px;line-height:1.65}.cave-meta{border-top:1px solid var(--line);font-family:var(--font-mono);letter-spacing:.05em;text-transform:uppercase;color:var(--ink-400);flex-wrap:wrap;align-items:center;gap:8px 16px;margin-top:22px;padding-top:16px;font-size:11.5px;display:flex}.cave-body{counter-reset:cave-sec;margin-top:44px}.cave-body h2{letter-spacing:-.022em;color:var(--ink-900);margin:64px 0 18px;scroll-margin-top:32px;font-size:25px;font-weight:620;line-height:1.3}.cave-body h2:before{counter-increment:cave-sec;content:counter(cave-sec, decimal-leading-zero);font-family:var(--font-mono);color:var(--accent);letter-spacing:0;margin-right:10px;font-size:14px;font-weight:400}.cave-body h3{letter-spacing:-.015em;color:var(--ink-800);margin:38px 0 12px;scroll-margin-top:32px;font-size:18.5px;font-weight:620;line-height:1.4}.cave-body p{margin:0 0 20px}.cave-body ul,.cave-body ol{margin:0 0 22px;padding-left:1.35em}.cave-body li{margin-bottom:9px}.cave-body li::marker{color:var(--ink-400)}.cave-body strong{color:var(--ink-900);font-weight:620}.cave-body a:not(.cave-plain){color:var(--accent);text-decoration:underline;text-decoration-color:var(--accent-line);text-underline-offset:3px;transition:text-decoration-color .15s}.cave-body a:not(.cave-plain):hover{text-decoration-color:var(--accent)}.cave-body code{font-family:var(--font-mono);background:var(--ink-100);color:var(--ink-900);border-radius:2px;padding:2px 5px;font-size:.87em}.cave-body pre{background:var(--slab);color:#e8e4de;margin:0 0 24px;padding:16px 18px;font-size:13.5px;line-height:1.65;overflow-x:auto}.cave-body pre code{color:inherit;font-size:inherit;background:0 0;padding:0}.cave-body blockquote{border-left:2px solid var(--accent-line);color:var(--ink-600);margin:0 0 24px;padding:2px 0 2px 20px;font-style:italic}.cave-body hr{border:0;border-top:1px solid var(--line);margin:48px 0}.cave-anchor{opacity:0;color:var(--ink-300);margin-left:8px;font-size:.75em;font-weight:400;text-decoration:none;transition:opacity .15s}h2:hover .cave-anchor,h3:hover .cave-anchor,.cave-anchor:focus-visible{opacity:1}.cave-toc{border:1px solid var(--line);background:var(--paper-alt);margin:40px 0 0;padding:16px 18px}.cave-toc>.mono-label{margin-bottom:10px;display:block}.cave-toc ol{counter-reset:toc;margin:0;padding:0;list-style:none}.cave-toc li{counter-increment:toc;margin:0}.cave-toc a{color:var(--ink-600);gap:10px;padding:3px 0;font-size:14.5px;text-decoration:none;display:flex}.cave-toc a:before{content:counter(toc, decimal-leading-zero);font-family:var(--font-mono);color:var(--ink-300);flex-shrink:0;font-size:12px}.cave-toc a:hover{color:var(--accent)}.cave-note{border:1px solid var(--line);border-left:3px solid var(--ink-300);background:var(--paper-alt);margin:28px 0;padding:18px 20px}.cave-note>.mono-label{margin-bottom:8px;display:block}.cave-note>:last-child{margin-bottom:0}.cave-note p{margin-bottom:12px}.cave-note.is-eli5{border-left-color:var(--accent);background:var(--accent-soft)}.cave-note.is-eli5>.mono-label{color:var(--accent)}.cave-note.is-analogy{border-left-color:var(--ink-500)}.cave-note.is-key{border-left-color:var(--ok);background:var(--ok-soft)}.cave-note.is-key>.mono-label{color:var(--ok)}.cave-note.is-trap{border-left-color:var(--warn);background:var(--warn-soft)}.cave-note.is-trap>.mono-label{color:var(--warn)}.cave-note.is-deep{border-left-color:var(--ink-800)}.cave-figure{margin:36px 0}.cave-figure .cave-figure-frame{border:1px solid var(--line);background:var(--paper-alt);padding:20px;overflow-x:auto}.cave-figure svg{max-width:100%;height:auto;margin:0 auto;display:block}.cave-figure figcaption{color:var(--ink-500);margin-top:10px;font-size:13.5px;line-height:1.55}.cave-video{margin:36px 0}.cave-video-frame{aspect-ratio:16/9;border:1px solid var(--line);background:var(--slab);position:relative}.cave-video-frame>iframe,.cave-video-frame>button,.cave-video-frame img{border:0;width:100%;height:100%;position:absolute;inset:0}.cave-video-frame>button{cursor:pointer;background:0 0;place-items:center;padding:0;display:grid}.cave-video-frame img{object-fit:cover}.cave-video-play{background:var(--accent);color:#fff;transition:transform var(--duration-quick) var(--ease-smooth-out);border-radius:50%;padding:16px;display:inline-flex;position:relative}.cave-video-frame>button:hover .cave-video-play{transform:scale(1.06)}.cave-video figcaption{color:var(--ink-500);margin-top:10px;font-size:13.5px;line-height:1.55}.cave-tablewrap{border:1px solid var(--line);margin:30px 0;overflow-x:auto}.cave-table{border-collapse:collapse;width:100%;font-size:14.5px}.cave-table th,.cave-table td{text-align:left;border-bottom:1px solid var(--line);vertical-align:top;padding:10px 14px}.cave-table th{background:var(--paper-alt);color:var(--ink-700);white-space:nowrap;font-size:13px;font-weight:600}.cave-table tr:last-child td{border-bottom:0}.cave-terms{border-top:1px solid var(--line);margin:30px 0}.cave-term{border-bottom:1px solid var(--line);grid-template-columns:190px 1fr;gap:16px;padding:12px 0;display:grid}.cave-term dt{color:var(--ink-900);font-size:15px;font-weight:600}.cave-term dd{color:var(--ink-600);margin:0;font-size:15px;line-height:1.6}.cave-quiz{border:1px solid var(--line-strong);background:var(--paper);margin:40px 0}.cave-quiz-head{border-bottom:1px solid var(--line);background:var(--paper-alt);justify-content:space-between;align-items:center;gap:12px;padding:14px 20px;display:flex}.cave-quiz-tools{align-items:center;gap:14px;display:flex}.cave-quiz-score{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--ink-500);font-size:11.5px}.cave-q{border-bottom:1px solid var(--line);padding:20px}.cave-q:last-child{border-bottom:0}.cave-q-prompt{color:var(--ink-900);margin:0 0 14px;font-weight:550;line-height:1.6}.cave-q-prompt .cave-q-num{font-family:var(--font-mono);color:var(--accent);margin-right:8px;font-size:12px}.cave-opts{flex-direction:column;gap:8px;display:flex}.cave-opt{border:1px solid var(--line-strong);background:var(--paper);width:100%;font:inherit;color:var(--ink-700);text-align:left;cursor:pointer;align-items:center;gap:10px;padding:11px 14px;font-size:15px;line-height:1.55;transition:border-color .12s,background .12s;display:flex}.cave-opt:hover:not(:disabled){border-color:var(--ink-400);background:var(--paper-alt)}.cave-opt:disabled{cursor:default}.cave-opt-key{font-family:var(--font-mono);color:var(--ink-400);flex-shrink:0;padding-top:2px;font-size:12px}.cave-opt.is-correct{border-color:var(--ok);background:var(--ok-soft);color:var(--ink-900)}.cave-opt.is-correct .cave-opt-key{color:var(--ok)}.cave-opt.is-wrong{border-color:var(--bad);background:var(--bad-soft);color:var(--ink-900)}.cave-opt.is-wrong .cave-opt-key{color:var(--bad)}.cave-explain{border-left:3px solid var(--ink-300);background:var(--paper-alt);color:var(--ink-600);margin-top:14px;padding:13px 16px;font-size:14.5px;line-height:1.65}.cave-explain>.mono-label{margin-bottom:6px;display:block}.cave-recap{border:1px solid var(--slab-line);background:var(--slab);color:var(--slab-ink);margin:48px 0 0;padding:22px 24px}.cave-recap>.mono-label{color:var(--slab-muted);margin-bottom:12px;display:block}.cave-recap ul{margin:0;padding-left:1.2em}.cave-recap li{color:var(--slab-ink);margin-bottom:10px}.cave-recap li::marker{color:var(--accent)}.cave-recap li:last-child{margin-bottom:0}.cave-recap strong{color:#fff;font-weight:620}.cave-sources{border-top:1px solid var(--line);margin:56px 0 0;padding-top:20px}.cave-sources>.mono-label{margin-bottom:14px;display:block}.cave-sources ol{counter-reset:src;margin:0;padding:0;list-style:none}.cave-source{border-bottom:1px solid var(--line);counter-increment:src;grid-template-columns:30px 46px 1fr;align-items:baseline;gap:12px;padding:9px 0;font-size:14px;display:grid}.cave-source:before{content:"[" counter(src) "]";font-family:var(--font-mono);color:var(--ink-300);font-size:12px}.cave-source a{color:var(--ink-700);text-decoration:none}.cave-source a:hover{color:var(--accent);text-decoration:underline}.cave-source-note{color:var(--ink-400);margin-top:2px;font-size:13px;display:block}.cave-grade{font-family:var(--font-mono);letter-spacing:.06em;text-align:center;border:1px solid;padding:1px 7px;font-size:10.5px;display:inline-block}.cave-grade.is-a{color:var(--ok)}.cave-grade.is-b{color:var(--warn)}.cave-grade.is-c{color:var(--ink-400)}.cave-cite{font-family:var(--font-mono);vertical-align:super;color:var(--accent);padding:0 1px;font-size:.72em;line-height:0;text-decoration:none}.cave-cite:hover{text-decoration:underline}.cave-pager{border:1px solid var(--line);margin:64px 0 0;display:grid}@media (width>=720px){.cave-pager{grid-template-columns:1fr 1fr}}.cave-pager a{padding:18px 20px;text-decoration:none;transition:background .12s;display:block}.cave-pager a:hover{background:var(--paper-alt)}.cave-pager>:first-child{border-bottom:1px solid var(--line)}@media (width>=720px){.cave-pager>:first-child{border-bottom:0;border-right:1px solid var(--line)}}.cave-pager .cave-pager-next{text-align:right}.cave-pager .mono-label{margin-bottom:5px;display:block}.cave-pager-title{color:var(--ink-800);font-size:15.5px;font-weight:550;line-height:1.4}.cave-pager-empty{color:var(--ink-300);padding:18px 20px;font-size:14px}.cave-pager-more>a+a{border-top:1px solid var(--line)}.cave-done{flex-wrap:wrap;align-items:center;gap:12px;margin-top:28px;display:flex}.cave-done button{border:1px solid var(--ink-800);background:var(--ink-900);color:var(--paper);font:inherit;cursor:pointer;padding:10px 18px;font-size:14px;font-weight:550;transition:background .15s}.cave-done button:hover{background:var(--ink-700)}.cave-done button.is-done{background:var(--paper);color:var(--ok);border-color:var(--ok)}.cave-done-hint{color:var(--ink-400);font-size:13px}.cave-home{max-width:1080px;padding:84px var(--pad) 120px;margin:0 auto}.cave-home-head{max-width:660px;margin-bottom:56px}.cave-home-head h1{letter-spacing:-.032em;color:var(--ink-900);margin:14px 0 0;font-size:clamp(34px,5vw,46px);font-weight:650;line-height:1.15}.cave-home-head p{color:var(--ink-500);margin:16px 0 0;font-size:18px;line-height:1.65}.cave-filters{border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:22px;padding-bottom:18px;display:flex}.cave-filter{border:1px solid var(--line-strong);background:var(--paper);font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-500);cursor:pointer;padding:5px 12px;font-size:11px;transition:all .12s}.cave-filter:hover{border-color:var(--ink-400)}.cave-filter.is-on{background:var(--ink-900);border-color:var(--ink-900);color:var(--paper)}.cave-search{border:1px solid var(--line-strong);background:var(--paper);min-width:150px;font:inherit;color:var(--ink-800);flex:0 240px;margin-left:auto;padding:6px 10px;font-size:14px}.cave-search::placeholder{color:var(--ink-300)}.cave-hits{margin:0 0 32px}.cave-hits>.mono-label{margin:0 0 4px}.cave-hit{border-bottom:1px solid var(--line);padding:12px 0;text-decoration:none;display:block}.cave-hit-title{color:var(--ink-900);transition:color var(--duration-quick) var(--ease-smooth-out);font-weight:600;display:block}.cave-hit:hover .cave-hit-title{color:var(--accent)}.cave-hit-excerpt{color:var(--ink-500);margin-top:2px;font-size:14.5px;line-height:1.6;display:block}.cave-hit mark{background:var(--accent-soft);color:var(--ink-900)}.cave-grid{grid-template-columns:1fr;gap:0;display:grid}@media (width>=640px){.cave-grid{grid-template-columns:repeat(2,1fr)}}@media (width>=1000px){.cave-grid{grid-template-columns:repeat(3,1fr)}}.cave-card{border:1px solid var(--line);flex-direction:column;gap:12px;margin:0 -1px -1px 0;padding:22px;transition:background .14s;display:flex;position:relative}.cave-card[hidden]{display:none}.cave-card:hover{background:var(--paper-alt)}.cave-card:hover .cave-card-title{color:var(--accent)}.cave-card-top{justify-content:space-between;align-items:center;gap:10px;display:flex}.cave-card-title{letter-spacing:-.02em;color:var(--ink-900);margin:0;font-size:19px;font-weight:620;line-height:1.32;transition:color .14s}.cave-card-title a{z-index:1;text-decoration:none;position:relative}.cave-card-title a:hover{text-underline-offset:3px;text-decoration:underline}.cave-card-sub{color:var(--ink-500);flex:1;margin:0;font-size:14.5px;line-height:1.6}.cave-card-foot{border-top:1px solid var(--line);font-family:var(--font-mono);color:var(--ink-400);letter-spacing:.04em;align-items:center;gap:8px;padding-top:12px;font-size:11px;text-decoration:none;display:flex}.cave-card-foot:after{content:"";position:absolute;inset:0}.cave-card-bar{background:var(--ink-150);flex:1;height:2px;overflow:hidden}.cave-card-bar span{background:var(--accent);width:0;height:100%;display:block}.cave-tag{border:1px solid var(--line-strong);font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-500);white-space:nowrap;padding:2px 8px;font-size:10.5px}.cave-empty{text-align:center;color:var(--ink-400);border-bottom:1px solid var(--line);grid-column:1/-1;padding:64px 24px;font-size:15px}.cave-sitelinks{font-family:var(--font-mono);letter-spacing:.04em;color:var(--ink-400);flex-wrap:wrap;gap:4px 16px;font-size:11px;display:flex}.cave-rail-title a,.cave-sitelinks a{text-decoration:none}.cave-rail-title a:hover,.cave-sitelinks a:hover{color:var(--accent)}.cave-home>.cave-sitelinks{border-top:1px solid var(--line);margin-top:72px;padding-top:18px}.cave-page{max-width:var(--prose)}.cave-course{border-top:1px solid var(--line);margin:44px 0 0;padding:0;list-style:none}.cave-course a{border-bottom:1px solid var(--line);align-items:baseline;gap:16px;padding:20px 0;text-decoration:none;display:flex}.cave-course-title{letter-spacing:-.02em;color:var(--ink-900);transition:color var(--duration-quick) var(--ease-smooth-out);font-size:19px;font-weight:620;line-height:1.35;display:block}.cave-course a:hover .cave-course-title{color:var(--accent)}.cave-course-lede{color:var(--ink-500);margin-top:6px;font-size:15.5px;line-height:1.6;display:block}.cave-course .mono-label{margin-top:10px;display:block}.cave-course-done{color:var(--ok);display:none}.cave-course .is-done .cave-course-done{display:inline}@media (width<=900px){body{font-size:16.5px}.cave-railbtn{display:flex}.cave-rail{width:min(84vw, var(--rail));transition:transform .22s;transform:translate(-100%)}.cave-rail.is-open{transform:none;box-shadow:0 0 40px #0000002e}.cave-scrim.is-open{display:block}.cave-main{margin-left:0;padding:68px 20px 96px}.cave-term{grid-template-columns:1fr;gap:4px}}@media print{.cave-rail,.cave-railbtn,.cave-pager,.cave-done,.cave-scrim{display:none!important}.cave-main{margin-left:0}}::view-transition-old(root){animation:cave-page-out var(--duration-quick) var(--ease-smooth-out) both}::view-transition-new(root){animation:cave-page-in var(--duration-fast) var(--ease-smooth-out) both}@keyframes cave-page-out{to{opacity:0;filter:blur(var(--blur-small))}}@keyframes cave-page-in{0%{opacity:0;transform:translateY(var(--page-slide-distance));filter:blur(var(--blur-medium))}}.cave-rail{view-transition-name:cave-rail}.cave-eyebrow,.cave-h1,.cave-lede,.cave-meta{animation:cave-rise var(--duration-very-slow) var(--ease-smooth-out) both}.cave-h1{animation-delay:var(--duration-stagger)}.cave-lede{animation-delay:calc(var(--duration-stagger) * 2)}.cave-meta{animation-delay:calc(var(--duration-stagger) * 3)}@keyframes cave-rise{0%{opacity:0;transform:translateY(var(--distance-medium));filter:blur(var(--blur-medium))}}.cave-note>.mono-label{align-items:center;gap:6px;display:flex}.cave-note>.mono-label svg{flex-shrink:0}.cave-opt{transition:border-color var(--duration-quick) var(--ease-smooth-out), background var(--duration-quick) var(--ease-smooth-out), transform var(--duration-quick) var(--ease-smooth-out)}.cave-opt:hover:not(:disabled){transform:translate(2px)}.cave-opt-mark[hidden]{display:none}.cave-opt-mark{opacity:0;transition:opacity var(--duration-fast) var(--ease-bounce), transform var(--duration-fast) var(--ease-bounce);flex-shrink:0;margin-left:auto;display:inline-flex;transform:scale(.6)}.cave-opt.is-correct .cave-opt-mark,.cave-opt.is-wrong .cave-opt-mark{opacity:1;transform:scale(1)}.cave-opt.is-correct .cave-opt-mark{color:var(--ok)}.cave-opt.is-wrong .cave-opt-mark{color:var(--bad)}.cave-q.is-shaking{animation:.28s both cave-shake}@keyframes cave-shake{0%{animation-timing-function:var(--ease-smooth-out);transform:translate(0)}25%{transform:translateX(calc(var(--shake-distance) * -1));animation-timing-function:var(--ease-smooth-out)}50%{transform:translateX(var(--shake-distance));animation-timing-function:var(--ease-smooth-out)}75%{transform:translateX(calc(var(--shake-overshoot) * -1));animation-timing-function:var(--ease-smooth-out)}to{transform:translate(0)}}.cave-explain{opacity:0;transition:grid-template-rows var(--duration-fast) var(--ease-smooth-out), opacity var(--duration-fast) var(--ease-smooth-out), margin-top var(--duration-fast) var(--ease-smooth-out), padding var(--duration-fast) var(--ease-smooth-out), border-color var(--duration-fast) var(--ease-smooth-out);border-left-color:#0000;grid-template-rows:0fr;margin-top:0;padding-top:0;padding-bottom:0;display:grid}.cave-explain>*{overflow:hidden}.cave-explain.is-open{border-left-color:var(--ink-300);opacity:1;grid-template-rows:1fr;margin-top:14px;padding-top:13px;padding-bottom:13px}@media print{.cave-explain{border-left-color:var(--ink-300);opacity:1;grid-template-rows:1fr;margin-top:14px;padding-top:13px;padding-bottom:13px}}.cave-done button{transition:background var(--duration-quick) var(--ease-smooth-out), color var(--duration-quick) var(--ease-smooth-out), border-color var(--duration-quick) var(--ease-smooth-out);align-items:center;gap:8px;display:inline-flex}.cave-done-mark{transform-origin:50%;display:none}.cave-done button.is-done .cave-done-mark{animation:cave-check-in var(--check-dur) var(--ease-smooth-out) both;display:inline-flex}.cave-done button.is-done .cave-done-mark path{stroke-dasharray:24;stroke-dashoffset:24px;animation:cave-check-draw var(--check-path-dur) var(--ease-smooth-out) var(--check-path-delay) forwards}@keyframes cave-check-in{0%{opacity:0;transform:rotate(var(--check-rotate-from)) scale(.7)}to{opacity:1;transform:none}}@keyframes cave-check-draw{to{stroke-dashoffset:0}}.cave-pager a{display:block}.cave-pager .mono-label{align-items:center;gap:6px;display:flex}.cave-pager .cave-pager-next .mono-label{justify-content:flex-end}.cave-pager .mono-label svg{transition:transform var(--duration-fast) var(--ease-smooth-out)}.cave-pager a:hover .mono-label svg{transform:translate(-3px)}.cave-pager a.cave-pager-next:hover .mono-label svg{transform:translate(3px)}.cave-card{transition:background var(--duration-fast) var(--ease-smooth-out), transform var(--duration-fast) var(--ease-smooth-out)}.cave-card:hover{transform:translateY(-2px)}.cave-card-go{color:var(--ink-300);transition:transform var(--duration-fast) var(--ease-smooth-out), color var(--duration-fast) var(--ease-smooth-out);margin-left:auto}.cave-card:hover .cave-card-go{color:var(--accent);transform:translate(3px)}.cave-source a svg{vertical-align:-1px;color:var(--ink-300);transition:color var(--duration-quick) var(--ease-smooth-out);margin-left:4px;display:inline-block}.cave-source a:hover svg{color:var(--accent)}.cave-railbtn{transition:border-color var(--duration-quick) var(--ease-smooth-out), background var(--duration-quick) var(--ease-smooth-out)}.cave-railbtn:hover{border-color:var(--ink-400)}.cave-scrim{opacity:0;transition:opacity var(--duration-fast) var(--ease-smooth-out)}.cave-scrim.is-open{opacity:1}@media (prefers-reduced-motion:reduce){.cave-eyebrow,.cave-h1,.cave-lede,.cave-meta,.cave-q.is-shaking,.cave-done button.is-done .cave-done-mark,.cave-done button.is-done .cave-done-mark path{animation:none}.cave-done button.is-done .cave-done-mark path{stroke-dashoffset:0}.cave-card:hover,.cave-opt:hover:not(:disabled),.cave-pager a:hover .mono-label svg,.cave-card:hover .cave-card-go,.cave-video-frame>button:hover .cave-video-play{transform:none}::view-transition-old(root),::view-transition-new(root){animation:none}}
