/* Chaos Bible: an illustrated field guide, with local artwork and fonts. */
:root {
 color-scheme:dark; --bg:#0e1219;--text:#f0e9dc;--muted:#b9bec9;--dim:#939eae;--line:rgba(187,199,216,.14);--wash:rgba(205,215,234,.035);--nav-hover:rgba(224,199,149,.07);--topbar-bg:rgba(14,18,25,.97);--topbar-line:rgba(219,189,131,.16);--panel:#171e29;--field-bg:#111720;
 --paper:#171e28;--ink:#f0e9dc;--ink-body:#bec4ce;--ink-muted:#a4aebc;--ink-dim:#939eae;
 --ds-bg:#131a24;--ds-bg-2:#1b2431;--ds-hover:rgba(220,193,143,.055);--ds-text:#f1ecdf;--ds-muted:#bcc6d4;--ds-dim:#a0acbf;--ds-line:rgba(184,198,216,.15);--ds-sunken:#0c121b;
 --gold:#dbbd83;--gold-deep:#d5b377;--gold-dark:#efcf91;--cyan:#90c9d2;--coral:#f79e98;--green:#a0d5b5;--violet:#b8a7ee;
 --shadow:0 18px 50px rgba(0,0,0,.24);--card-shadow:none;--card-shadow-hover:0 12px 36px rgba(0,0,0,.18);--btn-shadow:0 4px 15px rgba(0,0,0,.15);--primary-glow:rgba(219,189,131,.22);
 --radius-xs:4px;--radius-sm:6px;--radius-md:9px;--radius-lg:13px;--radius-full:999px;--ease:cubic-bezier(.2,.6,.3,1);--transition-fast:130ms var(--ease);--transition:190ms var(--ease);--transition-press:90ms var(--ease);--tracking-display:-.02em;--tracking-hero:-.03em;--tracking-tight:-.02em;--lh-head:1.2;--font-body:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans","Noto Sans JP","Noto Sans KR","Noto Sans SC","Noto Sans TC","Hiragino Sans","Hiragino Kaku Gothic ProN","Yu Gothic UI",Meiryo,"Malgun Gothic","Apple SD Gothic Neo","PingFang SC","PingFang TC","Microsoft YaHei","Microsoft JhengHei",sans-serif;--font-display:Georgia,"Times New Roman","Noto Serif","Noto Serif JP","Noto Serif KR","Noto Serif SC","Noto Serif TC","Hiragino Mincho ProN","Yu Mincho","Songti SC","Songti TC","Source Han Serif SC",serif;--font-mono:ui-monospace,"Cascadia Code",Consolas,monospace;--header-h:80px;--sidebar-w:246px;--toc-w:196px;--measure:74ch;
}
@media(prefers-color-scheme:light){:root:not([data-theme="dark"]){color-scheme:light;--bg:#f4f0e8;--text:#252a32;--muted:#575e69;--dim:#596270;--line:rgba(74,63,44,.16);--wash:rgba(65,52,29,.025);--nav-hover:rgba(148,109,38,.08);--topbar-bg:rgba(247,244,237,.97);--topbar-line:rgba(125,95,44,.2);--panel:#fbf8f1;--field-bg:#efeae0;--paper:#fffcf5;--ink:#252a32;--ink-body:#555d68;--ink-muted:#626875;--ink-dim:#5f6773;--gold-deep:#816128;--gold-dark:#674714;--cyan:#1f6b78;--coral:#a8332c;--green:#2c6b46;--violet:#5b3fa8;--primary-glow:rgba(129,97,40,.2);--shadow:0 18px 45px rgba(65,52,29,.12);--card-shadow:0 1px 2px rgba(65,52,29,.05);--card-shadow-hover:0 10px 26px rgba(65,52,29,.08);}}
[data-theme="light"]{color-scheme:light;--bg:#f4f0e8;--text:#252a32;--muted:#575e69;--dim:#596270;--line:rgba(74,63,44,.16);--wash:rgba(65,52,29,.025);--nav-hover:rgba(148,109,38,.08);--topbar-bg:rgba(247,244,237,.97);--topbar-line:rgba(125,95,44,.2);--panel:#fbf8f1;--field-bg:#efeae0;--paper:#fffcf5;--ink:#252a32;--ink-body:#555d68;--ink-muted:#626875;--ink-dim:#5f6773;--gold-deep:#816128;--gold-dark:#674714;--cyan:#1f6b78;--coral:#a8332c;--green:#2c6b46;--violet:#5b3fa8;--primary-glow:rgba(129,97,40,.2);--shadow:0 18px 45px rgba(65,52,29,.12);--card-shadow:0 1px 2px rgba(65,52,29,.05);--card-shadow-hover:0 10px 26px rgba(65,52,29,.08);}
*,*::before,*::after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:100px}body{margin:0;background:var(--bg);color:var(--ink-body);font:15px/1.7 var(--font-body);-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit}button,a,summary{touch-action:manipulation;-webkit-tap-highlight-color:transparent}button,summary{cursor:pointer}button:disabled{cursor:default;opacity:.5}[hidden]{display:none!important}a{color:inherit;text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:4px}:focus-visible{outline:2px solid var(--gold-deep);outline-offset:4px;border-radius:var(--radius-xs)}img{max-width:100%;height:auto}.ui-icon{display:inline-block;width:22px;height:22px;flex:none;vertical-align:middle}.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
h1,h2,h3,h4{color:var(--ink);line-height:var(--lh-head);margin:2.5rem 0 .9rem;scroll-margin-top:110px;overflow-wrap:break-word}h1,h2{font-family:var(--font-display);font-weight:400;letter-spacing:var(--tracking-display)}h1{font-size:clamp(2.5rem,2rem + 1.5vw,3.6rem);margin-top:0}h2{font-size:clamp(1.8rem,1.55rem + .5vw,2.3rem);padding-bottom:.7rem;border-bottom:1px solid var(--line)}h3{font-size:1.32rem;font-weight:600;letter-spacing:var(--tracking-tight);margin:2.4rem 0 .75rem}h4{font-size:1.02rem;font-weight:650;margin:1.9rem 0 .55rem}p{max-width:var(--measure);margin:0 0 1.15rem}ul,ol{max-width:var(--measure);padding-left:1.5rem}li{margin:.42rem 0;padding-left:.2rem}li::marker{color:var(--gold-deep)}strong{color:var(--ink);font-weight:650}hr{border:0;border-top:1px solid var(--line);margin:2rem 0}code,kbd,samp{font-family:var(--font-mono);font-size:.85em;border:1px solid var(--line);border-radius:var(--radius-xs);padding:.12em .4em;background:var(--wash);color:var(--ink)}pre{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-md);padding:1rem 1.3rem;overflow-x:auto}pre code{background:none;border:0;padding:0}kbd{min-width:1.65em;text-align:center;display:inline-block;box-shadow:0 2px 0 var(--line)}blockquote{margin:1.5rem 0;border-left:2px solid var(--gold-deep);padding:.4rem 0 .4rem 1.3rem;font-family:var(--font-display);font-size:1.15rem;color:var(--ink-muted)}.skip-link{position:fixed;top:-100px;left:16px;z-index:250;background:var(--gold);color:#20232b;padding:.8rem 1.2rem;border-radius:var(--radius-sm)}.skip-link:focus{top:12px}
/* Persistent navigation */
.masthead{position:sticky;top:0;z-index:60;height:var(--header-h);display:flex;align-items:center;gap:1.15rem;padding:0 30px;max-width:1720px;margin:auto;background:var(--topbar-bg);border-bottom:1px solid var(--topbar-line);backdrop-filter:blur(16px)}.brand{display:inline-flex;align-items:center;gap:13px;color:var(--text);font-family:var(--font-display);font-weight:500;text-transform:uppercase;letter-spacing:.08em;font-size:1.08rem;white-space:nowrap}.brand:hover{text-decoration:none}.sigil{color:var(--gold-deep);width:37px;height:37px;border:1px solid var(--topbar-line);display:grid;place-items:center;border-radius:var(--radius-md)}.sigil .ui-icon{width:23px;height:23px}.brand-sub{display:block;font-family:var(--font-body);font-size:9px;font-weight:500;letter-spacing:.22em;color:var(--dim);line-height:1.5;margin-top:2px}.masthead-spacer{flex:1}.icon-btn{display:grid;place-items:center;width:44px;height:44px;flex:none;border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--muted);background:transparent;transition:color var(--transition-fast),background var(--transition-fast),border-color var(--transition-fast)}.icon-btn:hover{background:var(--nav-hover);color:var(--text);border-color:var(--gold-deep)}.nav-toggle{display:none}.search-trigger{display:flex;align-items:center;gap:10px;flex:0 1 320px;min-width:190px;min-height:42px;padding:7px 12px;border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--dim);background:var(--field-bg);font-size:.8rem;text-align:left;transition:border-color var(--transition-fast)}.search-trigger:hover{border-color:var(--gold-deep)}.search-trigger span:first-child{display:flex}.search-trigger .ui-icon{width:18px;height:18px}.search-trigger .hint{margin-left:auto;font-family:var(--font-mono);font-size:.65rem;padding:0 5px;border:1px solid var(--line);border-radius:var(--radius-xs);white-space:nowrap}
.language-menu{position:relative;flex:none}.language-menu summary{display:flex;align-items:center;gap:8px;list-style:none;min-height:44px;color:var(--muted);font-size:.78rem}.language-menu summary::-webkit-details-marker{display:none}.language-menu summary .ui-icon{width:18px;height:18px}.language-menu .disclosure-arrow{width:12px;height:12px}.language-menu[open] .disclosure-arrow{transform:rotate(180deg)}.locale-code{display:none;text-transform:uppercase}.language-options{position:absolute;top:calc(100% + 12px);right:0;width:225px;max-height:70vh;overflow:auto;padding:8px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow)}.language-options a{display:flex;justify-content:space-between;align-items:center;gap:20px;min-height:44px;padding:8px 13px;border-radius:var(--radius-sm);color:var(--text);font-size:.86rem}.language-options a:hover,.language-options .is-active{background:var(--nav-hover);color:var(--gold-deep);text-decoration:none}.language-code{font-family:var(--font-mono);text-transform:uppercase;font-size:.65rem;color:var(--dim)}
.shell{display:grid;grid-template-columns:var(--sidebar-w) minmax(0,1fr) var(--toc-w);max-width:1720px;margin:0 auto;align-items:start}.sidebar{position:sticky;top:var(--header-h);height:calc(100dvh - var(--header-h));padding:28px 15px 40px 24px;overflow-y:auto;overscroll-behavior:contain;border-right:1px solid var(--line);scrollbar-width:thin;scrollbar-color:var(--line) transparent}.nav-group{margin-top:26px}.nav-title{font-size:.62rem;font-weight:650;text-transform:uppercase;letter-spacing:.16em;color:var(--dim);margin:0 0 8px 10px}.nav-link{display:flex;align-items:center;gap:10px;min-height:38px;padding:8px 10px;border-radius:var(--radius-sm);color:var(--muted);font-size:.77rem;line-height:1.4;border-left:2px solid transparent;transition:color var(--transition-fast),background var(--transition-fast)}.nav-link:hover{color:var(--text);background:var(--wash);text-decoration:none}.nav-link.is-active{color:var(--gold-deep);background:var(--nav-hover);border-left-color:var(--gold-deep)}.nav-link .ui-icon{width:15px;height:15px;opacity:.8}.nav-home{min-height:42px;font-size:.8rem}.nav-count{margin-left:auto;font-size:.7rem;color:var(--dim)}.locale-switcher{display:flex;flex-wrap:wrap;gap:4px;margin-top:30px;padding-top:20px;border-top:1px solid var(--line)}.locale-switcher a{min-height:36px;display:inline-flex;align-items:center;font-size:.69rem;padding:4px 7px;color:var(--dim);border-radius:var(--radius-xs)}.locale-switcher a:hover,.locale-switcher a.is-active{color:var(--gold-deep);background:var(--nav-hover);text-decoration:none}.content{min-width:0;padding:34px clamp(24px,3.5vw,54px) 45px}.content a{color:var(--gold-deep)}.content a:hover{color:var(--gold-dark)}.toc{position:sticky;top:var(--header-h);max-height:calc(100dvh - var(--header-h));overflow-y:auto;padding:44px 25px 25px 8px;font-size:.75rem}.toc-title{text-transform:uppercase;letter-spacing:.14em;font-size:.6rem;font-weight:650;color:var(--dim);margin:0 0 17px}.toc a{display:block;padding:7px 0 7px 12px;border-left:1px solid var(--line);color:var(--dim);line-height:1.4}.toc a:hover{color:var(--text);text-decoration:none}.toc a.is-active{border-color:var(--gold-deep);color:var(--gold-deep)}.toc a.lvl-3{padding-left:22px;font-size:.92em}
.breadcrumb{display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:.72rem;color:var(--dim);margin-bottom:30px}.breadcrumb a{color:var(--dim)}.breadcrumb .sep{opacity:.5}.page-intro{margin-bottom:30px;border-bottom:1px solid var(--line);padding:0 0 28px}.page-intro h1{margin-bottom:16px}.page-intro .lede{margin-bottom:0;max-width:68ch}.lede{font-size:1rem;line-height:1.8;color:var(--ink-muted)}.eyebrow{display:flex;align-items:center;gap:12px;color:var(--gold-deep);font-size:.62rem;font-weight:650;line-height:1.6;letter-spacing:.16em;text-transform:uppercase;margin:0 0 14px}.eyebrow-line{height:1px;width:24px;background:currentColor;flex:none}.page-meta{display:flex;flex-wrap:wrap;gap:8px;font-size:.75rem;color:var(--dim);margin-bottom:24px}.guide-body{font-size:.94rem;line-height:1.85}.guide-body > p,.guide-body > ul,.guide-body > ol{max-width:74ch}.guide-body > h2:first-child{margin-top:0}.guide-body p a,.guide-body li a{text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--line)}
/* Illustrated cover */
body[data-page-kind="home"],body[data-page-kind="browser"],body[data-page-kind="class_index"]{--toc-w:0px}body[data-page-kind="home"] .toc,body[data-page-kind="browser"] .toc,body[data-page-kind="class_index"] .toc{display:none}body[data-page-kind="home"] .content{padding-top:28px}.home-hero{position:relative;overflow:hidden;isolation:isolate;min-height:475px;border:1px solid rgba(219,189,131,.23);border-radius:var(--radius-lg);background:#121c27}.home-hero-art{position:absolute;z-index:-3;inset:0 0 0 auto;width:66%;height:100%;object-fit:cover;object-position:center 27%;opacity:.9}.home-hero::before{content:"";position:absolute;inset:0;z-index:-2;background:linear-gradient(90deg,#131c27 0%,rgba(19,28,39,.97) 23%,rgba(19,28,39,.78) 44%,rgba(19,28,39,.1) 82%),linear-gradient(0deg,#131c27 0%,transparent 40%)}.home-hero::after{content:"";position:absolute;inset:9px;z-index:-1;border:1px solid rgba(219,189,131,.11);border-radius:var(--radius-sm);pointer-events:none}.hero-orbit{position:absolute;z-index:-1;width:420px;height:420px;border:1px solid rgba(219,189,131,.17);border-radius:50%;left:-260px;top:90px;box-shadow:0 0 0 28px rgba(219,189,131,.035),0 0 0 80px rgba(219,189,131,.02);transition:transform 900ms var(--ease)}.home-hero-copy{position:relative;padding:48px clamp(28px,3.4vw,52px) 70px;width:64%}.home-hero .eyebrow{color:#dbbd83;font-size:.6rem;margin-bottom:25px}.home-hero h1{color:#f7eddb;font-size:clamp(3.3rem,4.6vw,5.8rem);font-weight:400;line-height:1.03;letter-spacing:var(--tracking-hero);margin-bottom:25px}.home-hero .lede{color:#c0c9d4;font-size:.88rem;line-height:1.8;max-width:50ch;margin-bottom:28px}.hero-actions{display:flex;flex-wrap:wrap;align-items:center;gap:12px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:44px;padding:11px 17px;border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--paper);color:var(--ink);font-size:.8rem;font-weight:600;line-height:1.4;transition:background var(--transition-fast),border-color var(--transition-fast),box-shadow var(--transition-fast)}.btn .ui-icon{width:17px;height:17px}.content .btn{color:var(--ink)}.btn:hover{text-decoration:none;border-color:var(--gold-deep);box-shadow:var(--btn-shadow)}.content .btn-primary{background:#dbbd83;border-color:#dbbd83;color:#20232b}.content .btn-primary:hover{background:#ebcf98;border-color:#ebcf98;color:#161b23}.content .btn-quiet{border:0;padding-inline:5px;background:transparent;color:#e0d7c8}.content .btn-quiet:hover{color:#f8e3b9;box-shadow:none}.hero-footnote{position:absolute;left:clamp(28px,3.4vw,52px);right:30px;bottom:22px;display:flex;align-items:center;gap:12px;font-size:.56rem;letter-spacing:.12em;text-transform:uppercase;color:#a9b4c3}.hero-footnote span:nth-child(2){color:#dbbd83;font-size:.7rem}
.home-section{margin-top:47px}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:25px;margin-bottom:23px}.section-heading .eyebrow{margin-bottom:8px}.section-heading h2{margin:0 0 9px;padding:0;border:0;font-size:clamp(1.9rem,1.5rem + 1vw,2.5rem)}.section-heading p:not(.eyebrow){color:var(--dim);font-size:.83rem;margin:0;max-width:64ch}.section-decoration{color:var(--gold-deep);opacity:.4;margin-right:10px}.section-decoration .ui-icon{width:50px;height:50px;stroke-width:.7}.journey-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.journey-card{display:flex;flex-direction:column;position:relative;padding:25px 23px 21px;border:1px solid var(--line);border-radius:var(--radius-md);background:linear-gradient(130deg,var(--wash),transparent),var(--paper);transition:border-color var(--transition),box-shadow var(--transition)}.journey-card:hover{border-color:var(--gold-deep);text-decoration:none;box-shadow:var(--card-shadow-hover)}.journey-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:25px}.journey-icon{display:grid;place-items:center;height:40px;width:40px;border:1px solid var(--line);border-radius:var(--radius-md);color:var(--gold-deep)}.journey-number{font-family:var(--font-display);font-size:1.7rem;color:var(--dim);opacity:.55}.journey-card h3{font-family:var(--font-display);font-weight:400;font-size:1.4rem;margin:0 0 11px;letter-spacing:var(--tracking-tight)}.journey-card p{color:var(--ink-muted);font-size:.8rem;margin:0 0 23px;line-height:1.75}.journey-link{margin-top:auto;display:flex;justify-content:space-between;align-items:center;font-size:.67rem;letter-spacing:.1em;text-transform:uppercase;color:var(--gold-deep)}.journey-link .ui-icon{width:16px;height:16px}
.database-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.database-card{min-width:0;display:flex;align-items:center;gap:13px;padding:19px 15px;border:1px solid var(--line);background:var(--wash);border-radius:var(--radius-md);transition:background var(--transition-fast),border-color var(--transition-fast)}.database-card:hover{background:var(--nav-hover);border-color:var(--gold-deep);text-decoration:none}.database-icon{color:var(--gold-deep)}.database-icon .ui-icon{width:22px;height:22px}.database-body{display:flex;flex-direction:column;min-width:0}.database-body strong{font-size:.82rem;font-weight:600;line-height:1.4}.database-body > span{font-size:.65rem;color:var(--dim);margin-top:5px}.database-arrow{margin-left:auto;width:14px;height:14px;color:var(--dim)}.database-feature{border-color:rgba(219,189,131,.3);background:var(--nav-hover)}.text-link{display:inline-flex;align-items:center;gap:10px;min-height:44px;font-size:.75rem;flex:none}.text-link .ui-icon{width:17px;height:17px}
.class-grid{display:grid;gap:17px;grid-template-columns:repeat(auto-fill,minmax(185px,1fr))}.home-class-grid{grid-template-columns:repeat(auto-fill,minmax(145px,1fr));gap:13px}.class-card{display:block;position:relative;isolation:isolate;overflow:hidden;aspect-ratio:3/4;border-radius:var(--radius-md);border:1px solid var(--ds-line);background:radial-gradient(ellipse at 50% 35%,var(--class-color),transparent 75%),#111923;transition:border-color var(--transition),box-shadow var(--transition)}.class-card:hover{border-color:#dbbd83;box-shadow:var(--card-shadow-hover);text-decoration:none}.class-card::after{content:"";position:absolute;inset:0;border:1px solid rgba(219,189,131,.11);margin:6px;border-radius:var(--radius-xs);pointer-events:none}.class-card-halo{position:absolute;left:15%;top:15%;width:70%;aspect-ratio:1;border:1px solid rgba(219,189,131,.13);border-radius:50%;box-shadow:0 0 0 12px rgba(219,189,131,.03)}.class-card img{position:absolute;bottom:12%;left:50%;width:123%;max-width:none;transform:translateX(-50%);height:auto;filter:drop-shadow(0 8px 18px rgba(0,0,0,.3));transition:transform var(--transition)}.class-meta{position:absolute;inset:auto 0 0;display:flex;flex-direction:column;padding:42px 17px 17px;background:linear-gradient(transparent,#111923 42%)}.class-name{color:#f0e9dc;font-family:var(--font-display);font-size:1.4rem;line-height:1.25}.class-title{color:#a3adbd;font-size:.65rem;margin-top:4px;max-width:86%;line-height:1.5}.class-card-arrow{position:absolute;bottom:22px;right:14px;color:#dbbd83;opacity:.65}.class-card-arrow .ui-icon{width:14px;height:14px}.library-section{padding-top:35px;border-top:1px solid var(--line)}.library-book{width:46px;height:46px;color:var(--gold-deep);opacity:.55;stroke-width:1}.library-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px 28px}.library-shelf{border-top:1px solid var(--line);padding-top:18px}.library-heading{display:flex;gap:12px;align-items:center;margin-bottom:11px}.library-heading .ui-icon{width:19px;height:19px;color:var(--gold-deep)}.library-heading h3{margin:0;font-size:.9rem;font-weight:600}.library-links a{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:44px;padding:8px 0;color:var(--ink-muted);font-size:.77rem;line-height:1.5}.library-links a:hover{color:var(--gold-deep);text-decoration:none}.library-links .ui-icon{width:13px;height:13px;opacity:.5}
/* Reference cards, long-form guides, and skill chapters */
.grid{display:grid;gap:16px}.grid.cols-2{grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr))}.grid.cols-3{grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr))}.grid.cols-4{grid-template-columns:repeat(auto-fit,minmax(min(100%,160px),1fr))}.card,.portal{padding:22px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--paper);box-shadow:var(--card-shadow)}.card > :first-child{margin-top:0}.card > :last-child{margin-bottom:0}.portal{display:block;transition:border-color var(--transition),background var(--transition)}.portal:hover{text-decoration:none;border-color:var(--gold-deep);background:var(--nav-hover)}.portal-ico{color:var(--gold-deep);margin-bottom:13px}.portal h3{margin:0 0 10px;font-size:1rem}.portal p{font-size:.82rem;color:var(--ink-muted);margin:0}.portal-count{display:block;margin-top:10px;font-size:.7rem;color:var(--dim)}
.badge{display:inline-flex;align-items:center;gap:5px;padding:3px 8px;border:1px solid var(--line);border-radius:var(--radius-xs);color:var(--ink-muted);background:var(--wash);font-size:.64rem;line-height:1.5;font-weight:500}.badge.gold{color:var(--gold-deep);border-color:rgba(219,189,131,.28);background:var(--nav-hover)}.badge.magic{color:var(--violet)}.badge.danger{color:var(--coral)}.badge.success{color:var(--green)}.badge.info{color:var(--cyan)}.badge.magic,.badge.danger,.badge.success,.badge.info{border-color:color-mix(in srgb,currentColor 32%,transparent)}.badge.plain{background:none}.badge.unreleased{border-style:dashed}.class-dot{width:7px;height:7px;border-radius:50%;background:var(--class-color,var(--gold));flex:none}
.callout{display:flex;gap:14px;padding:20px 23px;margin:25px 0;border:1px solid var(--line);border-left:3px solid var(--gold-deep);border-radius:0 var(--radius-md) var(--radius-md) 0;background:var(--paper);max-width:var(--measure);font-size:.88rem}.callout-ico{color:var(--gold-deep);flex:none}.callout > div{min-width:0}.callout > div > :first-child{margin-top:0}.callout > div > :last-child{margin-bottom:0}.callout-label{display:block;text-transform:uppercase;letter-spacing:.14em;font-size:.65rem;color:var(--gold-deep);margin-bottom:7px}.callout.tip{border-left-color:#75ac8b}.callout.warn{border-left-color:#c58279}.callout.lore{border-left-color:#aa97ce}.callout.lore p{font-style:italic}.callout.tip .callout-label,.callout.warn .callout-label,.callout.lore .callout-label{color:var(--ink)}
.class-hero{position:relative;isolation:isolate;overflow:hidden;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,290px);align-items:end;min-height:340px;padding:35px 34px 0;margin-bottom:35px;border-radius:var(--radius-lg);border:1px solid rgba(219,189,131,.23);color:var(--ds-muted);background:radial-gradient(ellipse at 85% 35%,var(--class-color),transparent 65%),#121a25}.class-hero .hero-body{padding-bottom:30px;position:relative;z-index:2}.class-hero h1{font-size:clamp(3rem,4vw,4.5rem);color:#f5ecdc;margin-bottom:15px}.class-hero .eyebrow{color:#dbbd83;margin-bottom:16px}.class-hero .lede{color:#c9cdd5;margin-bottom:12px;font-size:.9rem}.class-role{color:#a8b3c2;font-size:.8rem;line-height:1.75}.class-hero .hero-art{position:relative;z-index:1;width:370px;max-width:140%;height:auto;margin-left:-35px;justify-self:end;align-self:end}.class-hero-ring{position:absolute;right:7%;top:12%;width:280px;height:280px;border:1px solid rgba(219,189,131,.2);border-radius:50%;box-shadow:0 0 0 15px rgba(219,189,131,.03),0 0 0 38px rgba(219,189,131,.02);transition:transform 900ms var(--ease)}.statline{display:flex;flex-wrap:wrap;gap:18px 25px;margin:24px 0 0;padding:20px 0 0;list-style:none;border-top:1px solid var(--ds-line)}.statline li{padding:0;margin:0}.statline .k{display:block;font-size:.55rem;color:#a8b3c2;text-transform:uppercase;letter-spacing:.1em;margin-bottom:5px}.statline .v{color:#f0e9dc;font-size:.83rem}.skill-lines{margin:22px 0 34px}.skill-line{display:flex;gap:14px;align-items:center;padding:19px}.skill-line .ui-icon{color:var(--gold-deep);width:21px;height:21px}.skill-line h3{margin:0;font-size:.85rem}.skill-list{margin-top:24px;display:grid;gap:10px}.skill-card{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--paper);overflow:hidden}.skill-card summary{display:flex;align-items:center;gap:14px;padding:15px 17px;list-style:none;min-height:76px;transition:background var(--transition-fast)}.skill-card summary::-webkit-details-marker{display:none}.skill-card summary:hover{background:var(--nav-hover)}.skill-heading{display:flex;flex-direction:column;min-width:0}.skill-heading strong{font-size:.89rem}.skill-heading > span{color:var(--dim);font-size:.69rem}.skill-overview{display:flex;gap:20px;margin-left:auto;color:var(--dim);font-size:.63rem;flex:none}.skill-overview b{font-size:.76rem;display:block;font-weight:600;color:var(--ink)}.skill-chevron{color:var(--dim);width:16px;height:16px;margin-left:8px;transition:transform var(--transition-fast)}.skill-card[open]{border-color:var(--gold-deep)}.skill-card[open] .skill-chevron{transform:rotate(180deg)}.skill-content{padding:8px 22px 20px;border-top:1px solid var(--line)}.skill-description{white-space:pre-line;padding-top:13px;font-size:.85rem;color:var(--ink-body)}.skill-content .eyebrow{margin-top:22px}.rank-table{margin-bottom:0!important}.rank-effect{min-width:250px;white-space:pre-line;line-height:1.7;font-size:.73rem}
/* Tables and data browsers keep legible ink surfaces in either theme. */
.table-wrap{overflow:auto;border:1px solid var(--ds-line);background:var(--ds-bg);color:var(--ds-muted);border-radius:var(--radius-md);margin:24px 0;scrollbar-width:thin;scrollbar-color:#3d4654 transparent}table{width:100%;border-collapse:collapse;font-size:.8rem;line-height:1.65}thead th{position:sticky;top:0;z-index:1;background:var(--ds-bg-2);color:#dcc596;padding:14px 16px;text-align:left;font-size:.62rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;border-bottom:1px solid var(--ds-line)}tbody td{vertical-align:top;padding:13px 16px;border-bottom:1px solid rgba(184,198,216,.2)}tbody tr:last-child td{border-bottom:0}tbody tr:hover{background:var(--ds-hover)}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums;font-family:var(--font-mono);white-space:nowrap}.table-wrap strong{color:var(--ds-text)}.content .table-wrap a{color:#dbbd83}.table-wrap :focus-visible,.results :focus-visible,.search-panel :focus-visible,.detail-dialog :focus-visible{outline-color:#dbbd83}.icon-frame{width:42px;height:42px;border:1px solid rgba(219,189,131,.25);border-radius:var(--radius-sm);background:var(--ds-sunken);overflow:hidden;flex:none;display:grid;place-items:center}.icon-frame img{width:100%;height:100%;object-fit:contain}.icon-frame.sm{width:32px;height:32px;border-radius:var(--radius-xs)}.icon-frame.lg{width:56px;height:56px;border-radius:var(--radius-md)}.icon-frame.empty{color:var(--ds-dim)}
/* Creature monograms: mobs ship no client art, so the race carries the colour
   and the rank carries the weight of the frame. */
.icon-frame.is-creature{font-family:var(--font-display);font-size:.82rem;letter-spacing:.02em;color:var(--race,#b8c6d8);border-color:color-mix(in srgb,var(--race,#b8c6d8) 34%,transparent);background:linear-gradient(160deg,color-mix(in srgb,var(--race,#b8c6d8) 13%,transparent),transparent 70%),var(--ds-sunken)}
.icon-frame.is-creature.rank-leader{border-width:1px;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--race,#b8c6d8) 22%,transparent)}
.icon-frame.is-creature.rank-boss{font-size:.9rem;border-color:color-mix(in srgb,var(--race,#dbbd83) 62%,transparent);box-shadow:0 0 0 1px color-mix(in srgb,var(--race,#dbbd83) 26%,transparent),0 2px 10px color-mix(in srgb,var(--race,#dbbd83) 16%,transparent)}
.icon-frame.race-animal{--race:#c9a06a}.icon-frame.race-demon{--race:#d4726e}.icon-frame.race-dragon{--race:#e0a24a}.icon-frame.race-fairy{--race:#8fd3c4}.icon-frame.race-giant{--race:#b79cd8}.icon-frame.race-human{--race:#8fb4e0}.icon-frame.race-instrument{--race:#a8b0bd}.icon-frame.race-plant{--race:#8fc98a}.icon-frame.race-summoned{--race:#c79fe0}.icon-frame.race-undead{--race:#9fb8b2}
.filters{display:flex;flex-wrap:wrap;gap:12px;align-items:end;margin:22px 0 16px;padding:18px;border:1px solid var(--ds-line);background:var(--ds-bg);border-radius:var(--radius-md);color:var(--ds-muted)}.field{display:flex;flex-direction:column;gap:7px;align-items:stretch;min-width:0}.field label{font-size:.6rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ds-dim);line-height:1.4}.field input,.field select{width:100%;min-width:90px;height:44px;padding:10px 12px;border:1px solid var(--ds-line);border-radius:var(--radius-sm);color:var(--ds-text);background:var(--ds-sunken);font-size:.8rem}.field input::placeholder{color:var(--ds-dim)}.field input:focus,.field select:focus,.farm-inputs input:focus,.farm-inputs select:focus{border-color:#dbbd83;outline:0}.field input:focus-visible,.field select:focus-visible,.farm-inputs input:focus-visible,.farm-inputs select:focus-visible{outline:2px solid #dbbd83;outline-offset:2px}.field.grow{flex:1 1 220px}.field select option{background:var(--ds-bg-2);color:var(--ds-text)}.result-count{font-size:.68rem;color:var(--ds-dim);font-variant-numeric:tabular-nums;margin-left:auto;align-self:center;padding-top:20px}.chip-row{display:flex;flex-wrap:wrap;gap:8px}.chip{display:inline-flex;align-items:center;gap:7px;min-height:36px;padding:7px 12px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--wash);color:var(--ink-muted);font-size:.73rem;line-height:1.4;transition:border-color var(--transition-fast)}.chip:hover{border-color:var(--gold-deep);text-decoration:none}.chip[aria-pressed="true"]{background:var(--nav-hover);color:var(--gold-deep);border-color:var(--gold-deep)}.results{display:grid;grid-template-columns:minmax(0,1fr);gap:0;padding:7px;border:1px solid var(--ds-line);background:var(--ds-bg);border-radius:var(--radius-md);color:var(--ds-muted)}.results.tiles{grid-template-columns:repeat(auto-fill,minmax(min(100%,232px),1fr));gap:8px}.entry{display:flex;align-items:center;gap:13px;padding:12px;border:1px solid transparent;border-radius:var(--radius-sm);min-height:68px;color:var(--ds-text);transition:background var(--transition-fast),border-color var(--transition-fast)}.content .entry,.content .entry:hover{color:var(--ds-text)}.entry:hover{background:var(--ds-hover);border-color:var(--ds-line);text-decoration:none}.entry-body{min-width:0;flex:1}.entry-name{font-weight:550;color:var(--ds-text);font-size:.87rem;line-height:1.55}.entry-sub{font-size:.72rem;color:var(--ds-dim);line-height:1.6}.entry .entry-sub{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.entry-tail{margin-left:auto;display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end;align-items:center}.entry.is-unreleased{opacity:.65}.entry.is-unreleased .entry-name{color:var(--ds-dim)}.entry.is-expandable{cursor:pointer}.entry-caret{width:12px;color:var(--ds-dim);font-size:.8rem}.entry-group{min-width:0}.entry-group+.entry-group{border-top:1px solid rgba(184,198,216,.18)}.entry-group:has(.entry-detail:not([hidden])){background:var(--ds-bg-2);border-radius:var(--radius-sm)}.entry-detail{padding:10px 20px 20px 67px;color:var(--ds-muted);font-size:.83rem}.entry-detail p{color:var(--ds-muted);white-space:pre-line}.entry-detail h4{color:var(--ds-text);margin:22px 0 9px;font-size:.8rem}.entry-detail .table-wrap{margin:10px 0}.kv{display:grid;grid-template-columns:auto 1fr;gap:7px 18px;margin:15px 0;max-width:500px}.kv-k{color:var(--ds-dim);font-size:.73rem}.kv-v{color:var(--ds-text);font-size:.75rem;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.results .badge,.table-wrap .badge,.entry-detail .badge,.search-panel .badge,.detail-dialog .badge{background:rgba(205,215,234,.04);border-color:var(--ds-line);color:var(--ds-muted)}.results .badge.gold,.table-wrap .badge.gold,.entry-detail .badge.gold,.search-panel .badge.gold,.detail-dialog .badge.gold{color:#dbbd83;border-color:rgba(219,189,131,.3)}.badge.tier{font-weight:600;letter-spacing:.02em}.badge.tier.t-history{color:#9fb6d4;border-color:rgba(159,182,212,.30);background:rgba(159,182,212,.07)}.badge.tier.t-legend{color:#e8c98a;border-color:rgba(232,201,138,.32);background:rgba(232,201,138,.08)}.badge.tier.t-bonus{color:#8fd6a6;border-color:rgba(143,214,166,.30);background:rgba(143,214,166,.07)}.badge.tier.t-myth{color:#c3a2f0;border-color:rgba(195,162,240,.38);background:rgba(195,162,240,.10)}.badge.tier.t-devildom{color:#a7adba;border-color:rgba(167,173,186,.34);background:rgba(20,22,28,.75)}.badge.tier.t-pvp{color:#f0998c;border-color:rgba(240,153,140,.30);background:rgba(240,153,140,.07)}.badge.tier.t-square{color:#8ecdf0;border-color:rgba(142,205,240,.28);background:rgba(142,205,240,.07)}.badge.tier.t-other{color:var(--ds-muted)}.db-tier h2{border-left:3px solid var(--line);padding-left:12px}#tier-myth h2{border-left-color:#c3a2f0}#tier-devildom h2{border-left-color:#a7adba}#tier-legend h2{border-left-color:#e8c98a}#tier-history h2{border-left-color:#9fb6d4}#tier-bonus h2{border-left-color:#8fd6a6}#tier-pvp h2{border-left-color:#f0998c}#tier-square h2{border-left-color:#8ecdf0}.results .badge.magic,.entry-detail .badge.magic,.search-panel .badge.magic{color:var(--violet)}.results .badge.success,.entry-detail .badge.success{color:var(--green)}.results .badge.info,.entry-detail .badge.info{color:var(--cyan)}.results .badge.danger,.entry-detail .badge.danger{color:var(--coral)}.results .chip,.filters .chip,.entry-detail .chip,.search-panel .chip{background:var(--ds-sunken);border-color:var(--ds-line);color:var(--ds-muted)}.empty-state{text-align:center;padding:55px 25px;color:var(--ds-dim);font-size:.87rem}.load-more{display:flex;margin:24px auto 0}
/* Search and item inspection */
.search-modal{position:fixed;inset:0;z-index:120;display:none;background:rgba(4,7,12,.78);backdrop-filter:blur(5px);padding:clamp(20px,9vh,90px) 16px 16px}.search-modal[open],.search-modal.is-open{display:block}.search-panel{max-width:730px;margin:0 auto;background:var(--ds-bg);color:var(--ds-muted);border:1px solid rgba(219,189,131,.28);border-radius:var(--radius-lg);box-shadow:0 30px 120px rgba(0,0,0,.4);overflow:hidden}.search-input-row{display:flex;align-items:center;gap:14px;padding:15px 20px;border-bottom:1px solid var(--ds-line)}.search-input-row > span{display:flex;color:#dbbd83}.search-input-row input{min-width:0;flex:1;color:var(--ds-text);border:0;background:transparent;font-size:1rem;outline:0;height:42px}.search-input-row input::placeholder{color:var(--ds-dim)}.search-input-row:focus-within{box-shadow:inset 0 -2px #dbbd83}.search-panel .icon-btn{color:var(--ds-muted);border-color:var(--ds-line)}.search-results{max-height:min(65dvh,590px);overflow-y:auto;padding:8px}.search-results .entry.is-cursor{background:rgba(219,189,131,.09);border-color:rgba(219,189,131,.35)}.search-section{padding:16px 12px 8px;color:#dbbd83;text-transform:uppercase;letter-spacing:.12em;font-size:.61rem}.search-foot{display:flex;flex-wrap:wrap;gap:8px 22px;font-size:.63rem;color:var(--ds-dim);border-top:1px solid var(--ds-line);padding:13px 20px}.search-panel kbd{color:var(--ds-muted);background:var(--ds-bg-2);border-color:var(--ds-line);font-size:.7rem}mark{background:rgba(219,189,131,.2);color:var(--gold-deep);padding:0 .15em;border-radius:2px}.search-panel mark,.results mark{color:#f2d395}
.detail-dialog{color:var(--ds-muted);background:var(--ds-bg);border:1px solid rgba(219,189,131,.28);border-radius:var(--radius-lg);padding:26px;width:min(100% - 32px,960px);max-height:88dvh;box-shadow:0 30px 120px rgba(0,0,0,.5)}.detail-dialog::backdrop{background:rgba(4,7,12,.8);backdrop-filter:blur(4px)}.detail-dialog h1,.detail-dialog h2,.detail-dialog h3,.detail-dialog h4,.detail-dialog strong{color:var(--ds-text)}.detail-dialog p{color:var(--ds-muted)}.detail-dialog a,.detail-dialog .entity-link{color:#dbbd83}.detail-dialog-head{display:flex;gap:17px;align-items:center;border-bottom:1px solid var(--ds-line);padding-bottom:20px;margin-bottom:20px}.detail-dialog-head h2,.detail-dialog-head h3{margin:0;border:0;padding:0}.detail-dialog-head .icon-btn,.detail-dialog-head button:last-child{margin-left:auto;flex:none}.entity-link{color:var(--gold-deep);border:0;padding:0;background:none;text-align:left;font:inherit;text-decoration:underline;text-decoration-color:rgba(219,189,131,.3);text-underline-offset:3px;cursor:pointer}.entity-link:hover{text-decoration-color:currentColor}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;margin:20px 0}.stat-grid > *{padding:14px;border:1px solid var(--ds-line);border-radius:var(--radius-sm);background:var(--ds-sunken)}
/* Estimates and verified sources are distinct sections. */
.farm-panel{margin:24px 0;padding:22px;border:1px solid rgba(219,189,131,.3);border-radius:var(--radius-md);background:linear-gradient(120deg,rgba(219,189,131,.05),transparent),var(--ds-bg);color:var(--ds-muted)}.farm-panel h2,.farm-panel h3,.farm-panel h4,.farm-panel strong{color:var(--ds-text)}.farm-panel h3{margin:0 0 13px}.farm-panel p{color:var(--ds-dim);font-size:.8rem}.farm-inputs{display:flex;flex-wrap:wrap;gap:14px;margin:18px 0}.farm-inputs label{display:flex;flex-direction:column;gap:7px;font-size:.73rem;color:var(--ds-dim);flex:1 1 130px}.farm-inputs input,.farm-inputs select{min-height:44px;width:100%;padding:9px 12px;color:var(--ds-text);background:var(--ds-sunken);border:1px solid var(--ds-line);border-radius:var(--radius-sm)}.farm-metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(145px,1fr));gap:10px}.farm-metric{padding:16px;border:1px solid var(--ds-line);border-radius:var(--radius-sm);background:var(--ds-bg-2);display:flex;flex-direction:column;gap:6px}.farm-metric strong,.farm-metric .value{font-size:1.35rem;color:#dbbd83;font-weight:500;font-variant-numeric:tabular-nums}.farm-metric span,.farm-metric small{color:var(--ds-dim);font-size:.68rem}.source-table{min-width:570px}
/* Narrow, square item tooltip follows the native Lunia typeface and colors.
   Original TipBox texture is absent; frame is a CSS approximation. */
.item-tooltip{--tip-bg:#070b12;--tip-border:#746847;--tip-accent:#dbbd83;--tip-name:#fff;position:fixed;z-index:220;width:300px;max-width:calc(100vw - 24px);max-height:calc(100dvh - 24px);overflow:hidden;overflow:clip;overflow-clip-margin:14px;padding:10px;background:var(--tip-bg);border:2px solid var(--tip-border);border-radius:1px;box-shadow:inset 0 0 0 1px #1c2330,0 10px 30px #000b;color:#fff;font-family:Gulim,"Malgun Gothic","Yu Gothic UI",Meiryo,"Microsoft YaHei","Microsoft JhengHei","Noto Sans JP","Noto Sans KR","Noto Sans SC","Noto Sans TC","Segoe UI",sans-serif;font-size:12px;font-weight:600;line-height:1.5;text-shadow:1px 1px #000;-webkit-font-smoothing:auto}.tooltip-head{display:flex;gap:10px;align-items:center;margin-bottom:9px;padding-bottom:9px;border-bottom:1px solid #77704c80}.tooltip-icon{width:40px;height:40px;flex:none;border:1px solid #817350;background:#05080f;object-fit:contain}.tooltip-name{font-family:inherit!important;font-size:14px!important;font-weight:700!important;line-height:1.5!important;margin:0 0 3px!important;color:#fff}.tooltip-meta,.tooltip-requirements{color:#fff;font-size:12px;white-space:pre-line}.tooltip-description{color:#a6a6a6;white-space:pre-line;margin:9px 0!important;font-size:12px}.tooltip-stats{color:#ff0;white-space:pre-line;margin:9px 0!important;font-size:12px}.tooltip-stats strong,.tooltip-stats span{color:inherit}.tooltip-foot{color:#a6a6a6;border-top:1px solid #77704c80;margin:9px 0 0;padding-top:7px;font-size:11px;display:flex;flex-wrap:wrap;gap:4px 12px;justify-content:space-between;align-items:baseline}.tooltip-pin{color:#8b8b8b;font-size:10px;white-space:nowrap}.entity-tooltip.is-pinned .tooltip-pin{color:var(--tip-accent)}.entity-tooltip:not(.is-pinned){pointer-events:none}.entity-tooltip.is-cursor::after{display:none}.entity-tooltip.is-tall{overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.entity-tooltip.is-tall::-webkit-scrollbar{width:8px}.entity-tooltip.is-tall::-webkit-scrollbar-thumb{background:#3a3f4d;border-radius:4px}.tooltip-resists{color:#ff9900}.tooltip-set{color:#00ff00}.tooltip-set-bonus{color:#00c853;font-size:11px;margin:2px 0 0;white-space:pre-line}.tooltip-invalid{color:#d10d0d}.rarity-low .tooltip-name{color:#fff}.rarity-normal .tooltip-name{color:#78ff2b}.rarity-rare .tooltip-name{color:#4ca0ff}.rarity-epic .tooltip-name{color:#a800ff}.rarity-legend .tooltip-name{color:#ffa812}.rarity-artifact .tooltip-name{color:#ff3312}.rarity-avatar .tooltip-name{color:#ff0096}
.bible-foot{border-top:1px solid var(--line);margin-top:50px;padding:28px 0 0;font-size:.73rem;line-height:1.8;color:var(--ink-dim)}.footer-brand{display:inline-flex;align-items:center;gap:10px;font-family:var(--font-display);font-size:1.1rem;margin-bottom:13px}.footer-brand .ui-icon{width:19px;height:19px}.bible-foot p{margin:0;max-width:85ch}
/* Responsive reading order, touch targets, reduced motion and print. */
@media(min-width:1720px){.masthead{border-left:1px solid var(--line);border-right:1px solid var(--line)}}
@media(max-width:1350px){.database-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.home-hero-copy{width:68%}.home-hero h1{font-size:4.4rem}.home-hero .lede{max-width:45ch}}
@media(max-width:1240px){.shell{grid-template-columns:var(--sidebar-w) minmax(0,1fr)}.toc{display:none}.content{padding-inline:32px}.home-hero-copy{padding-left:34px;padding-right:25px}.home-hero h1{font-size:3.8rem}.home-hero .lede{font-size:.83rem}.hero-actions{gap:7px}.home-hero .btn{font-size:.74rem}.journey-card{padding:21px 18px}.journey-card h3{font-size:1.22rem}}
@media(max-width:1050px){.masthead{gap:15px;padding-inline:22px}.search-trigger{flex-basis:230px}.search-trigger .hint{display:none}.library-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.class-hero{grid-template-columns:minmax(0,1fr) 220px;padding-inline:25px}}
@media(max-width:900px){
 :root{--header-h:72px}.masthead{gap:12px;padding-inline:18px}.shell{grid-template-columns:minmax(0,1fr)}.nav-toggle{display:grid}.sidebar{position:fixed;z-index:80;top:var(--header-h);left:0;width:min(86vw,320px);height:calc(100dvh - var(--header-h));transform:translateX(-101%);transition:transform var(--transition);background:var(--panel);box-shadow:var(--shadow);padding:22px 18px 40px;visibility:hidden}.sidebar.is-open{transform:none;visibility:visible}.sidebar .nav-link{min-height:44px;font-size:.85rem}.sidebar .locale-switcher a{min-height:44px}.content{padding:28px}.home-hero-copy{width:64%;padding-top:45px}.home-hero{min-height:460px}.home-hero h1{font-size:4.2rem}.home-hero .lede{font-size:.9rem}.home-hero .btn{font-size:.77rem}.home-class-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}.filters{position:static}.field input,.field select,.farm-inputs input,.farm-inputs select{font-size:1rem}
}
@media(max-width:680px){
 body{font-size:16px}.masthead{gap:8px;padding-inline:12px}.brand{font-size:.98rem;gap:9px}.brand-sub{font-size:8px}.search-trigger{min-width:44px;flex:0 0 44px;justify-content:center;height:44px;padding:0}.search-trigger span:nth-child(2),.search-trigger .hint{display:none}.search-trigger .ui-icon{width:20px;height:20px}.language-menu .locale-name{display:none}.locale-code{display:inline;font-size:.65rem}.language-menu .disclosure-arrow{display:none}.language-menu summary{gap:4px}.language-menu summary .ui-icon{width:17px;height:17px}.content{padding:25px 20px 35px}body[data-page-kind="home"] .content{padding-top:20px}.home-hero{min-height:570px}.home-hero-art{width:100%;height:350px;object-position:center 12%;opacity:.68}.home-hero::before{background:linear-gradient(0deg,#131c27 28%,rgba(19,28,39,.9) 45%,rgba(19,28,39,.15) 100%)}.home-hero-copy{width:100%;padding:205px 26px 65px}.home-hero .eyebrow{margin-bottom:14px;font-size:.57rem}.home-hero h1{font-size:3.5rem;max-width:400px;margin-bottom:18px}.home-hero .lede{font-size:.86rem;max-width:53ch;margin-bottom:22px}.hero-footnote{left:26px;bottom:22px;font-size:.52rem;gap:9px}.hero-actions .btn{font-size:.73rem}.home-section{margin-top:35px}.section-heading{gap:15px;flex-wrap:wrap;margin-bottom:20px}.section-heading .text-link{padding:0;min-height:30px}.section-heading h2{font-size:2rem}.section-heading p:not(.eyebrow){font-size:.85rem}.section-decoration{display:none}.journey-grid{grid-template-columns:1fr;gap:12px}.journey-card{padding:20px;display:grid;grid-template-columns:46px minmax(0,1fr);column-gap:16px}.journey-top{grid-row:1/4;flex-direction:column;gap:10px;justify-content:flex-start;margin:0}.journey-number{font-size:1.1rem}.journey-card h3{margin:0 0 8px;font-size:1.4rem}.journey-card p{font-size:.83rem;margin-bottom:15px}.journey-link{grid-column:2}.database-grid{gap:10px}.database-card{padding:16px 12px;gap:10px}.database-body strong{font-size:.79rem}.database-body > span{font-size:.64rem}.database-arrow{display:none}.class-grid,.home-class-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.class-card{aspect-ratio:3/3.8}.class-name{font-size:1.5rem}.class-title{font-size:.72rem}.library-grid{grid-template-columns:1fr;gap:23px}.library-links a{font-size:.86rem}.library-heading h3{font-size:.98rem}.class-hero{grid-template-columns:1fr;padding:240px 24px 0}.class-hero .hero-art{position:absolute;width:290px;top:-10px;right:0;z-index:-1;mask-image:linear-gradient(#000 50%,transparent 98%)}.class-hero::before{content:"";position:absolute;inset:0;z-index:0;background:linear-gradient(0deg,#121a25 28%,rgba(18,26,37,.93) 43%,transparent 85%)}.class-hero-ring{top:25px;right:15px;width:220px;height:220px;z-index:-2}.class-hero .hero-body{padding-bottom:27px}.class-hero h1{font-size:3.5rem}.skill-card summary{padding:14px 12px;gap:10px}.skill-heading strong{font-size:.87rem}.skill-overview{gap:10px}.skill-overview > span:first-child{display:none}.skill-content{padding:8px 15px 15px}.filters{padding:15px;gap:14px}.field{flex:1 1 130px}.field.grow{flex-basis:100%}.result-count{padding-top:0;width:100%;text-align:right}.entry{padding:11px 8px;gap:10px;align-items:flex-start}.entry-tail{flex-direction:column;align-items:flex-end;max-width:100px}.entry-name{font-size:.86rem}.entry-detail{padding:10px 14px 18px}.entry .entry-sub{white-space:normal}.entry-caret{margin-top:11px}.search-input-row{padding:10px 12px;gap:10px}.search-input-row input{font-size:1rem}.search-foot{font-size:.6rem;padding:10px 13px}.search-foot > span:last-child{display:none}.search-results{max-height:70dvh}.detail-dialog{padding:18px;max-height:90dvh}.detail-dialog-head{flex-wrap:wrap}.farm-panel{padding:17px}.farm-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.farm-metric{padding:12px}.farm-metric strong{font-size:1.15rem}
}
@media(max-width:420px){.masthead{gap:6px;padding-inline:9px}.brand{font-size:.86rem;gap:7px}.brand .sigil{display:none}.brand-sub{font-size:7px}.language-menu summary .ui-icon{display:none}.language-menu summary{min-width:27px;justify-content:center}.masthead-spacer{min-width:0}.content{padding-inline:15px}.home-hero-copy{padding-inline:22px;padding-top:190px}.home-hero h1{font-size:3rem}.hero-footnote{left:22px;right:22px;flex-wrap:wrap}.home-hero .btn-primary{width:100%}.home-hero .btn-quiet{margin:2px auto 0}.database-icon .ui-icon{width:18px;height:18px}.database-card{gap:8px;padding:14px 10px}.database-body strong{font-size:.74rem}.database-body > span{font-size:.6rem}.class-meta{padding-inline:13px}.class-name{font-size:1.35rem}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}.class-card:hover img{transform:translateX(-50%)}}
@media print{.masthead,.sidebar,.toc,.search-modal,.filters,.hero-art,.home-hero-art,.hero-orbit,.class-card-arrow{display:none!important}.shell{display:block}body,.content{background:#fff;color:#222}.content{padding:0}h1,h2,h3,h4,strong,.guide-body{color:#111}.callout,.card,.portal{background:#fff;color:#222;border-color:#bbb}.table-wrap{overflow:visible;color:#222;background:#fff;border-color:#aaa}thead th{background:#eee;color:#111}.table-wrap strong{color:#111}tbody td{border-color:#ccc}a{color:#222!important}.bible-foot{margin-top:20px}}
/* Runtime contract refinements: source-table is a scroll container; stat pairs
   are siblings, and native tooltip stats are a definition list. */
.source-table{min-width:0}.source-table table{min-width:570px}
.kv.stat-grid{grid-template-columns:minmax(0,1fr) auto;gap:0;max-width:none;border:1px solid var(--ds-line);border-radius:var(--radius-sm);background:var(--ds-sunken);overflow:hidden}
.kv.stat-grid > *{border:0;border-bottom:1px solid var(--ds-line);border-radius:0;padding:11px 14px;background:transparent}
.kv.stat-grid > :nth-last-child(-n+2){border-bottom:0}.kv.stat-grid .kv-v{text-align:right}
.detail-dialog > div > .entry-detail{padding:0}
.item-tooltip .tooltip-stats{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 12px;white-space:normal;color:#ff0}
.item-tooltip .tooltip-stats dt,.item-tooltip .tooltip-stats dd{margin:0;padding:0;color:inherit}.item-tooltip .tooltip-stats dd{text-align:right}
.item-tooltip .tooltip-description{color:#a6a6a6}.item-tooltip .tooltip-set{color:#00ff00;margin:8px 0;font-size:12px}.item-tooltip .tooltip-icon{width:40px;height:40px}
/* Contrast and touch audit: nested runtime panels stay on ink surfaces even
   when the reader selects parchment; long translated metrics must wrap. */
.farm-metric{min-width:0}.farm-metric .kv-k{overflow-wrap:anywhere}.farm-panel .farm-panel{margin:20px 0 0;padding:18px;background:var(--ds-sunken)}
.entry-detail .skill-card,.detail-dialog .skill-card,.farm-panel .skill-card{background:var(--ds-bg-2);border-color:var(--ds-line);color:var(--ds-text)}
.entry-detail .callout,.detail-dialog .callout,.farm-panel .callout{background:var(--ds-bg-2);color:var(--ds-muted);border-color:var(--ds-line);border-left-color:#dbbd83}
.entry-detail .callout-label,.detail-dialog .callout-label,.farm-panel .callout-label{color:#dbbd83}
.results .entity-link,.entry-detail .entity-link,.farm-panel .entity-link{color:#dbbd83}
.detail-dialog .icon-btn{color:var(--ds-muted);border-color:var(--ds-line)}.search-panel .icon-btn:hover,.detail-dialog .icon-btn:hover{color:var(--ds-text);background:var(--ds-bg-2);border-color:#dbbd83}
.item-tooltip .tooltip-name{font-size:19px!important;font-weight:700!important}
.footer-brand{min-height:44px}.guide-body{font-size:1rem}
@media(max-width:680px){.language-menu summary{min-width:44px;justify-content:center}.section-heading .text-link,.chip{min-height:44px}.breadcrumb a{display:inline-flex;min-height:44px;align-items:center}.farm-panel .farm-panel{padding:14px}}
/* Long translated names must wrap instead of pushing the page sideways. */
.entry-name,.entry-sub,.skill-heading strong,.database-body strong,.class-name,.class-title,.kv-k,.badge,.chip,.entry-detail h4,.detail-dialog-head h2,.detail-dialog-head h3,.tooltip-name,.tooltip-meta,th,td,.portal h3,.library-heading h3,.farm-metric span,.farm-metric small,.nav-link span,.toc a,.breadcrumb span,.result-count,.statline .v,.journey-card h3{overflow-wrap:anywhere}
.entry-detail,.entry-body,.detail-dialog-head > div{min-width:0}.entry-detail .table-wrap{max-width:100%}
/* Row rhythm: banded table bodies read faster than an unbroken column. */
tbody tr:nth-of-type(2n):not(:hover) > td{background:rgba(205,215,234,.028)}
/* Motion system. Three tokens only: --transition-fast, --transition, --transition-press. */
.btn,.chip,.icon-btn,.text-link,.search-trigger,.language-menu summary,.entry,.journey-card,.database-card,.class-card,.portal,.skill-card summary,.load-more,.trivia-next,.entity-link,.nav-link,.toc a,.language-options a,.library-links a,.locale-switcher a,.farm-metric,.entry-caret,.class-card-arrow,.sigil,.database-arrow{transition:color var(--transition-fast),background var(--transition-fast),border-color var(--transition-fast),box-shadow var(--transition-fast),opacity var(--transition-fast),transform var(--transition-press)}
.btn:active,.chip:active,.icon-btn:active,.load-more:active,.trivia-next:active,.text-link:active,.search-trigger:active,.language-menu summary:active{transform:translateY(1px) scale(.985)}
.entry:active,.journey-card:active,.database-card:active,.portal:active,.class-card:active,.skill-card summary:active{transform:translateY(1px) scale(.996)}
.nav-link:active,.library-links a:active,.language-options a:active,.locale-switcher a:active,.toc a:active{transform:translateX(1px)}
[data-entity],[data-item-id]{cursor:pointer}
.entity-link:focus-visible{text-decoration-color:currentColor}
@media(hover:hover)and (pointer:fine){
 .journey-card:hover,.portal:hover,.database-card:hover{box-shadow:var(--card-shadow-hover),0 0 0 1px var(--primary-glow)}
 .class-card:hover{box-shadow:var(--card-shadow-hover),0 0 38px -14px var(--primary-glow)}
 .class-card:hover img{transform:translateX(-50%) scale(1.035)}
 .class-card:hover .class-card-arrow{opacity:1;transform:translateX(2px)}
 .database-card:hover .database-arrow{color:var(--gold-deep);transform:translateX(2px)}
 .journey-card:hover .journey-icon{border-color:var(--gold-deep)}
 .skill-card summary:hover .skill-chevron{color:var(--gold-deep)}
 .entry.is-expandable:hover .entry-caret{color:var(--gold-deep)}
 .icon-btn:hover{box-shadow:0 0 0 1px var(--primary-glow)}
 .btn:not(.btn-quiet):hover{box-shadow:var(--btn-shadow),0 0 0 1px var(--primary-glow)}
 .home-hero:hover .hero-orbit,.class-hero:hover .class-hero-ring{transform:scale(1.04)}
 .brand:hover .sigil{color:var(--gold-dark);border-color:var(--gold-deep);box-shadow:0 0 0 1px var(--primary-glow),0 0 24px -8px var(--primary-glow)}
 .farm-metric:hover{border-color:rgba(219,189,131,.38)}
 .entity-link:hover{color:var(--gold-dark)}
 .callout:hover{border-color:rgba(219,189,131,.3)}
}
/* Async placeholders keep the geometry of the rows they stand in for. */
.skeleton{display:block;position:relative;overflow:hidden;min-height:.75em;border-radius:var(--radius-full);background:rgba(184,198,216,.09)}
.skeleton::after{content:"";position:absolute;inset:0;transform:translateX(-100%);background:linear-gradient(90deg,transparent,rgba(212,222,240,.11),transparent);animation:bible-shimmer 1.4s linear infinite}
@keyframes bible-shimmer{to{transform:translateX(100%)}}
.entry.is-skeleton{pointer-events:none;cursor:default;border-color:transparent;background:none}
.entry.is-skeleton .skeleton{flex:1 1 auto;height:.78rem}
.entry.is-skeleton .skeleton:first-child{flex:0 0 42px;width:42px;height:42px;border-radius:var(--radius-sm)}
.entry.is-skeleton .skeleton:nth-child(2){max-width:34%;height:.9rem}
.entry.is-skeleton .skeleton:nth-child(3){max-width:20%;opacity:.72}
.entry.is-skeleton .skeleton:nth-child(n+4){flex:0 0 58px;height:1.15rem;border-radius:var(--radius-xs);opacity:.6}
.results .entry.is-skeleton:nth-of-type(2n) .skeleton:nth-child(2){max-width:27%}
.results .entry.is-skeleton:nth-of-type(3n) .skeleton:nth-child(2){max-width:41%}
.results .entry.is-skeleton:nth-of-type(4n) .skeleton:nth-child(3){max-width:13%}
.empty-state .skeleton{max-width:210px;height:.9rem;margin:0 auto}
/* Universal entity card. Same square Lunia frame; anchored above its trigger,
   never following the pointer. Per-kind accents ride on --tip-* properties. */
.entity-tooltip{animation:bible-tip-in 130ms var(--ease) both;transition:box-shadow var(--transition-fast),border-color var(--transition-fast)}
.entity-tooltip.kind-items{--tip-border:#746847;--tip-accent:#dbbd83}
.entity-tooltip.kind-skills{--tip-border:#4a6c88;--tip-accent:#8ecdf0;--tip-name:#9fd6f5}
.entity-tooltip.kind-npcs{--tip-border:#7d5148;--tip-accent:#ef9d8c;--tip-name:#f3a998}
.entity-tooltip.kind-stages{--tip-border:#4e7358;--tip-accent:#8fd6a6;--tip-name:#9adfb2}
.entity-tooltip.kind-quests{--tip-border:#7a6f3f;--tip-accent:#f0d98a;--tip-name:#f5e2a1}
.entity-tooltip.kind-achievements{--tip-border:#655380;--tip-accent:#c3aef2;--tip-name:#cbb7f6}
.entity-tooltip:not(.kind-items) .tooltip-name{color:var(--tip-name)}
.entity-tooltip .tooltip-head{border-bottom-color:color-mix(in srgb,var(--tip-accent) 42%,transparent)}
.entity-tooltip .tooltip-foot{border-top-color:color-mix(in srgb,var(--tip-accent) 42%,transparent)}
.entity-tooltip::before{content:"";position:absolute;left:0;right:0;top:0;height:2px;background:linear-gradient(90deg,transparent,var(--tip-accent),transparent);opacity:.5;pointer-events:none}
.entity-tooltip.is-above::after,.entity-tooltip.is-below::after{content:"";position:absolute;left:var(--tip-arrow-x,50%);width:12px;height:12px;background:var(--tip-bg);border:2px solid var(--tip-border);transform:translateX(-50%) rotate(45deg);pointer-events:none}
.entity-tooltip.is-above::after{bottom:-8px;border-top:0;border-left:0}
.entity-tooltip.is-below::after{top:-8px;border-bottom:0;border-right:0}
.entity-tooltip.is-pinned{box-shadow:inset 0 0 0 1px #1c2330,0 0 0 1px var(--tip-accent),0 14px 40px #000c}
.entity-tooltip.is-pinned .tooltip-foot{color:var(--tip-accent)}
.entity-tooltip .tooltip-foot a,.entity-tooltip .tooltip-foot button{color:var(--tip-accent);background:none;border:0;padding:0;font:inherit;cursor:pointer;text-decoration:underline;text-underline-offset:3px}
@keyframes bible-tip-in{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
@keyframes bible-tip-in-below{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
.entity-tooltip.is-below{animation-name:bible-tip-in-below}
/* The "Did you know" deck: a found-in-the-margins note, never an advertisement.
   Each card takes the colour of the dataset its fact was measured in (the
   --kind-* tokens, deepened for the light theme further down), and carries the
   records that prove it as hover-card chips. */
.trivia-card{--tc:var(--gold-deep);position:relative;isolation:isolate;overflow:hidden;display:grid;grid-template-columns:52px minmax(0,1fr);gap:0 18px;align-items:start;max-width:var(--measure);margin:30px 0;padding:22px 24px 18px 22px;border:1px solid color-mix(in srgb,var(--tc) 30%,var(--line));border-radius:var(--radius-lg);background:linear-gradient(135deg,color-mix(in srgb,var(--tc) 9%,transparent),transparent 58%),var(--paper);box-shadow:var(--card-shadow);transition:border-color var(--transition),box-shadow var(--transition)}
.trivia-card::before{content:"";position:absolute;z-index:-1;inset:6px;border:1px solid color-mix(in srgb,var(--tc) 16%,transparent);border-radius:var(--radius-md);pointer-events:none}
.trivia-card::after{content:"";position:absolute;z-index:-2;right:-50px;top:-50px;width:190px;height:190px;border-radius:50%;background:radial-gradient(circle,color-mix(in srgb,var(--tc) 22%,transparent),transparent 68%);opacity:.7;pointer-events:none}
.trivia-glyph{position:relative;display:grid;place-items:center;width:52px;height:52px;border-radius:50%;color:var(--tc);background:radial-gradient(circle at 50% 40%,color-mix(in srgb,var(--tc) 18%,transparent),transparent 72%),var(--ds-sunken);box-shadow:0 0 0 1px color-mix(in srgb,var(--tc) 42%,transparent),0 0 0 5px color-mix(in srgb,var(--tc) 7%,transparent),0 0 26px -8px var(--tc);transition:transform .35s var(--ease),box-shadow .35s var(--ease)}
.trivia-glyph .ui-icon{width:24px;height:24px}
.trivia-glyph::after{content:"";position:absolute;inset:-9px;border-radius:50%;border:1px dashed color-mix(in srgb,var(--tc) 32%,transparent);animation:trivia-orbit 26s linear infinite}
@keyframes trivia-orbit{to{transform:rotate(360deg)}}
.trivia-glyph.is-spinning{animation:trivia-spin .7s cubic-bezier(.3,.8,.3,1)}
@keyframes trivia-spin{to{transform:rotate(360deg)}}
.trivia-body{min-width:0;display:flex;flex-direction:column;gap:10px}
.trivia-head{display:flex;align-items:center;justify-content:space-between;gap:12px}
.trivia-label{display:inline-flex;align-items:center;gap:9px;color:var(--gold-deep);font-size:.6rem;font-weight:650;line-height:1.6;letter-spacing:.16em;text-transform:uppercase}
.trivia-label::before{content:"";width:20px;height:1px;background:currentColor;flex:none;transition:width 300ms var(--ease)}
.trivia-count{font-family:var(--font-mono);font-size:.62rem;color:var(--ink-dim);font-variant-numeric:tabular-nums;letter-spacing:.04em;white-space:nowrap}
.trivia-text{margin:0;max-width:62ch;font-family:var(--font-display);font-size:1.06rem;line-height:1.68;color:var(--ink)}
.trivia-text.is-fresh{animation:trivia-in .46s var(--ease) both}
@keyframes trivia-in{from{opacity:0;transform:translateY(6px);filter:blur(3px)}to{opacity:1;transform:none;filter:none}}
.trivia-refs{display:flex;flex-wrap:wrap;align-items:center;gap:7px 8px;margin-top:2px}
.trivia-proof{font-size:.58rem;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-dim);margin-right:2px}
.trivia-chips{display:contents}
.content .trivia-ref{display:inline-flex;align-items:center;gap:7px;min-height:30px;padding:4px 11px 4px 7px;border:1px solid color-mix(in srgb,var(--tc) 32%,var(--line));border-radius:var(--radius-full);background:color-mix(in srgb,var(--tc) 7%,transparent);color:var(--ink);font-family:var(--font-body);font-size:.72rem;line-height:1.3;text-decoration:none;transition:border-color var(--transition-fast),background var(--transition-fast),transform var(--transition-press),box-shadow var(--transition-fast)}
.content .trivia-ref:hover,.content .trivia-ref:focus-visible{border-color:var(--tc);background:color-mix(in srgb,var(--tc) 14%,transparent);color:var(--ink);text-decoration:none;transform:translateY(-1px);box-shadow:0 6px 16px -10px var(--tc)}
.trivia-ref .ui-icon{width:14px;height:14px;color:var(--tc);flex:none}
.trivia-ref-face{width:20px;height:20px;border-radius:50%;object-fit:cover;border:1px solid color-mix(in srgb,var(--tc) 40%,transparent);flex:none}
.trivia-actions{display:flex;align-items:center;gap:8px;margin-top:6px}
.trivia-next,.trivia-prev,.trivia-shuffle{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:36px;border:1px solid var(--line);border-radius:var(--radius-full);background:transparent;color:var(--ink-muted);font-size:.66rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase}
.trivia-next{padding:7px 14px 7px 15px}
.trivia-next .ui-icon,.trivia-prev .ui-icon,.trivia-shuffle .ui-icon{width:15px;height:15px}
.trivia-prev,.trivia-shuffle{width:36px;padding:0}
.trivia-prev .ui-icon{transform:scaleX(-1)}
.trivia-shuffle{margin-left:auto;color:var(--tc)}
.trivia-card.kind-items{--tc:var(--kind-items)}.trivia-card.kind-skills{--tc:var(--kind-skills)}.trivia-card.kind-npcs{--tc:var(--kind-npcs)}.trivia-card.kind-stages{--tc:var(--kind-stages)}.trivia-card.kind-quests{--tc:var(--kind-quests)}.trivia-card.kind-achievements{--tc:var(--kind-achievements)}.trivia-card.kind-characters{--tc:var(--kind-characters)}.trivia-card.kind-farming{--tc:var(--kind-farming)}
.home-trivia .trivia-card{max-width:none;margin:22px 0 0}
@media(hover:hover)and (pointer:fine){
 .trivia-card:hover{border-color:color-mix(in srgb,var(--tc) 55%,var(--line));box-shadow:var(--card-shadow-hover),0 0 0 1px color-mix(in srgb,var(--tc) 18%,transparent)}
 .trivia-card:hover .trivia-glyph{transform:translateY(-2px) rotate(-6deg);box-shadow:0 0 0 1px color-mix(in srgb,var(--tc) 60%,transparent),0 0 0 6px color-mix(in srgb,var(--tc) 10%,transparent),0 0 34px -6px var(--tc)}
 .trivia-card:hover .trivia-label::before{width:32px}
 .trivia-next:hover,.trivia-prev:hover{color:var(--gold-deep);border-color:var(--gold-deep)}
 .trivia-shuffle:hover{border-color:var(--tc);background:color-mix(in srgb,var(--tc) 12%,transparent)}
 .trivia-shuffle:hover .ui-icon{animation:trivia-twinkle .9s ease-in-out infinite}
}
@keyframes trivia-twinkle{0%,100%{transform:scale(1) rotate(0)}50%{transform:scale(1.25) rotate(20deg)}}
@media(max-width:680px){.trivia-card{grid-template-columns:1fr;gap:12px 0;padding:18px}.trivia-glyph{width:44px;height:44px}.trivia-text{font-size:1rem}.trivia-next,.trivia-prev,.trivia-shuffle{min-height:44px}.trivia-prev,.trivia-shuffle{width:44px}}
/* The drawer gets the same dimmed backdrop the search modal already had. */
@keyframes bible-fade-in{from{opacity:0}to{opacity:1}}
@media(max-width:900px){body:has(#sidebar.is-open){overflow:hidden}body:has(#sidebar.is-open)::before{content:"";position:fixed;inset:var(--header-h) 0 0;z-index:70;background:rgba(4,7,12,.62);backdrop-filter:blur(3px);animation:bible-fade-in 160ms var(--ease) both}}
/* CJK pages: no tightened tracking, a little more leading, real CJK faces. */
html:lang(ja),html:lang(ko),html:lang(zh){--tracking-display:0;--tracking-hero:0;--tracking-tight:0;--lh-head:1.32}
html:lang(ja) .brand,html:lang(ko) .brand,html:lang(zh) .brand{letter-spacing:.03em}
html:lang(ja) .eyebrow,html:lang(ko) .eyebrow,html:lang(zh) .eyebrow,html:lang(ja) .nav-title,html:lang(ko) .nav-title,html:lang(zh) .nav-title,html:lang(ja) .toc-title,html:lang(ko) .toc-title,html:lang(zh) .toc-title{letter-spacing:.08em}
html:lang(ja) .hero-footnote,html:lang(ko) .hero-footnote,html:lang(zh) .hero-footnote,html:lang(ja) .statline .k,html:lang(ko) .statline .k,html:lang(zh) .statline .k{letter-spacing:.06em}
/* Printing from the dark theme has to re-point the tokens or it prints black. */
@media print{
 :root,:root[data-theme="dark"],:root[data-theme="light"]{color-scheme:light;--bg:#fff;--text:#111;--muted:#333;--dim:#444;--line:#bbb;--wash:#fff;--nav-hover:transparent;--topbar-bg:#fff;--topbar-line:#bbb;--panel:#fff;--field-bg:#fff;--paper:#fff;--ink:#111;--ink-body:#222;--ink-muted:#333;--ink-dim:#444;--ds-bg:#fff;--ds-bg-2:#f1f1f1;--ds-hover:transparent;--ds-text:#111;--ds-muted:#222;--ds-dim:#444;--ds-line:#bbb;--ds-sunken:#fff;--gold:#6b5320;--gold-deep:#6b5320;--gold-dark:#4d3a12;--cyan:#1f6b78;--coral:#a8332c;--green:#2c6b46;--violet:#5b3fa8;--shadow:none;--card-shadow:none;--card-shadow-hover:none;--btn-shadow:none;--primary-glow:transparent}
 .entity-tooltip,.item-tooltip,.trivia-next,.trivia-prev,.trivia-shuffle,.nav-toggle,.load-more,.skip-link,.entry-caret{display:none!important}
 tbody tr:nth-of-type(2n):not(:hover) > td{background:none}
 .trivia-card{border-color:#bbb;background:#fff;box-shadow:none;break-inside:avoid}
 .trivia-card::before{border-color:#ddd}.trivia-card::after{display:none}
 .table-wrap,.results,.farm-panel,.card,.portal,.skill-card,.callout{break-inside:avoid}
 thead th{color:#111;border-color:#aaa}
}
/* Reduced motion: the blanket rule kills transitions; these kill the offsets. */
@media(prefers-reduced-motion:reduce){
 .class-card:hover img{transform:translateX(-50%)}
 .btn:active,.chip:active,.icon-btn:active,.load-more:active,.trivia-next:active,.text-link:active,.entry:active,.journey-card:active,.database-card:active,.portal:active,.class-card:active,.skill-card summary:active,.nav-link:active,.library-links a:active,.language-options a:active,.locale-switcher a:active,.toc a:active,.search-trigger:active,.language-menu summary:active,.class-card:hover .class-card-arrow,.database-card:hover .database-arrow,.home-hero:hover .hero-orbit,.class-hero:hover .class-hero-ring{transform:none}
 .skeleton::after{display:none}
}

/* Hover motion on the browse rows. The cards already lift; the rows were the
   one place with thousands of entries and no sign of life. Everything here is
   transform and opacity only, so a five thousand row list stays smooth, and the
   blanket reduced-motion rule above switches all of it off. */
.entry{position:relative}
.entry::before{content:"";position:absolute;left:2px;top:14%;bottom:14%;width:2px;border-radius:2px;background:var(--gold-deep);opacity:0;transform:scaleY(.25);transition:transform 190ms var(--ease),opacity 190ms var(--ease);pointer-events:none}
.icon-frame{position:relative;transition:transform 170ms var(--ease),border-color 170ms var(--ease),box-shadow 170ms var(--ease)}
.icon-frame::after{content:"";position:absolute;inset:0;background:linear-gradient(105deg,transparent 36%,rgba(255,255,255,.20) 50%,transparent 64%);transform:translateX(-150%);transition:transform 640ms var(--ease);pointer-events:none;border-radius:inherit}
.entry .badge,.entry-caret{transition:transform 170ms var(--ease),color 170ms var(--ease)}
@media(hover:hover) and (pointer:fine){
.entry:hover::before,.entry:focus-visible::before{opacity:.9;transform:scaleY(1)}
.entry:hover .icon-frame,.entry:focus-visible .icon-frame{transform:translateY(-1px) scale(1.06);border-color:color-mix(in srgb,var(--gold-deep) 48%,transparent);box-shadow:0 4px 14px rgba(0,0,0,.32)}
.entry:hover .icon-frame::after{transform:translateX(150%)}
.entry:hover .badge{transform:translateY(-1px)}
.entry.is-expandable:hover .entry-caret{transform:translateX(2px);color:var(--gold-deep)}
}
@media(prefers-reduced-motion:reduce){.entry::before,.icon-frame::after{display:none}}

/* ---- tower floor guides (world/<tower>.html) ---- */
.tower-intro{position:relative;background-size:cover;background-position:center right;border:1px solid var(--line);border-radius:var(--radius-md);padding:34px 30px 30px;overflow:hidden}
.tower-intro h1,.tower-intro .lede,.tower-intro .eyebrow{position:relative;z-index:1}
.tower-rules{list-style:none;display:flex;flex-wrap:wrap;gap:10px;margin:22px 0 8px;padding:0}
.tower-rules li{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:999px;background:var(--wash);padding:7px 15px;font-size:.82rem;color:var(--muted)}
.tower-rules li strong{color:var(--text);font-weight:600}
.tower-rules li img{border-radius:4px;vertical-align:middle}
.tower-table{width:100%;border-collapse:collapse;margin-top:14px}
.tower-table th{text-align:left;font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--dim);border-bottom:1px solid var(--line);padding:9px 12px}
.tower-table td{border-bottom:1px solid var(--line);padding:10px 12px;vertical-align:top}
.tower-floor-cell{font-family:var(--font-display);font-size:1.05rem;color:var(--text)}
.tower-milestone td{background:linear-gradient(90deg,rgba(219,189,131,.07),transparent 70%)}
.tower-spawns{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:5px}
.tower-spawns li{display:flex;align-items:center;flex-wrap:wrap;gap:8px}
.tower-mob.is-boss{color:var(--text);font-weight:600}
.tower-count{color:var(--muted);font-size:.82rem}
.tower-level{color:var(--dim);font-size:.74rem;border:1px solid var(--line);border-radius:5px;padding:1px 6px}
.tower-notes{margin:14px 0 22px;padding-left:20px;font-size:.82rem;line-height:1.75;color:var(--ink-dim)}.tower-notes li{margin:3px 0}.tower-boss-chip{font-size:.68rem;letter-spacing:.06em;text-transform:uppercase;color:#0e1219;background:linear-gradient(135deg,#dbbd83,#c9a25f);border-radius:5px;padding:2px 7px;font-weight:700}
.tower-reward{display:inline-flex;align-items:center;gap:8px;color:var(--text)}
.tower-reward img{border-radius:4px}
.tower-empty{color:var(--dim)}.nav-group:hover .nav-link.has-face:not(:hover) .nav-face{opacity:.45;filter:saturate(.55)}.nav-face{transition:opacity .2s var(--ease),filter .2s var(--ease)}.entry[aria-expanded="true"]::before{opacity:.75;transform:scaleY(1)}.db-index-list a:visited{color:var(--gold-deep)}.db-tier:target h2{border-left-color:var(--gold-deep)}.db-letters a{transition:border-color .18s var(--ease),transform .18s var(--ease)}.db-letters a:hover{transform:translateY(-1px)}.tower-boss-chip{transition:transform .16s var(--ease),box-shadow .16s var(--ease)}.tower-table tbody tr:hover .tower-boss-chip{transform:translateY(-1px) scale(1.05)}.entity-tooltip.rarity-legend::before,.entity-tooltip.rarity-artifact::before,.entity-tooltip.rarity-avatar::before{opacity:.9;animation:tip-sheen 1.9s var(--ease) infinite}@keyframes tip-sheen{0%,100%{opacity:.45}50%{opacity:1}}@media(prefers-reduced-motion:reduce){.db-letters a:hover,.tower-table tbody tr:hover .tower-boss-chip{transform:none}.entity-tooltip.rarity-legend::before,.entity-tooltip.rarity-artifact::before,.entity-tooltip.rarity-avatar::before{animation:none}.nav-group:hover .nav-link.has-face:not(:hover) .nav-face{opacity:1;filter:none}}.nav-link.is-hailed{box-shadow:inset 0 0 0 1px var(--class-accent,rgba(219,189,131,.4))}.nav-link.is-hailed .nav-face{animation:face-hail 1.5s cubic-bezier(.2,.8,.3,1)}@keyframes face-hail{0%{transform:scale(1)}22%{transform:scale(1.34) rotate(-7deg)}52%{transform:scale(1.08) rotate(4deg)}100%{transform:scale(1)}}.nav-link.has-face{position:relative}.nav-link.is-active.has-face::after{content:"";position:absolute;left:14px;top:50%;width:22px;height:22px;margin-top:-11px;border-radius:50%;box-shadow:0 0 10px 2px var(--class-accent,transparent);opacity:.25;animation:face-breathe 5.5s ease-in-out infinite;pointer-events:none}@keyframes face-breathe{0%,100%{opacity:.18}50%{opacity:.7}}.tower-notes{list-style:none;padding-left:4px}.tower-notes li{position:relative;padding-left:19px}.tower-notes li::before{content:"";position:absolute;left:2px;top:.62em;width:6px;height:6px;transform:rotate(45deg);background:var(--gold-deep,#dbbd83);opacity:.55;border-radius:1px}@media(prefers-reduced-motion:reduce){.nav-link.is-hailed .nav-face,.nav-link.is-active.has-face::after{animation:none}}.tower-level,.tower-hp,.tower-count,.tower-boss-chip{white-space:nowrap}.tower-spawn{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.tower-pool td.tower-mob-cell{width:52%}.tower-pool th.num,.tower-pool td.tower-odds{width:1%;white-space:nowrap;font-variant-numeric:tabular-nums}.tower-pool .tower-reward-cell{width:auto}@media(max-width:720px){.tower-pool td.tower-odds:not(:empty)::before{content:attr(data-label) ": ";color:var(--dim);font-size:.74rem}.tower-pool td.tower-odds:not(:empty){margin-top:7px}}
@media(max-width:720px){.tower-table thead{display:none}.tower-table,.tower-table tbody,.tower-table tr,.tower-table td{display:block;width:auto}.tower-table tbody tr{padding:14px 0;border-bottom:1px solid var(--line)}.tower-table td{border:0;padding:0 4px}.tower-table td.tower-floor-cell{width:auto;min-width:0;font-size:1.15rem;color:var(--gold-deep);margin-bottom:9px}.tower-table td:nth-child(3):not(:empty){margin-top:11px;padding-top:11px;border-top:1px dashed var(--line)}.tower-milestone .tower-floor-cell::after{content:" ✦"}}

/* tower entity links: inherit the page voice, reveal affordance on hover */
.tower-mob.entity-link,.tower-reward.entity-link,.tower-key .entity-link{color:inherit;text-decoration:none;border-bottom:1px dotted transparent;transition:border-color .18s ease,color .18s ease}
.tower-mob.entity-link:hover,.tower-mob.entity-link:focus-visible{color:var(--text);border-bottom-color:var(--line)}
.tower-reward.entity-link,.tower-key .entity-link{display:inline-flex;align-items:center;gap:8px}
.tower-reward.entity-link:hover span,.tower-key .entity-link:hover span{border-bottom-color:var(--line)}
.tower-hp{color:var(--dim);font-size:.74rem;font-variant-numeric:tabular-nums}
.tower-table th.tower-floor-head,.tower-table td.tower-floor-cell{width:68px;min-width:68px;white-space:nowrap}

/* ================= playful layer (assets/js/delight.js) =================
   Decoration only. Every rule here degrades to the finished, readable state
   when JS is off or the reader asks for reduced motion. */
/* The reveal is an ANIMATION on arrival, never a resting hidden state: a row
   whose class never arrives (JS blocked, observer quirk, a crawler that does
   not run scripts) is fully visible and readable. Nothing here may hide text. */
.has-reveal .will-reveal.is-revealed{animation:reveal-up .5s cubic-bezier(.2,.7,.3,1)}
@keyframes reveal-up{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.read-progress{position:fixed;top:0;left:0;height:2px;width:100%;transform:scaleX(0);transform-origin:0 50%;background:linear-gradient(90deg,#dbbd83,#c9a25f);z-index:60;pointer-events:none;will-change:transform}
.spark-layer{position:fixed;inset:0;pointer-events:none;z-index:70}
.spark{position:absolute;width:6px;height:6px;margin:-3px 0 0 -3px;border-radius:50%;background:radial-gradient(circle,#f4e3bd 0%,var(--spark-tint,#dbbd83) 45%,rgba(219,189,131,0) 70%);animation:spark-fly .85s cubic-bezier(.15,.75,.35,1) forwards}
@keyframes spark-fly{0%{opacity:0;transform:translate(0,0) scale(.5)}12%{opacity:1}100%{opacity:0;transform:translate(var(--dx),var(--dy)) scale(.28)}}
.lunia-ring{position:fixed;left:50%;top:50%;width:12px;height:12px;margin:-6px 0 0 -6px;border-radius:50%;border:2px solid rgba(219,189,131,.75);pointer-events:none;z-index:70;animation:lunia-ring 1.1s ease-out forwards}
@keyframes lunia-ring{0%{opacity:.9;transform:scale(1)}100%{opacity:0;transform:scale(46)}}
/* Only the transform origin and a positioning context for the ::after star.
   The layout (display:grid + place-items:center) belongs to .sigil above and
   must not be restated here: overriding display with inline-flex dropped
   justify-items and pushed the mark off-centre inside its box. */
.brand .sigil{position:relative;transform-origin:50% 60%}
.brand .sigil.is-flipping{animation:sigil-flip .5s cubic-bezier(.3,.8,.3,1)}
@keyframes sigil-flip{0%{transform:rotateY(0)}100%{transform:rotateY(360deg)}}
.brand .sigil.is-dozing{animation:sigil-doze 2s ease-in-out}
@keyframes sigil-doze{0%,100%{transform:translateY(0) rotate(0)}45%{transform:translateY(3px) rotate(-6deg)}}
.brand .sigil.is-awake{filter:drop-shadow(0 0 7px rgba(219,189,131,.75))}
.brand .sigil.is-awake::after{content:"✦";position:absolute;margin:-9px 0 0 15px;font-size:.55rem;color:#dbbd83;animation:twinkle 2.6s ease-in-out infinite}
@keyframes twinkle{0%,100%{opacity:.35;transform:scale(.85)}50%{opacity:1;transform:scale(1.15)}}
#theme-toggle.is-spinning{animation:sigil-flip .55s ease}
.trivia-card.is-turning{animation:card-turn .55s cubic-bezier(.3,.8,.3,1)}
@keyframes card-turn{0%{transform:perspective(900px) rotateX(0)}45%{transform:perspective(900px) rotateX(7deg)}100%{transform:perspective(900px) rotateX(0)}}
.tower-table tbody tr{transition:background-color .2s ease}
.tower-table tbody tr:hover{background:linear-gradient(90deg,rgba(219,189,131,.05),transparent 78%)}
.tower-milestone .tower-floor-cell{position:relative}
.tower-milestone .tower-floor-cell::after{content:"✦";position:absolute;margin-left:4px;font-size:.6rem;color:#dbbd83;animation:twinkle 3.4s ease-in-out infinite}
.tower-boss-chip{cursor:default;transition:transform .16s ease,box-shadow .16s ease}
.tower-boss-chip:hover{transform:translateY(-1px) scale(1.04);box-shadow:0 4px 14px rgba(219,189,131,.3)}
.tower-table tbody tr.is-summit .tower-floor-cell{color:var(--gold-deep);font-weight:700}
.tower-reward img,.tower-key img{transition:transform .2s cubic-bezier(.3,.8,.3,1)}
.tower-reward:hover img,.tower-key .entity-link:hover img{transform:scale(1.18) rotate(-4deg)}
:root.is-legend::after{content:"";position:fixed;inset:0;pointer-events:none;z-index:69;background:radial-gradient(circle at 50% 33%,rgba(219,189,131,.20),transparent 62%);animation:legend-wash 2.6s ease forwards}
@keyframes legend-wash{0%,100%{opacity:0}30%{opacity:1}}
:root.is-flashing{animation:soft-flash .4s ease}
@keyframes soft-flash{0%,100%{filter:none}50%{filter:brightness(1.12)}}
@media(prefers-reduced-motion:reduce){
  .has-reveal .will-reveal.is-revealed{animation:none}
  .spark,.lunia-ring,.brand .sigil.is-flipping,.brand .sigil.is-dozing,.brand .sigil.is-awake::after,
  #theme-toggle.is-spinning,.trivia-card.is-turning,.tower-milestone .tower-floor-cell::after,
  :root.is-legend,:root.is-flashing{animation:none!important}
  .tower-boss-chip:hover,.tower-reward:hover img,.tower-key .entity-link:hover img{transform:none}
  .read-progress{transition:none}
}
.hero-logo{display:inline-block;margin:0 0 18px;line-height:0;transition:transform var(--transition) var(--ease),filter var(--transition) var(--ease)}
.hero-logo img{width:195px;height:auto;max-width:52vw;filter:drop-shadow(0 6px 24px rgba(0,0,0,.45))}
.hero-logo:hover{transform:translateY(-2px);filter:drop-shadow(0 0 22px var(--primary-glow))}
@media(max-width:720px){.hero-logo img{width:150px}}
@media(prefers-reduced-motion:reduce){.hero-logo{transition:none}.hero-logo:hover{transform:none}}

/* The root language chooser (site/index.html) - a standalone page, no shell. */
body.locale-chooser{min-height:100vh;display:grid;place-items:center;background:var(--bg);color:var(--text);font-family:var(--font-body);padding:32px;text-align:center}
body.locale-chooser main{max-width:520px}
body.locale-chooser .chooser-logo{width:195px;height:auto;max-width:60vw;margin-bottom:22px;filter:drop-shadow(0 6px 24px rgba(0,0,0,.45))}
body.locale-chooser h1{font-family:var(--font-display);font-size:2.4rem;margin:0 0 8px}
body.locale-chooser p{color:var(--muted);margin:0 0 26px}
body.locale-chooser ul{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:10px;justify-content:center}
body.locale-chooser li a{display:inline-block;border:1px solid var(--line);border-radius:var(--radius-md);padding:10px 18px;color:var(--text);text-decoration:none;background:var(--wash);transition:border-color var(--transition-fast),background var(--transition-fast)}
body.locale-chooser li a:hover{border-color:var(--gold-deep);background:var(--nav-hover)}

.tower-solo{display:inline-block;margin-left:8px;font-size:.68rem;letter-spacing:.05em;text-transform:uppercase;color:var(--gold-deep);border:1px solid var(--line);border-radius:5px;padding:1px 7px;white-space:nowrap}

/* ---- static entity pages (db/) ---- */
.db-variant{margin:0 0 30px}
.db-variant h2{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.db-stats{max-width:560px}
.db-stats td{text-align:center;padding:8px 10px}
.db-stats small{color:var(--dim);font-size:.7rem;letter-spacing:.06em;text-transform:uppercase}
.db-drops{list-style:none;padding:0;margin:8px 0 0;display:flex;flex-direction:column;gap:5px}
.db-drops li{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.db-links{list-style:none;padding:0;margin:10px 0 0;display:flex;flex-wrap:wrap;gap:8px 18px}
.db-links li{display:inline-flex;align-items:center;gap:7px}
.db-index-list{flex-direction:column;gap:7px}
.db-letters{display:flex;flex-wrap:wrap;gap:5px;margin:6px 0 20px}
.db-letters a,.db-letters strong{display:inline-block;min-width:30px;text-align:center;padding:5px 7px;border:1px solid var(--line);border-radius:6px;text-decoration:none;color:var(--text)}
.db-letters strong{background:var(--wash);color:var(--gold-deep)}
.db-letters a:hover{border-color:var(--gold-deep)}
.db-browse{margin-top:26px}
.footer-db-links{display:flex;gap:14px;align-items:center;margin:10px 0 0;font-size:.78rem}
.footer-db-links span{color:var(--dim)}
.footer-db-links a{color:var(--muted)}
.footer-db-links a:hover{color:var(--text)}
.db-tier{margin:0 0 34px}
.db-tier h2{border-bottom:1px solid var(--line);padding-bottom:8px}
.db-tier h3{color:var(--dim);font-size:.85rem;letter-spacing:.06em;text-transform:uppercase;margin:18px 0 4px}

/* ---- class faces in the sidebar: real in-game portraits, class-coloured hover ---- */
.nav-face{width:22px;height:22px;border-radius:50%;object-fit:cover;flex:0 0 22px;border:1px solid var(--line);transition:transform var(--transition-fast) var(--ease),border-color var(--transition-fast),box-shadow var(--transition-fast)}
.nav-link.has-face:hover .nav-face{transform:scale(1.18);border-color:var(--class-accent, var(--gold-deep));box-shadow:0 0 9px -1px var(--class-accent, var(--primary-glow))}
.nav-link.has-face:hover{color:var(--text)}
.nav-link.has-face.is-active .nav-face{border-color:var(--class-accent, var(--gold-deep))}
@media(prefers-reduced-motion:reduce){.nav-link.has-face:hover .nav-face{transform:none}}

/* ================= polish wave 2026-09-01: kind colours, stars, tilt, glow ==
   Everything below is ornament on top of a finished page. The blanket
   reduced-motion rule above switches every animation and transition off. */
:root{--kind-items:#dbbd83;--kind-skills:#8ecdf0;--kind-npcs:#ef9d8c;--kind-stages:#8fd6a6;--kind-quests:#f0d98a;--kind-achievements:#c3aef2;--kind-characters:#f3b3c8;--kind-farming:#c9a06a}
@media(prefers-color-scheme:light){:root:not([data-theme="dark"]){--kind-items:#816128;--kind-skills:#1f6b78;--kind-npcs:#a8433a;--kind-stages:#2c6b46;--kind-quests:#7a6420;--kind-achievements:#5b3fa8;--kind-characters:#a8446b;--kind-farming:#7a5a2a}}
[data-theme="light"]{--kind-items:#816128;--kind-skills:#1f6b78;--kind-npcs:#a8433a;--kind-stages:#2c6b46;--kind-quests:#7a6420;--kind-achievements:#5b3fa8;--kind-characters:#a8446b;--kind-farming:#7a5a2a}
::selection{background:rgba(219,189,131,.32);color:var(--ink)}
html{scrollbar-width:thin;scrollbar-color:rgba(219,189,131,.35) transparent}
/* The cover: a quiet star field behind the copy and a comet on the orbit. */
.hero-stars{position:absolute;inset:0;z-index:-2;pointer-events:none;background-image:radial-gradient(1.6px 1.6px at 9% 22%,rgba(244,227,189,.95),transparent 60%),radial-gradient(1px 1px at 21% 66%,rgba(244,227,189,.7),transparent 60%),radial-gradient(1.4px 1.4px at 33% 14%,rgba(244,227,189,.85),transparent 60%),radial-gradient(1px 1px at 40% 84%,rgba(244,227,189,.6),transparent 60%),radial-gradient(1.2px 1.2px at 6% 78%,rgba(244,227,189,.75),transparent 60%),radial-gradient(1px 1px at 27% 40%,rgba(244,227,189,.55),transparent 60%),radial-gradient(1.8px 1.8px at 15% 48%,rgba(244,227,189,.8),transparent 60%);animation:stars-twinkle 6.5s ease-in-out infinite alternate}
.hero-stars::after{content:"";position:absolute;inset:0;background-image:radial-gradient(1px 1px at 12% 34%,rgba(244,227,189,.8),transparent 60%),radial-gradient(1.4px 1.4px at 30% 74%,rgba(244,227,189,.7),transparent 60%),radial-gradient(1px 1px at 44% 30%,rgba(244,227,189,.5),transparent 60%),radial-gradient(1.6px 1.6px at 24% 90%,rgba(244,227,189,.65),transparent 60%),radial-gradient(1px 1px at 3% 58%,rgba(244,227,189,.6),transparent 60%),radial-gradient(1.2px 1.2px at 37% 52%,rgba(244,227,189,.55),transparent 60%);animation:stars-twinkle 9s ease-in-out infinite alternate-reverse}
@keyframes stars-twinkle{from{opacity:.3}to{opacity:1}}
.hero-orbit{border-color:var(--orbit-tint,rgba(219,189,131,.17));transition:transform 900ms var(--ease),border-color 600ms var(--ease)}
.hero-orbit::before{content:"";position:absolute;inset:-2px;border-radius:50%;background:conic-gradient(from 0deg,transparent 0 84%,var(--orbit-glow,rgba(244,227,189,.9)) 97%,transparent 100%);-webkit-mask:radial-gradient(circle,transparent calc(50% - 4px),#000 calc(50% - 2px),#000 calc(50% + 1px),transparent calc(50% + 3px));mask:radial-gradient(circle,transparent calc(50% - 4px),#000 calc(50% - 2px),#000 calc(50% + 1px),transparent calc(50% + 3px));animation:orbit-comet 16s linear infinite;pointer-events:none}
@keyframes orbit-comet{to{transform:rotate(360deg)}}
.class-hero-ring::before{content:"";position:absolute;inset:-2px;border-radius:50%;background:conic-gradient(from 0deg,transparent 0 86%,color-mix(in srgb,var(--class-color) 100%,#fff 45%) 97%,transparent 100%);-webkit-mask:radial-gradient(circle,transparent calc(50% - 4px),#000 calc(50% - 2px),#000 calc(50% + 1px),transparent calc(50% + 3px));mask:radial-gradient(circle,transparent calc(50% - 4px),#000 calc(50% - 2px),#000 calc(50% + 1px),transparent calc(50% + 3px));animation:orbit-comet 22s linear infinite reverse;pointer-events:none}
.hero-footnote span:nth-child(2){cursor:pointer;display:inline-block;transition:transform .35s var(--ease),color .35s var(--ease)}
.hero-footnote span:nth-child(2):hover{transform:rotate(90deg) scale(1.35);color:#f4e3bd}
.home-hero-art{cursor:default}
/* Cards lean toward the pointer (delight.js sets the angles and the light). */
.class-card,.journey-card{will-change:transform}
.class-card::before,.journey-card::before{content:"";position:absolute;inset:0;z-index:2;border-radius:inherit;background:radial-gradient(circle at var(--mx,50%) var(--my,40%),rgba(255,255,255,.13),transparent 46%);opacity:0;transition:opacity .35s var(--ease);pointer-events:none}
.class-card.is-tilting::before,.journey-card.is-tilting::before{opacity:1}
.class-card.is-tilting,.journey-card.is-tilting{transition:transform .12s linear,border-color var(--transition),box-shadow var(--transition)}
.class-card.is-settling,.journey-card.is-settling{transition:transform .55s var(--ease),border-color var(--transition),box-shadow var(--transition)}
/* The primary button carries a slow sheen and a warmer glow. */
.content .btn-primary{position:relative;overflow:hidden;background:linear-gradient(135deg,#e4c78f,#d5b06f);border-color:#dbbd83}
.content .btn-primary::after{content:"";position:absolute;inset:0;background:linear-gradient(105deg,transparent 38%,rgba(255,255,255,.35) 50%,transparent 62%);transform:translateX(-140%);transition:transform .7s var(--ease);pointer-events:none}
.content .btn-primary:hover::after{transform:translateX(140%)}
/* The heading eyebrows get a hairline that grows on hover of the section. */
.section-heading .eyebrow{position:relative;padding-left:0}
.section-heading .eyebrow::before{content:"";width:18px;height:1px;background:currentColor;margin-right:2px;transition:width .35s var(--ease)}
.home-section:hover .section-heading .eyebrow::before{width:30px}
/* Database tiles: the number lifts into the display face. */
.database-body > span{font-family:var(--font-display);font-size:.78rem;letter-spacing:.01em;color:var(--ink-muted)}
.database-card:hover .database-icon{color:var(--gold-dark)}
.database-card:hover .database-icon .ui-icon{transform:translateY(-1px) rotate(-6deg)}
.database-icon .ui-icon{transition:transform .3s var(--ease)}
/* ---------- the playful layer's new tricks (delight.js) ---------- */
@media(hover:hover)and (pointer:fine){.class-card:hover .class-card-halo{animation:halo-breathe 2.6s ease-in-out 1.2s infinite}}
@keyframes halo-breathe{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(1.07);opacity:.7}}
.class-hero.is-hailed .class-hero-ring{animation:ring-hail 1.6s cubic-bezier(.2,.8,.3,1)}
@keyframes ring-hail{0%{transform:scale(1)}30%{transform:scale(1.09);box-shadow:0 0 0 15px var(--class-color),0 0 70px 14px var(--class-color)}100%{transform:scale(1)}}
.class-hero.is-hailed .hero-art{animation:art-hail 1.2s cubic-bezier(.2,.8,.3,1)}
@keyframes art-hail{0%{transform:none}28%{transform:translateY(-12px) scale(1.03)}62%{transform:translateY(2px)}100%{transform:none}}
#theme-toggle.is-eclipse{animation:eclipse 1.5s cubic-bezier(.3,.8,.3,1);color:#f4e3bd;border-color:#dbbd83}
@keyframes eclipse{0%{transform:rotate(0);box-shadow:0 0 0 0 rgba(219,189,131,.5)}50%{transform:rotate(360deg) scale(1.15);box-shadow:0 0 0 12px rgba(219,189,131,0)}100%{transform:rotate(720deg)}}
.trivia-card.is-bookworm .trivia-glyph::before{content:"✦";position:absolute;right:-7px;top:-7px;font-size:.72rem;line-height:1;color:#dbbd83;text-shadow:0 0 8px rgba(219,189,131,.8);animation:twinkle 2.6s ease-in-out infinite}
.footer-brand.is-turning-page .ui-icon{animation:sigil-flip .8s ease}
.nav-link.is-waving .nav-face{animation:face-hail 1.1s cubic-bezier(.2,.8,.3,1)}
.nav-link.is-waving{box-shadow:inset 0 0 0 1px var(--class-accent,rgba(219,189,131,.4))}
.read-progress.is-complete{box-shadow:0 0 12px 1px rgba(219,189,131,.7)}
@media print{.trivia-prev,.trivia-shuffle,.hero-stars,.trivia-glyph::after{display:none!important}}
@media(prefers-reduced-motion:reduce){.class-card.is-tilting,.journey-card.is-tilting,.class-card.is-settling,.journey-card.is-settling{transform:none!important}.hero-footnote span:nth-child(2):hover,.database-card:hover .database-icon .ui-icon{transform:none}}

/* ================= review wave 2026-09-01: contrast, motion budget, polish ==
   Findings of the front-end and design reviews, applied as later rules so the
   earlier declarations stay readable in place. */
/* Ink surfaces keep their dark ground in the light theme; every page token a
   descendant rule reads has to follow, or a boss name in a tower pool paints
   light-theme ink on a dark table (1.2:1 before this). */
.table-wrap,.results,.filters,.search-panel,.detail-dialog,.farm-panel{--text:var(--ds-text);--muted:var(--ds-muted);--dim:var(--ds-dim);--line:var(--ds-line);--ink:var(--ds-text);--ink-body:var(--ds-muted);--ink-muted:var(--ds-muted);--ink-dim:var(--ds-dim);--paper:var(--ds-bg-2);--wash:rgba(205,215,234,.04);--nav-hover:var(--ds-hover);--gold:#dbbd83;--gold-deep:#dbbd83;--gold-dark:#efcf91;--primary-glow:rgba(219,189,131,.22);--cyan:#8ecdf0;--coral:#ef9d8c;--green:#8fd6a6;--violet:#c3aef2}
.guide-body > .tower-table thead th{position:static;background:transparent}
/* A quest fact and an item fact must not share a gold; quests go olive and
   the drop finder goes copper. Light values deepened for paper. */
:root{--kind-quests:#cfd48c;--kind-farming:#e3a97c}
@media(prefers-color-scheme:light){:root:not([data-theme="dark"]){--kind-quests:#5f6a1c;--kind-farming:#8a4d22;--glyph-bg:#fffcf5}}
[data-theme="light"]{--kind-quests:#5f6a1c;--kind-farming:#8a4d22;--glyph-bg:#fffcf5}
.entity-tooltip.kind-quests{--tip-border:#5f6528;--tip-accent:#cfd48c;--tip-name:#dde49a}
/* Micro type gets a floor; Georgia does not like tight tracking. */
.statline .k{font-size:.66rem}.hero-footnote{font-size:.64rem}.brand-sub{font-size:10px}.trivia-count{font-size:.68rem}.eyebrow,.home-hero .eyebrow{font-size:.66rem}.nav-title,.toc-title{font-size:.66rem}.field label{font-size:.66rem}
@media(max-width:680px){.home-hero .eyebrow{font-size:.64rem}.hero-footnote{font-size:.6rem}}
@media(max-width:420px){.brand .sigil{display:grid;width:32px;height:32px}.brand .sigil .ui-icon{width:19px;height:19px}.brand-sub{display:none}.brand{gap:8px}}
html:lang(ja) .database-body > span,html:lang(ko) .database-body > span,html:lang(zh) .database-body > span{font-family:var(--font-body)}
html:lang(ja) .brand-sub,html:lang(ko) .brand-sub,html:lang(zh) .brand-sub{letter-spacing:.06em}
html:lang(ja) .trivia-label,html:lang(ko) .trivia-label,html:lang(zh) .trivia-label,html:lang(ja) .trivia-proof,html:lang(ko) .trivia-proof,html:lang(zh) .trivia-proof,html:lang(ja) .trivia-next,html:lang(ko) .trivia-next,html:lang(zh) .trivia-next{letter-spacing:.06em}
/* ---- the trivia card, second pass: quieter at rest, one pager ---- */
[data-trivia]{min-height:214px}[data-trivia][hidden]{min-height:0}
.trivia-card{border:1px solid var(--line);background:var(--paper)}
.trivia-card{border:1px solid color-mix(in srgb,var(--tc) 30%,var(--line));background:linear-gradient(135deg,color-mix(in srgb,var(--tc) 9%,transparent),transparent 58%),var(--paper)}
.trivia-card::before{display:none}
.trivia-card::after{opacity:.45;right:-70px;top:-70px}
.trivia-glyph{background:var(--ds-sunken);box-shadow:0 0 0 1px var(--line)}
.trivia-glyph{background:radial-gradient(circle at 50% 40%,color-mix(in srgb,var(--tc) 16%,transparent),transparent 72%),color-mix(in srgb,var(--tc) 8%,var(--glyph-bg,var(--ds-sunken)));box-shadow:0 0 0 1px color-mix(in srgb,var(--tc) 48%,transparent),0 0 22px -10px var(--tc)}
.trivia-glyph::after{border-color:color-mix(in srgb,var(--tc) 22%,transparent);animation-play-state:paused}
.trivia-card:hover .trivia-glyph::after,.trivia-card:focus-within .trivia-glyph::after{animation-play-state:running}
.content .trivia-ref{border:1px solid var(--line);background:var(--wash)}
.content .trivia-ref{border:1px solid color-mix(in srgb,var(--tc) 32%,var(--line));background:color-mix(in srgb,var(--tc) 7%,transparent)}
.trivia-proof{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;margin:0}
.trivia-refs{gap:6px 8px}
.trivia-refs::before{content:"";width:14px;height:1px;flex:none;background:color-mix(in srgb,var(--tc) 50%,transparent)}
.trivia-prev{border-radius:var(--radius-full) 0 0 var(--radius-full);border-right:0}
.trivia-next{border-radius:0 var(--radius-full) var(--radius-full) 0}
.trivia-count{margin-left:6px}
.trivia-shuffle{margin-left:auto}
.home-trivia .trivia-card{max-width:min(100%,92ch)}
@keyframes trivia-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@keyframes card-turn{0%,100%{transform:none}45%{transform:perspective(900px) rotateX(3deg)}}
.trivia-shuffle:hover .ui-icon{animation-iteration-count:1}
/* The dog-ear: a folded corner that turns the page (delight-free; the card
   itself wires the click). */
.trivia-corner{position:absolute;right:0;top:0;width:22px;height:22px;cursor:pointer;background:linear-gradient(225deg,var(--paper) 50%,color-mix(in srgb,var(--tc) 32%,var(--line)) 50%);clip-path:polygon(0 0,100% 0,100% 100%);transition:width .25s var(--ease),height .25s var(--ease)}
.trivia-corner:hover{width:30px;height:30px}
/* ---- motion budget: nothing moves at rest on a reference page ---- */
.class-hero-ring::before{opacity:0;animation-play-state:paused;transition:opacity .8s var(--ease)}
.class-hero:hover .class-hero-ring::before{opacity:1;animation-play-state:running}
.hero-orbit::before{animation-duration:28s;background:conic-gradient(from 0deg,transparent 0 86%,var(--orbit-glow,rgba(244,227,189,.55)) 97%,transparent 100%)}
@keyframes stars-twinkle{from{opacity:.55}to{opacity:1}}
.nav-link.is-active.has-face::after{animation-iteration-count:3}
.tower-milestone .tower-floor-cell::after{animation:none;opacity:.7}
.tower-table tbody tr:hover .tower-floor-cell::after{animation:twinkle 1.6s ease-in-out infinite}
.entry:hover .badge{transform:none}
.entry:hover .icon-frame,.entry:focus-visible .icon-frame{transform:scale(1.03)}
.home-section:hover .section-heading .eyebrow::before{width:18px}
.section-heading:hover .eyebrow::before{width:30px}
.entity-tooltip.rarity-legend::before,.entity-tooltip.rarity-artifact::before,.entity-tooltip.rarity-avatar::before{animation-duration:2.8s}
/* The tilt lives in two custom properties, so the press offset still composes. */
.class-card,.journey-card{will-change:auto}
.class-card.is-tilting,.journey-card.is-tilting{will-change:transform;transform:perspective(760px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg))}
.class-card.is-tilting:active,.journey-card.is-tilting:active{transform:perspective(760px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg)) translateY(1px) scale(.996)}
.class-card.is-settling,.journey-card.is-settling{transform:none}
/* ---- the cover ---- */
.home-hero::before,.hero-orbit{pointer-events:none}
.hero-logo{margin-bottom:14px}.home-hero .eyebrow{margin-bottom:18px}
@media(max-width:680px){.hero-logo img{width:120px}.home-hero-copy{padding-top:175px}.home-hero{min-height:0}}
/* One shooting star per visit, on a timer the playful layer sets. */
.home-hero.has-meteor .hero-stars::before{content:"";position:absolute;left:var(--sx,20%);top:var(--sy,30%);width:70px;height:2px;border-radius:2px;background:linear-gradient(90deg,rgba(244,227,189,0),rgba(244,227,189,.95));transform:rotate(25deg);animation:meteor 1.1s ease-out 1 forwards}
@keyframes meteor{0%{opacity:0;transform:rotate(25deg) translateX(0)}15%{opacity:1}100%{opacity:0;transform:rotate(25deg) translateX(220px)}}
/* The drop finder's compass follows the pointer across the tile grid. */
.database-feature .database-icon .ui-icon,.database-card.database-feature:hover .database-icon .ui-icon{transform:rotate(var(--needle,0deg));transition:transform .18s var(--ease)}
/* ---- class pages: the About block finally has a shape ---- */
.class-lede{font-family:var(--font-display);font-size:1.15rem;line-height:1.6;color:var(--ink-muted);max-width:62ch}
.class-facts{display:flex;flex-wrap:wrap;gap:8px 24px;margin:0 0 16px;padding:0}
.class-fact{display:flex;gap:8px;align-items:baseline;font-size:.85rem}
.class-fact dt{color:var(--ink-dim);font-size:.66rem;letter-spacing:.1em;text-transform:uppercase}
.class-fact dd{margin:0;color:var(--ink);font-weight:600}
.signature-skills{list-style:none;padding:0;margin:0 0 20px;display:grid;gap:8px;max-width:var(--measure)}
.signature-skills li{padding:10px 14px;border:1px solid var(--line);border-left:2px solid var(--class-color,var(--gold-deep));border-radius:0 var(--radius-sm) var(--radius-sm) 0;background:var(--paper);font-size:.88rem}
.signature-skills li span{color:var(--ink-muted)}
.skill-overview{gap:14px;font-family:var(--font-mono);font-size:.7rem;letter-spacing:.02em}
.skill-overview b{font-family:var(--font-body);font-size:.8rem}
.skill-card[open] summary{background:var(--nav-hover)}
.skill-card[open] .icon-frame{border-color:rgba(219,189,131,.6)}
/* ---- browsers ---- */
.result-count{font-family:var(--font-mono);font-size:.7rem}
.empty-state{display:grid;justify-items:center;gap:14px;padding:48px 24px}
.empty-state::before{content:"✦";display:grid;place-items:center;width:44px;height:44px;border-radius:50%;border:1px dashed color-mix(in srgb,var(--ds-dim) 55%,transparent);color:var(--ds-dim);font-size:1rem}
.load-more{border-radius:var(--radius-full);padding-inline:22px}
.entry.is-unreleased .icon-frame{filter:grayscale(1)}
.badge.tier{border-radius:var(--radius-full);padding:2px 9px}
/* ---- footer ---- */
.bible-foot{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"brand links" "note play" "notice notice";column-gap:40px;row-gap:6px;align-items:start;position:relative;padding-top:36px}
.bible-foot::before{content:"";position:absolute;left:0;right:0;top:-1px;height:1px;background:linear-gradient(90deg,var(--gold-deep),transparent 60%);opacity:.5}
.footer-brand{grid-area:brand}
.bible-foot > p:first-of-type{grid-area:note}
.footer-db-links{grid-area:links;justify-self:end;margin:0}
.footer-play{grid-area:play;justify-self:end;margin:0}
.footer-notice{grid-area:notice;margin-top:20px;padding-top:16px;border-top:1px dashed var(--line);font-size:.7rem;color:var(--ink-dim);max-width:none}
@media(max-width:680px){.bible-foot{grid-template-columns:1fr;grid-template-areas:"brand" "note" "links" "play" "notice"}.footer-db-links,.footer-play{justify-self:start}}
/* ---- print and reduced motion for everything above ---- */
@media print{:root,:root[data-theme="dark"],:root[data-theme="light"]{--kind-items:#816128;--kind-skills:#1f6b78;--kind-npcs:#a8433a;--kind-stages:#2c6b46;--kind-quests:#5f6a1c;--kind-achievements:#5b3fa8;--kind-characters:#a8446b;--kind-farming:#8a4d22;--glyph-bg:#fff}.trivia-corner,.hero-stars::before{display:none!important}}
@media(prefers-reduced-motion:reduce){.hero-orbit::before,.class-hero-ring::before,.home-hero.has-meteor .hero-stars::before{display:none}.class-card.is-tilting,.journey-card.is-tilting,.class-card.is-tilting:active,.journey-card.is-tilting:active{transform:none}.database-feature .database-icon .ui-icon{transform:none}.trivia-corner{transition:none}}

/* ---- stage art and creature portraits (2026-09-02) ---- */
.icon-frame.art{width:66px;height:44px;border-radius:var(--radius-xs)}.icon-frame.art img{object-fit:cover}.icon-frame.sm.art{width:48px;height:32px}.tooltip-icon[src*="/img/stage/"]{width:60px;height:40px;object-fit:cover}.db-banner{display:block;width:100%;max-width:640px;height:auto;margin:0 0 22px;border:1px solid var(--line);border-radius:var(--radius-md);box-shadow:0 12px 32px #0007}.db-banner.is-thumb{max-width:324px}.db-group-art{width:66px;height:44px;object-fit:cover;border-radius:var(--radius-xs);border:1px solid var(--line);vertical-align:middle;margin-right:12px}.db-portrait{float:right;width:220px;height:220px;object-fit:contain;margin:0 0 18px 24px;padding:8px;border:1px solid var(--line);border-radius:var(--radius-md);background:radial-gradient(circle at 50% 40%,rgba(219,189,131,.10),transparent 70%),var(--ds-sunken)}@media(max-width:680px){.db-portrait{float:none;width:160px;height:160px;margin:0 0 14px}.icon-frame.art{width:56px;height:38px}}
/* ---- where to get it, creature showcase, mob infobox (2026-09-02) ---- */
.tooltip-where{margin:8px 0 0;padding-top:7px;border-top:1px solid #77704c80;font-size:11px;color:#dcdcdc}
.tooltip-where-title{color:var(--tip-accent);font-size:10px;letter-spacing:.06em;text-transform:uppercase;margin-bottom:4px}
.tooltip-where-row{display:flex;justify-content:space-between;gap:10px;align-items:baseline;min-width:0}
.tooltip-where-name{color:#8ecdf0;min-width:0;overflow-wrap:anywhere}
.tooltip-where-level{color:#a6a6a6;font-weight:400}.tooltip-where-place{color:#a6a6a6;font-weight:400}
.tooltip-where-odds{color:#fff;white-space:nowrap;flex:none}
.tooltip-where-sub{margin:2px 0 5px 10px;color:#bdbdbd;border-left:1px solid #77704c66;padding-left:8px}
.tooltip-where-heading{color:#a6a6a6;margin:3px 0 2px;font-weight:400}
.tooltip-where-note{color:#8b8b8b;font-size:10px;margin-top:2px;font-weight:400}
.tooltip-where-total{margin-top:3px;padding-top:3px;border-top:1px dashed #77704c66;color:#dbbd83}
.tooltip-where-list{color:#fff;font-weight:400}
.tooltip-showcase{display:none}
.entity-tooltip.is-pinned.has-showcase{width:540px;display:grid;grid-template-columns:minmax(0,1fr) 196px;column-gap:14px;align-content:start}
.entity-tooltip.is-pinned.has-showcase > *{grid-column:1;min-width:0}
.entity-tooltip.is-pinned.has-showcase > .tooltip-showcase{display:block;grid-column:2;grid-row:1/span 40;align-self:start;padding:8px;border:1px solid #77704c80;background:radial-gradient(circle at 50% 40%,rgba(219,189,131,.12),transparent 70%),#05080f;text-align:center}
.tooltip-showcase img{width:180px;height:180px;object-fit:contain;display:block;margin:0 auto}
.tooltip-showcase-name{color:var(--tip-name);font-size:13px;margin-top:6px}
.tooltip-showcase-meta{color:#a6a6a6;font-size:11px;font-weight:400}
.detail-showcase{float:right;width:230px;margin:0 0 16px 24px;padding:10px;border:1px solid var(--ds-line);border-radius:var(--radius-md);background:radial-gradient(circle at 50% 40%,rgba(219,189,131,.10),transparent 70%),var(--ds-sunken);text-align:center}
.detail-showcase img{width:100%;height:auto;aspect-ratio:1;object-fit:contain;display:block}
.detail-showcase-name{color:var(--ds-text);font-family:var(--font-display);font-size:1rem;margin-top:8px}
.detail-showcase-meta{color:var(--ds-dim);font-size:.72rem;margin-top:2px}
.entry-detail.has-showcase::after{content:"";display:block;clear:both}
.db-infobox{float:right;width:260px;margin:0 0 18px 24px;padding:12px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--wash)}
.db-infobox .db-portrait{float:none;width:100%;height:auto;aspect-ratio:1;margin:0;padding:6px}
.db-infobox-name{font-family:var(--font-display);font-size:1.15rem;color:var(--text);text-align:center;margin:10px 0 8px}
.db-infobox-rows{list-style:none;margin:0;padding:0;font-size:.8rem}
.db-infobox-rows li{display:flex;justify-content:space-between;gap:12px;padding:6px 0;border-top:1px solid var(--line);color:var(--muted)}
.db-infobox-rows li strong{color:var(--text);font-weight:600;text-align:right}
.db-infobox .tower-boss-chip{display:inline-block;margin-top:8px}
@media(max-width:680px){.entity-tooltip.is-pinned.has-showcase{width:300px;display:block}.entity-tooltip.is-pinned.has-showcase > .tooltip-showcase{display:none}.detail-showcase{float:none;width:100%;max-width:260px;margin:0 auto 14px}.db-infobox{float:none;width:100%;margin:0 0 16px}}
/* ---- browser tabs: mobs / NPCs (2026-09-02) ---- */
.browser-tabs{display:flex;gap:6px;margin:22px 0 -8px;padding:4px;border:1px solid var(--ds-line);border-radius:var(--radius-md);background:var(--ds-bg);width:max-content;max-width:100%}
.browser-tab{appearance:none;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;color:var(--ds-muted);font:inherit;font-size:.82rem;font-weight:600;padding:9px 18px;min-height:40px;cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast)}
.browser-tab:hover{color:var(--ds-text);background:var(--ds-bg-2)}
.browser-tab[aria-pressed="true"]{color:#dbbd83;background:var(--ds-bg-2);border-color:rgba(219,189,131,.45)}
.browser-tab:focus-visible{outline:2px solid #dbbd83;outline-offset:2px}
@media(max-width:680px){.browser-tabs{width:100%}.browser-tab{flex:1;padding:9px 10px}}
.db-blurb{color:var(--muted);font-size:.92rem;margin:6px 0 4px;max-width:70ch}

/* ---- turnaround showcase (2026-09-02) ---- */
.turnbox{display:block;background-repeat:no-repeat;background-size:800% 100%;background-position:0 0;cursor:grab;touch-action:pan-y;user-select:none;-webkit-user-select:none;margin:0 auto}.turnbox.is-dragging{cursor:grabbing}.turnbox:focus-visible{outline:2px solid #dbbd83;outline-offset:3px}.tooltip-showcase .turnbox{width:180px;height:180px}.detail-showcase .turnbox{width:100%;aspect-ratio:1;height:auto}.detail-showcase-hint,.db-turn-hint{color:var(--ds-dim);font-size:.7rem;margin-top:4px;text-align:center}.db-turn-hint{color:var(--muted);margin:-8px 0 10px}.db-infobox .turnbox.db-portrait{width:100%;aspect-ratio:1;height:auto;padding:0}

/* ---- HP by party size (2026-09-02) ---- */
.party-wrap{margin:10px 0 4px}.party-table{width:auto;min-width:0;border-collapse:collapse;font-size:.8rem}.party-table th,.party-table td{padding:6px 10px;white-space:nowrap}.party-table th.num,.party-table td.num{text-align:right;font-variant-numeric:tabular-nums}.party-table thead th{font-weight:600}.party-table tbody td:first-child{color:var(--ds-dim)}.db-note{color:var(--muted);font-size:.8rem;margin:6px 0 12px;max-width:70ch}

.db-scale{color:#dbbd83;font-size:.85rem;margin:6px 0 4px}

/* ---- secret rooms and hidden bosses (2026-09-03) ---- */
.db-secret-rules{margin:6px 0 10px;padding-left:20px;font-size:.9rem}.db-secret-rules li{margin:3px 0}.entry-detail .db-secret-rules{font-size:.83rem;color:var(--ds-text)}.stage-secrets{margin-top:12px}
