:root{color-scheme:light;--paper:#f6f3ec;--card:#fffdf8;--ink:#1e3637;--muted:#647977;--line:#d9e2db;--green:#247e70;--green-deep:#175e57;--mint:#dceee7;--gold:#b78a4c;--danger:#a7534d;font-family:system-ui,-apple-system,"PingFang SC","Microsoft YaHei",sans-serif}
*{box-sizing:border-box}html{min-height:100%;background:#e9eae3}body{margin:0;min-width:320px;color:var(--ink);background:radial-gradient(circle at 20% 12%,#f5e8cf 0,transparent 30%),radial-gradient(circle at 85% 85%,#d9e9df 0,transparent 32%),#e9eae3}[hidden]{display:none!important}
a{color:inherit}button,input,select{font:inherit}button{cursor:pointer;border:0;border-radius:14px;padding:11px 15px;background:var(--green);color:white;font-weight:750}button:hover:not(:disabled){filter:brightness(1.07)}button:disabled{cursor:not-allowed;opacity:.5}button:focus-visible,input:focus-visible,select:focus-visible,a:focus-visible{outline:3px solid #e7bd76;outline-offset:2px}input,select{min-width:0;min-height:44px;border:1px solid var(--line);border-radius:12px;padding:10px 12px;background:white;color:var(--ink)}
.site-layout{width:min(1120px,100%);min-height:100dvh;margin:auto;padding:28px 34px;display:grid;grid-template-columns:minmax(0,1fr) 440px;align-items:center;gap:clamp(36px,7vw,100px)}.desktop-note{align-self:center;max-width:500px}.desktop-note img{display:block;border-radius:22px;box-shadow:0 12px 30px #24433a23}.desktop-note .eyebrow{margin-top:30px}.desktop-note h2{margin:0 0 24px;font-size:clamp(48px,5vw,76px);line-height:1.12;letter-spacing:-.06em;color:#153e3a}.desktop-note>p:not(.eyebrow){font-size:17px;line-height:1.9;color:#566d68}.desktop-note a{display:inline-flex;margin-top:14px;gap:10px;text-decoration:none;color:var(--green-deep);font-weight:800}
.phone-shell{height:min(900px,calc(100dvh - 56px));min-height:600px;display:flex;flex-direction:column;overflow:hidden;border:1px solid #d8ddd4;border-radius:36px;background:var(--paper);box-shadow:0 34px 80px #17352b27}.topbar{flex:none;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:20px 22px 16px;background:var(--paper)}.brand{display:flex;align-items:center;gap:10px;text-decoration:none}.brand img{display:block;object-fit:contain;border-radius:13px}.brand span{display:flex;flex-direction:column;line-height:1.14}.brand strong{font-size:18px;letter-spacing:.13em}.brand small{margin-top:3px;font-size:10px;font-weight:800;letter-spacing:.1em;color:var(--muted)}.top-link{font-size:12px;text-decoration:none;font-weight:800;color:var(--green-deep)}.app-main{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:0 22px;scrollbar-width:thin;scrollbar-color:#b9c9be transparent}.eyebrow{margin:0 0 8px;color:var(--gold);font-size:10px;font-weight:900;letter-spacing:.2em}
.hero{border-radius:25px;padding:24px 25px 26px;color:#fffef7;background:radial-gradient(circle at 94% 8%,#d7ac68a6 0,transparent 35%),linear-gradient(135deg,#174c47 0%,#235d55 56%,#224f4e 100%);box-shadow:0 16px 32px #1d4e4030}.hero .eyebrow{color:#eac888}.hero h1{margin:0 0 10px;font-size:37px;letter-spacing:-.03em;line-height:1.15}.hero p:last-child{margin:0;max-width:310px;font-size:13px;line-height:1.75;color:#e1ede8}.notice{display:flex;align-items:center;min-height:45px;margin:16px 0 20px;padding:11px 14px;border:1px solid #b9dfd3;border-radius:15px;background:#e1f2e9;color:#22675e;font-size:13px;font-weight:750;line-height:1.45}.notice:before{content:"";display:block;flex:none;width:8px;height:8px;margin-right:10px;border-radius:50%;background:#2faf94;box-shadow:0 0 0 4px #2faf9425}.notice.warn{background:#fff0d9;border-color:#e8cc98;color:#855f2e}.notice.warn:before{background:#bd8842}.notice.error{background:#fceae5;border-color:#edc9c1;color:var(--danger)}.notice.error:before{background:#d06e64}
.card{margin:0 0 18px;padding:20px;border:1px solid var(--line);border-radius:20px;background:var(--card);box-shadow:0 8px 20px #1c4c3f0b}.card h2,.card h3{margin:0 0 14px}.card h2{font-size:23px}.card h3{font-size:17px}.card p{color:var(--muted);line-height:1.65}.binding-card{margin-top:4px}.binding-card label{display:block;margin:20px 0 8px;font-size:13px;font-weight:800}.inline-form{display:flex;gap:8px}.inline-form input{flex:1}.section-heading{display:flex;align-items:end;justify-content:space-between;gap:10px;margin:23px 0 13px}.section-heading h2{margin:0;font-size:23px;line-height:1.15;letter-spacing:-.03em}.section-mark{font-size:28px;color:#7cac9d}.actions{display:flex;gap:8px;margin:0 0 8px}.actions button{flex:1;font-size:12px;white-space:nowrap}.secondary{border:1px solid var(--line);background:#fffdf8;color:var(--green-deep)}.page{display:none}.page.active{display:block}.state-tag{padding:5px 9px;border-radius:999px;background:var(--mint);color:var(--green-deep);font-size:11px;font-weight:850;white-space:nowrap}.card-heading{display:flex;align-items:start;justify-content:space-between;gap:10px}.card-heading h3{margin:0 0 17px}.card-heading>span:not(.state-tag){max-width:170px;text-align:right;color:var(--muted);font-size:11px;overflow-wrap:anywhere}
dl{margin:0;display:grid;gap:0}dl>div{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:13px 0;border-bottom:1px solid #e8ede6}dl>div:last-child{border-bottom:0}dt{font-size:13px;color:var(--muted)}dd{margin:0;max-width:65%;text-align:right;color:var(--green-deep);font-size:13px;font-weight:850;overflow-wrap:anywhere}.hint{margin:14px 0 0;font-size:11px;line-height:1.65}.jump-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:0 0 17px}.jump-card{min-width:0;display:grid;gap:5px;text-align:left;padding:15px;border:1px solid var(--line);background:#fdfcf7;color:var(--ink)}.jump-card span{font-size:27px;line-height:1;color:var(--green)}.jump-card strong{font-size:14px}.jump-card small{font-size:11px;font-weight:500;color:var(--muted)}.scope-note{margin:0 0 18px;padding:15px 17px;border-left:3px solid #75ae9b;border-radius:0 12px 12px 0;background:#e8f1e9;color:#507067;font-size:12px;line-height:1.75}
#character-name{font-size:17px}
.map-toolbar{display:flex;align-items:center;justify-content:flex-end;gap:9px;margin:8px 0 10px}.map-toolbar button{min-width:38px;min-height:38px;padding:4px 8px;font-size:22px;line-height:1}.map-toolbar span{min-width:44px;text-align:center;color:var(--green-deep);font-size:12px;font-weight:800}
.map-frame{display:grid;place-items:center;min-height:300px;max-height:560px;margin:2px 0 0;border:1px dashed #b8cbc0;border-radius:15px;background:#edf2e9;overflow:auto}.map-frame canvas{display:block;max-width:100%;max-height:550px;width:auto;height:auto;image-rendering:pixelated}.map-frame p{padding:28px;text-align:center;font-size:13px}.context-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:18px 0}.context-grid label{display:grid;align-content:start;gap:7px;color:#3f5c55;font-size:12px;font-weight:750}.context-grid label select{width:100%;font-weight:600}.context-grid .toggle{display:flex;align-items:center;min-height:45px;gap:8px;border:1px solid var(--line);border-radius:12px;padding:9px 10px;background:#f8faf6;color:var(--ink)}.toggle input{min-height:0;width:17px;height:17px;margin:0;accent-color:var(--green)}.queues-card>p{margin:0;font-size:12px}.queue-grid{display:grid;gap:12px;margin:18px 0}.queue-panel{min-width:0;padding:16px;border:1px solid var(--line);border-radius:16px;background:#f8faf5}.queue-panel h4{margin:0 0 3px;font-size:16px}.queue-panel small{font-size:11px;color:var(--muted)}.queue-panel ol{display:grid;gap:7px;list-style:none;margin:13px 0;padding:0}.queue-panel li{display:flex;align-items:center;gap:7px;padding:8px 9px;border:1px solid #e0e9e1;border-radius:10px;background:white;font-size:12px}.queue-panel li span{flex:1;min-width:0;overflow-wrap:anywhere}.row-actions{display:flex;flex:none;gap:3px}.row-actions button{min-width:28px;min-height:30px;padding:3px 5px;border:1px solid var(--line);border-radius:8px;background:#f3f7f1;color:var(--green-deep)}.add-row{display:flex;gap:7px;margin-top:12px}.add-row select{flex:1;max-width:100%;font-size:12px}.add-row button{font-size:12px;white-space:nowrap}.save-bar{display:grid;gap:10px;margin-top:18px;padding-top:16px;border-top:1px solid var(--line)}.save-bar p{margin:0!important;font-size:11px}.save-bar button{width:100%}
.map-frame{display:block}.map-frame canvas{max-width:none;max-height:none;width:100%;height:auto;margin:0 auto}.map-frame canvas.zoom-150{width:150%}.map-frame canvas.zoom-200{width:200%}.map-frame canvas.zoom-300{width:300%}
.nearby-frame{display:grid;place-items:center;min-height:220px;padding:12px;border:1px solid #52646b;border-radius:15px;background:#15232b;overflow:hidden}.nearby-frame canvas{display:block;width:min(100%,300px);height:auto;image-rendering:pixelated}.nearby-frame p{margin:0;padding:20px;text-align:center;color:#dce9dc;font-size:12px}.nearby-card .hint{margin-top:10px}
.adventure-grid{display:grid;gap:14px}.adventure-map-card,.records-card{min-width:0;margin:0}.adventure-map-card .nearby-frame{min-height:300px}.records-card #records-state{margin:18px 0 10px;color:var(--green-deep);font-size:12px;font-weight:800}.records-card #records-list{display:grid;gap:10px;margin:0;padding:0;list-style:none}.records-card #records-list li{border-left:3px solid var(--green);border-radius:0 11px 11px 0;padding:10px 12px;background:#edf5ef;font-size:13px;line-height:1.6;overflow-wrap:anywhere}
.record-filters{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin-top:16px}.record-filters button{min-width:0;min-height:40px;padding:8px 3px;border:1px solid var(--line);border-radius:10px;background:#f3f6f1;color:var(--green-deep);font-size:12px}.record-filters button.active{border-color:var(--green);background:#dceee7}.record-filters button:disabled{opacity:.55}
.records-card #records-follow{flex:none;min-height:44px;font-size:12px}.records-card #records-updates{min-height:20px;margin:0 0 10px;font-size:12px;color:var(--muted)}#records-scroll{max-height:480px;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;overflow-anchor:none}.records-card #records-list li{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 10px}.records-card #records-list time{color:var(--muted);font-size:11px;font-variant-numeric:tabular-nums}.record-kind{font-size:11px;font-weight:800;color:var(--green-deep)}.record-text{grid-column:1 / -1}.records-card #records-list li[data-kind="loot"]{border-left-color:var(--gold);background:#f7f0e0}.records-card #records-list li[data-kind="session"]{border-left-color:#647c8d;background:#edf0f3}.record-source{margin-top:14px;font-size:12px;color:var(--muted)}.record-source summary{cursor:pointer;min-height:44px;padding:12px 0}
.atlas-grid{display:grid;gap:12px}.atlas-card .card-heading>span{color:var(--muted);font-size:11px}.atlas-list{display:grid;gap:7px;list-style:none;margin:0;padding:0}.atlas-list li{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:9px 0;border-bottom:1px solid #e8ede6}.atlas-list li:last-child{border-bottom:0}.atlas-list strong{min-width:0;overflow-wrap:anywhere;font-size:13px}.atlas-list small{flex:0 1 54%;text-align:right;color:var(--muted);overflow-wrap:anywhere;font-size:11px}.atlas-card .hint{margin-top:10px}
.bottom-nav{position:sticky;bottom:0;z-index:2;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:4px;margin:24px -22px 0;padding:10px 15px calc(10px + env(safe-area-inset-bottom));border-top:1px solid #d5e1d7;background:#fffdf8ef;backdrop-filter:blur(16px)}.bottom-nav button{display:grid;justify-items:center;gap:2px;min-width:0;padding:6px 1px;border-radius:11px;background:transparent;color:#6d8279;font-weight:700}.bottom-nav button span{font-size:24px;line-height:1.1}.bottom-nav button b{font-size:10px}.bottom-nav button.active{background:#e3f0e9;color:var(--green-deep)}footer{flex:none;padding:8px 22px 14px;background:var(--paper);text-align:center;color:#81918a;font-size:9px;line-height:1.35}
.map-toolbar{flex-wrap:wrap}.map-toolbar button{min-width:44px;min-height:44px}.map-toolbar #map-center{font-size:13px;line-height:1.3;padding:9px 12px;margin-right:auto}
/* Wide screens show the verified map beside the role HUD; mobile keeps the original single-page flow. */
@media(min-width:900px){
  html{background:#0c1822}
  body{background:radial-gradient(circle at 8% 0%,#28474b 0,transparent 34%),radial-gradient(circle at 92% 100%,#203747 0,transparent 33%),#0c1822}
  .site-layout{display:block;width:min(1580px,100%);padding:24px}
  .desktop-note{display:none}
  .phone-shell{width:100%;height:auto;min-height:calc(100dvh - 48px);overflow:visible;border-radius:24px;box-shadow:0 28px 70px #020e1780}
  .topbar{position:sticky;top:0;z-index:5;border-bottom:1px solid var(--line);border-radius:24px 24px 0 0;background:#f6f3ecf2;backdrop-filter:blur(18px)}
  .app-main{overflow:visible;padding:24px 28px 28px}
  .hero{min-height:162px;display:flex;flex-direction:column;justify-content:center;padding:26px 34px}
  .hero h1{font-size:42px}
  .hero p:last-child{max-width:72ch;font-size:14px}
  .binding-card{max-width:640px;margin:20px auto}
  #offline-content{display:grid;grid-template-columns:minmax(0,.82fr) minmax(0,1.18fr);column-gap:22px;align-items:start}
  .bottom-nav{grid-column:1/-1;grid-row:1;position:sticky;top:88px;z-index:4;gap:8px;margin:0 0 14px;padding:8px;border:1px solid var(--line);border-radius:17px;background:#fffdf8f2}
  .bottom-nav button{display:flex;align-items:center;justify-content:center;gap:10px;min-height:48px;padding:8px}
  .bottom-nav button span{font-size:19px}
  .bottom-nav button b{font-size:13px}
  .actions{grid-column:1/-1;grid-row:2;justify-content:flex-end;margin:0 0 6px}
  .actions button{flex:0 0 auto;min-width:142px}
  .page[data-page="home"].active{display:block;grid-column:1;grid-row:3}
  .page[data-page="home"].active~.page[data-page="map"]{display:block;grid-column:2;grid-row:3}
  .page.active:not([data-page="home"]){grid-column:1/-1;grid-row:3}
  .section-heading{margin:15px 0}
  .jump-grid{grid-auto-rows:1fr}
  .jump-card{min-height:106px}
  .map-frame{min-height:440px;max-height:650px;background:#15232b;border-color:#829b90}
  .map-frame p{color:#dce9dc}
  .map-frame canvas.color-map{image-rendering:auto}
  .queue-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .atlas-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .adventure-grid{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);align-items:start}
}
@media(min-width:1280px){
  .site-layout{display:grid;grid-template-columns:230px minmax(0,1fr);align-items:start;gap:20px}
  .desktop-note{display:block;position:sticky;top:24px;max-width:none;min-height:calc(100dvh - 48px);padding:28px 23px;border:1px solid #53716d;border-radius:24px;background:linear-gradient(160deg,#183840,#122832 72%,#101d2a);box-shadow:0 28px 70px #020e1760}
  .desktop-note img{width:66px;height:66px;border-radius:18px}
  .desktop-note .eyebrow{margin-top:32px;color:#e7c98b}
  .desktop-note h2{font-size:34px;line-height:1.25;color:#fff8e8}
  .desktop-note>p:not(.eyebrow){font-size:13px;line-height:1.85;color:#c7d9d1}
  .desktop-note a{color:#f4d59c;font-size:13px}
}
@media(max-width:760px){.site-layout{display:block;padding:0}.desktop-note{display:none}.phone-shell{width:100%;height:100dvh;min-height:0;border:0;border-radius:0;box-shadow:none}.topbar{padding:calc(12px + env(safe-area-inset-top)) 16px 14px}.app-main{padding:0 16px}.bottom-nav{margin-left:-16px;margin-right:-16px}}
@media(max-width:390px){.hero{padding:21px}.hero h1{font-size:34px}.inline-form,.add-row{flex-direction:column}.inline-form button,.add-row button{width:100%}.context-grid{grid-template-columns:1fr}.card-heading{align-items:start;flex-direction:column}.card-heading>span:not(.state-tag){max-width:none;text-align:left}}
@media(max-width:390px){.adventure-map-card,.records-card{padding:16px}.adventure-map-card .nearby-frame{min-height:260px;padding:8px}.record-filters{gap:4px}.record-filters button{font-size:11px}}
