:root{--paper: #f3e6c8;--paper-deep: #e8d5a8;--ink: #2a2216;--ink-soft: rgba(42, 34, 22, .72);--cinnabar: #9a342e;--cinnabar-deep: #7a241f;--moss: #5f7a62;--gold: #b08a4a;--panel-width: 26%;--font-serif: "Source Han Serif SC", "Noto Serif SC", "Songti SC", "SimSun", "STSong", serif;--shadow-scroll: 0 18px 48px rgba(42, 34, 22, .22)}*{box-sizing:border-box;margin:0;padding:0}html,body,#app{height:100%}body{font-family:var(--font-serif);color:var(--ink);background:radial-gradient(ellipse at 20% 0%,rgba(154,52,46,.06),transparent 45%),radial-gradient(ellipse at 90% 80%,rgba(95,122,98,.08),transparent 40%),var(--paper);overflow:hidden}button,input{font:inherit;color:inherit}#app{display:flex;flex-direction:column}.top-menu{flex:none;display:flex;align-items:center;gap:.15rem;padding:0 .85rem;height:2.4rem;background:linear-gradient(180deg,#efe3c2,#e4d2a4);border-bottom:1px solid rgba(42,34,22,.16);z-index:5}.top-menu__item{border:none;background:transparent;padding:.3rem .85rem;letter-spacing:.18em;cursor:pointer;color:var(--ink)}.top-menu__item:hover{background:#9a342e14;color:var(--cinnabar)}.workspace{flex:1;min-height:0;display:flex}.about-card{width:min(360px,100%);text-align:center}.about-card h2{font-size:1.15rem;letter-spacing:.28em;color:var(--cinnabar);margin-bottom:.9rem}.about-card p{font-size:1.05rem;letter-spacing:.16em;line-height:1.8}.poet-panel{width:var(--panel-width);min-width:240px;max-width:360px;padding:1.4rem 1.15rem 1rem;border-right:1px solid rgba(42,34,22,.16);background:linear-gradient(180deg,#f0e2c0,#e7d4a6);display:flex;flex-direction:column;gap:.85rem;position:relative;z-index:2}.poet-panel:after{content:"";position:absolute;inset:12px 10px;border:1px solid rgba(154,52,46,.18);pointer-events:none}.poet-panel__header h1{font-size:1.28rem;font-weight:700;letter-spacing:.14em;line-height:1.35}.poet-panel__subtitle{margin-top:.35rem;font-size:.82rem;color:var(--ink-soft);letter-spacing:.06em}#poet-search{width:100%;padding:.55rem .75rem;border:1px solid rgba(42,34,22,.22);background:#f7efd8e6;outline:none;position:relative;z-index:1;transition:border-color .2s ease,box-shadow .2s ease}#poet-search:focus{border-color:var(--cinnabar);box-shadow:0 0 0 2px #9a342e1f}#poet-search:disabled{opacity:.55;cursor:not-allowed}.poet-meta{position:relative;z-index:1;padding:.7rem .75rem;border-left:3px solid var(--cinnabar);background:#fffaeb8c;animation:fadeRise .35s ease}.poet-meta__dynasty{font-size:.72rem;letter-spacing:.2em;color:var(--cinnabar)}.poet-meta__name{margin-top:.15rem;font-size:1.15rem;font-weight:700;letter-spacing:.2em}.poet-meta__remark{margin-top:.35rem;font-size:.78rem;line-height:1.55;color:var(--ink-soft)}.poet-list{list-style:none;flex:1;overflow:auto;position:relative;z-index:1;padding-right:.2rem}.poet-list__empty{font-size:.88rem;line-height:1.6;color:var(--ink-soft);padding:.5rem .2rem}.poet-item{width:100%;text-align:left;border:none;background:transparent;padding:.65rem .7rem;cursor:pointer;border-bottom:1px dashed rgba(42,34,22,.12);transition:background .2s ease,padding-left .2s ease}.poet-item:hover{background:#9a342e0f;padding-left:.95rem}.poet-item.is-active{background:#9a342e1a;border-left:3px solid var(--cinnabar);padding-left:calc(.7rem - 3px)}.poet-item__name{letter-spacing:.18em;font-weight:600}.map-panel{flex:1;position:relative;min-width:0;display:flex;flex-direction:column}.map-status{position:absolute;top:.9rem;left:50%;transform:translate(-50%);z-index:3;padding:.35rem .9rem;font-size:.8rem;letter-spacing:.08em;color:var(--ink-soft);background:#f3e6c8e0;border:1px solid rgba(42,34,22,.12);pointer-events:none;max-width:min(90%,420px);text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.map{flex:1;position:relative;background:radial-gradient(ellipse at 70% 40%,rgba(154,52,46,.04),transparent 45%),#e2c48a}.map-stage{position:absolute;inset:0;overflow:hidden;display:flex;align-items:center;justify-content:center}.map-bg{position:absolute;inset:0;width:100%;height:100%;display:block}.map-route{stroke-linecap:round;stroke-linejoin:round;pointer-events:none}.map-route--draw{animation:routeDraw .85s ease forwards}@keyframes routeDraw{to{stroke-dashoffset:0}}.map-title-seal{position:absolute;top:3.2rem;right:1.6rem;width:3.2rem;height:3.2rem;border:2px solid var(--cinnabar);color:var(--cinnabar);display:grid;place-items:center;writing-mode:vertical-rl;letter-spacing:.25em;font-size:.78rem;font-weight:700;opacity:.75;transform:rotate(8deg);background:#fff8e659;pointer-events:none}.map-legend{position:absolute;left:1rem;bottom:.85rem;font-size:.72rem;letter-spacing:.12em;color:var(--ink-soft);background:#f3e6c8d1;border:1px solid rgba(42,34,22,.1);padding:.25rem .55rem;pointer-events:none}.map-label{font-family:var(--font-serif);font-size:11px;fill:#5a4a32;opacity:.75;pointer-events:none}.map-label--river{font-size:13px;fill:#8a4e28;font-weight:700;opacity:.9}.map-label--yangtze{fill:#2f5a6a}.map-label--sea{font-size:13px;fill:#1e4a55;font-weight:700;opacity:.8}.map-label--desert{font-size:12px;fill:#7a5a28;opacity:.7}.map-label--frontier{font-size:11px;fill:#6a5a40;opacity:.65}.map-label--mountain{font-size:10px;fill:#5c4a2e;opacity:.8}.map-label--water{font-size:10px;fill:#3f5f68}.map-markers{pointer-events:auto}.map-marker{cursor:pointer;opacity:.5;transition:opacity .25s ease}.map-marker.is-active,.map-marker.is-focus{opacity:1}.map-marker__flower{pointer-events:none}.map-marker__dot{fill:var(--cinnabar);stroke:#f7edd4;stroke-width:2}.map-marker__ring{stroke:#9a342e59;stroke-width:1.5;opacity:0}.map-marker.is-focus .map-marker__ring{opacity:1;transform-origin:center;animation:pulseRing 1.6s ease infinite}@keyframes pulseRing{0%,to{opacity:.9;stroke-width:1.5}50%{opacity:.25;stroke-width:3}}.map-marker__label-bg{fill:#f7edd4f0;stroke:#2a22162e;stroke-width:1}.map-marker__label{font-family:var(--font-serif);font-size:13px;fill:var(--ink);letter-spacing:.12em;pointer-events:none;text-anchor:middle}.map-marker:hover .map-marker__label-bg{stroke:var(--cinnabar)}.map-marker:hover{opacity:1}.overlay{position:fixed;inset:0;z-index:20;display:grid;place-items:center;padding:1.25rem}.overlay[hidden]{display:none!important}.overlay--bubble{padding:0;display:block;background:none;pointer-events:none;place-items:unset}.overlay__backdrop{position:absolute;inset:0;background:#2a221661;animation:fadeIn .25s ease}.poem-bubble{--tail-at: 40%;pointer-events:auto;position:fixed;z-index:1;width:max-content;min-width:12rem;max-width:min(26rem,calc(100vw - 8rem));max-height:22rem;display:flex;flex-direction:column;padding:1.15rem 1.15rem 1rem;background:#f8efd4;border:1.5px solid rgba(42,34,22,.28);border-radius:18px;box-shadow:4px 8px #2a221614,var(--shadow-scroll);animation:cardIn .28s ease;overflow:visible}.poem-bubble .poem-card__title{margin:.4rem 0 .7rem;font-size:1.2rem}.poem-bubble .poem-card__text{flex:1 1 auto;min-height:0;overflow-x:hidden;overflow-y:auto;max-height:13.5rem;font-size:.95rem;line-height:1.8;white-space:pre-wrap;overflow-wrap:anywhere}.poem-bubble .poem-card__footer{margin-top:.85rem}.poem-bubble__tail{position:absolute;width:0;height:0;z-index:2;filter:drop-shadow(1px 1px 0 rgba(42,34,22,.12))}.poem-bubble[data-tail=left] .poem-bubble__tail{left:-16px;top:var(--tail-at);transform:translateY(-50%);border-style:solid;border-width:11px 16px 11px 0;border-color:transparent #f8efd4 transparent transparent}.poem-bubble[data-tail=left] .poem-bubble__tail:before{content:"";position:absolute;left:-1.5px;top:-12px;border-style:solid;border-width:12px 18px 12px 0;border-color:transparent rgba(42,34,22,.28) transparent transparent;z-index:-1}.poem-bubble[data-tail=right] .poem-bubble__tail{right:-16px;top:var(--tail-at);transform:translateY(-50%);border-style:solid;border-width:11px 0 11px 16px;border-color:transparent transparent transparent #f8efd4}.poem-bubble[data-tail=right] .poem-bubble__tail:before{content:"";position:absolute;right:-1.5px;top:-12px;border-style:solid;border-width:12px 0 12px 18px;border-color:transparent transparent transparent rgba(42,34,22,.28);z-index:-1}.poem-bubble[data-tail=top] .poem-bubble__tail{top:-16px;left:var(--tail-at);transform:translate(-50%);border-style:solid;border-width:0 11px 16px 11px;border-color:transparent transparent #f8efd4 transparent}.poem-bubble[data-tail=top] .poem-bubble__tail:before{content:"";position:absolute;top:-1.5px;left:-12px;border-style:solid;border-width:0 12px 18px 12px;border-color:transparent transparent rgba(42,34,22,.28) transparent;z-index:-1}.poem-bubble[data-tail=bottom] .poem-bubble__tail{bottom:-16px;left:var(--tail-at);transform:translate(-50%);border-style:solid;border-width:16px 11px 0 11px;border-color:#f8efd4 transparent transparent transparent}.poem-bubble[data-tail=bottom] .poem-bubble__tail:before{content:"";position:absolute;bottom:-1.5px;left:-12px;border-style:solid;border-width:18px 12px 0 12px;border-color:rgba(42,34,22,.28) transparent transparent transparent;z-index:-1}.poem-bubble[data-tail=none] .poem-bubble__tail{display:none}.scroll-card{position:relative;z-index:1;width:min(520px,100%);max-height:min(86vh,720px);overflow:auto;padding:1.6rem 1.5rem 1.35rem;background:linear-gradient(180deg,#fbf3dd,#f3e4c0);border:1px solid rgba(42,34,22,.2);box-shadow:var(--shadow-scroll);animation:cardIn .35s ease}.scroll-card:before,.scroll-card:after{content:"";position:absolute;left:.7rem;right:.7rem;height:2px;background:linear-gradient(90deg,transparent,rgba(154,52,46,.45),transparent)}.scroll-card:before{top:.55rem}.scroll-card:after{bottom:.55rem}.overlay__close{position:absolute;top:.55rem;right:.65rem;width:2rem;height:2rem;border:1px solid rgba(154,52,46,.35);background:#fff8e6b3;color:var(--cinnabar);font-size:1.35rem;line-height:1;cursor:pointer;z-index:2;transition:background .2s ease}.overlay__close:hover{background:#9a342e1a}.poem-card__meta{font-size:.8rem;color:var(--ink-soft);letter-spacing:.08em}.poem-card__title{margin:.7rem 0 1rem;font-size:1.45rem;letter-spacing:.22em;text-align:center}.poem-card__text{white-space:pre-wrap;font-family:inherit;font-size:1.02rem;line-height:1.95;text-align:center;letter-spacing:.06em;color:var(--ink)}.poem-card__footer{margin-top:1.25rem;display:flex;align-items:center;justify-content:space-between;gap:.75rem}.poem-card__step,.poem-card__done{font-size:.78rem;color:var(--ink-soft)}.btn-next{border:1px solid var(--cinnabar);background:var(--cinnabar);color:#f8efd8;padding:.45rem 1rem;letter-spacing:.18em;cursor:pointer;transition:background .2s ease,transform .15s ease}.btn-next:hover{background:var(--cinnabar-deep);transform:translateY(-1px)}.location-card{width:min(640px,100%)}.location-card__hero{position:relative;margin:-.3rem -.35rem 1rem;overflow:hidden}.location-card__inkscape{height:110px;border-bottom:1px solid rgba(42,34,22,.12)}.location-card__inkscape svg{width:100%;height:100%;display:block}.location-card__hero h2{position:absolute;left:1rem;bottom:.7rem;font-size:1.55rem;letter-spacing:.28em;text-shadow:0 1px 0 rgba(255,248,230,.7)}.location-card__text{font-size:.92rem;line-height:1.8;color:var(--ink-soft)}.location-card__section{margin:1.1rem 0 .65rem;font-size:.95rem;letter-spacing:.14em;color:var(--cinnabar)}.area-list{list-style:none;display:flex;flex-direction:column;gap:.75rem}.area-item{display:grid;grid-template-columns:72px 1fr;gap:.75rem;align-items:start;padding:.55rem;background:#fffaeb8c;border:1px solid rgba(42,34,22,.08)}.area-item h4{font-size:.95rem;letter-spacing:.12em;margin-bottom:.25rem}.area-item p{font-size:.82rem;line-height:1.65;color:var(--ink-soft)}.area-illust{width:100%;height:auto;display:block;background:#efe2c0;border:1px solid rgba(42,34,22,.1)}.loc-poems{display:flex;flex-direction:column;gap:.45rem}.loc-poems__empty{font-size:.85rem;color:var(--ink-soft)}.loc-poem-btn{display:flex;justify-content:space-between;gap:.75rem;width:100%;text-align:left;border:1px solid rgba(42,34,22,.12);background:#fffaeba6;padding:.55rem .7rem;cursor:pointer;transition:border-color .2s ease,background .2s ease}.loc-poem-btn:hover{border-color:var(--cinnabar);background:#9a342e0f}.loc-poem-btn__title{letter-spacing:.08em}.loc-poem-btn__poet{font-size:.78rem;color:var(--ink-soft);white-space:nowrap}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeRise{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes cardIn{0%{opacity:0;transform:translateY(16px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@media(max-width:860px){body{overflow:auto}#app{height:auto;min-height:100%}.workspace{flex-direction:column}.poet-panel{width:100%;max-width:none;min-height:auto;max-height:42vh}.map-panel{min-height:58vh}.map-status{white-space:normal}.map-title-seal{display:none}}
