:root{--bg-grad: radial-gradient(140% 60% at 50% -5%, #1a1814 0%, #0b0b0e 55%);--accent: #b08d57;--badge: #d6b988;--text: #e9e2d3;--body: #c4bca9;--dim: #837c70;--dim2: #6f685c;--line: rgba(176, 141, 87, .13);--line-strong: rgba(176, 141, 87, .3);--serif: "Playfair Display", Georgia, serif;--read: "EB Garamond", Georgia, serif;--maxw: 560px;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;min-height:100dvh;background-color:#0b0b0e;background-image:var(--bg-grad);background-attachment:fixed;color:var(--body);font-family:var(--read);-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button{font-family:var(--read)}.app{max-width:var(--maxw);margin:0 auto;padding:calc(14px + env(safe-area-inset-top)) 24px calc(96px + env(safe-area-inset-bottom))}.hsnap::-webkit-scrollbar{display:none}.hsnap{-ms-overflow-style:none;scrollbar-width:none}@keyframes fadeUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.frame{position:relative;aspect-ratio:.62;border-radius:10px;overflow:hidden;background:linear-gradient(160deg,#1d1b16,#0e0d0b);box-shadow:inset 0 0 0 1px #b08d5766;display:flex;align-items:center;justify-content:center}.frame img{width:100%;height:100%;object-fit:cover;display:block}.frame .glyph{font-family:var(--serif);color:var(--badge);line-height:1}.frame .corner{position:absolute;top:10px;left:0;right:0;text-align:center;color:#b08d57b3;font-size:13px}.g-title{font-family:var(--serif);font-size:40px;line-height:1;color:var(--text);font-weight:600;margin:0}.g-sub{color:var(--accent);letter-spacing:.32em;text-transform:uppercase;font-size:11px;margin-top:9px}.section-head{display:flex;align-items:baseline;justify-content:space-between;margin:26px 0 12px}.section-head .it{font-family:var(--serif);font-style:italic;color:#cabfa9;font-size:17px}.section-head .hint{color:var(--dim2);font-size:12px;letter-spacing:.1em}.section-head .count{color:var(--dim2);font-style:normal;font-size:12px;letter-spacing:.08em}.carousel{display:flex;gap:16px;overflow-x:auto;scroll-snap-type:x mandatory;margin:0 -24px;padding:4px 24px 8px}.feat{flex:0 0 auto;width:144px;scroll-snap-align:start;cursor:pointer}.feat .frame{box-shadow:0 14px 30px -10px #000000bf,inset 0 0 0 1px #b08d5766}.feat .frame .glyph{font-size:46px;font-weight:500}.feat .name{font-family:var(--serif);font-size:17px;color:var(--text);margin-top:11px;line-height:1.15}.feat .kw{color:var(--dim);font-size:12.5px;margin-top:3px;line-height:1.3}.search{display:flex;align-items:center;gap:10px;border-bottom:1px solid var(--line-strong);padding:6px 2px}.search .dot{width:12px;height:12px;border:1.5px solid var(--dim);border-radius:50%;flex-shrink:0}.search input{flex:1;background:transparent;border:none;outline:none;color:var(--text);font-family:var(--read);font-size:16px;padding:2px 0}.search input::placeholder{color:var(--dim)}.filters{display:flex;gap:22px;margin-top:18px}.filter{background:none;border:none;cursor:pointer;padding:2px 0 6px;font-size:14px;letter-spacing:.03em;color:var(--dim);border-bottom:1.5px solid transparent;transition:.2s}.filter.active{color:var(--text);font-weight:600;border-bottom-color:var(--accent)}.row{display:flex;align-items:center;gap:15px;padding:13px 0;border-bottom:1px solid var(--line);cursor:pointer}.row .thumb{flex:0 0 auto;width:42px;border-radius:6px}.row .thumb .glyph{font-size:18px}.row .meta{flex:1;min-width:0}.row .name{font-family:var(--serif);font-size:18px;color:var(--text);line-height:1.2}.row .kw{color:var(--dim);font-size:13px;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row .chev{color:#5f594f;font-size:20px;flex-shrink:0}.empty{color:var(--dim);margin-top:22px;font-size:16px}.back{background:none;border:none;color:var(--accent);font-family:var(--read);font-size:15px;padding:8px 0;cursor:pointer;display:flex;align-items:center;gap:8px}.back .lt{font-size:18px}.hero{position:relative;padding-top:6px;animation:fadeUp .5s ease both}.hero .watermark{position:absolute;top:-22px;right:0;font-family:var(--serif);font-size:150px;font-weight:700;color:#b08d5712;line-height:1;pointer-events:none;user-select:none}.hero-inner{display:flex;flex-direction:column;align-items:center;position:relative}.hero .frame{width:150px;border-radius:12px;margin-top:6px;box-shadow:0 24px 48px -16px #000c,inset 0 0 0 1px #b08d5773}.hero .frame .glyph{font-size:52px;font-weight:500}.d-tag{color:var(--accent);letter-spacing:.3em;text-transform:uppercase;font-size:11px;margin-top:20px}.d-name{font-family:var(--serif);font-size:36px;font-weight:600;color:var(--text);line-height:1.08;text-align:center;margin-top:6px}.d-kw{color:#9a9384;font-style:italic;font-family:var(--read);font-size:16px;text-align:center;margin-top:10px;line-height:1.4}.tabs{position:sticky;top:0;z-index:4;background:linear-gradient(180deg,#0d0c0f 70%,#0d0c0f00);margin:26px -8px 0;padding:8px 8px 12px}.tabbar{display:flex;gap:4px;border:1px solid rgba(176,141,87,.25);border-radius:11px;padding:4px}.tab{flex:1;cursor:pointer;border:none;border-radius:8px;padding:9px 4px;font-size:13px;letter-spacing:.02em;background:transparent;color:#9a9384;transition:.2s}.tab.active{background:#b08d57e6;color:#15130f;font-weight:600}.tabbody{padding-top:10px;display:flex;flex-direction:column;gap:26px;min-height:calc(100dvh - 64px)}.sec{animation:fadeUp .35s ease both}.sec .label{font-family:var(--serif);color:var(--accent);font-style:italic;font-size:19px;margin-bottom:10px}.sec .text{font-family:var(--read);font-size:17px;line-height:1.78;color:var(--body);white-space:pre-line}.sec.quote .text{font-family:var(--serif);font-size:22px;line-height:1.55;color:#ded6c6}.src{color:var(--dim2);font-size:13px;margin-top:28px}.camera-wrap{position:relative;border-radius:12px;overflow:hidden;background:#000;aspect-ratio:3 / 4;margin-top:18px;box-shadow:inset 0 0 0 1px #b08d574d}.camera-wrap video{width:100%;height:100%;object-fit:cover}.reticle{position:absolute;inset:12% 16%;border:1.5px dashed rgba(214,185,136,.7);border-radius:10px;pointer-events:none}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;background:var(--accent);color:#15130f;border:none;border-radius:999px;padding:13px 24px;font-size:15px;font-weight:600;cursor:pointer;font-family:var(--read);letter-spacing:.02em}.btn.secondary{background:transparent;color:var(--text);border:1px solid var(--line-strong)}.btn:disabled{opacity:.5}.btn-row{display:flex;gap:10px;justify-content:center;margin-top:18px;flex-wrap:wrap}.notice{background:#b08d570f;border:1px solid var(--line-strong);border-radius:12px;padding:14px 16px;margin-top:16px;color:var(--body)}.notice.error{border-color:#7a4b3b;color:#e6b8a6}.notice strong{font-family:var(--serif);color:var(--text)}.center{text-align:center}.muted{color:var(--dim)}.nav{position:fixed;left:0;right:0;bottom:0;z-index:10;display:flex;justify-content:center;gap:14px;background:#0b0b0eeb;backdrop-filter:blur(8px);border-top:1px solid rgba(176,141,87,.18);padding:9px 0 calc(9px + env(safe-area-inset-bottom))}.nav a{display:flex;flex-direction:column;align-items:center;gap:3px;color:var(--dim);font-size:11px;letter-spacing:.08em;text-transform:uppercase;padding:4px 26px;border-radius:10px}.nav a.active{color:var(--badge)}.nav .ico{font-size:1.25rem;line-height:1}
