:root{--bg-primary:#f8f3ea;--bg-secondary:#efe8db;--bg-card:#fffefa;--bg-panel:#fcf8f0f7;--bg-hover:#4a6fa50f;--text-primary:#2a2520;--text-secondary:#5a5045;--text-muted:#8a8075;--text-inverse:#f8f3ea;--color-male:#3a5a7a;--color-male-bg:#eef3f9;--color-male-border:#4a7095;--color-female:#a04a4a;--color-female-bg:#f9efef;--color-female-border:#b55a5a;--branch-bo:#4a6fa5;--branch-zhong:#5a7a6a;--branch-shu:#8b3a3a;--branch-ji:#3a4a6a;--color-purple:#6a4a9a;--color-gold:#b8923a;--color-gold-glow:#d4a84b;--color-deceased:transparent;--color-line:#c0b5a0;--color-accent:#6a4a2a;--shadow-sm:0 1px 3px #2a252014;--shadow-md:0 4px 12px #2a25201a;--shadow-lg:0 8px 30px #2a252024;--shadow-gold:0 0 20px #b8923a59;--shadow-purple:0 0 20px #6a4a9a4d;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--radius-xl:16px;--space-xs:4px;--space-sm:8px;--space-md:16px;--space-lg:24px;--space-xl:40px;--space-xxl:64px;--font-display:"Ma Shan Zheng", "STKaiti", "KaiTi", serif;--font-body:"Noto Serif SC", "Source Han Serif CN", "SimSun", serif;--font-mono:"JetBrains Mono", "Fira Code", monospace;--card-width:120px;--card-height:52px;--tree-gap-x:28px;--tree-gap-y:72px;--panel-width:400px;--ease-out:cubic-bezier(.16, 1, .3, 1);--ease-spring:cubic-bezier(.34, 1.56, .64, 1);--duration-fast:.15s;--duration-normal:.25s;--duration-slow:.4s}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px}body{font-family:var(--font-body);color:var(--text-primary);background:var(--bg-primary);min-height:100vh;line-height:1.6}body:before{content:"";pointer-events:none;z-index:-1;background:radial-gradient(at 20% 30%,#b8923a08 0%,#0000 60%),radial-gradient(at 80% 70%,#6a4a9a05 0%,#0000 60%);position:fixed;inset:0}#root{flex-direction:column;width:100%;min-height:100vh;display:flex}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--bg-secondary)}::-webkit-scrollbar-thumb{background:var(--color-line);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.tree-canvas{padding:var(--space-lg) 0 var(--space-xxl);min-height:calc(100vh - 260px);margin:0 auto;position:relative;overflow:auto}.tree-node{width:var(--card-width,90px);z-index:3;transition:transform .35s cubic-bezier(.16,1,.3,1);position:absolute}.tree-node-offset{z-index:5}.gen-label{text-align:center;z-index:2;width:64px;position:absolute;left:8px}.gen-label span{font-family:var(--font-display);color:#555;letter-spacing:1px;font-size:13px;display:inline-block}.connection-svg{pointer-events:none;z-index:0;width:100%;height:100%;position:absolute;top:0;left:0}.conn-group{transition:opacity .25s}.conn-group path,.conn-group line{transition:stroke-width .25s,filter .25s}.conn-hl path,.conn-hl line{filter:drop-shadow(0 0 4px #cc6b6259)}.conn-faded{opacity:.1}@keyframes bloodline-flow{0%{stroke-dashoffset:0}to{stroke-dashoffset:-52px}}.bloodline-flow{opacity:.85;animation:1.2s linear infinite bloodline-flow}@keyframes moon-travel{0%{offset-distance:0%}to{offset-distance:100%}}@keyframes moon-travel-upward{0%{offset-distance:0%}to{offset-distance:100%}}@keyframes moon-travel-downward{0%{offset-distance:0%}to{offset-distance:100%}}@keyframes leaf-pulse{0%,to{opacity:.6;transform:translate(-50%,-50%)scale(1)}50%{opacity:1;transform:translate(-50%,-50%)scale(1.4)}}@keyframes leaf-pulse-inner{0%,to{opacity:.5;transform:translate(-50%,-50%)scale(1)}50%{opacity:.8;transform:translate(-50%,-50%)scale(1.3)}}@keyframes leaf-pulse-core{0%,to{opacity:.9;transform:translate(-50%,-50%)scale(1)}50%{opacity:1;transform:translate(-50%,-50%)scale(1.2)}}@keyframes moon-pulse-outer{0%,to{opacity:.12;transform:translate(-50%,-50%)scale(1)}50%{opacity:.28;transform:translate(-50%,-50%)scale(1.35)}}@keyframes moon-pulse-inner{0%,to{opacity:.32;transform:translate(-50%,-50%)scale(1)}50%{opacity:.55;transform:translate(-50%,-50%)scale(1.25)}}@keyframes moon-pulse-core{0%,to{opacity:.88;transform:translate(-50%,-50%)scale(1)}50%{opacity:1;transform:translate(-50%,-50%)scale(1.15)}}.moon-ball-layer{pointer-events:none;z-index:1;width:100%;height:100%;position:absolute;top:0;left:0}.moon-ball{offset-rotate:0deg;offset-anchor:center center;width:0;height:0;position:absolute;top:0;left:0}.moon-ball-upward{animation:moon-travel-upward var(--moon-dur,8s) linear var(--moon-delay,0s) infinite}.moon-ball-upward .moon-ball-outer{background:radial-gradient(circle,#87ceeb 0%,#0000 70%);animation-name:moon-pulse-outer-sky}.moon-ball-upward .moon-ball-inner{background:radial-gradient(circle,#a8d8ea 0%,#0000 70%);animation-name:moon-pulse-inner-sky}.moon-ball-upward .moon-ball-core{background:#87ceeb;animation-name:moon-pulse-core-sky;box-shadow:0 0 6px 2px #64b4ebcc}@keyframes moon-pulse-outer-sky{0%,to{opacity:.14;transform:translate(-50%,-50%)scale(1)}50%{opacity:.32;transform:translate(-50%,-50%)scale(1.35)}}@keyframes moon-pulse-inner-sky{0%,to{opacity:.35;transform:translate(-50%,-50%)scale(1)}50%{opacity:.6;transform:translate(-50%,-50%)scale(1.25)}}@keyframes moon-pulse-core-sky{0%,to{opacity:.9;transform:translate(-50%,-50%)scale(1)}50%{opacity:1;transform:translate(-50%,-50%)scale(1.15)}}.ancestor-arrival-glow{pointer-events:none;width:0;height:0;position:absolute}.ancestor-arrival-glow .arrival-outer{filter:blur(5px);background:radial-gradient(circle,#87ceeb59 0%,#87ceeb14 50%,#0000 70%);border-radius:50%;width:36px;height:36px;animation:3s ease-in-out infinite arrival-glow-outer;position:absolute;transform:translate(-50%,-50%)}.ancestor-arrival-glow .arrival-inner{filter:blur(3px);background:radial-gradient(circle,#a8d8ea80 0%,#a8d8ea1f 50%,#0000 70%);border-radius:50%;width:18px;height:18px;animation:3s ease-in-out infinite arrival-glow-inner;position:absolute;transform:translate(-50%,-50%)}.ancestor-arrival-glow .arrival-core{background:#87ceebd9;border-radius:50%;width:8px;height:8px;animation:3s ease-in-out infinite arrival-glow-core;position:absolute;transform:translate(-50%,-50%);box-shadow:0 0 10px 3px #64b4eb99}@keyframes arrival-glow-outer{0%,to{opacity:.4;transform:translate(-50%,-50%)scale(1)}50%{opacity:.8;transform:translate(-50%,-50%)scale(1.5)}}@keyframes arrival-glow-inner{0%,to{opacity:.5;transform:translate(-50%,-50%)scale(1)}50%{opacity:.9;transform:translate(-50%,-50%)scale(1.35)}}@keyframes arrival-glow-core{0%,to{opacity:.85;transform:translate(-50%,-50%)scale(1)}50%{opacity:1;transform:translate(-50%,-50%)scale(1.25)}}.moon-ball-downward,.moon-ball-downward.moon-ball-leaf{animation:moon-travel-downward var(--moon-dur,1.8s) linear var(--moon-delay,0s) infinite}.moon-ball-leaf .moon-ball-outer{background:radial-gradient(circle,#d4e5f7 0%,#0000 70%);animation:4s ease-in-out infinite moon-pulse-outer,2s ease-in-out infinite leaf-pulse}.moon-ball-leaf .moon-ball-inner{background:radial-gradient(circle,#e8f0fa 0%,#0000 70%);animation:4s ease-in-out infinite moon-pulse-inner,2s ease-in-out infinite leaf-pulse-inner}.moon-ball-leaf .moon-ball-core{animation:4s ease-in-out infinite moon-pulse-core,2s ease-in-out infinite leaf-pulse-core}.moon-ball-outer{filter:blur(4px);background:radial-gradient(circle,#d4e5f7 0%,#0000 70%);border-radius:50%;width:20px;height:20px;animation:4s ease-in-out infinite moon-pulse-outer;position:absolute;transform:translate(-50%,-50%)}.moon-ball-inner{filter:blur(2px);background:radial-gradient(circle,#e8f0fa 0%,#0000 70%);border-radius:50%;width:12px;height:12px;animation:4s ease-in-out infinite moon-pulse-inner;position:absolute;transform:translate(-50%,-50%)}.moon-ball-core{background:#f5f9ff;border-radius:50%;width:6px;height:6px;animation:4s ease-in-out infinite moon-pulse-core;position:absolute;transform:translate(-50%,-50%);box-shadow:0 0 6px 2px #c8dcffcc}.minimap-placeholder{border:1px solid var(--color-line);border-radius:var(--radius-md);width:160px;height:100px;box-shadow:var(--shadow-md);z-index:10;opacity:.5;background:#fcf8f0f2;font-size:11px;display:none;position:fixed;bottom:20px;right:20px}.person-card{width:100%;height:var(--card-height,36px);cursor:pointer;transition:transform var(--duration-fast) var(--ease-out), box-shadow var(--duration-fast) ease, opacity var(--duration-normal) ease;background:#fff;border:1.5px solid #555;border-radius:2px;display:flex;position:relative;overflow:hidden}.card-branch-bar{border-radius:0 1px 1px 0;width:2.5px;position:absolute;top:3px;bottom:3px;left:0}.person-card.female{background:#fefbfb;border-color:#783c3c8c}.person-card.female .card-name{color:var(--color-female)}.person-card.selected{box-shadow:0 0 0 2px var(--color-accent), var(--shadow-lg);z-index:5;transform:scale(1.06)}.person-card.dimmed{opacity:.22;pointer-events:none;filter:grayscale(.3)}.person-card.deceased .card-body:after{content:"";border-radius:inherit;pointer-events:none;background:repeating-linear-gradient(-45deg,#0000,#0000 3px,#2a252008 3px 6px);position:absolute;inset:0}.person-card.purple{border-color:var(--color-purple);box-shadow:0 0 8px #6a4a9a1f}.person-card.purple.selected{box-shadow:0 0 12px var(--shadow-purple), 0 0 0 2px var(--color-purple)}.person-card.gold{border-color:var(--color-gold)}.person-card.gold.selected{box-shadow:0 0 12px var(--shadow-gold), 0 0 0 2px var(--color-gold)}.person-card:not(.dimmed):not(.selected):not(.bloodline-faded):hover{background:#fffdf8;transform:translateY(-1px);box-shadow:0 1px 4px #0000001f}.person-card.bloodline-hl{border-color:var(--color-gold);z-index:4;background:#fffef5;box-shadow:0 0 8px #c9a84c33,0 0 0 1.5px #c9a84c80}.person-card.hovered-origin{border-color:var(--color-gold);box-shadow:0 0 12px #c9a84c59, 0 0 0 2px var(--color-gold);z-index:6;background:#fffdf0;transform:scale(1.06)}.person-card.bloodline-faded{opacity:.2;filter:grayscale(.4);transition:opacity .25s,filter .25s,transform .25s}.card-body{flex-direction:column;flex:1;justify-content:center;align-items:center;min-width:0;padding:4px 8px;display:flex}.card-name{font-family:var(--font-body);color:#2a2520;white-space:nowrap;text-overflow:ellipsis;letter-spacing:1px;text-align:center;font-size:13px;font-weight:600;line-height:1.2;overflow:hidden}.card-tag{color:#fff;background:var(--text-muted);vertical-align:middle;white-space:nowrap;border-radius:6px;margin-left:4px;padding:0 4px;font-size:9px;font-weight:500;line-height:15px;display:inline-block}.card-meta{justify-content:center;align-items:center;gap:4px;min-height:0;margin-top:1px;display:flex}.realm-badge{color:#fff;white-space:nowrap;letter-spacing:.3px;border-radius:6px;align-items:center;padding:0 4px;font-size:9px;font-weight:600;line-height:14px;display:inline-flex}.card-daoname{color:var(--color-gold);white-space:nowrap;text-overflow:ellipsis;font-size:10px;font-style:italic;overflow:hidden}.person-card.phantom{opacity:.65;background:#f5f2ed;border-style:dashed;border-color:#aaa}.person-card.phantom .card-name{color:#999;font-style:italic;font-weight:400}.person-card.phantom .card-branch-bar{opacity:.4}.person-card.phantom:hover{opacity:.85;background:#f0ede7}.tree-node-wrapper{flex-direction:column;align-items:center;display:flex}.expand-btn{font-size:10px;font-weight:600;font-family:var(--font-body);color:#6b5c4e;cursor:pointer;white-space:nowrap;background:#b8923a1a;border:1px solid #b8923a4d;border-radius:10px;justify-content:center;align-items:center;gap:2px;margin-top:3px;padding:2px 10px;line-height:16px;transition:background .2s,border-color .2s,color .2s,transform .15s,box-shadow .2s;display:inline-flex}.expand-btn:hover{color:#4a3d32;background:#b8923a38;border-color:#b8923a8c;transform:scale(1.08);box-shadow:0 1px 4px #b8923a2e}.expand-btn-icon{font-size:11px;line-height:1}.expand-btn-text{font-size:10px}.expand-btn-collapse{color:#8a7a6e;background:#8c827614;border-color:#8c827640}.expand-btn-collapse:hover{color:#5a5045;background:#8c82762e;border-color:#8c827673}.person-card.spouse-card{opacity:.92;background:#faf5ebd9;border-style:dashed;border-color:#a078508c}.person-card.spouse-card .card-branch-bar{opacity:.5}.person-card.spouse-card:hover{opacity:1;background:#faf5eb;border-color:#a07850d9}.person-card.spouse-concubine{opacity:.82;background:#f8f3ebbf;border-color:#8c6e5061}.person-card.spouse-concubine:hover{opacity:.95}.spouse-role-badge{color:#7a5a30;vertical-align:middle;background:#a0783c26;border:1px solid #a0783c4d;border-radius:3px;margin-left:2px;padding:0 4px;font-size:9px;font-weight:600;line-height:14px;display:inline-block}.person-card.spouse-concubine .spouse-role-badge{color:#8a6a40;background:#8264461a;border-color:#82644638}.panel-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:100;background:#2a252059;justify-content:center;align-items:center;animation:.2s ease-out panel-fade-in;display:flex;position:fixed;inset:0}@keyframes panel-fade-in{0%{opacity:0}to{opacity:1}}.detail-panel{width:min(92vw, var(--panel-width,420px));background:var(--bg-panel);border-radius:var(--radius-xl);max-height:88vh;animation:panel-slide-up .3s var(--ease-spring);border:2px solid #b8923a1f;flex-direction:column;display:flex;overflow:hidden;box-shadow:0 20px 60px #2a252040,0 0 1px #6a4a2a26}@keyframes panel-slide-up{0%{opacity:0;transform:translateY(24px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}.panel-header{background:linear-gradient(135deg,#fdfaf4,#f8f0e0);border-bottom:1px solid #c0b5a04d;justify-content:space-between;align-items:flex-start;padding:20px 24px 16px;display:flex}.panel-title{font-family:var(--font-display);color:var(--text-primary);margin-bottom:4px;font-size:22px;line-height:1.3}.panel-title .panel-deceased-tag{font-size:11px;font-family:var(--font-body);color:#fff;background:var(--text-muted);vertical-align:middle;border-radius:10px;margin-left:8px;padding:1px 8px;font-weight:500;display:inline-block}.panel-title .panel-special{font-size:11px;font-family:var(--font-body);color:#b8923a;vertical-align:middle;background:#b8923a1a;border:1px solid #b8923a40;border-radius:10px;margin-left:5px;padding:1px 7px;display:inline-block}.panel-title .panel-alias{font-size:13px;font-family:var(--font-body);color:var(--text-secondary);margin-top:2px;font-weight:400;display:block}.panel-subtitle{color:var(--text-muted);letter-spacing:.5px;font-size:13px}.gender-fem{color:var(--color-female)!important}.panel-close{width:32px;height:32px;color:var(--text-muted);cursor:pointer;transition:all var(--duration-fast) ease;background:0 0;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;margin-top:2px;font-size:18px;display:flex}.panel-close:hover{color:var(--text-primary);background:#2a252014}.panel-body{scroll-behavior:smooth;scrollbar-width:thin;scrollbar-color:var(--color-line) transparent;flex:1;padding:20px 24px;overflow-y:auto}.panel-section{border-bottom:1px dashed #c0b5a059;margin-bottom:20px;padding-bottom:16px}.panel-section:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}.section-label{color:var(--text-muted);letter-spacing:1px;text-transform:uppercase;margin-bottom:10px;font-size:13px;font-weight:600}.ending-label{color:var(--color-female)}.notes-label{color:var(--branch-bo)}.section-content{flex-wrap:wrap;gap:6px;display:flex}.daoname-badge{border-radius:var(--radius-sm);color:var(--color-gold);background:linear-gradient(135deg,#b8923a14,#b8923a26);border:1px solid #b8923a33;padding:4px 10px;font-size:13px;font-weight:600;display:inline-flex}.title-chip{background:var(--bg-secondary);border-radius:var(--radius-sm);color:var(--text-secondary);white-space:nowrap;padding:3px 9px;font-size:12px;display:inline-block}.cultivation-grid{grid-template-columns:auto 1fr;align-items:baseline;gap:6px 14px;font-size:13px;display:grid}.cult-row.cult-full{border-top:1px dotted #c0b5a066;grid-column:1/-1;margin-top:6px;padding-top:8px}.cult-label{color:var(--text-muted);white-space:nowrap;min-width:52px;font-size:12px}.cult-value{color:var(--text-primary);word-break:break-all}.cult-value.realm-zi_fu{color:var(--color-purple);font-weight:700}.cult-value.realm-zhu_ji{color:var(--realm-color,#9a6a3a);font-weight:600}.cult-value.realm-lian_qi{color:#4a7aba;font-weight:600}.cult-value.realm-tai_xi{color:#6a9a4a}.cult-value.divine{color:var(--color-purple);font-style:italic}.cult-value.artifact{color:var(--color-gold);font-weight:600}.cult-value.sword,.cult-value.sword-ele{color:#6a8a5a;font-style:italic}.cult-value.technique{color:var(--text-secondary);font-size:12px}.relation-grid{gap:8px;font-size:13px;display:grid}.relation-item{align-items:baseline;gap:8px;padding:4px 0;display:flex}.relation-item.clickable{cursor:pointer}.relation-item.clickable:hover .link-name{color:var(--color-accent);text-decoration:underline;text-decoration-thickness:1px}.rel-label{color:var(--text-muted);flex-shrink:0;align-self:start;min-width:56px;padding-top:2px;font-size:12px}.rel-name{color:var(--text-primary);font-weight:500}.link-name{color:var(--branch-bo);cursor:pointer}.relation-group{grid-template-columns:56px 1fr;align-items:start;gap:0 8px;margin-top:4px;display:grid}.rel-list{flex-direction:column;gap:4px;display:flex}.spouse-tag{background:var(--bg-secondary);color:var(--text-primary);white-space:nowrap;border-radius:10px;align-items:center;gap:5px;width:fit-content;padding:2px 8px;font-size:12px;display:inline-flex}.spouse-tag.concubine{opacity:.75;font-size:11px}.spouse-tag.husband{background:linear-gradient(135deg,#eef3f9,#e0e8f2)}.spouse-tag .note{color:var(--text-muted);margin-top:0;font-size:10px;display:inline}.children-list .relation-item{padding:2px 0}.adopt-mark{color:var(--color-gold);background:#b8923a14;border-radius:8px;margin-left:4px;padding:0 5px;font-size:10px;display:inline-block}.ending-text{color:var(--color-female);font-size:13px;line-height:1.65}.notes-text{color:var(--text-secondary);white-space:pre-wrap;font-size:13px;line-height:1.65}.related-grid{flex-wrap:wrap;gap:6px;display:flex}.related-btn{border:1px solid var(--color-line);color:var(--text-secondary);cursor:pointer;transition:all var(--duration-fast) ease;font-size:12px;font-family:var(--font-body);background:0 0;border-radius:16px;padding:4px 12px}.related-btn:hover{background:var(--branch-bo);color:#fff;border-color:var(--branch-bo)}.panel-footer{text-align:center;border-top:1px solid #c0b5a033;padding:12px 24px}.footer-hint{color:var(--text-muted);font-size:11px}.legitimacy-badge{vertical-align:middle;border-radius:3px;margin-left:4px;padding:0 5px;font-size:10px;font-weight:700;line-height:16px;display:inline-block}.legitimacy-badge.legitimate{color:#3a5a9a;background:#5078b426;border:1px solid #5078b44d}.legitimacy-badge.illegitimate{color:#7a5a30;background:#8c643c1f;border:1px solid #8c643c40}.spouse-tag.clickable-spouse{cursor:pointer;transition:background .15s,border-color .15s}.spouse-tag.clickable-spouse:hover{color:#5a3a10;background:#a0783c2e;border-color:#a0783c80}.spouse-role-inline{color:#7a5a30;vertical-align:middle;background:#a0783c1f;border:1px solid #a0783c40;border-radius:3px;margin-left:6px;padding:0 5px;font-size:10px;font-weight:600;line-height:16px;display:inline-block}.toolbar{justify-content:space-between;align-items:center;gap:var(--space-md);background:linear-gradient(#fcf8f0,#fcf8f0d9);border-bottom:1px solid #c0b5a04d;flex-wrap:wrap;padding:12px 24px;display:flex}.toolbar-tabs{align-items:center;gap:4px;display:flex}.toolbar-label{color:var(--text-muted);margin-right:6px;font-size:12px;font-weight:500}.tab-btn{color:var(--text-secondary);cursor:pointer;font-size:13px;font-family:var(--font-body);transition:all var(--duration-fast) ease;white-space:nowrap;background:0 0;border:1px solid #0000;border-radius:16px;padding:5px 14px}.tab-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.tab-btn.active{background:var(--branch-bo,#4a6fa5);color:#fff;box-shadow:0 2px 8px #4a6fa533}.toolbar-right{align-items:center;gap:10px;display:flex}.filter-select{border:1px solid var(--color-line);background:var(--bg-card);color:var(--text-secondary);font-size:12px;font-family:var(--font-body);cursor:pointer;appearance:none;transition:border-color var(--duration-fast) ease;background-image:url("data:image/svg+xml,%3Csvg width='8' height='5' viewBox='0 0 8 5' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1L4 4L7 1' stroke='%235a5045' stroke-width='1.2' stroke-linecap='round'/%3E%3C/svg%3E");background-position:right 9px center;background-repeat:no-repeat;border-radius:16px;padding:6px 28px 6px 10px}.filter-select:focus{border-color:var(--branch-bo);outline:none}.search-box{align-items:center;min-width:180px;display:flex;position:relative}.search-box.focused .search-input{width:220px}.search-icon{width:15px;height:15px;color:var(--text-muted);pointer-events:none;opacity:.6;position:absolute;left:10px}.search-input{border:1px solid var(--color-line);background:var(--bg-card);width:180px;color:var(--text-primary);font-size:12px;font-family:var(--font-body);transition:all var(--duration-normal) ease;border-radius:16px;padding:6px 32px 6px 30px}.search-input::placeholder{color:var(--text-muted)}.search-input:focus{border-color:var(--branch-bo);outline:none;width:220px;box-shadow:0 0 0 2px #4a6fa514}.search-clear{background:var(--bg-secondary);width:18px;height:18px;color:var(--text-muted);cursor:pointer;transition:all var(--duration-fast) ease;border:none;border-radius:50%;justify-content:center;align-items:center;font-size:11px;display:flex;position:absolute;right:8px}.search-clear:hover{background:var(--text-muted);color:#fff}.stat-badge{font-family:var(--font-body);background:linear-gradient(135deg,#b8923a0f,#b8923a1f);border:1px solid #b8923a2e;border-radius:14px;align-items:baseline;gap:3px;padding:5px 12px;display:inline-flex}.stat-num{color:var(--color-gold);font-size:15px;font-weight:700}.stat-badge span:last-child{color:var(--text-muted);font-size:12px}.view-mode-btn{color:var(--text-secondary);font-size:12px;font-family:var(--font-body);cursor:pointer;white-space:nowrap;background:#fcf8f0cc;border:1px solid #b4a07859;border-radius:16px;padding:5px 14px;transition:background .2s,border-color .2s,color .2s,transform .15s}.view-mode-btn:hover{color:var(--text-primary);background:#b8923a1a;border-color:#b4a0788c;transform:scale(1.03)}.poem-banner{cursor:pointer;transition:background var(--duration-normal) ease;margin:0 0 4px;padding:14px 24px}.poem-banner:hover{background:#b8923a08}.poem-inner{align-items:center;gap:16px;display:flex}.poem-label{font-family:var(--font-display);color:var(--text-muted);letter-spacing:3px;opacity:.7;flex-shrink:0;font-size:14px}.poem-text{font-family:var(--font-display);color:var(--color-gold);letter-spacing:6px;-webkit-user-select:none;user-select:none;font-size:18px}.poem-text:not(.revealed) .poem-char{opacity:0;animation:char-reveal .4s var(--ease-out) forwards;display:inline-block}.poem-text.revealed .poem-char{opacity:1}@keyframes char-reveal{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.poem-char.key-char{color:var(--branch-bo);font-weight:700;position:relative}.poem-char.key-char:after{content:"";opacity:.3;background:currentColor;border-radius:1px;height:2px;position:absolute;bottom:-1px;left:0;right:0}.poem-hint{color:var(--text-muted);opacity:0;transition:opacity var(--duration-fast) ease;white-space:nowrap;font-size:11px}.poem-banner:hover .poem-hint,.poem-text.revealed~.poem-hint{opacity:.7}.char-pair-table{max-height:0;transition:max-height var(--duration-slow) ease, padding var(--duration-slow) ease;border-top:1px dashed #c0b5a059;margin-top:14px;padding-top:12px;overflow:hidden}.poem-text.revealed~.char-pair-table{max-height:300px;padding-bottom:8px}.char-pair-table table{border-collapse:collapse;width:100%;font-size:13px}.char-pair-table th,.char-pair-table td{text-align:center;padding:5px 10px}.char-pair-table th{color:var(--text-muted);text-transform:uppercase;letter-spacing:1px;border-bottom:1px solid #c0b5a04d;font-size:11px;font-weight:500}.char-pair-table td{color:var(--text-primary)}.male-char{color:var(--color-male);font-weight:600}.female-char{color:var(--color-female);font-weight:600}
