:root{--bg: #0c0a08;--ink: #d8cdb6;--ink-dim: #9a8f7a;--brass: #c9a86a;--brass-dim: rgba(201, 168, 106, .32);--panel: rgba(16, 13, 10, .92);--panel-border: rgba(201, 168, 106, .22);--paper-ink: #322718;--serif: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;--mono: ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, monospace;--page-font: clamp(9px, 1.5vh, 13px)}*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden;background:var(--bg);color:var(--ink);font-family:var(--serif)}#scene{position:fixed;inset:0;width:100%;height:100%;display:block}#vignette{position:fixed;inset:0;pointer-events:none;background:radial-gradient(ellipse at center,transparent 52%,rgba(0,0,0,.55) 100%);z-index:2}#crosshair{position:fixed;left:50%;top:50%;width:16px;height:16px;margin:-8px 0 0 -8px;border-radius:50%;border:1.4px solid rgba(216,205,182,.55);background:transparent;z-index:5;transition:transform .12s ease,border-color .12s ease}#crosshair:after{content:"";position:absolute;left:50%;top:50%;width:2.5px;height:2.5px;margin:-1.25px 0 0 -1.25px;border-radius:50%;background:#d8cdb6b3}#crosshair.active{border-color:var(--brass);transform:scale(1.18);box-shadow:0 0 10px #c9a86a73}body.ui-open #crosshair,body.paused #crosshair{display:none}#spine-tip{position:fixed;left:calc(50% + 18px);top:calc(50% + 14px);z-index:5;pointer-events:none;background:var(--panel);border:1px solid var(--panel-border);border-left:2px solid var(--brass);padding:7px 11px;max-width:300px;opacity:0;transform:translateY(3px);transition:opacity .15s ease,transform .15s ease}#spine-tip.visible{opacity:1;transform:none}#spine-tip .spine{font-family:var(--mono);font-size:13px;letter-spacing:.14em;color:var(--brass)}#spine-tip .meta{font-size:11.5px;color:var(--ink-dim);margin-top:3px;letter-spacing:.05em}.hud{position:fixed;z-index:4;font-size:12px;letter-spacing:.04em;pointer-events:none;text-shadow:0 1px 3px rgba(0,0,0,.9)}#hud-address{left:18px;top:16px;pointer-events:auto;cursor:pointer;background:#0a08068c;border:1px solid rgba(201,168,106,.16);padding:8px 12px;backdrop-filter:blur(5px);border-radius:2px;max-width:360px}#hud-address .where{color:var(--ink);font-family:var(--mono);font-size:13px;letter-spacing:.06em}#hud-address .hexname{font-family:var(--mono);color:var(--ink-dim);font-size:10px;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#hud-address:hover .hexname{color:var(--brass)}#hud-keys{right:18px;bottom:16px;color:var(--ink-dim);text-align:right;font-size:11.5px;line-height:1.7}#hud-keys b{color:var(--ink);font-weight:600;font-family:var(--mono);font-size:10.5px;border:1px solid rgba(216,205,182,.25);border-radius:3px;padding:0 4px;margin-right:2px}#hud-prompt{left:50%;bottom:64px;transform:translate(-50%);color:var(--ink);font-size:13px;background:#0a080680;padding:6px 14px;border-radius:2px;border:1px solid rgba(201,168,106,.14);opacity:0;transition:opacity .15s ease}#hud-prompt.visible{opacity:1}#hud-fps{right:18px;top:14px;font-family:var(--mono);font-size:11px;color:var(--ink-dim)}#toasts{position:fixed;left:50%;bottom:110px;transform:translate(-50%);z-index:30;display:flex;flex-direction:column;align-items:center;gap:8px;pointer-events:none}.toast{background:var(--panel);border:1px solid var(--panel-border);border-left:2px solid var(--brass);color:var(--ink);padding:9px 16px;font-size:13px;letter-spacing:.03em;animation:toast-in .25s ease;max-width:70vw}.toast.fade{opacity:0;transition:opacity .5s ease}@keyframes toast-in{0%{opacity:0;transform:translateY(6px)}}.backdrop{position:fixed;inset:0;z-index:20;background:#040302b8;display:flex;align-items:center;justify-content:center;animation:fade-in .18s ease}@keyframes fade-in{0%{opacity:0}}.modal{background:var(--panel);border:1px solid var(--panel-border);box-shadow:0 18px 70px #000000bf;width:min(620px,calc(100vw - 48px));max-height:calc(100vh - 80px);overflow-y:auto;padding:26px 30px;border-radius:3px}.modal h2{margin:0 0 4px;font-weight:500;font-size:21px;letter-spacing:.06em;color:var(--brass)}.modal .sub{color:var(--ink-dim);font-size:12.5px;margin-bottom:16px;line-height:1.5}.modal label{display:block;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-dim);margin:14px 0 6px}.modal textarea,.modal input[type=text]{width:100%;background:#0006;color:var(--ink);border:1px solid rgba(201,168,106,.25);border-radius:2px;font-family:var(--mono);font-size:13px;padding:10px 12px;resize:vertical;outline:none}.modal textarea:focus,.modal input[type=text]:focus{border-color:var(--brass)}.norm-preview{font-family:var(--mono);font-size:12px;background:#0000004d;border:1px dashed rgba(201,168,106,.2);color:var(--ink-dim);padding:8px 10px;min-height:34px;max-height:90px;overflow-y:auto;white-space:pre-wrap;word-break:break-all}.norm-preview.over{border-color:#b5654f;color:#cf8a76}.mode-row{display:flex;gap:10px;margin-top:6px}.mode-row label.mode{flex:1;border:1px solid rgba(201,168,106,.2);padding:10px 12px;cursor:pointer;text-transform:none;letter-spacing:.02em;font-size:12.5px;color:var(--ink);margin:0;border-radius:2px}.mode-row label.mode small{display:block;color:var(--ink-dim);margin-top:3px;font-size:11px}.mode-row label.mode.selected{border-color:var(--brass);background:#c9a86a12}.mode-row input{display:none}.error-line{color:#cf8a76;font-size:12.5px;min-height:18px;margin-top:10px}button.btn{font-family:var(--serif);background:transparent;color:var(--ink);border:1px solid rgba(201,168,106,.35);padding:9px 18px;font-size:13.5px;letter-spacing:.08em;cursor:pointer;border-radius:2px;transition:background .12s ease,border-color .12s ease}button.btn:hover{background:#c9a86a1a;border-color:var(--brass)}button.btn.primary{background:#c9a86a24;border-color:var(--brass);color:#ecdfbe}button.btn.primary:hover{background:#c9a86a3d}button.icon{background:transparent;border:none;color:var(--ink-dim);cursor:pointer;font-size:16px;padding:4px 8px}button.icon:hover{color:var(--brass)}.row{display:flex;align-items:center;gap:10px}.row.end{justify-content:flex-end;margin-top:16px}.result-card{margin-top:18px;border:1px solid var(--panel-border);border-left:2px solid var(--brass);padding:14px 16px;background:#00000040}.result-card .chips{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 10px}.chip{font-size:11px;letter-spacing:.08em;border:1px solid rgba(201,168,106,.3);color:var(--brass);padding:2px 8px;border-radius:10px}.addr-code{font-family:var(--mono);font-size:11px;color:var(--ink-dim);word-break:break-all;display:block;max-height:48px;overflow:hidden}.context-snippet{font-family:var(--mono);font-size:11.5px;background:#00000059;color:var(--ink-dim);padding:10px;white-space:pre-wrap;word-break:break-all;line-height:1.6}.context-snippet mark{background:#c9a86a66;color:#f3e7c8;border-radius:2px;padding:0 1px}#book-overlay .book-panel{background-color:#f0e7d3;color:var(--paper-ink);width:min(860px,calc(100vw - 40px));max-height:calc(100vh - 36px);display:flex;flex-direction:column;border-radius:3px 8px 8px 3px;box-shadow:inset 4px 0 14px -6px #3c281480,0 24px 80px #000000d9;animation:book-in .26s cubic-bezier(.2,.9,.25,1);overflow:hidden}@keyframes book-in{0%{opacity:0;transform:scale(.92) translateY(12px)}}.book-header{display:flex;align-items:baseline;gap:14px;padding:16px 22px 10px;border-bottom:1px solid rgba(80,60,30,.25)}.book-header .spine-name{font-family:var(--mono);font-size:15px;letter-spacing:.18em;color:#5a4326}.book-header .meta{font-size:12px;color:#7d6a4c;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.book-header button.icon{color:#8d7a58}.book-header button.icon:hover{color:#4a3414}.book-header button.icon.starred{color:#a8761d}.page-scroll{overflow:auto;padding:18px 26px;flex:1}pre.page{margin:0 auto;font-family:var(--mono);font-size:var(--page-font);line-height:1.38;letter-spacing:.02em;color:var(--paper-ink);width:fit-content}pre.page mark{background:#c18a2a6b;color:#1d1407;border-radius:2px;box-shadow:0 0 0 2px #c18a2a6b}.book-footer{display:flex;align-items:center;gap:12px;padding:10px 20px 14px;border-top:1px solid rgba(80,60,30,.25);font-size:12.5px;color:#6e5b3e}.book-footer .nav{font-size:19px;background:none;border:1px solid rgba(110,91,62,.4);color:#6e5b3e;width:34px;height:30px;cursor:pointer;border-radius:2px}.book-footer .nav:hover{background:#6e5b3e1f}.book-footer input[type=number]{width:58px;font-family:var(--mono);background:#fffcf080;border:1px solid rgba(110,91,62,.4);color:var(--paper-ink);padding:4px 6px;font-size:12px;border-radius:2px}.book-footer input[type=range]{flex:1;accent-color:#8d6a2e}button.series-next{font-family:var(--serif);font-size:12px;letter-spacing:.05em;background:#8d6a2e1f;border:1px solid rgba(141,106,46,.5);color:#6e4f1e;padding:6px 12px;cursor:pointer;border-radius:2px;white-space:nowrap}button.series-next:hover:not(:disabled){background:#8d6a2e38}button.series-next:disabled{opacity:.55;cursor:default}.book-footer .copy-btns{display:flex;gap:6px}.book-footer .copy-btns button{font-size:11px;letter-spacing:.06em;background:none;border:1px solid rgba(110,91,62,.35);color:#6e5b3e;padding:5px 9px;cursor:pointer;border-radius:2px}.book-footer .copy-btns button:hover{background:#6e5b3e1f}.mark-row{display:flex;align-items:center;gap:12px;padding:11px 6px;border-bottom:1px solid rgba(201,168,106,.12);cursor:pointer}.mark-row:hover{background:#c9a86a0f}.mark-row .name{font-family:var(--mono);letter-spacing:.1em;font-size:13px;color:var(--ink);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mark-row .loc{font-size:11px;color:var(--ink-dim);font-family:var(--mono);white-space:nowrap}.mark-section{font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--brass);margin:18px 0 4px;opacity:.85}.mark-section:first-child{margin-top:4px}.empty-note{color:var(--ink-dim);font-size:13px;padding:18px 0;text-align:center}.about-block{font-size:13.5px;line-height:1.65;color:var(--ink)}.about-block h3{font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--brass);margin:20px 0 6px;font-weight:600}.about-block .epigraph{font-style:italic;color:var(--ink-dim);border-left:2px solid var(--brass-dim);padding-left:14px;margin:6px 0 4px}.about-block table{width:100%;border-collapse:collapse;font-size:12.5px}.about-block td{padding:5px 8px 5px 0;vertical-align:top;border-bottom:1px solid rgba(201,168,106,.1);color:var(--ink-dim)}.about-block td:first-child{color:var(--ink);white-space:nowrap;font-family:var(--mono);font-size:11.5px}.screen{position:fixed;inset:0;z-index:40;background:var(--bg);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:30px;transition:opacity .6s ease}.screen.translucent{background:#080605d1;backdrop-filter:blur(3px)}.screen.hidden{opacity:0;pointer-events:none}.screen .title{font-size:clamp(26px,4.6vw,44px);letter-spacing:.34em;text-transform:uppercase;color:var(--brass);font-weight:400;margin:0 0 26px;text-indent:.34em}.screen .epigraph{max-width:640px;font-style:italic;font-size:clamp(14px,1.8vw,17px);line-height:1.8;color:var(--ink-dim)}.screen .epigraph .attr{display:block;font-style:normal;font-size:12px;letter-spacing:.12em;margin-top:14px;color:var(--ink-dim)}.screen .enter{margin-top:44px;font-size:14px;letter-spacing:.28em;text-transform:uppercase;color:var(--ink);border:1px solid var(--brass-dim);background:transparent;padding:14px 34px;cursor:pointer;animation:pulse 2.6s ease-in-out infinite;font-family:var(--serif)}.screen .enter:hover{border-color:var(--brass);color:#f0e3c2}@keyframes pulse{0%,to{opacity:.65}50%{opacity:1}}.screen .menu{display:flex;flex-direction:column;gap:10px;margin-top:34px;min-width:260px}.screen .hint{margin-top:30px;font-size:11.5px;color:var(--ink-dim);letter-spacing:.06em;line-height:2}.screen .hint b{color:var(--ink);font-family:var(--mono);font-size:10.5px;border:1px solid rgba(216,205,182,.25);border-radius:3px;padding:0 4px}#loading .progress{margin-top:40px;font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-dim)}::selection{background:#c9a86a59}.modal::-webkit-scrollbar,.page-scroll::-webkit-scrollbar,.norm-preview::-webkit-scrollbar{width:9px}.modal::-webkit-scrollbar-thumb,.norm-preview::-webkit-scrollbar-thumb{background:#c9a86a40;border-radius:5px}.page-scroll::-webkit-scrollbar-thumb{background:#6e5b3e59;border-radius:5px}
