:root{--ink:#0c1218;--ink-soft:#141c26;--paper:#e8dcc8;--paper-dim:#c4b49a;--cinnabar:#c44536;--gold:#d4a84b;--mist:#e8dcc81f;--line:#d4a84b47;--washi:#f2e9d6;--washi-hi:#f8f2e4;--washi-lo:#e6d9be;--washi-edge:#6e502c66;--washi-line:#6e502c38;--sumi:#2a211a;--sumi-soft:#6e5c47;--zhu:#b23a2b;--zhu-wash:#b23a2b17;--washi-shadow:0 6px 18px #3a261233, 0 1px 2px #3a261238;--washi-grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0.32 0 0 0 0 0.22 0 0 0 0 0.12 0 0 0 0.16 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23g)'/%3E%3C/svg%3E");--font-display:"Ma Shan Zheng", "ZCOOL XiaoWei", serif;--font-title:"ZCOOL XiaoWei", "Noto Serif SC", serif;--font-body:"Noto Serif SC", serif;color:var(--sumi);background:var(--washi);font-family:var(--font-body);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%;margin:0;overflow:hidden}button,input,select,textarea{font:inherit;color:inherit}.app-shell{grid-template-rows:1fr auto;grid-template-columns:1fr minmax(280px,340px);height:100%;display:grid;position:relative}.app-shell.is-rail-collapsed{grid-template-columns:1fr 64px}.app-shell__map{background:#dce3ea;grid-area:1/1;width:100%;height:100%;min-height:0;position:relative}.map-root-wrap{z-index:0;position:absolute;inset:0}.map-root{width:100%;height:100%;position:absolute;inset:0}.map-root__ribbons{pointer-events:none;z-index:2;width:100%;height:100%;position:absolute;inset:0}.map-loading{z-index:4;background-color:#f2e9d6b8;background-image:var(--washi-grain);color:var(--sumi-soft);font-family:var(--font-title);letter-spacing:.32em;pointer-events:none;place-items:center;font-size:.95rem;display:grid;position:absolute;inset:0}.map-error{z-index:5;text-align:center;background-color:#f2e9d6f2;background-image:var(--washi-grain);color:var(--sumi);place-content:center;gap:.5rem;padding:2rem;display:grid;position:absolute;inset:0}.map-error__hint{max-width:28rem;color:var(--sumi-soft);margin:.5rem auto 0;font-size:.85rem;line-height:1.6}.map-error code{color:var(--zhu);font-size:.85em}.map-error a{color:var(--zhu)}.map-vignette{pointer-events:none;z-index:1;background:radial-gradient(at 40% 35%,#0000 58%,#3a261238 100%),linear-gradient(90deg,#3a26121f,#0000 22%);position:absolute;inset:0}.map-noise{pointer-events:none;opacity:.045;z-index:1;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");position:absolute;inset:0}.map-classical-wash{pointer-events:none;z-index:1;opacity:0;mix-blend-mode:multiply;background:radial-gradient(at 50% 40%,#e8d2aa26,#0000 65%),linear-gradient(160deg,#c4a06438,#785a321f 45%,#3c2a1c2e);transition:opacity .25s;position:absolute;inset:0}.app-shell__map.is-classical-fallback{--classical-strength:.85;background:#cbb896}.app-shell__map.is-classical-fallback .map-root{filter:sepia(calc(.42 * var(--classical-strength))) saturate(calc(1 - .28 * var(--classical-strength))) contrast(calc(1 - .06 * var(--classical-strength))) brightness(calc(1 + .04 * var(--classical-strength)))}.app-shell__map.is-classical-fallback .map-classical-wash{opacity:calc(.55 + .45 * var(--classical-strength))}.app-shell__map.is-classical-fallback .map-vignette{background:radial-gradient(ellipse at 30% 20%, transparent 50%, rgba(48, 32, 18, calc(.22 + .2 * var(--classical-strength))) 100%), linear-gradient(90deg, rgba(48, 32, 18, calc(.14 + .12 * var(--classical-strength))), transparent 24%)}.app-shell__map.is-classical-fallback .map-noise{opacity:calc(.05 + .07 * var(--classical-strength));mix-blend-mode:soft-light}.author-home-link,.dynasty-hint,.map-layer-toggles,.map-attribution,.person-search-hud__query,.work-bubble__card,.catalog-overlay__panel{background-color:var(--washi);background-image:var(--washi-grain), linear-gradient(165deg, var(--washi-hi), var(--washi) 55%, var(--washi-lo));color:var(--sumi);border:1px solid var(--washi-edge);box-shadow:inset 0 0 0 2px var(--washi), inset 0 0 0 3px var(--washi-line), var(--washi-shadow)}.map-topleft{pointer-events:none;z-index:2;flex-direction:column;align-items:flex-start;gap:.6rem;max-width:min(22rem,100% - 2.2rem);display:flex;position:absolute;top:1.1rem;left:1.1rem}.map-topleft>*{pointer-events:auto}.author-home-link{box-shadow:var(--washi-shadow);border-radius:50%;flex-shrink:0;padding:3px;line-height:0;transition:border-color .15s,transform .15s;display:block;overflow:hidden}.author-home-link:hover{border-color:var(--zhu);transform:translateY(-1px)}.author-home-link img{object-fit:cover;border-radius:50%;width:2.5rem;height:2.5rem;display:block}.dynasty-hint{border-radius:2px;flex-direction:column;gap:.2rem;padding:.6rem 1rem .65rem 1.25rem;animation:.55s both dynasty-in;display:flex;position:relative}.dynasty-hint:before{content:"";background:var(--zhu);width:2px;position:absolute;top:.6rem;bottom:.6rem;left:.6rem}.dynasty-hint__label{letter-spacing:.4em;color:var(--sumi-soft);font-size:.66rem}.dynasty-hint__row{align-items:center;gap:.6rem;display:flex}.dynasty-hint__era{font-family:var(--font-display);color:var(--zhu);letter-spacing:.1em;border:1px solid #b23a2b8c;border-radius:2px;padding:.1rem .35rem .05rem;font-size:.95rem;font-weight:400;line-height:1.1;animation:.4s both dynasty-name-in}.dynasty-hint__name{font-family:var(--font-display);color:var(--sumi);letter-spacing:.12em;font-size:2rem;font-weight:400;line-height:1.05;text-decoration:none;transition:color .15s;animation:.4s both dynasty-name-in}a.dynasty-hint__name:hover{color:var(--zhu)}@keyframes dynasty-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}@keyframes dynasty-name-in{0%{opacity:0;transform:translate(-4px)}to{opacity:1;transform:translate(0)}}.map-layer-toggles{pointer-events:auto;z-index:2;border-radius:2px;width:9.75rem;padding:.35rem .55rem;position:absolute;top:1.1rem;right:1.1rem}.map-layer-toggles:not(.is-open){width:auto}.map-layer-toggles__head{width:100%;color:var(--sumi);cursor:pointer;background:0 0;border:0;justify-content:space-between;align-items:center;gap:.6rem;padding:.2rem .15rem;display:flex}.map-layer-toggles__title{font-family:var(--font-title);letter-spacing:.4em;margin-right:-.4em;font-size:.88rem}.map-layer-toggles__caret{color:var(--sumi-soft);font-size:.7rem;transition:transform .2s}.map-layer-toggles:not(.is-open) .map-layer-toggles__caret{transform:rotate(-90deg)}.map-layer-toggles__head:hover .map-layer-toggles__caret{color:var(--zhu)}.map-layer-toggles__body{border-top:1px dashed var(--washi-line);margin-top:.3rem;padding:.5rem 0 .25rem;animation:.2s both fade-in}.map-layer-toggles__grid{grid-template-columns:1fr 1fr;gap:.3rem;display:grid}.map-layer-toggles__chip{border:1px solid var(--washi-line);color:var(--sumi-soft);letter-spacing:.14em;cursor:pointer;background:#fffcf473;border-radius:2px;justify-content:center;align-items:center;gap:.35rem;padding:.3rem .35rem;font-size:.8rem;transition:border-color .15s,background .15s,color .15s;display:flex}.map-layer-toggles__chip:before{content:"";opacity:.7;border:1px solid;border-radius:50%;flex-shrink:0;width:6px;height:6px}.map-layer-toggles__chip.is-on{color:var(--sumi);background:var(--zhu-wash);border-color:#b23a2b73}.map-layer-toggles__chip.is-on:before{background:var(--zhu);border-color:var(--zhu);opacity:1}.map-layer-toggles__chip:hover{border-color:var(--zhu);color:var(--sumi)}.map-layer-toggles__chip:focus-visible,.map-layer-toggles__head:focus-visible{outline:1px solid var(--zhu);outline-offset:1px}.map-layer-toggles__opacity{color:var(--sumi-soft);letter-spacing:.12em;cursor:default;flex-direction:column;gap:.4rem;margin-top:.55rem;padding:0 .1rem;display:flex}.map-layer-toggles__opacity.is-disabled{opacity:.45}.map-layer-toggles__opacity-head{justify-content:space-between;align-items:baseline;gap:.5rem;font-size:.74rem;display:flex}.map-layer-toggles__opacity-val{color:var(--zhu);letter-spacing:.04em;font-variant-numeric:tabular-nums}.map-layer-toggles__opacity-range{appearance:none;cursor:pointer;background:#6e502c38;border-radius:999px;outline:none;width:100%;height:3px}.map-layer-toggles__opacity-range::-webkit-slider-thumb{-webkit-appearance:none;background:var(--zhu);border:2px solid var(--washi-hi);cursor:grab;border-radius:50%;width:13px;height:13px;box-shadow:0 0 0 1px #b23a2b73}.map-layer-toggles__opacity-range::-moz-range-thumb{background:var(--zhu);border:2px solid var(--washi-hi);cursor:grab;border-radius:50%;width:13px;height:13px;box-shadow:0 0 0 1px #b23a2b73}.map-layer-toggles__opacity-range:disabled{cursor:not-allowed}.map-attribution{pointer-events:auto;z-index:2;max-width:min(21rem,100% - 7rem);color:var(--sumi);letter-spacing:.04em;border-radius:2px;padding:.45rem .75rem .5rem;font-size:.68rem;line-height:1.5;position:absolute;bottom:3.7rem;left:.7rem}.map-attribution__line{margin:0}.map-attribution__line+.map-attribution__line{margin-top:.1rem}.map-attribution__line--dim{color:var(--sumi-soft)}.map-attribution a{color:var(--zhu);border-bottom:1px solid #b23a2b4d;text-decoration:none}.map-attribution a:hover{border-bottom-color:var(--zhu)}.catalog-overlay{z-index:5;pointer-events:none;justify-content:stretch;align-items:stretch;padding:1.1rem;display:flex;position:absolute;inset:0}.catalog-overlay__dim{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);pointer-events:auto;background:#2a1e125c;animation:.25s both fade-in;position:absolute;inset:0}.catalog-overlay__panel{z-index:1;pointer-events:auto;border-radius:2px;flex-direction:column;width:min(720px,100%);max-height:100%;margin-right:auto;padding:1.1rem 1.3rem 1.3rem 1.5rem;animation:.3s both fade-up;display:flex;position:relative;overflow:auto}.catalog-overlay__panel:before{content:"";background:var(--zhu);width:2px;position:absolute;top:1.1rem;bottom:1.1rem;left:.7rem}.catalog-overlay__head{border-bottom:1px solid var(--washi-line);justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.9rem;padding-bottom:.7rem;display:flex}.catalog-overlay__head h2{font-family:var(--font-display);letter-spacing:.12em;color:var(--sumi);margin:0;font-size:1.75rem;font-weight:400}.catalog-overlay .btn-ghost{border-color:var(--washi-edge);color:var(--sumi-soft);background:#fffcf480}.catalog-overlay .btn-ghost:hover{border-color:var(--zhu);color:var(--zhu)}.catalog-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:.55rem;margin:0;padding:0;list-style:none;display:grid}.catalog-tile{color:var(--sumi);border:1px solid var(--washi-line);background:#fffcf473;border-radius:2px;flex-direction:column;gap:.25rem;padding:.75rem .8rem;text-decoration:none;transition:border-color .15s,background .15s,transform .15s;display:flex}.catalog-tile strong{font-family:var(--font-title);letter-spacing:.08em;font-size:1.05rem;font-weight:400}.catalog-tile:hover{border-color:var(--zhu);background:var(--zhu-wash);transform:translateY(-1px)}.catalog-tile small{color:var(--sumi-soft)}.catalog-filters{flex-wrap:wrap;gap:.35rem;margin-bottom:.9rem;display:flex}.catalog-filters a{color:var(--sumi-soft);border:1px solid var(--washi-line);border-radius:2px;padding:.2rem .6rem;font-size:.82rem;text-decoration:none;transition:border-color .15s,color .15s}.catalog-filters a:hover{color:var(--zhu);border-color:var(--zhu)}.catalog-filters a.is-active{color:#fbf4e6;background:var(--zhu);border-color:var(--zhu)}.catalog-people{margin:0;padding:0;list-style:none}.catalog-person{color:var(--sumi);border-bottom:1px dashed var(--washi-line);align-items:baseline;gap:.75rem;padding:.55rem .2rem;text-decoration:none;display:flex}.catalog-person strong{font-family:var(--font-title);letter-spacing:.06em;font-size:1.02rem;font-weight:400;transition:color .15s}.catalog-person:hover strong{color:var(--zhu)}.catalog-person small{color:var(--sumi-soft)}.side-rail{z-index:3;background-color:var(--washi);background-image:var(--washi-grain), linear-gradient(180deg, var(--washi-hi) 0%, var(--washi) 40%, var(--washi-lo) 100%);color:var(--sumi);border-left:1px solid var(--washi-edge);box-shadow:inset 3px 0 0 var(--washi-hi), inset 4px 0 0 var(--washi-line), -6px 0 18px #3a261224;scrollbar-width:thin;scrollbar-color:#6e502c52 transparent;flex-direction:column;grid-area:1/2/span 2;gap:.9rem;padding:1.25rem 1.1rem 1rem;animation:.7s both rail-in;display:flex;overflow:auto}@keyframes rail-in{0%{opacity:0;transform:translate(16px)}to{opacity:1;transform:none}}.brand{border-bottom:1px solid var(--washi-line);align-items:center;gap:.85rem;padding-bottom:.9rem;display:flex;position:relative}.brand__text{flex:1;min-width:0}.brand__seal{background:var(--zhu);color:#fbf3e4;width:3rem;height:3rem;font-family:var(--font-display);box-shadow:inset 0 0 0 2px var(--zhu), inset 0 0 0 3px #fbf3e48c, 0 2px 6px #781e1440;border-radius:4px;flex-shrink:0;place-items:center;font-size:1.9rem;line-height:1;text-decoration:none;animation:1.1s both seal-press;display:grid;transform:rotate(-3deg)}@keyframes seal-press{0%{opacity:0;transform:rotate(-3deg)scale(1.3)}60%{opacity:1;transform:rotate(-3deg)scale(.96)}to{transform:rotate(-3deg)scale(1)}}.brand__title{font-family:var(--font-display);letter-spacing:.1em;color:var(--sumi);margin:0;font-size:2rem;font-weight:400;line-height:1.1}.brand__sub{color:var(--sumi-soft);letter-spacing:.18em;margin:.15rem 0 0;font-size:.8rem}.brand__home{color:inherit;text-decoration:none}.side-rail__heading{letter-spacing:.14em;color:var(--zhu);justify-content:space-between;align-items:baseline;gap:.5rem;margin:0;font-size:.78rem;display:flex}.side-rail__heading a{color:var(--sumi-soft);text-decoration:none}.side-rail__heading a:hover{color:var(--zhu)}.person-detail__meta a{color:var(--zhu);text-decoration:none}.person-detail__meta a:hover{text-decoration:underline}.btn-ghost.is-active{border-color:var(--zhu);color:var(--zhu);background:var(--zhu-wash)}.dynasty-card{color:inherit;text-decoration:none}.person-search{position:relative}.person-search__input{appearance:none;border:1px solid var(--washi-edge);width:100%;color:var(--sumi);letter-spacing:.06em;background:#fffcf4a6;border-radius:2px;padding:.5rem .75rem;transition:border-color .15s,box-shadow .15s}.person-search__input::placeholder{color:var(--sumi-soft);opacity:.8;letter-spacing:.12em}.person-search__input:focus{border-color:var(--zhu);box-shadow:0 0 0 3px var(--zhu-wash);outline:none}.person-search__list{z-index:4;background-color:var(--washi-hi);background-image:var(--washi-grain);border:1px solid var(--washi-edge);box-shadow:var(--washi-shadow);max-height:16rem;margin:0;padding:.25rem 0;list-style:none;position:absolute;top:calc(100% + .25rem);left:0;right:0;overflow:auto}.person-search__item{width:100%;color:var(--sumi);cursor:pointer;text-align:left;background:0 0;border:0;justify-content:space-between;align-items:baseline;gap:.5rem;padding:.4rem .75rem;display:flex}.person-search__item small{color:var(--sumi-soft);font-size:.75rem}.person-search__item:hover,.person-search__item.is-active{background:var(--zhu-wash);color:var(--zhu)}.person-search__empty{color:var(--sumi-soft);padding:.45rem .75rem;font-size:.8rem}.person-search.is-compact{width:100%;position:relative}.person-search.is-compact .person-search__icon-btn{border:1px solid var(--washi-edge);width:100%;color:var(--sumi);cursor:pointer;letter-spacing:.08em;background:#fffcf480;border-radius:2px;padding:.4rem .2rem}.person-search.is-compact .person-search__icon-btn:hover{border-color:var(--zhu);color:var(--zhu)}.person-search.is-compact:not(.is-open) .person-search__input,.person-search.is-compact:not(.is-open) .person-search__list{clip:rect(0 0 0 0);opacity:0;pointer-events:none;width:1px;height:1px;position:absolute;overflow:hidden}.person-search.is-compact.is-open .person-search__input{z-index:5;opacity:1;clip:auto;pointer-events:auto;background:var(--washi-hi);width:min(220px,55vw);height:auto;box-shadow:var(--washi-shadow);position:absolute;top:0;right:calc(100% + .5rem)}.person-search.is-compact.is-open .person-search__list{z-index:5;width:min(220px,55vw);position:absolute;left:auto;right:calc(100% + .5rem)}.side-rail__actions{grid-template-columns:repeat(4,minmax(0,1fr));gap:.35rem;display:grid}.side-rail__actions .btn-primary,.side-rail__actions .btn-ghost{letter-spacing:.06em;white-space:nowrap;padding:.42rem .2rem;font-size:.82rem}.side-rail__actions .btn-primary{color:var(--zhu);background:0 0;border-color:#b23a2b80}.side-rail__actions .btn-primary:hover:not(:disabled){filter:none;background:var(--zhu-wash);border-color:var(--zhu)}.btn-primary,.btn-ghost{cursor:pointer;border:1px solid #0000;border-radius:2px;padding:.45rem .75rem;transition:background .2s,border-color .2s,color .2s}.btn-primary{background:var(--zhu);color:#fbf4e6;letter-spacing:.12em;flex:1}.btn-primary:hover:not(:disabled){filter:brightness(1.08)}.btn-primary:disabled{opacity:.45;cursor:not-allowed}.btn-ghost{border-color:var(--washi-edge);color:var(--sumi-soft);background:#fffcf473;justify-content:center;align-items:center;text-decoration:none;display:inline-flex}.btn-ghost:hover:not(:disabled){border-color:var(--zhu);color:var(--zhu)}.btn-ghost:disabled{opacity:.45;cursor:not-allowed}.btn-ghost--tiny{margin-left:auto;padding:.1rem .4rem;font-size:.72rem}.btn-reset{letter-spacing:.1em;background:0 0;border-style:dashed;width:100%;margin-top:auto;font-size:.78rem}.btn-rail-toggle{border:1px solid var(--washi-edge);cursor:pointer;color:var(--sumi-soft);letter-spacing:.08em;background:#fffcf480;border-radius:2px;flex-shrink:0;align-self:flex-start;padding:.32rem .6rem;font-size:.8rem;transition:border-color .2s,color .2s}.btn-rail-toggle:hover{border-color:var(--zhu);color:var(--zhu)}.btn-rail-toggle--expand{white-space:nowrap;background:var(--zhu);border-color:var(--zhu);color:#fbf4e6;align-self:stretch;width:100%;min-height:2.75rem;margin-top:auto;padding:.4rem .2rem;font-size:.95rem}.btn-rail-toggle--expand:hover{color:#fbf4e6;filter:brightness(1.08)}.side-rail.is-collapsed{align-items:center;gap:.55rem;padding:.75rem .45rem;overflow:visible}.side-rail.is-collapsed .brand{border-bottom:0;flex-direction:column;gap:.35rem;padding-bottom:0}.side-rail.is-collapsed .brand__text,.side-rail.is-collapsed .side-rail__heading,.side-rail.is-collapsed .person-list,.side-rail.is-collapsed .person-detail,.side-rail.is-collapsed .btn-reset,.side-rail.is-collapsed .side-rail__catalog-link{display:none}.side-rail.is-collapsed .side-rail__actions{flex-direction:column;align-items:stretch;width:100%;display:flex}.side-rail.is-collapsed .side-rail__actions .btn-primary,.side-rail.is-collapsed .side-rail__actions .btn-ghost{flex:none;justify-content:center;width:100%;padding:.4rem .2rem;font-size:.78rem}.side-rail.is-collapsed .brand__seal{width:2.4rem;height:2.4rem;font-size:1.45rem;text-decoration:none}.person-list{flex-direction:column;gap:.35rem;margin:0;padding:0;list-style:none;display:flex}.person-card{text-align:left;width:100%;color:inherit;border:1px solid var(--washi-line);cursor:pointer;background:#fffcf466;border-radius:2px;align-items:center;gap:.7rem;padding:.5rem .6rem;text-decoration:none;transition:border-color .2s,background .2s,box-shadow .2s;display:flex}.person-card:hover{background:#fffcf4bf;border-color:#b23a2b73}.person-card.is-active{background:var(--zhu-wash);box-shadow:inset 3px 0 0 var(--zhu);border-color:#b23a2b8c}.person-card.is-dim{opacity:.4}.person-card__avatar{border:1.5px solid var(--zhu);object-fit:cover;background:var(--washi-lo);width:2.3rem;height:2.3rem;box-shadow:0 0 0 2px var(--washi-hi);border-radius:50%;flex-shrink:0}.person-detail__head{align-items:center;gap:.8rem;margin-bottom:.65rem;display:flex}.person-detail__avatar{border:2px solid var(--zhu);object-fit:cover;background:var(--washi-lo);width:3.4rem;height:3.4rem;box-shadow:0 0 0 3px var(--washi-hi), 0 3px 10px #3a261233;border-radius:50%;flex-shrink:0}.person-detail__head>div{flex:1;min-width:0}.person-detail__meta{color:var(--sumi-soft);margin:0!important;font-size:.82rem!important}.person-detail__intro{line-height:1.75;color:var(--sumi)!important;margin:0 0 .85rem!important;font-size:.86rem!important}.sighting-list{list-style:none;padding-left:0!important}.sighting-list__btn{text-align:left;width:100%;color:inherit;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:2px;align-items:baseline;gap:.45rem;padding:.25rem .4rem;display:flex}.sighting-list__btn:hover{border-color:var(--washi-line);background:#fffcf499}.sighting-list__btn.is-active{background:var(--zhu-wash);color:var(--sumi);border-color:#b23a2b80}.person-fields{border:1px solid var(--washi-line);background:#fffcf473;border-radius:2px;grid-template-columns:3.2rem 1fr;gap:.3rem .5rem;margin:0 0 .85rem;padding:.6rem .7rem;font-size:.82rem;display:grid}.person-fields dt{color:var(--zhu);letter-spacing:.1em;margin:0}.person-fields dd{color:var(--sumi);margin:0}.person-card__body{flex-direction:column;gap:.15rem;min-width:0;display:flex}.person-card__body strong{font-family:var(--font-title);letter-spacing:.04em;color:var(--sumi);font-size:1.02rem;font-weight:400}.person-card__body em{font-family:var(--font-body);color:var(--sumi-soft);font-size:.8em;font-style:normal;font-weight:400}.person-card__body small{color:var(--sumi-soft);white-space:nowrap;text-overflow:ellipsis;font-size:.74rem;overflow:hidden}.person-detail{border-top:1px solid var(--washi-line);padding-top:.85rem;animation:.35s both fade-up}@keyframes fade-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.person-detail h2{font-family:var(--font-display);letter-spacing:.08em;color:var(--sumi);align-items:center;gap:.5rem;margin:0 0 .2rem;font-size:1.6rem;font-weight:400;display:flex}.person-detail p{color:var(--sumi-soft);margin:0 0 .75rem;font-size:.86rem;line-height:1.55}.person-detail h3{letter-spacing:.22em;color:var(--zhu);align-items:center;gap:.45rem;margin:.75rem 0 .4rem;font-size:.78rem;font-weight:600;display:flex}.person-detail h3:before{content:"";background:var(--zhu);width:5px;height:5px;transform:rotate(45deg)}.person-detail h3:after{content:"";background:var(--washi-line);flex:1;height:1px}.sighting-list,.work-list{color:var(--sumi);margin:0;padding:0 0 0 1.1rem;font-size:.8rem;line-height:1.6}.work-list li+li{margin-top:.15rem}.work-list small{color:var(--sumi-soft);margin-left:.35rem;font-size:.72rem}.sighting-list time{color:var(--zhu);font-variant-numeric:tabular-nums;flex-shrink:0}.timeline{z-index:4;background-color:var(--washi);background-image:var(--washi-grain), linear-gradient(180deg, var(--washi-hi), var(--washi) 60%, var(--washi-lo));color:var(--sumi);border-top:1px solid var(--washi-edge);box-shadow:inset 0 3px 0 var(--washi-hi), inset 0 4px 0 var(--washi-line), 0 -6px 18px #3a261224;grid-area:2/1;padding:.75rem 1.25rem .85rem;position:relative}.timeline__grain{display:none}.timeline__inner{flex-direction:column;gap:.5rem;display:flex;position:relative}.timeline__controls{flex-wrap:wrap;align-items:center;gap:.45rem;display:flex}.tl-btn{border:1px solid var(--washi-edge);cursor:pointer;width:2rem;height:2rem;color:var(--sumi);background:#fffcf48c;border-radius:2px;place-items:center;transition:border-color .15s,color .15s;display:grid}.tl-btn:hover:not(:disabled){border-color:var(--zhu);color:var(--zhu)}.tl-btn--play{background:var(--zhu);border-color:var(--zhu);color:#fbf4e6;width:2.4rem;height:2.4rem;box-shadow:0 0 0 3px var(--washi-hi), 0 0 0 4px #b23a2b59, 0 3px 8px #781e1440;border-radius:50%}.tl-btn--play:hover:not(:disabled){color:#fbf4e6;filter:brightness(1.08)}.timeline__date{align-items:baseline;gap:.55rem;margin-left:.5rem;display:flex}.timeline__era{letter-spacing:.3em;color:var(--sumi-soft);font-size:.7rem}.timeline__date strong{font-family:var(--font-title);letter-spacing:.04em;color:var(--zhu);font-variant-numeric:tabular-nums;font-size:1.35rem;font-weight:400}.timeline__jump{border-left:1px solid var(--washi-line);color:var(--sumi-soft);flex-wrap:nowrap;align-items:center;gap:.3rem;margin-left:.6rem;padding-left:.85rem;font-size:.78rem;display:flex}.timeline__jump>span{letter-spacing:.12em;margin-right:.2rem}.timeline__jump .tl-btn{width:1.7rem;height:1.7rem}.timeline__jump .tl-btn:disabled,.timeline__pace .tl-btn:disabled{opacity:.35;cursor:default}.timeline__jump-step{border:1px solid var(--washi-line);min-width:2rem;color:var(--sumi-soft);font-variant-numeric:tabular-nums;cursor:pointer;background:#fffcf473;border-radius:2px;padding:.2rem .4rem;font-size:.78rem}.timeline__jump-step:hover{border-color:var(--zhu);color:var(--zhu)}.timeline__jump-step.is-on{border-color:var(--zhu);color:var(--zhu);background:var(--zhu-wash)}.timeline__speed-wrap{flex-wrap:wrap;align-items:center;gap:.75rem;margin-left:auto;display:flex}.timeline__speed{color:var(--sumi-soft);align-items:center;gap:.4rem;font-size:.78rem;display:flex}.timeline__speed select{border:1px solid var(--washi-edge);color:var(--sumi);cursor:pointer;background:#fffcf48c;border-radius:2px;padding:.25rem .4rem}.timeline__speed select:focus{border-color:var(--zhu);outline:none}.timeline__pace{border-left:1px solid var(--washi-line);color:var(--sumi-soft);align-items:center;gap:.35rem;padding-left:.75rem;font-size:.78rem;display:flex}.timeline__pace .tl-btn{width:1.7rem;height:1.7rem}.timeline__pace-rate{text-align:center;min-width:2.4rem;color:var(--sumi);font-variant-numeric:tabular-nums}.timeline__skip{border:1px solid var(--washi-line);color:var(--sumi-soft);letter-spacing:.06em;cursor:pointer;background:#fffcf473;border-radius:2px;padding:.25rem .6rem;font-size:.78rem}.timeline__skip.is-on{border-color:var(--zhu);color:var(--zhu);background:var(--zhu-wash)}.timeline__skip:hover{border-color:var(--zhu)}.timeline__track-wrap{flex-direction:column;gap:.2rem;display:flex}.timeline__years{color:var(--sumi-soft);letter-spacing:.06em;font-variant-numeric:tabular-nums;justify-content:space-between;font-size:.7rem;display:flex}.timeline__scrub-row{align-items:center;min-height:18px;padding-top:6px;display:flex;position:relative}.timeline__marks{pointer-events:none;z-index:2;height:0;position:absolute;top:6px;left:0;right:0}.timeline__mark{pointer-events:auto;cursor:pointer;border:0;border-radius:50%;width:7px;height:7px;margin:0;padding:0;transition:transform .15s,box-shadow .15s;position:absolute;top:0;transform:translate(-50%,-50%)}.timeline__mark:hover,.timeline__mark:focus-visible{z-index:3;outline:none;transform:translate(-50%,-50%)scale(1.45)}.timeline__mark--mig{background:var(--washi-hi);width:8px;height:8px;box-shadow:inset 0 0 0 1.5px var(--c,var(--zhu)), 0 0 0 1.5px var(--washi-hi);top:4px}.timeline__mark--mig.is-passed{background:var(--c,var(--zhu));box-shadow:0 0 0 1.5px var(--washi-hi), 0 0 5px var(--c,var(--zhu))}.timeline__mig-labels{height:1.7rem;margin-top:.1rem;position:relative}.timeline__mig-labels--two{height:3.4rem}.timeline__mig-label{white-space:nowrap;color:var(--sumi-soft);pointer-events:none;flex-direction:column;align-items:center;line-height:1.15;display:flex;position:absolute;top:0;transform:translate(-50%)}.timeline__mig-label--row1{top:1.7rem}.timeline__mig-label b{letter-spacing:.02em;font-size:.68rem;font-weight:600}.timeline__mig-label i{opacity:.75;font-size:.62rem;font-style:normal}.timeline__mig-label.is-passed{color:var(--sumi)}.timeline__scrub{appearance:none;z-index:1;background:linear-gradient(90deg, #b23a2bbf 0%, var(--zhu) var(--p,0%), #6e502c29 var(--p,0%), #6e502c29 100%);cursor:pointer;border-radius:999px;outline:none;width:100%;height:6px;position:relative;box-shadow:inset 0 1px 1px #3a261226}.timeline__scrub::-webkit-slider-thumb{-webkit-appearance:none;background:var(--zhu);border:2px solid var(--washi-hi);cursor:grab;border-radius:50%;width:16px;height:16px;box-shadow:0 0 0 1px #b23a2b80,0 2px 6px #781e144d}.timeline__scrub::-moz-range-thumb{background:var(--zhu);border:2px solid var(--washi-hi);cursor:grab;border-radius:50%;width:16px;height:16px;box-shadow:0 0 0 1px #b23a2b80,0 2px 6px #781e144d}.timeline__hint{color:var(--sumi-soft);opacity:.85;letter-spacing:.06em;font-size:.7rem}.guren-marker{cursor:pointer;background:0 0;border:0;width:0;height:0;padding:0;position:relative}.guren-marker__avatar{border:2px solid var(--c,var(--gold));object-fit:cover;z-index:2;background:#0c1218;border-radius:50%;width:28px;height:28px;margin:-14px 0 0 -14px;position:absolute;top:0;left:0;box-shadow:0 0 0 1px #00000080}.guren-marker__pulse{background:var(--c,var(--gold));opacity:0;z-index:1;border-radius:50%;width:28px;height:28px;margin:-14px 0 0 -14px;position:absolute;top:0;left:0}.guren-marker.is-moving .guren-marker__pulse{animation:1.6s ease-out infinite pulse-ring}@keyframes pulse-ring{0%{opacity:.55;transform:scale(1)}to{opacity:0;transform:scale(3.2)}}.guren-marker__label{white-space:nowrap;font-family:var(--font-title);color:var(--paper);text-shadow:0 1px 4px #000,0 0 8px #000;letter-spacing:.08em;font-size:13px;position:absolute;top:-20px;left:16px}.guren-marker.is-selected .guren-marker__label{color:var(--gold)}.guren-marker__arrow{border-left:4px solid #0000;border-right:4px solid #0000;border-bottom:10px solid var(--c,var(--gold));width:0;height:0;transform:rotate(var(--deg,0deg));transform-origin:50% 30px;filter:drop-shadow(0 0 2px #000);margin-top:-30px;margin-left:-4px;position:absolute;top:0;left:0}.work-bubble{pointer-events:none;animation:.45s cubic-bezier(.2,.9,.3,1.2) both bubble-in;transform:translate(-50%,calc(-100% - 50px))}.work-bubble--tencent{z-index:6;margin:0;position:absolute}@keyframes bubble-in{0%{opacity:0;transform:translate(-50%,calc(-100% - 42px))scale(.92)}to{opacity:1;transform:translate(-50%,calc(-100% - 50px))scale(1)}}.work-bubble__card{border-top:3px solid var(--c,var(--zhu));border-radius:2px;min-width:140px;max-width:230px;padding:.6rem .8rem .7rem;position:relative}.work-bubble__card:after{content:"";background:var(--washi-lo);border-right:1px solid var(--washi-edge);border-bottom:1px solid var(--washi-edge);width:10px;height:10px;margin-left:-5px;position:absolute;bottom:-6px;left:50%;transform:rotate(45deg)}.work-bubble__meta{color:var(--sumi-soft);letter-spacing:.06em;font-size:.66rem}.work-bubble__title{font-family:var(--font-title);color:var(--sumi);letter-spacing:.04em;margin-top:.2rem;font-size:1rem}.work-bubble__excerpt{border-left:2px solid var(--c,var(--zhu));font-family:var(--font-title);letter-spacing:.04em;color:#4a3a2a;margin-top:.4rem;padding-left:.5rem;font-size:.8rem;line-height:1.55}.collect-backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:20;background:#2a1e1266;justify-content:flex-end;animation:.25s both fade-in;display:flex;position:fixed;inset:0}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.collect-panel{background-color:var(--washi);background-image:var(--washi-grain), linear-gradient(180deg, var(--washi-hi), var(--washi) 45%, var(--washi-lo));width:min(440px,100%);height:100%;color:var(--sumi);border-left:1px solid var(--washi-edge);box-shadow:inset 3px 0 0 var(--washi-hi), inset 4px 0 0 var(--washi-line), -10px 0 28px #2a1e1240;scrollbar-width:thin;scrollbar-color:#6e502c52 transparent;flex-direction:column;gap:.85rem;padding:1.25rem 1.35rem;animation:.35s both rail-in;display:flex;overflow:auto}.collect-panel__head{border-bottom:1px solid var(--washi-line);justify-content:space-between;gap:1rem;padding-bottom:.75rem;display:flex}.collect-panel__head h2{font-family:var(--font-display);letter-spacing:.1em;color:var(--sumi);margin:0;font-size:1.9rem;font-weight:400}.collect-panel__head p{color:var(--sumi-soft);margin:.25rem 0 0;font-size:.84rem}.collect-form{flex-direction:column;gap:.75rem;display:flex}.collect-field{min-width:0;color:var(--sumi-soft);letter-spacing:.04em;flex-direction:column;gap:.35rem;font-size:.82rem;display:flex}.collect-row{align-items:flex-end;gap:.5rem;display:flex}.collect-row>*{flex:1;min-width:0}.collect-row>.btn-ghost--tiny{flex:none;margin-bottom:.35rem;margin-left:0}.collect-field select,.collect-field textarea,.collect-field input,.collect-row>input,.place-ac input,.time-field input,.time-field select{border:1px solid var(--washi-edge);width:100%;min-width:0;color:var(--sumi);resize:vertical;background:#fffcf4b3;border-radius:2px;padding:.5rem .65rem;transition:border-color .15s,box-shadow .15s}.collect-field input[type=file]{padding:.4rem .5rem;font-size:.78rem}.collect-field select:focus,.collect-field textarea:focus,.collect-field input:focus,.collect-row>input:focus,.place-ac input:focus,.time-field input:focus,.time-field select:focus{border-color:var(--zhu);box-shadow:0 0 0 3px var(--zhu-wash);outline:none}.collect-field ::placeholder,.collect-row>input::placeholder{color:var(--sumi-soft);opacity:.7}.time-field{flex-direction:column;gap:.3rem;display:flex}.time-field__mode{border:1px solid var(--washi-edge);border-radius:2px;align-self:flex-start;display:inline-flex;overflow:hidden}.time-field__mode button{color:var(--sumi-soft);cursor:pointer;background:0 0;border:0;padding:.15rem .6rem;font-size:.74rem}.time-field__mode button+button{border-left:1px solid var(--washi-edge)}.time-field__mode button.is-active{background:var(--zhu);color:#fbf4e6}.time-field__ad,.time-field__era{align-items:center;gap:.3rem;display:flex}.time-field__ad>*,.time-field__era>select,.time-field__era>input{flex:1 1 0;width:auto}.time-field__ad input:first-child{flex-grow:2}.time-field__era em{color:var(--zhu);flex-shrink:0;font-size:.74rem;font-style:normal}.place-ac{display:block;position:relative}.place-ac__list{z-index:3;background-color:var(--washi-hi);background-image:var(--washi-grain);border:1px solid var(--washi-edge);max-height:14rem;box-shadow:var(--washi-shadow);margin:0;padding:.2rem 0;list-style:none;position:absolute;top:calc(100% + .2rem);left:0;right:0;overflow:auto}.place-ac__list button{width:100%;color:var(--sumi);text-align:left;cursor:pointer;background:0 0;border:0;padding:.35rem .65rem}.place-ac__list button small{color:var(--sumi-soft)}.place-ac__list button:hover{background:var(--zhu-wash);color:var(--zhu)}.collect-msg{color:#6b4a12;background:#c4963c1f;border:1px solid #a0701e59;border-radius:2px;padding:.55rem .7rem;font-size:.82rem}.collect-msg--err{color:var(--zhu);background:var(--zhu-wash);border-color:#b23a2b66}.collect-actions{margin-top:auto;padding-top:.25rem}.collect-actions .btn-primary{width:100%;padding:.6rem .75rem}.collect-desk{width:min(520px,100%)}.desk-tabs{border-bottom:1px solid var(--washi-line);gap:.35rem;display:flex}.desk-tab{color:var(--sumi-soft);letter-spacing:.08em;cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;padding:.4rem .75rem;font-size:.9rem}.desk-tab:hover{color:var(--sumi)}.desk-tab.is-active{color:var(--zhu);border-bottom-color:var(--zhu)}.desk-toolbar{flex-wrap:wrap;gap:.4rem;display:flex}.desk-body{flex-direction:column;flex:1;gap:.65rem;min-height:0;display:flex;overflow:auto}.desk-next{background:var(--zhu-wash);border:1px solid #b23a2b59;border-radius:2px;flex-wrap:wrap;align-items:baseline;gap:.5rem .75rem;padding:.65rem .75rem;display:flex}.desk-next__label{letter-spacing:.08em;color:var(--zhu);text-transform:uppercase;font-size:.72rem}.desk-next strong{font-family:var(--font-display);font-size:1.35rem;font-weight:400}.desk-next small,.desk-meta,.desk-log__main small{color:var(--sumi-soft);font-size:.78rem}.desk-counts{color:var(--sumi-soft);gap:1rem;font-size:.8rem;display:flex}.desk-section{letter-spacing:.1em;color:var(--zhu);margin:.35rem 0 0;font-size:.85rem;font-weight:500}.desk-list{flex-direction:column;gap:.2rem;margin:0;padding:0;list-style:none;display:flex}.desk-row{border-bottom:1px dashed var(--washi-line);grid-template-columns:2.2rem 1fr auto;align-items:baseline;gap:.5rem;padding:.35rem .4rem;font-size:.88rem;display:grid}.desk-list--done .desk-row{opacity:.85;grid-template-columns:1fr auto}.desk-pri{color:var(--zhu);font-variant-numeric:tabular-nums;font-size:.72rem}.desk-name{font-weight:500}.desk-empty{color:var(--sumi-soft);padding:.5rem;font-size:.85rem}.desk-log{flex-direction:column;gap:.45rem;margin:0;padding:0;list-style:none;display:flex}.desk-log__row{border-bottom:1px dashed var(--washi-line);grid-template-columns:4.8rem auto 1fr;align-items:start;gap:.45rem;padding:.4rem 0;font-size:.82rem;display:grid}.desk-log__row time{color:var(--sumi-soft);font-variant-numeric:tabular-nums;font-size:.72rem}.desk-log__main{flex-direction:column;gap:.15rem;min-width:0;display:flex}.desk-badge{border:1px solid var(--washi-edge);color:var(--sumi-soft);white-space:nowrap;border-radius:2px;height:fit-content;padding:.12rem .35rem;font-size:.68rem}.desk-badge--collect{color:#8a5a12;border-color:#a0701e73}.desk-badge--import{color:#3f6e5c;border-color:#3f6e5c73}.desk-badge--error{color:var(--zhu);border-color:#b23a2b73}.person-search-hud{pointer-events:none;z-index:8;flex-direction:column;align-items:center;gap:.45rem;max-width:min(36rem,100vw - 2rem);display:flex;position:fixed;bottom:6.5rem;left:50%;transform:translate(-50%)}.person-search-hud__query{border-radius:2px;align-items:baseline;gap:.7rem;padding:.5rem 1rem;display:flex}.person-search-hud__label{letter-spacing:.32em;color:var(--sumi-soft);font-size:.68rem}.person-search-hud__query strong{font-family:var(--font-body);letter-spacing:.18em;color:var(--zhu);text-transform:lowercase;font-size:1.1rem;font-weight:600}.person-search-hud__chips{pointer-events:auto;flex-wrap:wrap;justify-content:center;gap:.35rem;margin:0;padding:0;list-style:none;display:flex}.person-search-hud__chip{border:1px solid var(--washi-edge);background-color:var(--washi);background-image:var(--washi-grain);color:var(--sumi-soft);font:inherit;cursor:pointer;border-radius:2px;align-items:baseline;gap:.35rem;padding:.3rem .6rem;font-size:.82rem;transition:border-color .15s,color .15s;display:flex;box-shadow:0 2px 8px #3a26122e}.person-search-hud__chip small{color:inherit;opacity:.75;font-size:.7rem}.person-search-hud__chip:hover,.person-search-hud__chip.is-active{border-color:var(--zhu);color:var(--sumi);background-color:#f6e4d6}.person-search-hud__chip.is-active{box-shadow:inset 0 0 0 1px var(--zhu), 0 2px 8px #3a26122e}.person-search-hud__empty,.person-search-hud__hint{letter-spacing:.12em;color:var(--sumi-soft);background:#f2e9d6d1;border-radius:999px;margin:0;padding:.15rem .6rem;font-size:.68rem}@media (width<=860px){.app-shell{grid-template-rows:1fr auto auto;grid-template-columns:1fr}.side-rail{border-left:0;border-top:1px solid var(--washi-edge);grid-area:3/1;max-height:38vh;box-shadow:0 -6px 18px #3a261224}.app-shell.is-rail-collapsed{grid-template-columns:1fr}.app-shell.is-rail-collapsed .side-rail{max-height:none}.side-rail.is-collapsed{z-index:5;flex-direction:row;align-items:center;gap:.35rem;padding:.4rem .5rem}.side-rail.is-collapsed .brand{flex-direction:row}.side-rail.is-collapsed .person-search.is-compact{flex:1;width:auto;min-width:2.5rem}.side-rail.is-collapsed .side-rail__actions{flex-direction:row;flex:1;width:auto}.side-rail.is-collapsed .side-rail__actions .btn-primary,.side-rail.is-collapsed .side-rail__actions .btn-ghost{flex:1;width:auto}.side-rail.is-collapsed .btn-rail-toggle--expand{width:auto;min-height:auto;margin-top:0}.side-rail.is-collapsed .person-search.is-compact.is-open .person-search__input{width:min(220px,90vw);inset:auto 0 calc(100% + .5rem) auto}.side-rail.is-collapsed .person-search.is-compact.is-open .person-search__list{width:min(220px,90vw);inset:auto 0 calc(100% + 3.25rem) auto}.app-shell.is-rail-collapsed .person-search-hud{bottom:9rem}.timeline{grid-area:2/1}.timeline__jump{border-left:0;margin-left:0;padding-left:0}.person-search-hud{bottom:calc(38vh + 5.5rem)}.app-shell__map{grid-row:1}.brand__title{font-size:1.6rem}.map-topleft{gap:.45rem;top:.6rem;left:.6rem}.author-home-link img{width:2.1rem;height:2.1rem}.dynasty-hint{padding:.4rem .75rem .45rem 1.05rem}.dynasty-hint:before{top:.45rem;bottom:.45rem;left:.5rem}.dynasty-hint__name{font-size:1.5rem}.map-layer-toggles{top:.6rem;right:.6rem}.map-attribution{max-width:calc(100% - 5.5rem);padding:.3rem .55rem .35rem;font-size:.6rem;left:.5rem}}
