:root{--paper:#f6f3e9;--card:#fffdf7;--ink:#344d3e;--muted:#909689;--line:#e5e7d9;--green:#526e50;--sage:#e9eee0;--pink:#ce9589;--shadow:0 5px 18px #384b3410;font-family:ui-sans-serif,-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;color:var(--ink);background:var(--paper);font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit;color:inherit}button,a,select{ -webkit-tap-highlight-color:transparent}button{cursor:pointer;border:0;background:none}button:disabled{opacity:.42;cursor:not-allowed}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible,select:focus-visible,input:focus-visible,textarea:focus-visible,canvas:focus-visible{outline:3px solid #b8a773;outline-offset:3px}button{transition:background .15s,transform .15s}button:hover:not(:disabled){filter:brightness(.96)}button:active:not(:disabled){transform:translateY(1px)}[hidden]{display:none!important}.topbar{height:92px;display:flex;align-items:center;justify-content:space-between;padding:0 4.5%;border-bottom:1px solid var(--line);background:#fcfaf3;gap:24px}.brand{display:flex;align-items:center;gap:13px;font-size:21px;font-weight:800;letter-spacing:2px;white-space:nowrap}.brand small{display:block;font-size:8px;letter-spacing:2px;font-weight:500;margin-top:6px}.brand-symbol{font-size:35px;color:#af9357}.topbar nav{display:flex;height:100%;gap:35px}.nav{font-size:13px;position:relative;color:#8d9387;padding:0 4px}.nav.active{color:var(--ink);font-weight:700}.nav.active:after{content:'';height:3px;position:absolute;background:var(--green);bottom:0;left:0;right:0}.identity{display:flex;align-items:center;gap:7px;font-size:12px}.identity select{border:0;background:none;font-weight:600;max-width:120px}.online-dot{display:inline-block;width:6px;height:6px;background:#7a9566;border-radius:50%}.demo-badge{font-size:10px;background:#eeeadd;padding:5px 7px;border-radius:4px;color:#8b856e}main{max-width:1540px;margin:auto;padding:38px 4.5% 20px}.page-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px;gap:20px}.eyebrow{font-size:9px;letter-spacing:2.5px;font-weight:600;color:#93947d}h1{font-family:Georgia,"Songti SC",serif;font-size:31px;font-weight:500;letter-spacing:2px;margin:12px 0 10px}p{line-height:1.8}.page-heading p{font-size:12px;color:#8d9387;margin:0}.heading-right{display:flex;align-items:center;gap:16px;font-size:10px;color:var(--muted)}#save-status:before{content:'✓ ';color:#829572}.icon-button{font-size:21px;padding:8px}.layout{display:grid;grid-template-columns:252px minmax(0,1fr);gap:26px}.sidebar{display:flex;flex-direction:column;gap:18px}.card{background:var(--card);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow)}.hero-card,.journey-card{padding:22px}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:13px;font-weight:600}.tiny-label{font-size:8px;letter-spacing:1.7px;color:#96977e;font-weight:500}.portrait-wrap{height:118px;position:relative;display:flex;align-items:center;justify-content:center;background:radial-gradient(ellipse,#e9eddb 0%,#f7f6e900 68%);margin:12px 0 5px}.portrait-wrap canvas{width:180px;height:110px;image-rendering:pixelated}.level-tag{position:absolute;right:3px;bottom:7px;font:10px ui-monospace,monospace;color:#8f7c43;background:#f5edcd;border:1px solid #e5d9ad;padding:4px 7px}.hero-card h2{font-size:17px;margin:7px 0}.hero-card h2 span{font-size:9px;font-weight:400;background:var(--sage);padding:4px 6px;margin-left:9px;border-radius:3px}.muted{color:var(--muted);font-size:12px}.mini{font-size:10px;margin:7px 0 18px}.vital{margin:13px 0}.vital-head{display:flex;justify-content:space-between;font-size:10px;margin-bottom:7px}.vital-head span:last-child{font:10px ui-monospace,monospace;color:#889080}.bar{height:6px;background:#eceee4;border-radius:2px;overflow:hidden}.bar i{display:block;height:100%;background:#9ba984;transition:width .6s}.vital.mp .bar i{background:#90abb9}.vital.xp .bar i{background:#d2bd7d}.rest-button{width:100%;font-size:11px;background:#eeeee2;border:1px solid #e2e4d4;padding:10px;margin-top:6px;border-radius:5px}.journey-card{padding-bottom:14px}.stage-item{position:relative;width:100%;text-align:left;display:flex;align-items:center;gap:12px;padding:18px 0 7px}.stage-item:not(:last-child):after{content:'';position:absolute;left:12px;top:42px;bottom:-15px;border-left:1px dashed #d7dccd}.stage-node{z-index:1;width:25px;height:25px;display:grid;place-items:center;border:1px solid #dcded2;border-radius:50%;font:10px monospace;background:#fffdf7;color:#a3aa9a}.stage-item.current .stage-node{background:var(--green);border-color:var(--green);color:white;box-shadow:0 0 0 4px #e9edde}.stage-item.passed .stage-node{color:#647955;background:#e9eedf}.stage-item strong{font-size:11px;font-weight:500;display:block}.stage-item small{display:block;font-size:9px;color:#a1a695;margin-top:5px}.stage-item.current strong{font-weight:700}.text-button{font-size:10px;color:#788b69;padding:5px 0}.journey-card>.text-button{border-top:1px solid var(--line);margin-top:19px;padding-top:14px;width:100%;text-align:left}.sidebar-note{display:flex;gap:14px;align-items:center;justify-content:center;color:#a1a18a;font-size:11px}.sidebar-note>span{font-size:25px}.sidebar-note p{line-height:1.9}.map-card{overflow:hidden;border:1px solid #dadfcf;border-radius:10px;box-shadow:var(--shadow);background:#edf1e2}.map-top,.map-bottom{display:flex;align-items:center;justify-content:space-between;font-size:10px;padding:15px 20px;background:#fcfbf3}.map-top b{font-size:11px;font-weight:600;margin-left:6px}.map-top small{font-size:9px;color:#a0a38e}.map-coordinate{font:8px ui-monospace,monospace;letter-spacing:2px;color:#929b87}#map-viewport{position:relative;height:490px;overflow:hidden;background:#e4eadb}#world{display:block;width:100%;height:100%;touch-action:none;cursor:grab;image-rendering:pixelated}#world:active{cursor:grabbing}.map-caption{position:absolute;top:24px;left:24px;pointer-events:none;display:flex;flex-direction:column;gap:9px;padding:13px 17px;background:#fffdf1d9;border:1px solid #f9f9ed;border-radius:3px;box-shadow:0 3px 12px #3c56370a}.map-caption strong{font-family:"Songti SC",serif;font-size:18px;font-weight:600;letter-spacing:1px}.map-caption>span:last-child{font-size:9px;color:#7e8a72}.map-controls{position:absolute;bottom:20px;right:20px;display:flex;align-items:center;background:#fffdf3ed;border:1px solid #d8dec9;box-shadow:0 2px 5px #3c563710;border-radius:5px;padding:2px 4px;font:10px monospace}.map-controls button{min-width:32px;height:32px;font-size:18px}.map-controls span{padding:0 5px}.control-divider{border-left:1px solid var(--line);height:18px;margin-left:5px}.map-help{position:absolute;bottom:27px;left:20px;color:#647f65;font-size:9px;background:#eef2e6ce;padding:5px 8px;border-radius:3px}.map-bottom{padding:12px 20px;font-size:9px;color:#959d88}.legend-dot{display:inline-block;width:6px;height:6px;background:#889d6b;margin:0 5px 0 12px}.legend-dot:first-child{margin-left:0}.legend-dot.mist{background:#d1d7c8}.below-map{display:grid;grid-template-columns:1.1fr 1fr;gap:18px;margin-top:20px}.next-card{padding:20px}.next-content{display:flex;align-items:center;gap:14px;margin:20px 0 7px}.quest-icon{display:grid;place-items:center;width:40px;height:40px;background:#f3efdc;border:1px solid #e9e2c4;color:#ad9251;font-size:20px;flex-shrink:0;border-radius:4px}.next-content h3{font-size:12px;margin:0 0 7px;font-weight:500}.next-content p{font-size:9px;color:#939882;margin:0}.quest-check{margin-left:auto;min-width:32px;min-height:32px;border:1px solid #d8dfce;border-radius:50%;color:#8c9e79;font-size:16px}.letter-teaser{padding:22px;display:flex;gap:18px;align-items:center;background:#faf7ef}.letter-icon{font-size:34px;color:#b8a16e;line-height:1}.letter-teaser h3{font:16px "Songti SC",serif;margin:9px 0}.letter-teaser p{font-size:10px;color:#9c9987;margin:0 0 5px}.letter-teaser .tiny-label{font-size:7px;letter-spacing:1.2px}.ceremony-link{display:flex;align-items:center;gap:16px;text-align:left;padding:18px 6px 0;width:100%;color:#92957f;font-size:11px}.ceremony-link>span:first-child{font-size:26px;color:#b3a575}.ceremony-link small{display:block;margin-top:7px;font-size:9px;color:#a9ac99}.ceremony-link>span:last-child{margin-left:auto}footer{display:flex;justify-content:space-between;margin:30px 0 0;padding:20px 0 0;border-top:1px solid var(--line);color:#a1a28f;font-size:9px}footer>span:first-child{font-size:8px;letter-spacing:1.7px}.large-panel{padding:28px;min-height:660px}.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:20px}.panel-heading h2{font:23px "Songti SC",serif;letter-spacing:1px;margin:12px 0 24px}.primary,.secondary,.danger-button{border-radius:5px;padding:11px 17px;font-size:12px;min-height:42px}.primary{background:var(--green);color:#fffdef;border:1px solid #4a6649}.secondary{background:#efefe3;border:1px solid var(--line)}.danger-button{color:#a96255;border:1px solid #e4cfc4}.filters{display:flex;gap:12px;border-bottom:1px solid var(--line);padding-bottom:20px}.filters select{max-width:50%}input,select,textarea{border:1px solid #dfe3d3;background:#fffef9;border-radius:5px;padding:10px 12px;font-size:12px}textarea{width:100%;resize:vertical;min-height:90px;line-height:1.8}#journal-summary{font-size:11px;color:#8d9783;padding:20px 0}.task-row{display:flex;align-items:flex-start;gap:14px;border:1px solid var(--line);padding:17px;margin-bottom:12px;border-radius:6px}.task-toggle{border:1px solid #bbc6ac;width:26px;height:26px;flex-shrink:0;border-radius:5px;margin-top:3px;color:#fdfbea}.task-row.done .task-toggle{background:#8ea17d}.task-row.done h3{text-decoration:line-through;color:#9da58f}.task-main{flex:1;min-width:0}.task-main h3{font-size:13px;font-weight:500;margin:4px 0 9px;overflow-wrap:anywhere}.task-meta{display:flex;gap:8px;flex-wrap:wrap;font-size:9px;color:#92967f}.badge{font-size:9px;padding:3px 6px;border-radius:3px;background:#f0eee1;color:#9a8b65}.badge.key{background:#eee4cf;color:#99804a}.badge.secret{background:#eae8ee;color:#96849d}.badge.overdue{color:#ae7562;background:#f5e7df}.task-note{font-size:11px;color:#8e9985;margin:10px 0 0;white-space:pre-wrap;overflow-wrap:anywhere}.task-actions{display:flex;gap:4px}.task-actions button{font-size:11px;padding:7px;color:#8b947d}.empty{padding:70px 10px;text-align:center;color:#97a088;font-size:12px;line-height:2}.empty-symbol{font-size:35px;display:block;color:#b6b994;margin-bottom:14px}.stage-finish{padding:15px;background:#eef0e3;border-radius:5px;margin-bottom:18px;font-size:11px;display:flex;align-items:center;justify-content:space-between;gap:15px}.stage-finish button{white-space:nowrap}#letter-form{background:#f5f1e5;padding:20px;border:1px solid #e6dfca;margin:25px 0;border-radius:6px}#letter-form label{display:block;font-size:12px;margin-bottom:12px}#letter-form button{display:block;margin:12px 0 0 auto}.letter{background:#faf7ed;border:1px solid #e8e1ce;padding:26px;margin:20px 0;box-shadow:0 3px 0 #eeeadb;animation:letterIn .5s ease-out}.letter-top{display:flex;align-items:center;justify-content:space-between;font-size:10px;color:#a89977}.letter p{white-space:pre-wrap;overflow-wrap:anywhere;font:15px/2 "Songti SC",serif;color:#6f775e}.letter-bottom{text-align:right;font-size:10px;color:#a19b82}.letter-bottom button{font-size:11px;border-bottom:1px solid #bfbd9f}#mail-dot.unread{display:inline-block;width:5px;height:5px;background:#c49b7a;border-radius:50%;margin:0 0 6px 5px}dialog{border:1px solid #d6dcc8;border-radius:12px;width:min(580px,calc(100% - 28px));max-height:90dvh;overflow:auto;padding:28px;background:#fffdf5;color:var(--ink);box-shadow:0 30px 100px #263a3240}dialog::backdrop{background:#23382d66;backdrop-filter:blur(3px)}.dialog-heading{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:20px}.dialog-heading h2{font:23px "Songti SC",serif;margin:8px 0}.close{font-size:26px;padding:4px 9px;color:#949b89}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:18px}#task-form>label,.form-row>label{display:flex;flex-direction:column;gap:8px;font-size:12px;margin:16px 0}fieldset{border:1px solid var(--line);padding:15px;margin:12px 0;border-radius:5px}legend{font-size:12px;padding:0 7px}.radio{font-size:11px;display:inline-flex;align-items:center;gap:5px;margin:0 15px 0 0}.radio input,.checkbox-label input{accent-color:var(--green)}.required{font-size:9px;color:#b69c6c}.form-row .checkbox-label{flex-direction:row;align-items:center;font-size:10px;padding-top:20px}.form-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:20px}.error{color:#b47865;font-size:12px}.stage-edit{display:flex;gap:6px;align-items:center;padding:10px 0}.stage-edit input{min-width:0;flex:1}.stage-edit button{font-size:13px;padding:6px}.stage-add{display:flex;gap:10px;margin-top:20px}.stage-add input{width:0;flex:1}.settings-actions{display:flex;gap:10px;flex-wrap:wrap;margin:25px 0}#settings-dialog p{font-size:12px;color:#87917d}#settings-dialog a{font-size:12px;color:#697f55}.ceremony-dialog{text-align:center;width:min(680px,calc(100% - 28px))}.ceremony-scene{position:relative;height:220px;background:linear-gradient(#dce8de,#f5f0da);overflow:hidden;border-radius:6px;margin:22px 0}.ceremony-scene:before{content:'✦　 ·　 ✧　　 ·　 ✦';position:absolute;top:23px;left:0;right:0;letter-spacing:14px;color:#bca46b;font-size:20px}.ceremony-scene canvas{position:absolute;bottom:35px;width:120px;height:90px;image-rendering:pixelated}.ceremony-hero{left:12%;transition:left 2.5s ease-in-out}.ceremony-princess{right:8%;transition:right 2.5s ease-in-out}.ceremony-scene.departed .ceremony-hero,.ceremony-scene.waiting .ceremony-hero{left:40%}.ceremony-scene.united .ceremony-hero{left:35%}.ceremony-scene.united .ceremony-princess{right:22%}.ceremony-scene .heart{position:absolute;left:49%;top:70px;color:#cc8e86;font-size:28px;animation:float 2s infinite}.ceremony-title{font:28px "Songti SC",serif;margin:25px 0 12px}.ceremony-note{font-size:12px;color:#8a947e}.ceremony-steps{display:flex;justify-content:center;gap:12px;font-size:9px;color:#929c85;margin:24px 0}.ceremony-steps .done{color:#4f6e46;font-weight:bold}.ceremony-buttons{display:flex;justify-content:center;gap:12px;flex-wrap:wrap}.preview-note{font-size:10px;color:#a59c84;margin:23px 0 0}#toast{position:fixed;bottom:35px;left:50%;transform:translate(-50%,30px);opacity:0;pointer-events:none;transition:all .2s;background:#3c5646;color:#fffbea;box-shadow:0 8px 24px #22362922;border-radius:6px;padding:13px 22px;font-size:12px;z-index:1000;max-width:90vw}#toast.show{opacity:1;transform:translate(-50%,0)}#map-toast{position:absolute;left:50%;top:48%;transform:translate(-50%,-50%);font-size:12px;color:#50633d;pointer-events:none;background:#fffbeed9;padding:12px 20px;border:1px solid #dcd7b9;border-radius:4px;opacity:0}#map-toast.show{animation:reward 2.3s forwards}.load-error{background:#fff0dd;color:#805a40;padding:20px;margin:20px;font-size:14px}@keyframes reward{0%{opacity:0;top:52%}20%,75%{opacity:1}100%{opacity:0;top:40%}}@keyframes float{50%{transform:translateY(-7px)}}@keyframes letterIn{from{transform:translateY(8px);opacity:0}to{transform:none;opacity:1}}
@media(min-width:1450px){#map-viewport{height:570px}}@media(max-width:1100px){.topbar{padding:0 3%;gap:15px}.topbar nav{gap:20px}.demo-badge{display:none}main{padding:28px 3% 18px}.layout{grid-template-columns:220px minmax(0,1fr);gap:18px}.hero-card,.journey-card{padding:18px}.below-map{gap:12px}.letter-teaser{padding:18px;gap:12px}.letter-teaser .letter-icon{display:none}.brand{font-size:18px}.brand small{font-size:7px}#map-viewport{height:470px}}
@media(max-width:760px){.topbar{height:auto;min-height:72px;flex-wrap:wrap;gap:0;padding:16px 5% 0}.brand{font-size:17px;gap:9px}.brand small{font-size:6px;letter-spacing:1.5px}.brand-symbol{font-size:28px}.identity{margin-left:auto;font-size:11px}.topbar nav{order:3;width:100%;height:47px;gap:30px;margin-top:8px}.nav{font-size:12px;flex:1}main{padding:26px 5% 18px}.page-heading{margin-bottom:22px}.page-heading h1{font-size:23px;letter-spacing:1px}.page-heading .eyebrow{font-size:7px;letter-spacing:2px}.page-heading p{font-size:10px}.heading-right{gap:0}.heading-right #save-status{display:none}.layout{display:flex;flex-direction:column;gap:16px}.sidebar{display:contents}.hero-card{order:0;display:grid;grid-template-columns:100px 1fr;padding:14px 17px;gap:0 15px}.hero-card .section-heading,.hero-card .mini,.hero-card .rest-button{display:none}.hero-card .portrait-wrap{grid-column:1;grid-row:1/4;height:85px;margin:0}.portrait-wrap canvas{width:120px;height:74px;max-width:none}.level-tag{right:0;bottom:0;font-size:8px}.hero-card h2{grid-column:2;margin:1px 0 7px;font-size:13px}.hero-card h2 span{font-size:8px}.hero-card #vitals{grid-column:2;display:grid;grid-template-columns:1fr 1fr;gap:8px 12px}.vital{margin:0}.vital.xp{grid-column:1/3}.vital-head{font-size:8px;margin-bottom:4px}.vital-head span:last-child{font-size:8px}.bar{height:4px}.journey-card{order:2;padding:16px}.journey-card .section-heading{font-size:12px}#stage-list{display:flex;overflow-x:auto;gap:15px;padding-bottom:10px}.stage-item{min-width:110px;padding:20px 0 8px;gap:9px}.stage-item:after{display:none}.stage-item small{font-size:8px}.stage-item strong{font-size:10px}.journey-card>.text-button{margin-top:0;padding-top:12px}.sidebar-note{display:none}.content{order:1}.map-top{padding:12px}.map-coordinate{font-size:6px;letter-spacing:1px}#map-viewport{height:430px}.map-caption{left:12px;top:15px;padding:11px 13px}.map-caption strong{font-size:15px}.map-caption>span:last-child{font-size:8px}.map-controls{bottom:16px;right:12px}.map-help{bottom:63px;left:12px;font-size:8px}.map-bottom{padding:10px 12px;font-size:8px}.below-map{grid-template-columns:1fr;margin-top:16px}.next-card{padding:16px}.next-content{margin:13px 0 2px}.letter-teaser{padding:17px;gap:20px}.letter-teaser .letter-icon{display:block}.letter-teaser h3{font-size:15px;margin:6px 0}.letter-teaser .tiny-label{font-size:7px}.ceremony-link{font-size:10px;padding-top:16px}.ceremony-link small{font-size:8px}.large-panel{padding:19px;min-height:480px}.panel-heading{gap:8px}.panel-heading h2{font-size:19px}.panel-heading .primary{font-size:10px;padding:9px;white-space:nowrap}.panel-heading .eyebrow{font-size:6px;letter-spacing:1.3px}.task-row{padding:12px;gap:9px}.task-actions{flex-direction:column}.task-main h3{font-size:12px}.task-meta{font-size:8px}.task-note{font-size:10px}footer{flex-direction:column;gap:12px;font-size:8px;margin-top:24px}footer>span:first-child{font-size:6px;letter-spacing:1.5px}dialog{padding:22px}.form-row{gap:12px}.radio{margin:4px 0;display:flex}.form-row .checkbox-label{font-size:10px}.form-actions button{flex:1}.stage-edit{gap:2px}.stage-edit button{font-size:12px;padding:6px}.ceremony-title{font-size:24px}.ceremony-scene canvas{width:100px;height:75px}.ceremony-scene.united .ceremony-hero{left:22%}.ceremony-scene.united .ceremony-princess{right:12%}.ceremony-steps{gap:8px;font-size:8px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}#map-toast.show{opacity:1}}
@media(max-width:760px){.hero-card .rest-button:not([hidden]){display:block;grid-column:1/3;margin-top:12px;padding:8px;min-height:36px;font-size:10px}}
.ceremony-castle{position:absolute;right:8%;bottom:36px;width:85px;height:76px;background:#d2d7bd;border:5px solid #e9ead2;box-shadow:inset 0 0 0 3px #c4cbb1;opacity:.8}.ceremony-castle:before,.ceremony-castle:after{content:'';position:absolute;bottom:-5px;height:112px;width:26px;background:linear-gradient(#92a698 0 15px,#e0e3cc 15px);border:4px solid #e9ead2}.ceremony-castle:before{left:-15px}.ceremony-castle:after{right:-15px}.ceremony-castle i{position:absolute;bottom:0;width:22px;height:37px;left:26px;background:#a9a98b;border-radius:14px 14px 0 0}.ceremony-scene.departed .ceremony-hero{animation:approach 2.6s ease-in-out both}.ceremony-scene.united .ceremony-princess{animation:meet 2.5s ease-in-out both}@keyframes approach{from{left:12%}to{left:40%}}@keyframes meet{from{right:8%}to{right:22%}}@media(max-width:760px){@keyframes meet{from{right:8%}to{right:12%}}}
