:root{font-family:Noto Sans SC,Microsoft YaHei,system-ui,sans-serif;color:#243d38;background:#eeeae0;font-synthesis:none;--ink:#183e3a;--muted:#69766b;--paper:#faf8f1;--line:#cfcfc0;--accent:#a45d3f}*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 100% 0,#dce4d6,transparent 50%),#eeeae0}button,input,select{font:inherit}button{min-height:44px;padding:.55rem .85rem;border:1px solid var(--line);border-radius:6px;color:var(--ink);background:#f8f6ed;cursor:pointer;line-height:1.35;transition:background .15s}button:hover:not(:disabled){background:#e3e9dd;border-color:#889e8c}button:disabled{opacity:.45;cursor:not-allowed}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #c27b4b;outline-offset:3px}button.primary{background:var(--ink);color:#fff7df;border-color:var(--ink)}button.selected,button[aria-pressed=true]{background:#e1e8d9;border-color:#7a9181}h1,h2,h3,p{margin:0 0 .8rem}h1,h2,h3{font-family:"Noto Serif SC",Songti SC,SimSun,serif;line-height:1.4}h2{font-size:1.35rem}h3{font-size:1.05rem}p{line-height:1.8}small,.muted{color:var(--muted)}small{font-size:.78rem}.eyebrow{font-size:.72rem;letter-spacing:.15em;color:var(--muted);margin-bottom:.45rem}#app{max-width:1320px;margin:auto;padding:0 2rem}header{display:flex;justify-content:space-between;gap:1rem;align-items:center;padding:2rem 0 1.5rem;border-bottom:1px solid var(--line)}.wordmark{display:flex;gap:1rem;align-items:center}.wordmark h1{font-size:1.8rem;margin:0}.wordmark h1 span{font-size:.8rem;margin-left:.8rem;letter-spacing:.2em;font-weight:400}.seal{display:grid;place-items:center;width:52px;height:60px;border:2px solid #9e684d;color:#975136;font-family:serif;font-size:1.8rem;transform:rotate(-4deg);background:#f1e5d1;flex:none}.resources{display:flex;gap:1.6rem;font-size:.8rem}.resources span{display:grid;gap:.25rem}.resources b{font-size:1.2rem;color:var(--ink)}.toolbar{display:flex;justify-content:space-between;align-items:center;padding:1rem 0;gap:1rem;font-size:.85rem}.toolbar button{background:transparent;border:none}nav{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--line);border-radius:8px;overflow:hidden;background:var(--paper)}nav button{border:0;border-radius:0;padding:.9rem;text-align:left;border-right:1px solid var(--line);display:grid;gap:.3rem}nav button:last-child{border:0}nav strong{font-size:1.1rem}nav small{font-size:.7rem}.notice{min-height:3.8rem;display:flex;align-items:center;color:var(--muted);font-size:.85rem;line-height:1.6;padding:.8rem 0}main{min-height:55vh}.adventure-grid{display:grid;grid-template-columns:270px minmax(0,1fr);gap:1.4rem}.panel{background:var(--paper);border:1px solid var(--line);padding:1.4rem;border-radius:9px;box-shadow:0 3px 12px #253c3304;min-width:0}.route{align-self:start}.route h2{font-size:1.2rem}.route-list{list-style:none;padding:0;margin:1.2rem 0 0}.route-list button{display:flex;gap:.8rem;align-items:center;width:100%;text-align:left;background:transparent;border:1px solid transparent;padding:.6rem .4rem}.route-list button.selected{background:#e7ecdf;border-color:#c0cbbc}.route-list button span:last-child{display:grid;gap:.25rem}.route-dot{border:1px solid #a9b9aa;border-radius:50%;height:30px;width:30px;display:grid;place-items:center;flex:none;font-family:serif}.route-list .done .route-dot{background:#d8e4d3}.content-stack{display:grid;gap:1.3rem;align-content:start}.row{display:flex;justify-content:space-between;align-items:center;gap:.6rem}.row>div{min-width:0}.row h2{margin-bottom:.4rem}.badge{display:inline-block;font-size:.7rem;color:#7b5e3b;background:#efe8d6;border:1px solid #ddd2b9;padding:.2rem .5rem;border-radius:3px}.destination h2{font-size:1.8rem;margin-top:.7rem}.enemy-preview{display:flex;gap:.6rem;margin:1rem 0}.enemy-preview>div{flex:1;background:#eeefe5;padding:.8rem;border-radius:5px}.enemy-preview b,.enemy-preview span{display:block}.enemy-preview span{color:var(--muted);font-size:.75rem;line-height:1.7;margin-top:.4rem}.actions{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.check{display:flex;align-items:center;gap:.5rem;font-size:.85rem;min-height:44px}.check input{width:20px;height:20px}.quiet{padding:2.5rem;text-align:center;color:var(--muted)}.large-symbol{display:block;font-size:3rem;font-family:serif;color:#92a48e;margin-bottom:1rem}.intent{background:#ede9d9;border-left:3px solid #a8764e;padding:.7rem 1rem;margin:1rem 0}.intent p{margin:.2rem 0;font-size:.85rem}.combatants{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-top:1rem}.combatants>div{display:grid;gap:.65rem;align-content:start}.fighter{padding:.8rem;background:#edf0e5;border:1px solid #d7dfd0;border-radius:6px}.combatants>div:last-child .fighter{background:#f2e9df;border-color:#e0cfc1}.fighter .row{font-size:.72rem}.fighter .row b{font-size:.95rem}.bar{height:7px;background:#d5d8c9;border-radius:8px;overflow:hidden;margin:.7rem 0 .4rem}.bar i{display:block;background:#648e73;height:100%}.combatants>div:last-child .bar i{background:#b07d62}.fallen{opacity:.45}.statuses{display:flex;flex-wrap:wrap;gap:.3rem;margin-top:.5rem;font-size:.7rem}.statuses span{border:1px solid #b9c5b1;border-radius:3px;padding:.1rem .3rem}.battle-bottom{border-top:1px solid var(--line);margin-top:1rem;padding-top:1rem;font-size:.85rem}.section-head{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin:.3rem 0 1.5rem}.section-head>p{font-size:.85rem;text-align:right}.hero-tabs{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:1.2rem}.hero-tabs button{display:grid;gap:.3rem;min-width:120px;text-align:left}.two-columns{display:grid;grid-template-columns:1fr 1fr;gap:1.4rem}.portrait{font-size:2.5rem;font-family:serif;border:1px solid var(--line);padding:.4rem 1rem;color:#8c9d86;background:#e9eddf}.stat-grid{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--line);margin:1rem 0}.stat-grid>div{display:grid;gap:.3rem;padding:.7rem;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.stat-grid b{font-size:1.2rem}.two-fields{display:grid;grid-template-columns:1fr 1fr;gap:1rem}form{display:grid;gap:.8rem}label{display:grid;gap:.4rem;font-size:.85rem}select,input:not([type=checkbox]){border:1px solid #b9c4b3;border-radius:4px;background:#fffdf6;color:var(--ink);padding:.6rem;min-height:44px;width:100%;min-width:0}.skill-notes{margin-top:1rem}details{border-top:1px solid var(--line);padding:.65rem 0;font-size:.85rem}summary{cursor:pointer;min-height:32px;line-height:1.8}details p{margin:.5rem 0}.equipped{padding:1rem 0;border-top:1px solid var(--line)}.equipped h3{margin:.7rem 0 .3rem}.equipped p,.recipe p{font-size:.85rem;color:var(--muted)}.gear-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin-top:1rem}.gear-card{padding:1.1rem}.gear-card h3{margin-top:.9rem}.gear-card p{font-size:.85rem;min-height:3.5rem}.recipe,.preset{border-top:1px solid var(--line);margin-top:1rem;padding-top:1rem}.warning{background:#f2e2c9;border:1px solid #d8bb92;color:#67482d;padding:.8rem;border-radius:4px;line-height:1.8}.warning button{margin-left:.5rem}footer{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.5rem;padding:1.5rem 0;margin-top:1.5rem;color:var(--muted);font-size:.75rem;border-top:1px solid var(--line)}#save-warning{color:#a1482c}.welcome{max-width:680px;padding:12vh 1rem;margin:0 auto}.welcome .seal{margin-bottom:2rem}.welcome h1{font-size:2.8rem;line-height:1.5}.welcome p{color:var(--muted)}dialog{border:1px solid var(--line);border-radius:10px;padding:1.5rem;background:var(--paper);color:var(--ink);width:min(760px,calc(100% - 1.5rem));max-height:90vh;overflow:auto}dialog::backdrop{background:#172b26a8;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.dialog-title{display:flex;justify-content:space-between;gap:1rem;align-items:start;border-bottom:1px solid var(--line);padding-bottom:.8rem}.dialog-title button{flex:none}.dialog-content{padding:1.2rem 0;line-height:1.9;overflow-wrap:anywhere}.dialog-content article{margin-bottom:1.5rem}.report{padding-left:1.4rem;font-size:.85rem}.report li{padding:.4rem;border-bottom:1px solid #e2e1d5}.event-death,.event-end{color:#934329;font-weight:700}.event-skip{color:#7b7b6f}.reduced *{transition:none!important;animation:none!important}@media(max-width:1000px){.gear-grid{grid-template-columns:1fr 1fr}.adventure-grid{grid-template-columns:220px minmax(0,1fr)}#app{padding:0 1.2rem}.panel{padding:1.1rem}}@media(max-width:700px){#app{padding:0 .8rem}header{padding:1.2rem 0;align-items:start}.wordmark{gap:.65rem}.wordmark h1{font-size:1.35rem}.wordmark h1 span{display:block;margin:.2rem 0 0;font-size:.7rem}.seal{width:37px;height:48px;font-size:1.4rem}.wordmark .eyebrow{font-size:.6rem;letter-spacing:.04em}.resources{gap:.55rem;font-size:.65rem}.resources b{font-size:.95rem}.toolbar{font-size:.7rem;gap:.3rem}.toolbar button{font-size:.7rem;padding:.3rem}.toolbar>div{display:flex}nav button{padding:.7rem .4rem;text-align:center}nav small{display:none}nav strong{font-size:1rem}.adventure-grid,.two-columns{grid-template-columns:1fr}.route{padding:.8rem}.route h2,.route>.eyebrow,.route>.muted{display:none}.route-list{display:flex;overflow-x:auto;margin:0;padding-bottom:.4rem;gap:.2rem}.route-list li{flex:none}.route-list button{width:auto;padding:.3rem;gap:.3rem;min-height:48px}.route-list button span:last-child b{font-size:.8rem}.route-list small{display:none}.route-dot{width:23px;height:23px;font-size:.7rem}.enemy-preview{flex-direction:column}.enemy-preview>div{padding:.6rem}.destination h2{font-size:1.6rem}.combatants{gap:.5rem}.fighter{padding:.55rem}.fighter .row{flex-wrap:wrap;gap:.15rem}.fighter .row span{font-size:.65rem}.combatants .fighter .row b{font-size:.85rem}.battle>.row{align-items:start;flex-direction:column}.battle>.row>.actions{width:100%}.battle>.row button{padding:.4rem .6rem;flex:1}.gear-grid{grid-template-columns:1fr}.hero-tabs button{min-width:0;flex:1 0 28%;padding:.5rem}.hero-tabs small{font-size:.65rem}.section-head{align-items:start;flex-direction:column;gap:.4rem}.section-head>p{text-align:left}.panel{padding:1rem}.notice{font-size:.78rem}.welcome{padding-top:9vh}.welcome h1{font-size:2.1rem}.quiet{padding:1.5rem}dialog{padding:1rem}.stat-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.two-fields{gap:.5rem}p,button{overflow-wrap:anywhere}}
