
:root{--bg:#111416;--panel:#1a1e21;--panel2:#22272b;--line:#3b4348;--ink:#f2eee6;--muted:#aaa59b;--brass:#d2a650;--brass2:#a77b30;--sea:#173541;--danger:#d86b54;--ok:#83b66a;--shadow:0 14px 40px rgba(0,0,0,.35)}
*{box-sizing:border-box}html{color-scheme:dark;scroll-behavior:smooth}body{margin:0;background:radial-gradient(circle at 50% -20%,#243038 0,#111416 44%,#0b0d0f 100%);color:var(--ink);font-family:ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans TC","PingFang TC",sans-serif;line-height:1.75}a{color:var(--brass);text-decoration:none}a:hover{text-decoration:underline}.shell{width:min(1180px,calc(100% - 28px));margin:auto}.topbar{position:sticky;top:0;z-index:50;background:rgba(14,17,19,.89);backdrop-filter:blur(14px);border-bottom:1px solid rgba(210,166,80,.25)}.topbar .shell{display:flex;gap:14px;align-items:center;justify-content:space-between;min-height:62px}.brand{display:flex;gap:10px;align-items:center;font-weight:800;color:var(--ink);letter-spacing:.02em}.brand-mark{color:var(--brass);font-size:1.4rem}.nav-actions{display:flex;gap:8px;align-items:center}.btn,.select,.input{border:1px solid var(--line);background:#181c1f;color:var(--ink);border-radius:12px;padding:9px 12px;font:inherit}.btn{cursor:pointer;display:inline-flex;gap:7px;align-items:center;justify-content:center}.btn:hover{border-color:var(--brass2);background:#21262a;text-decoration:none}.btn.primary{background:linear-gradient(180deg,#dcb55f,#b88732);color:#17130d;border-color:#ebc76f;font-weight:800}.hero{padding:48px 0 24px;text-align:center}.eyebrow{color:var(--brass);font-size:.83rem;letter-spacing:.18em;text-transform:uppercase}.hero h1{font-family:Georgia,"Noto Serif TC",serif;font-size:clamp(2.2rem,5vw,4.5rem);line-height:1.05;margin:.25em 0 .22em}.hero p{max-width:720px;margin:0 auto 20px;color:var(--muted)}.hero-actions{display:flex;justify-content:center;gap:10px;flex-wrap:wrap}.section{margin:18px 0 34px}.panel{background:linear-gradient(180deg,rgba(34,39,43,.94),rgba(24,28,31,.95));border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow)}.map-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:14px 16px;border-bottom:1px solid var(--line)}.map-meta{display:flex;gap:9px;align-items:center}.pill{border:1px solid #5e4b29;background:#282319;color:#ebc36a;border-radius:999px;padding:4px 9px;font-size:.82rem}.map-stage-wrap{padding:20px 32px 26px;position:relative}.map-stage{position:relative;max-width:800px;margin:auto;border-radius:13px;overflow:hidden;border:1px solid #655536;background:#0c171d;box-shadow:0 14px 34px rgba(0,0,0,.38)}.map-stage img{display:block;width:100%;height:auto}.hotspot{position:absolute;transform:translate(-50%,-50%);width:clamp(34px,5.5vw,48px);aspect-ratio:1;border-radius:50%;border:2px solid rgba(255,210,107,.18);background:rgba(255,190,65,.05);cursor:pointer;transition:.14s ease;display:grid;place-items:center;color:transparent;font-weight:900;font-size:.72rem;text-shadow:0 1px 2px #000}.hotspot:hover,.hotspot:focus-visible{border-color:#ffe098;background:rgba(40,27,7,.66);color:#fff4d5;box-shadow:0 0 0 4px rgba(210,166,80,.16),0 0 22px rgba(233,181,72,.55);outline:0}.hotspot.start{animation:pulse 1.7s infinite;border-color:#ffe098;color:#fff4d5;background:rgba(57,39,10,.7)}@keyframes pulse{50%{box-shadow:0 0 0 13px rgba(210,166,80,0)}}.edge{position:absolute;z-index:6;border:1px solid #9f7c38;background:rgba(15,18,20,.88);color:#f0c96f;border-radius:999px;padding:7px 11px;font-size:.8rem;box-shadow:0 5px 20px rgba(0,0,0,.35);cursor:pointer}.edge:hover{background:#2c271d}.edge.up{top:5px;left:50%;transform:translateX(-50%)}.edge.down{bottom:6px;left:50%;transform:translateX(-50%)}.edge.left{left:3px;top:50%;transform:translateY(-50%)}.edge.right{right:3px;top:50%;transform:translateY(-50%)}.map-help{padding:0 16px 15px;color:var(--muted);font-size:.88rem}.page-grid{display:flex;flex-wrap:wrap;gap:6px}.page-chip{min-width:37px;padding:5px 8px;border-radius:9px;border:1px solid var(--line);background:#15191b;color:#ccc;cursor:pointer}.page-chip.active{border-color:var(--brass);color:#ffe29b;background:#2a2419}.searchrow{display:flex;gap:8px;flex-wrap:wrap}.searchrow .input{min-width:180px;flex:1}.story-layout{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:20px;padding:28px 0 50px}.story-card{padding:clamp(20px,4vw,42px)}.story-head{border-bottom:1px solid var(--line);padding-bottom:18px;margin-bottom:24px}.story-id{font-family:Georgia,serif;color:var(--brass);font-size:clamp(2rem,6vw,4rem);line-height:1}.story-title{font-family:Georgia,"Noto Serif TC",serif;font-size:1.45rem;margin:.55rem 0 0}.source-tag{color:var(--muted);font-size:.85rem}.story-body{font-family:Georgia,"Noto Serif TC",serif;font-size:1.06rem}.story-body p{margin:1em 0}.story-body h1,.story-body h2,.story-body h3,.story-body h4,.story-body h5{color:#f5d68e;margin-top:1.7em}.story-body a{display:inline-block;border-bottom:1px dashed var(--brass);font-weight:800;padding:0 .12em}.story-body blockquote{border-left:3px solid var(--brass2);margin:1.2em 0;padding:.1em 0 .1em 1em;color:#ded7cb}.side{display:flex;flex-direction:column;gap:12px}.side .panel{padding:14px}.side h3{margin:0 0 10px;font-size:1rem;color:#e7d8b8}.tts-controls{display:grid;gap:9px}.tts-row{display:flex;gap:7px}.tts-row .btn{flex:1}.range{width:100%;accent-color:var(--brass)}.small{font-size:.8rem;color:var(--muted)}.index-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:8px;padding:15px}.story-link{border:1px solid var(--line);border-radius:10px;background:#181c1f;padding:9px 10px;color:var(--ink)}.story-link:hover{border-color:var(--brass);text-decoration:none}.story-link b{color:var(--brass)}.footer{border-top:1px solid #282e32;padding:22px 0 35px;text-align:center;color:#797c7d;font-size:.8rem}.toast{position:fixed;z-index:90;left:50%;bottom:22px;transform:translateX(-50%) translateY(20px);opacity:0;background:#252a2e;border:1px solid #5b4c2c;color:#fff0ca;padding:8px 12px;border-radius:12px;transition:.2s;pointer-events:none}.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
@media(max-width:820px){.story-layout{grid-template-columns:1fr}.side{order:-1}.map-stage-wrap{padding:34px 12px}.edge.left{left:-2px}.edge.right{right:-2px}.topbar .shell{min-height:56px}.brand span:last-child{display:none}.hero{padding-top:30px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}.hotspot.start{animation:none}}

/* v0.3 play-session UI */
.map-stage{touch-action:none;cursor:default}.map-stage.dragging{cursor:grabbing}.map-canvas{position:relative;width:100%;transform-origin:center center;will-change:transform;transition:transform .12s ease}.map-stage.dragging .map-canvas{transition:none}.map-zoom{display:flex;align-items:center;gap:6px}.map-zoom .btn{padding:6px 10px;min-width:38px}.zoom-label{min-width:48px;text-align:center;color:var(--muted);font-size:.8rem}.hotspot.read{border-color:rgba(131,182,106,.62);background:rgba(24,66,29,.28)}.hotspot.read::after{content:'✓';position:absolute;right:-4px;top:-7px;color:#bce8a7;background:#17351d;border:1px solid #639259;border-radius:50%;width:17px;height:17px;display:grid;place-items:center;font-size:11px;line-height:1}.hotspot.read:hover{border-color:#9edb82}.continue-story{position:fixed;right:max(14px,calc((100vw - 1180px)/2 + 14px));bottom:18px;z-index:45;box-shadow:0 10px 30px rgba(0,0,0,.45)}.campaign-grid{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;padding:18px}.campaign-head{display:flex;justify-content:space-between;align-items:center;gap:10px;grid-column:1/-1}.campaign-head h2{margin:0}.campaign-actions{display:flex;gap:8px;flex-wrap:wrap}.history-list{grid-column:1/-1;display:grid;gap:7px;max-height:330px;overflow:auto}.history-item{display:grid;grid-template-columns:58px 1fr;gap:8px;padding:7px 10px;border:1px solid #30363a;border-radius:10px;background:#171b1e;font-size:.88rem}.history-item time{color:#888e91}.history-empty{color:var(--muted);padding:10px}.story-link.read{border-color:#40633d;background:#17211a}.story-link.read b::after{content:' ✓';color:#9fd08a;font-weight:700}.audio-player{display:grid;gap:9px}.audio-status{display:flex;justify-content:space-between;gap:8px;align-items:center}.audio-mode{color:#e6c276;font-size:.78rem}.audio-progress{width:100%;accent-color:var(--brass)}.audio-timeline{display:flex;align-items:center;gap:8px}.audio-timeline output{min-width:76px;text-align:right;font-variant-numeric:tabular-nums;color:var(--muted);font-size:.76rem}.rate-presets{display:flex;gap:5px;flex-wrap:wrap}.rate-presets .btn{padding:4px 8px;font-size:.76rem}.read-badge{display:inline-flex;align-items:center;gap:5px;margin-top:9px;color:#a9d99a;font-size:.78rem}.nav-stack{display:grid;gap:8px}
@media(max-width:820px){.campaign-grid{grid-template-columns:1fr}.campaign-head{align-items:flex-start;flex-direction:column}.continue-story{right:12px;bottom:12px}.map-toolbar{align-items:flex-start}.map-zoom{width:100%;justify-content:flex-end}.history-item{grid-template-columns:52px 1fr}}

.audio-home-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap}.audio-settings-grid{display:grid;grid-template-columns:minmax(220px,1.4fr) minmax(220px,1fr);gap:14px;margin-top:16px;align-items:end}.audio-settings-grid label{display:grid;gap:7px;color:var(--muted);font-size:.9rem}.audio-rate-row{display:flex;align-items:center;gap:10px}.audio-rate-row .range{flex:1}.auto-read-label{align-self:center!important;display:block!important;color:var(--ink)!important}.audio-settings-grid code{color:#f0c96f}@media(max-width:720px){.audio-settings-grid{grid-template-columns:1fr}.audio-settings-grid .btn{width:100%}}

/* v0.7: two-page map spreads + corrected labels overlay */
.map-stage{max-width:1120px}
.hotspot.corrected{
  width:clamp(25px,2.7vw,34px);
  aspect-ratio:1;
  border:2px solid #9e4a2e;
  background:#f4e5b4;
  color:#4b2a1d;
  font-size:clamp(.58rem,1.15vw,.78rem);
  line-height:1;
  text-shadow:none;
  box-shadow:0 1px 2px rgba(0,0,0,.48), inset 0 0 0 1px rgba(255,255,255,.38);
  z-index:4;
}
.hotspot.corrected:hover,.hotspot.corrected:focus-visible{
  background:#fff0b9;
  color:#28170f;
  border-color:#cf6c3f;
  box-shadow:0 0 0 4px rgba(210,166,80,.22),0 2px 10px rgba(0,0,0,.55);
  transform:translate(-50%,-50%) scale(1.12);
}
.hotspot.corrected.start{background:#ffe094;color:#2c180d;border-color:#ee9b45;box-shadow:0 0 0 4px rgba(238,155,69,.32)}
.hotspot.corrected.read{background:#dbe7bd;color:#20331a;border-color:#668a50}
.hotspot.corrected.read::after{right:-6px;top:-7px}
.map-help strong{color:#e6c276}
@media(max-width:620px){
  .map-stage-wrap{padding-left:4px;padding-right:4px}
  .hotspot.corrected{width:clamp(20px,5.1vw,27px);font-size:clamp(.5rem,2.4vw,.65rem);border-width:1.5px}
  .edge{font-size:.7rem;padding:5px 8px}
}


/* v1.1 map corrections + big map */
.hotspot.corrected{min-width:34px;height:34px;padding:0 .35em;display:inline-flex;align-items:center;justify-content:center;line-height:1;border-width:2px;background:#f4e5b4;color:#3c2313;font-weight:900;font-size:clamp(.62rem,1.15vw,.92rem)}
.hotspot.corrected.read{background:#cfe5c3!important;color:#163015!important;border-color:#4f8653!important;box-shadow:0 0 0 3px rgba(79,134,83,.18)}
.hotspot.corrected.start{background:#ffe094!important;border-color:#ee9b45!important;color:#2c180d!important}
.big-map-stage{max-width:none;height:min(78vh,980px);overflow:hidden;background:#0f1417;border-radius:13px;border:1px solid #655536;box-shadow:0 14px 34px rgba(0,0,0,.38)}
.big-map-canvas{position:relative;transform-origin:0 0;will-change:transform;background:radial-gradient(circle at 50% 50%,rgba(29,54,65,.42),rgba(11,13,15,.1));padding:0;margin:0}
.bigmap-page{position:absolute;border-radius:10px;overflow:hidden;box-shadow:0 10px 28px rgba(0,0,0,.35);border:1px solid rgba(255,219,131,.18);background:#111}
.bigmap-page img{display:block;width:100%;height:100%;user-select:none;-webkit-user-drag:none}
.bigmap-hotspots{position:absolute;inset:0}
.bigmap-badge{position:absolute;left:10px;top:10px;z-index:3;background:rgba(12,15,17,.82);color:#f0c96f;border:1px solid #8a6c31;border-radius:999px;padding:4px 9px;font-size:.8rem;font-weight:800}
@media(max-width:820px){.big-map-stage{height:72vh}}


/* v1.2: map-mode switch + distinct visited/read states */
[hidden]{display:none!important}
.map-mode-switch{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:10px}
.mode-segment{display:inline-flex;padding:4px;border:1px solid var(--line);border-radius:14px;background:#15191b;gap:4px}
.mode-btn{border-color:transparent;background:transparent;min-width:120px}
.mode-btn.active{background:linear-gradient(180deg,#dcb55f,#b88732);color:#17130d;border-color:#ebc76f;font-weight:800}
.mode-hint{margin-left:auto}
.hotspot.corrected.read{background:#f4e5b4!important;color:#3c2313!important;border-color:#9e4a2e!important;box-shadow:none!important}
.hotspot.corrected.read::after{content:'✓';position:absolute;right:-6px;top:-7px;color:#bce8a7;background:#17351d;border:1px solid #639259;border-radius:50%;width:18px;height:18px;display:grid;place-items:center;font-size:11px;line-height:1;z-index:8}
.hotspot.corrected.visited{background:#cfe5c3!important;color:#163015!important;border-color:#4f8653!important;box-shadow:0 0 0 3px rgba(79,134,83,.18)!important}
.hotspot.corrected.visited.read{background:#bddaaf!important;border-color:#47794b!important}
.hotspot.corrected.start{background:#ffe094!important;border-color:#ee9b45!important;color:#2c180d!important}
.big-map-stage{touch-action:none;cursor:grab}.big-map-stage.dragging{cursor:grabbing}
@media(max-width:620px){.map-mode-switch{align-items:stretch}.mode-segment{width:100%}.mode-btn{flex:1;min-width:0}.mode-hint{margin-left:0}}


/* v1.3.1 Adventure cards + keyword assistant */
.kw-chip{display:inline-flex;align-items:center;gap:.25rem;border:1px solid transparent;border-radius:999px;padding:.22rem .48rem;font-size:.74rem;font-weight:800;line-height:1.25;white-space:nowrap}
.kw-provide{background:rgba(70,139,75,.20);border-color:#5d995d;color:#a9e89f}
.kw-need{background:rgba(177,66,54,.18);border-color:#9c4d43;color:#ffb1a5}
.kw-condition{background:rgba(174,125,41,.18);border-color:#9d7830;color:#f0cf77}
.kw-block{background:rgba(123,112,102,.18);border-color:#766b62;color:#d8cfc6}
.kw-chip.owned{box-shadow:0 0 0 2px rgba(111,181,105,.16) inset}
.keyword-tooltip{position:fixed;z-index:9999;width:min(360px,calc(100vw - 16px));padding:12px 13px;border:1px solid #79633b;border-radius:12px;background:rgba(15,18,20,.96);box-shadow:0 16px 42px rgba(0,0,0,.48);color:#eee7d9;pointer-events:none;backdrop-filter:blur(8px)}
.keyword-tooltip-title{font-weight:900;color:#f0cf77;margin-bottom:8px}
.keyword-tooltip-chips{display:flex;flex-wrap:wrap;gap:6px}
.story-keyword-summary{margin:0 20px 14px;padding:12px 14px;border:1px solid #4c493d;border-radius:12px;background:rgba(255,255,255,.025)}
.kw-summary-label{margin-bottom:7px;color:#bfb7a8}
.story-index-keywords{display:flex;flex-wrap:wrap;gap:4px;margin-top:7px}
.story-link:has(.story-index-keywords){min-height:96px}
.story-link .kw-chip{font-size:.64rem;padding:.16rem .34rem}
.adventure-panel h2{margin:0}
.adventure-add-row{display:grid;grid-template-columns:1fr auto;gap:10px;margin:14px 0}
.adventure-active,.adventure-all{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:8px}
.adventure-card{display:grid;grid-template-columns:auto auto auto 1fr;align-items:center;gap:7px;padding:9px 10px;border:1px solid #3d3c35;border-radius:10px;background:rgba(255,255,255,.018);cursor:pointer}
.adventure-card.active{border-color:#55784e;background:rgba(74,126,68,.10)}
.adventure-card input{accent-color:#72a867}
.adventure-card b{color:#e5bd5d;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.adventure-keyword{color:#a9e89f;font-weight:800}
.adventure-manager{margin-top:14px;border-top:1px solid #35342f;padding-top:12px}
.adventure-manager summary{cursor:pointer;color:#d7bb75;font-weight:800}
.adventure-manager-tools{margin:12px 0}
@media(max-width:720px){.adventure-add-row{grid-template-columns:1fr}.adventure-active,.adventure-all{grid-template-columns:1fr}.story-keyword-summary{margin-left:12px;margin-right:12px}}

/* v1.3.2 completed mission chip */
.kw-chip.kw-complete{
  background:rgba(92,117,138,.20);
  border-color:rgba(151,179,201,.52);
  color:#d3e0ea;
}

/* v1.4.0 — task cards and adventure cards are tracked separately */
.kw-chip b{font-weight:900}
.kw-chip.taskGrant{background:rgba(64,142,78,.22);border-color:#5b9b63;color:#b6efb8}
.kw-chip.taskComplete{background:rgba(73,116,151,.20);border-color:#658eae;color:#c9e2f4}
.kw-chip.taskLose{background:rgba(101,105,112,.20);border-color:#747981;color:#d5d8dc}
.kw-chip.keywordNeed{background:rgba(180,65,54,.20);border-color:#a55248;color:#ffb8ad}
.kw-chip.keywordCondition{background:rgba(177,128,41,.19);border-color:#a47e31;color:#f2d17c}
.kw-chip.keywordBlock{background:rgba(123,112,102,.18);border-color:#766b62;color:#d8cfc6}
.kw-chip.adventureGrant{background:rgba(48,126,147,.22);border-color:#4b94aa;color:#aee5f1}
.kw-chip.adventureRemove{background:rgba(118,76,131,.21);border-color:#876096;color:#dfc2e9}
.kw-chip.adventureNeed{background:rgba(166,65,87,.20);border-color:#9f5366;color:#ffc0cc}
.kw-chip.adventureCondition{background:rgba(133,104,44,.18);border-color:#90773e;color:#ead28d}
.kw-chip.adventureBlock{background:rgba(104,81,96,.20);border-color:#756170;color:#d9c9d4}
.kw-chip.adventureClear{background:rgba(99,76,76,.24);border-color:#835e5e;color:#e4c1c1}
.card-tracker-panel h2,.card-tracker-panel h3{margin:0}
.card-tracker-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:14px}
.card-subpanel{min-width:0;border:1px solid #3b3a34;border-radius:14px;padding:15px;background:rgba(255,255,255,.018)}
.card-subpanel.task-subpanel{box-shadow:inset 3px 0 0 rgba(91,155,99,.65)}
.card-subpanel.adventure-subpanel{box-shadow:inset 3px 0 0 rgba(75,148,170,.65)}
.card-subhead{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.tracker-add-row{display:grid;grid-template-columns:1fr auto;gap:8px;margin:12px 0}
.tracker-active,.tracker-all{display:grid;grid-template-columns:1fr;gap:7px}
.tracker-card{display:grid;grid-template-columns:auto auto minmax(70px,.65fr) minmax(110px,1.35fr);align-items:center;gap:7px;padding:9px 10px;border:1px solid #3d3c35;border-radius:10px;background:rgba(255,255,255,.018);cursor:pointer}
.tracker-card.task.active{border-color:#55784e;background:rgba(74,126,68,.10)}
.tracker-card.adventure.active{border-color:#467889;background:rgba(55,117,138,.10)}
.tracker-card.task input{accent-color:#72a867}.tracker-card.adventure input{accent-color:#63a7bd}
.tracker-card b{color:#e5bd5d;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.tracker-keyword{color:#a9e89f;font-weight:850}.tracker-name{color:#aee5f1;font-weight:850}
.tracker-manager{margin-top:13px;border-top:1px solid #35342f;padding-top:11px}
.tracker-manager summary{cursor:pointer;color:#d7bb75;font-weight:800}
.tracker-manager-tools{margin:10px 0}
@media(max-width:900px){.card-tracker-grid{grid-template-columns:1fr}}
@media(max-width:720px){.tracker-add-row{grid-template-columns:1fr}.tracker-card{grid-template-columns:auto auto 1fr}.tracker-card .small{grid-column:3}.story-keyword-summary{margin-left:12px;margin-right:12px}}


/* v1.4.1 — map guidance / live requirement status */
.map-legend{padding:16px 18px;margin-top:10px;margin-bottom:16px}
.map-legend-head{display:flex;justify-content:space-between;gap:14px;align-items:flex-start}
.map-legend-head strong{font-size:1.03rem;color:#f0cf77}
.map-legend-items{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin-top:13px}
.map-legend-item{display:grid;grid-template-columns:30px 1fr;gap:8px;align-items:center;border:1px solid #383b3b;border-radius:11px;background:rgba(255,255,255,.018);padding:8px 9px}
.map-legend-item b{display:block;font-size:.82rem;color:#eee5d5}
.map-legend-item small{display:block;color:#999b98;font-size:.69rem;line-height:1.35}
.legend-status,.map-status-badge{display:grid;place-items:center;font-style:normal;font-weight:950;line-height:1;border:1px solid;border-radius:999px;text-shadow:none}
.legend-status{width:27px;height:27px;font-size:.68rem}
.legend-status.gain-keyword,.map-status-badge.gain-keyword{background:#194225;border-color:#70bd79;color:#c6f6c8}
.legend-status.gain-adventure,.map-status-badge.gain-adventure{background:#133e48;border-color:#5eb1c5;color:#c1f1f8}
.legend-status.ready,.map-status-badge.ready{background:#173d52;border-color:#6bc8ec;color:#d5f5ff}
.legend-status.missing,.map-status-badge.missing{background:#4a211d;border-color:#df745e;color:#ffd0c6}
.legend-marker{width:27px;height:27px;border-radius:50%;border:2px solid #4f8653;background:#cfe5c3;box-shadow:0 0 0 2px rgba(79,134,83,.18)}
.legend-read{width:20px;height:20px;border-radius:50%;display:grid;place-items:center;background:#17351d;border:1px solid #639259;color:#bce8a7;font-style:normal;font-size:.72rem;font-weight:900}
.map-legend-note{margin-top:10px;padding-top:9px;border-top:1px dashed #3c4142}
.map-status-badge{position:absolute;z-index:12;width:17px;height:17px;font-size:8px;pointer-events:none;box-shadow:0 1px 4px rgba(0,0,0,.65)}
.map-status-badge.gain-keyword{left:-8px;top:-8px}
.map-status-badge.gain-adventure{left:-8px;bottom:-8px;font-size:7px}
.map-status-badge.ready{right:-8px;bottom:-8px;font-size:8px}
.map-status-badge.missing{right:-8px;top:-8px;font-size:11px}
.hotspot.corrected.route-ready{outline:2.5px solid rgba(83,190,225,.82);outline-offset:2px}
.hotspot.corrected.route-missing:not(.route-ready){outline:2px dashed rgba(218,103,82,.78);outline-offset:2px}
/* 已讀勾移到底部中央，避免和「!」需求徽章重疊 */
.hotspot.corrected.read::after{right:50%!important;top:auto!important;bottom:-10px!important;transform:translateX(50%);width:16px!important;height:16px!important;font-size:10px!important}
.map-tip-status{display:grid;gap:5px;margin:0 0 9px;padding:8px 9px;border-radius:9px;background:rgba(255,255,255,.025);border:1px solid #333a3d}
.map-tip-row{font-size:.76rem;line-height:1.45}
.map-tip-row b{display:inline-grid;place-items:center;min-width:25px;margin-right:4px;border-radius:999px;padding:2px 4px;font-size:.66rem}
.map-tip-row.reward{color:#bdecbf}.map-tip-row.reward b{background:#194225;color:#c6f6c8}
.map-tip-row.adventure{color:#b6e9f1}.map-tip-row.adventure b{background:#133e48;color:#c1f1f8}
.map-tip-row.ready{color:#cdeffc}.map-tip-row.ready b{background:#173d52;color:#d5f5ff}
.map-tip-row.missing{color:#ffc2b6}.map-tip-row.missing b{background:#4a211d;color:#ffd0c6}
@media(max-width:820px){
  .map-legend-head{flex-direction:column}
  .map-legend-items{grid-template-columns:1fr 1fr}
}
@media(max-width:560px){
  .map-legend-items{grid-template-columns:1fr}
  .map-status-badge{width:14px;height:14px;font-size:7px}
  .map-status-badge.gain-keyword{left:-6px;top:-6px}
  .map-status-badge.gain-adventure{left:-6px;bottom:-6px;font-size:6px}
  .map-status-badge.ready{right:-6px;bottom:-6px}
  .map-status-badge.missing{right:-6px;top:-6px;font-size:9px}
}
