:root{color-scheme:light;--bg0: #cfeeff;--bg1: #fff7df;--panel: rgba(255, 250, 235, .92);--panel2: rgba(255, 255, 255, .75);--border: rgba(63, 43, 26, .22);--text: rgba(31, 24, 18, .92);--muted: rgba(31, 24, 18, .62);--accent: #2f7dd1;--accent2: #2faa5c;--danger: #d63b3b;--shadow: rgba(30, 24, 18, .18);--radius: 16px;--radius-sm: 12px;--gap: 14px;--mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}*{box-sizing:border-box}html,body{height:100%}body{margin:0;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,"Apple Color Emoji","Segoe UI Emoji";background:radial-gradient(1200px 800px at 20% 10%,rgba(47,125,209,.22),transparent 60%),radial-gradient(1000px 700px at 90% 20%,rgba(47,170,92,.16),transparent 55%),radial-gradient(900px 600px at 35% 90%,rgba(245,176,77,.18),transparent 55%),linear-gradient(180deg,var(--bg0),var(--bg1));color:var(--text)}a{color:inherit}.app{min-height:100%;padding:22px;display:grid;gap:var(--gap);grid-template-rows:auto 1fr}.topbar{display:flex;align-items:center;gap:12px;padding:14px 16px;border:1px solid var(--border);border-radius:var(--radius);background:linear-gradient(180deg,#fffcf3eb,#ffffffb3);box-shadow:0 14px 30px var(--shadow)}.brand{display:flex;align-items:baseline;gap:10px;margin-right:auto}.brand__title{font-weight:750;letter-spacing:.6px}.brand__subtitle{color:var(--muted);font-family:var(--mono);font-size:12px}.pill{padding:6px 10px;border-radius:999px;border:1px solid var(--border);background:#ffffff9e;font-size:12px;color:var(--muted)}.pill strong{color:var(--text);font-weight:700}.layout{display:grid;gap:var(--gap);grid-template-columns:320px minmax(360px,1fr) 360px;grid-template-rows:auto 1fr;align-items:start}.shopLayout{display:grid;gap:var(--gap);grid-template-columns:minmax(420px,1fr) minmax(360px,1fr) 360px;align-items:start}@media (max-width: 1120px){.layout,.shopLayout{grid-template-columns:1fr}}.panel{border:1px solid var(--border);border-radius:var(--radius);background:linear-gradient(180deg,var(--panel),var(--panel2));box-shadow:0 14px 30px var(--shadow);overflow:hidden}.panel__header{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border-bottom:1px solid rgba(63,43,26,.14)}.panel__title{display:inline-flex;align-items:center;gap:10px;font-weight:750;letter-spacing:.4px}.panel__title:before{content:"";width:10px;height:10px;border-radius:3px;background:linear-gradient(135deg,var(--accent),var(--accent2));box-shadow:0 0 0 3px #2f7dd11f}.panel__body{padding:14px}.grid2{display:grid;gap:10px;grid-template-columns:1fr 1fr}.kv{display:grid;gap:4px;padding:10px;border-radius:12px;border:1px solid rgba(63,43,26,.14);background:#ffffff9e}.kv__k{color:var(--muted);font-size:12px}.kv__v{font-weight:700}.portrait{width:100%;aspect-ratio:3 / 4;border-radius:16px;border:1px solid rgba(63,43,26,.18);background:radial-gradient(160px 120px at 30% 20%,rgba(47,125,209,.2),transparent 60%),radial-gradient(160px 120px at 70% 10%,rgba(47,170,92,.16),transparent 60%),linear-gradient(180deg,#ffffffd9,#fffaeba6);display:grid;place-items:center;color:#1f1812c7;font-family:var(--mono);position:relative;overflow:hidden}.portrait__img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;object-position:center;transform:scale(1.02);filter:saturate(1.05) contrast(1.02)}.portrait__label{position:absolute;bottom:10px;left:10px;font-size:12px;color:#1f1812db;background:#ffffffb8;border:1px solid rgba(63,43,26,.16);padding:4px 8px;border-radius:999px}.hpbar{height:10px;background:#3f2b1a1f;border-radius:999px;overflow:hidden;border:1px solid rgba(63,43,26,.16)}.hpbar__fill{height:100%;width:50%;background:linear-gradient(90deg,#22c55ef2,#a78bfaf2)}.hpbar__fill.is-low{background:linear-gradient(90deg,#ef4444f2,#f59e0bf2)}.btnrow{display:flex;gap:10px;flex-wrap:wrap}button.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid rgba(63,43,26,.22);background:#ffffff9e;color:var(--text);padding:10px 12px;border-radius:12px;cursor:pointer;font-weight:700;letter-spacing:.2px;transition:transform .06s ease,border-color .12s ease,background .12s ease}button.btn[disabled]{opacity:.55;cursor:not-allowed;filter:grayscale(.25);transform:none}button.btn[disabled]:hover{border-color:#3f2b1a38;background:#ffffff9e}button.btn[disabled]:active{transform:none}button.btn:hover{border-color:#2f7dd16b;background:#ffffffd1}button.btn:active{transform:translateY(1px)}button.btn--primary{border-color:#2f7dd166;background:linear-gradient(135deg,#2f7dd138,#2faa5c2e)}button.btn--danger{border-color:#d63b3b73}.slots{display:grid;gap:10px}.slot{display:grid;grid-template-columns:92px 1fr;gap:10px;align-items:center;padding:10px;border-radius:12px;border:1px solid rgba(63,43,26,.16);background:#ffffff8c}.slot__label{color:var(--muted);font-size:12px;font-family:var(--mono)}.slot__item{font-weight:700}.grid{display:grid;gap:8px;grid-template-columns:repeat(5,minmax(0,1fr))}.cell{border:1px solid rgba(63,43,26,.16);border-radius:10px;background:#ffffff9e;min-height:54px;padding:8px;display:grid;gap:6px;align-content:start}.cell__name{font-weight:750;font-size:12px;line-height:1.2}.cell__meta{font-family:var(--mono);font-size:11px;color:var(--muted)}.shopGrid{display:grid;gap:12px;grid-template-columns:repeat(2,minmax(0,1fr))}.shopScroll{max-height:min(68vh,720px);overflow:auto;padding-right:4px;overscroll-behavior:contain}@media (max-width: 980px){.shopGrid{grid-template-columns:1fr}}.shopCard{border:1px solid rgba(63,43,26,.16);border-radius:16px;background:#fff9;display:grid;grid-template-columns:108px 1fr;gap:12px;padding:10px}.shopCard.is-locked{opacity:.92}.shopCard__imgWrap{width:108px;aspect-ratio:1 / 1;border-radius:14px;border:1px solid rgba(63,43,26,.16);background:#ffffff8c;overflow:hidden;display:grid;place-items:center;position:relative}.shopCard__img{width:100%;height:100%;object-fit:cover;object-position:center;display:block}.shopCard__placeholder{position:absolute;top:0;right:0;bottom:0;left:0;display:none;place-items:center;font-family:var(--mono);font-size:11px;color:#1f1812a8}.shopCard__body{display:grid;gap:4px;align-content:start}.shopCard__name{font-weight:900;font-size:14px}.shopCard__desc{font-size:12px;color:#1f1812c7;line-height:1.55}.shopCard__meta{font-family:var(--mono);font-size:11px;color:#1f1812b3}.shopCard__meta.is-warn{color:#a52121d1}.modal--encounter.is-boss .encMedia{width:min(360px,100%)}.scene__enemy.is-boss{width:240px}.scene__enemy.is-boss .enemy__img{border-radius:14px}.log{height:280px;overflow:auto;padding:10px;border-radius:12px;border:1px solid rgba(63,43,26,.16);background:#ffffff9e;font-family:var(--mono);font-size:12px;color:#1f1812d1;white-space:pre-wrap}.storyText{padding:18px 14px;border-radius:16px;border:1px solid rgba(63,43,26,.14);background:#ffffff9e;white-space:pre-line;text-align:center;font-size:18px;line-height:1.85;letter-spacing:.2px;color:#1f1812e0;font-family:ui-serif,Songti SC,STSong,"Noto Serif CJK SC","Source Han Serif SC",SimSun,serif}.storyText strong{font-weight:900}.titleScreen{max-width:860px;margin:0 auto;position:relative;overflow:hidden}.titlePage{position:relative;min-height:100vh}.titleScreen{z-index:2}.titleScreen__body{position:relative;z-index:2}.titleScreen__body:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:18px;background:linear-gradient(180deg,#fffcf3e6,#ffffffb3);border:1px solid rgba(63,43,26,.1);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:-1}.btn--xl{padding:14px 22px;font-size:16px;border-radius:14px;min-width:220px}.charCard__row{display:grid;grid-template-columns:250px 1fr;gap:14px;align-items:start}@media (max-width: 720px){.charCard__row{grid-template-columns:1fr}}.charCard__portrait{width:100%;aspect-ratio:3 / 4;border-radius:14px;border:1px solid rgba(63,43,26,.18);background:#ffffff8c;overflow:hidden}.charCard__portraitImg{width:100%;height:100%;object-fit:cover;object-position:center;display:block}.charCard__info .kv__k{font-size:11px}.charCard__info .kv__v{font-size:12px;font-weight:650;line-height:1.55}.gameTitle{font-size:62px;font-weight:900;letter-spacing:6px;text-align:center;background:linear-gradient(135deg,#2f7dd1f2,#2faa5ceb);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 18px 50px rgba(30,24,18,.18)}.gameSubtitle{text-align:center;color:#1f1812a8;font-family:var(--mono)}.cardList{display:grid;gap:12px;grid-template-columns:repeat(3,minmax(0,1fr))}@media (max-width: 1120px){.cardList{grid-template-columns:1fr}}.saveGrid{display:grid;gap:12px;grid-template-columns:repeat(2,minmax(0,1fr))}@media (max-width: 980px){.saveGrid{grid-template-columns:1fr}}.mapSelect{display:grid;grid-template-columns:1.8fr 1fr;gap:var(--gap)}@media (max-width: 980px){.mapSelect{grid-template-columns:1fr}}.worldMap{position:relative;width:100%;border-radius:14px;overflow:hidden;border:1px solid rgba(63,43,26,.16);background:#ffffff8c}.worldMap__img{width:100%;height:auto;display:block}.worldMap__pin{position:absolute;left:var(--x);top:var(--y);transform:translate(-50%,-50%);z-index:3;cursor:pointer}.worldMap__pin--dot{width:18px;height:18px;border-radius:999px;border:2px solid rgba(255,255,255,.95);background:#22c55ef2;box-shadow:0 0 0 5px #22c55e33,0 14px 26px #0000002e}.worldMap__pin:hover{filter:brightness(1.02);border-color:#22c55ea6}.preline{white-space:pre-line}.itemModal__media{width:min(240px,100%);aspect-ratio:1 / 1;height:auto;border-radius:16px;border:1px solid rgba(63,43,26,.18);background:#ffffff8c;overflow:hidden;display:grid;place-items:center;margin:0 auto 12px;position:relative}.itemModal__img{width:100%;height:100%;object-fit:cover;object-position:center;display:block}.itemModal__placeholder{position:absolute;top:0;right:0;bottom:0;left:0;display:none;place-items:center;font-family:var(--mono);color:#1f1812a8}.card{height:100%}.cell.is-item{cursor:pointer}.cell.is-item:hover,.slot.is-item:hover{border-color:#2f7dd16b}.dropZone{outline:2px dashed rgba(47,125,209,.22);outline-offset:6px;border-radius:12px}.modalOverlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#1f181259;display:grid;place-items:center;padding:22px;z-index:1000}.modal{width:min(720px,96vw);border:1px solid rgba(63,43,26,.22);border-radius:18px;background:linear-gradient(180deg,#fffcf3f5,#ffffffd1);box-shadow:0 24px 70px #1e181238;overflow:hidden}.modal--encounter{--encAccent: rgba(47, 125, 209, .95);border-left:10px solid var(--encAccent)}.modal--encounter.is-monster{--encAccent: rgba(239, 68, 68, .95);border-color:#ef444475;background:linear-gradient(180deg,#fee2e2eb,#ffffffd6)}.modal--encounter.is-event{--encAccent: rgba(34, 197, 94, .95);border-color:#22c55e75;background:linear-gradient(180deg,#dcfce7eb,#ffffffd6)}.modal--encounter.is-loot{--encAccent: rgba(245, 158, 11, .95);border-color:#f59e0b85;background:linear-gradient(180deg,#fef3c7eb,#ffffffd6)}.modal--wide{width:min(980px,96vw)}.modal__header{padding:12px 14px;display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid rgba(63,43,26,.14)}.modal__title{font-weight:850;letter-spacing:.4px}.modal__body{padding:14px}.encMedia{width:min(240px,100%);aspect-ratio:1 / 1;height:auto;border-radius:16px;border:1px solid rgba(63,43,26,.16);background:#ffffff8c;overflow:hidden;margin:0 auto 12px}.encImg{width:100%;height:100%;object-fit:cover;object-position:center;display:block}.dialogueText{font-size:14px;line-height:1.65;color:#1f1812db;background:#ffffff8c;border:1px solid rgba(63,43,26,.14);border-radius:14px;padding:10px 12px;white-space:pre-line}.scene__frame{position:relative;width:100%;height:min(62vh,520px);border-radius:14px;border:1px solid rgba(63,43,26,.16);background:radial-gradient(240px 180px at 18% 22%,rgba(47,125,209,.18),transparent 55%),radial-gradient(260px 220px at 75% 18%,rgba(47,170,92,.14),transparent 55%),linear-gradient(180deg,#ffffffd9,#fffaeba6);overflow:hidden}.scene__bg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;object-position:center;filter:saturate(1.05) contrast(1.03);transform:scale(1.02);z-index:0}.scene__hint{position:relative;z-index:2;font-family:var(--mono);color:#1f1812b3;text-align:center;padding:12px;border-radius:12px;border:1px dashed rgba(63,43,26,.22);background:#ffffff9e}.scene__portrait{position:absolute;left:12px;top:250px;width:160px;height:160px;border-radius:16px;border:1px solid rgba(63,43,26,.22);background:radial-gradient(50px 50px at 30% 20%,rgba(47,125,209,.2),transparent 60%),linear-gradient(180deg,#ffffffd9,#fffaeba6);display:grid;place-items:center;z-index:2}.scene__portraitImg{width:100%;height:100%;border-radius:16px;object-fit:cover;object-position:center}.scene__stats{position:absolute;left:0;right:0;top:calc(100% + 8px);display:grid;gap:6px;z-index:2}.sceneStat{border-radius:12px;border:1px solid rgba(63,43,26,.18);background:#ffffffc7;padding:6px 8px;display:grid;gap:6px}.sceneStat__label{font-family:var(--mono);font-size:11px;color:#1f1812c7}.sceneStat__bar{height:8px;border-radius:999px;overflow:hidden;background:#3f2b1a1f;border:1px solid rgba(63,43,26,.14)}.sceneStat__fill{height:100%;width:50%;border-radius:999px}.sceneStat__fill.is-hp{background:linear-gradient(90deg,#22c55ef2,#16a34af2)}.sceneStat__fill.is-mp{background:linear-gradient(90deg,#3b82f6f2,#2563ebf2)}.scene__enemy{position:absolute;right:12px;bottom:12px;width:160px;border-radius:16px;border:1px solid rgba(63,43,26,.22);background:#ffffffb8;padding:10px;display:grid;gap:8px;z-index:2}.enemy__img{width:100%;aspect-ratio:1 / 1;height:auto;object-fit:cover;border-radius:12px;border:1px solid rgba(63,43,26,.18);background:#ffffff80}.scene__fx{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:5}.dmgFloat{position:absolute;font-family:var(--mono);font-weight:900;font-size:18px;text-shadow:0 10px 24px rgba(0,0,0,.35);animation:dmgFloatUp .8s ease-out forwards}.dmgFloat.is-enemy{right:48px;bottom:120px;color:#ef4444f2}.dmgFloat.is-player{left:36px;bottom:210px;color:#ef4444f2}@keyframes dmgFloatUp{0%{transform:translateY(0) scale(.95);opacity:0}15%{opacity:1}to{transform:translateY(-48px) scale(1.05);opacity:0}}.scene__enemy.is-hit,.scene__portrait.is-hit{animation:hitShake .18s ease-in-out;filter:saturate(1.08) contrast(1.08)}@keyframes hitShake{0%{transform:translate(0)}25%{transform:translate(-2px,1px)}50%{transform:translate(2px,-1px)}75%{transform:translate(-1px,-1px)}to{transform:translate(0)}}.enemy__name{font-weight:800;font-size:12px}.enemy__hp{height:10px;background:#3f2b1a1f;border-radius:999px;overflow:hidden;border:1px solid rgba(63,43,26,.16)}.enemy__hpFill{height:100%;background:linear-gradient(90deg,#ef4444f2,#f59e0bf2)}.prog,.prog__cell,.prog__cell.is-done{display:none}.progStrip{border:1px solid rgba(63,43,26,.18);border-radius:14px;background:#ffffff9e;padding:10px 12px;display:grid;gap:8px}.progStrip.is-night{background:#0c121c2e;border-color:#0c121c38}.progBar{height:12px;border-radius:999px;border:1px solid rgba(63,43,26,.18);background:#3f2b1a1a;overflow:hidden}.progStrip.is-night .progBar{background:#0c121c52;border-color:#0c121c47}.progBar__fill{height:100%;width:0%;background:linear-gradient(90deg,#22c55ef2,#10b981eb)}.progStrip__label{font-family:var(--mono);font-size:12px;color:#1f1812a8}.tempStatus{margin-top:10px;width:fit-content;padding:8px 10px;border-radius:999px;border:1px solid rgba(63,43,26,.18);background:#ffffff9e;font-family:var(--mono);font-size:12px;color:#1f1812d9;position:relative;cursor:help}.tempStatus:hover:after{content:attr(data-tip);white-space:pre-wrap;position:fixed;left:24px;top:24px;width:320px;padding:10px 12px;border-radius:12px;border:1px solid rgba(63,43,26,.22);background:#fffcf3fa;box-shadow:0 18px 40px #1e181238;z-index:1200}.traitRow.is-active{border-color:#22c55e66;background:#22c55e14}.traitRow.is-inactive{border-color:#3f2b1a1f;background:#ffffff6b}.traitRow.is-active .kv__k{color:#1f1812f2}.traitRow.is-inactive .kv__k{color:#1f1812b8}.btncol{display:grid;gap:10px}button.btn--block{width:100%;justify-content:center}.btn--big{padding:12px 18px;font-size:15px;border-radius:14px}.btn--skill{border-color:#3b82f68c;background:#3b82f61a}.btn--skill:hover{border-color:#3b82f6bf;background:#3b82f624}.combatControls{display:grid;gap:12px;grid-template-columns:1fr 1fr}.bagGrid{display:grid;gap:12px;grid-template-columns:.9fr 1.3fr}@media (max-width: 920px){.bagGrid,.combatControls{grid-template-columns:1fr}}
