/* ストーリー「星座の地図」 */
#story{color:#f3eeff;overflow:hidden}
#story .chip{background:rgba(22,13,52,.55);border-color:rgba(232,203,140,.6);color:#f6eedc;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);box-shadow:0 2px 14px rgba(0,0,0,.35)}
#story .chip.ghost{font-family:'Cinzel',serif;letter-spacing:.12em}
.st-veil{background:radial-gradient(ellipse at 50% 30%,rgba(60,40,140,.25),rgba(8,5,26,.82) 75%)}
.st-title{font-family:'Shippori Mincho',serif;font-weight:800;color:#f6e7c0;text-shadow:0 0 14px rgba(255,214,140,.55)}
.st-wrap{position:relative;z-index:2;flex:1;min-height:0;width:100%;display:flex;align-items:center;justify-content:center;padding:4px 16px 22px}
.st-map{position:relative;height:100%;max-height:100%;aspect-ratio:100/140;max-width:100%;
  background:radial-gradient(ellipse at 50% 45%,rgba(120,90,220,.18),transparent 70%)}
@supports not (aspect-ratio:1){.st-map{width:min(100%,62vh);height:auto;padding-top:140%}}
.st-lines{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.st-lines line{stroke:rgba(200,190,255,.22);stroke-width:.5;stroke-dasharray:1.4 1.2;vector-effect:non-scaling-stroke;stroke-width:1.5px}
.st-lines line.lit{stroke:rgba(255,226,150,.65);stroke-dasharray:4 4;animation:stDash 1.6s linear infinite}
.st-lines line.done{stroke:#ffd98a;stroke-dasharray:none;stroke-width:2.2px;filter:drop-shadow(0 0 3px rgba(255,214,120,.9))}
@keyframes stDash{to{stroke-dashoffset:-16}}

.st-node{position:absolute;transform:translate(-50%,-50%);width:clamp(46px,13%,72px);aspect-ratio:1;padding:0;border:0;background:none;color:inherit;cursor:pointer;z-index:2}
.st-face{position:absolute;inset:0;border-radius:50%;overflow:hidden;display:grid;place-items:center;
  background:radial-gradient(circle,#2a1f5a,#100a2a);border:2px solid rgba(200,190,255,.35);box-shadow:0 0 0 3px rgba(10,6,30,.6)}
.st-face img{width:100%;height:100%;object-fit:cover;transform:scale(2.1);transform-origin:50% 13%}
.st-face span{font-family:'Cinzel',serif;font-size:20px;color:rgba(200,190,255,.45)}
.st-ring{position:absolute;inset:-7px;border-radius:50%;pointer-events:none}
.st-label{position:absolute;left:50%;top:calc(100% + 4px);transform:translateX(-50%);white-space:nowrap;font-size:clamp(10px,2.8vw,12.5px);
  font-family:'Shippori Mincho',serif;font-weight:800;letter-spacing:.08em;color:#efe6ff;text-shadow:0 1px 4px #000,0 0 8px rgba(0,0,0,.8)}
.st-label em{font-style:normal;font-family:'Cinzel',serif;color:#ffd98a;margin-right:4px;font-size:.9em}
.st-node.locked{cursor:default}
.st-node.locked .st-label{color:rgba(200,190,255,.4)}
.st-node.open .st-face{border-color:#ffe3a0;box-shadow:0 0 0 3px rgba(10,6,30,.6),0 0 18px rgba(255,214,120,.8)}
.st-node.open .st-ring{border:2px solid rgba(255,226,150,.85);animation:stPulse 1.8s ease-out infinite}
@keyframes stPulse{0%{transform:scale(.85);opacity:1}100%{transform:scale(1.35);opacity:0}}
.st-node.done .st-face{border-color:#ffd98a;box-shadow:0 0 0 3px rgba(10,6,30,.6),0 0 12px rgba(255,214,120,.55)}
.st-star{position:absolute;right:-4px;top:-6px;font-style:normal;font-size:16px;color:#ffd98a;text-shadow:0 0 6px rgba(255,200,90,.9),0 1px 2px #000}
.st-node:not(:disabled):hover .st-face{transform:scale(1.06);transition:transform .15s}
.st-hint{position:relative;z-index:2;font-size:11.5px;color:rgba(230,220,255,.7);letter-spacing:.06em;padding:8px 16px calc(12px + env(safe-area-inset-bottom));text-align:center}

/* 星の説明 */
.st-detail{background:linear-gradient(180deg,#221848,#120c2c);border:1px solid rgba(232,203,140,.55);border-radius:18px;padding:20px 22px;width:min(380px,100%);
  color:#f3eeff;text-align:center;gap:6px;box-shadow:0 10px 40px rgba(0,0,0,.5)}
.st-portrait{width:112px;height:112px;border-radius:50%;overflow:hidden;border:2px solid #ffd98a;box-shadow:0 0 22px rgba(255,214,120,.55);margin-bottom:6px}
.st-portrait img{width:100%;height:100%;object-fit:cover;transform:scale(2.1);transform-origin:50% 13%}
.st-no{font-family:'Cinzel',serif;font-size:12px;letter-spacing:.3em;color:#ffd98a}
.st-detail h3{font-family:'Shippori Mincho',serif;font-size:22px;letter-spacing:.2em;margin:0}
.st-hero{font-size:13px;color:#cfc4ee}
.st-hero b{color:#fff;font-size:15px;margin-left:2px}
.st-reward{font-size:12.5px;line-height:1.9;margin:8px 0 10px;padding:8px 10px;border-radius:10px;background:rgba(255,214,120,.1);border:1px solid rgba(255,214,120,.3)}
.st-reward b{color:#ffe3a0;margin:0 4px}
.st-got{font-size:12.5px;color:#a9e6b8;margin:8px 0 10px}
.st-lb{font-size:12px;color:#ffc8a0;margin:6px 0 0;letter-spacing:.04em}

/* 会話 */
.st-talk{position:absolute;inset:0;z-index:40;display:none;cursor:pointer;user-select:none;-webkit-user-select:none;overflow:hidden;background:#07051a}
.st-talk.on{display:block;animation:fade .35s ease}
.st-talk-bg{position:absolute;inset:-6%;background:var(--bg) center 20%/cover no-repeat,radial-gradient(ellipse at 50% 40%,#3a2a78,#07051a 75%);
  filter:blur(14px) brightness(.45) saturate(1.2)}
.st-pic{position:absolute;left:50%;top:calc(52px + env(safe-area-inset-top));bottom:calc(150px + env(safe-area-inset-bottom));transform:translateX(-50%);
  aspect-ratio:2/3;max-width:calc(100% - 48px);pointer-events:none;border-radius:16px;overflow:hidden;
  border:2px solid rgba(240,207,134,.85);box-shadow:0 0 0 5px rgba(20,12,48,.55),0 0 40px rgba(255,214,120,.35),0 18px 50px rgba(0,0,0,.6)}
.st-pic img{width:100%;height:100%;object-fit:cover;object-position:50% 0}
.st-pic::after{content:'';position:absolute;inset:0;background:linear-gradient(120deg,rgba(255,255,255,.18),transparent 35%,transparent 70%,rgba(255,220,150,.12));pointer-events:none}
.st-pic.in{animation:stIn .45s ease}
@keyframes stIn{from{opacity:0;transform:translate(-50%,14px) scale(.97)}to{opacity:1;transform:translate(-50%,0)}}
.st-box{position:absolute;left:50%;bottom:calc(16px + env(safe-area-inset-bottom));transform:translateX(-50%);width:min(720px,calc(100% - 32px));min-height:118px;
  background:linear-gradient(180deg,rgba(26,18,60,.92),rgba(12,8,32,.95));border:1px solid rgba(232,203,140,.6);border-radius:14px;padding:22px 20px 18px;
  box-shadow:0 8px 30px rgba(0,0,0,.6);color:#f6f0ff}
.st-name{position:absolute;left:16px;top:-14px;background:linear-gradient(90deg,#b98a3a,#f0cf86);color:#1a1030;font-family:'Shippori Mincho',serif;font-weight:800;
  font-size:14px;letter-spacing:.2em;padding:4px 16px;border-radius:99px;box-shadow:0 2px 10px rgba(0,0,0,.4)}
#stText{font-family:'Shippori Mincho',serif;font-size:clamp(14px,3.9vw,17px);line-height:1.9;letter-spacing:.06em;margin:0;min-height:3.8em}
.st-talk.narr #stText{font-style:normal;color:#e6dcff;text-align:center}
.st-next{position:absolute;right:16px;bottom:8px;font-style:normal;font-size:12px;color:#ffd98a;animation:stBob 1s ease-in-out infinite}
@keyframes stBob{50%{transform:translateY(3px)}}
.st-skip{position:absolute;right:14px;top:calc(14px + env(safe-area-inset-top));background:rgba(22,13,52,.55);border-color:rgba(232,203,140,.6);color:#f6eedc;z-index:2}
/* 章の切り替え */
.st-chaps{position:relative;z-index:2;display:flex;gap:6px;padding:4px;border-radius:99px;background:rgba(10,6,30,.55);border:1px solid rgba(232,203,140,.35);flex:none}
.st-chap{padding:6px 16px;border-radius:99px;font-family:'Shippori Mincho',serif;font-weight:800;font-size:13.5px;letter-spacing:.12em;color:#cfc4ee;background:transparent;white-space:nowrap}
.st-chap.on{color:#2c1d10;background:linear-gradient(90deg,#e2b24a,#fff1c2,#e2b24a)}
.st-chap.locked{opacity:.55}
.st-chap i{font-style:normal;font-size:11px;margin-right:4px}
.st-chap em{font-style:normal;color:#ffd98a;margin-left:4px;font-size:11px}
.st-chap.on em{color:#8a5a10}
.st-ctitle{position:relative;z-index:2;margin:6px 0 0;font-family:'Shippori Mincho',serif;font-weight:800;font-size:14px;letter-spacing:.14em;color:#f6e7c0;text-shadow:0 0 10px rgba(255,214,140,.5),0 1px 3px #000;flex:none}
@media (max-width:420px){.st-chap{padding:6px 12px;font-size:12.5px;letter-spacing:.06em}}
/* エクストラモードの入口（地図の下） */
.st-extra{position:relative;z-index:2;flex:none;display:flex;flex-direction:column;align-items:center;gap:1px;margin:8px auto 0;padding:7px 22px;border-radius:14px;
  font-family:'Shippori Mincho',serif;font-weight:800;font-size:14px;letter-spacing:.14em;color:#2c1d10;
  background:linear-gradient(90deg,#c98a2a,#ffe6a8,#c98a2a);border:1px solid rgba(255,236,190,.8);box-shadow:0 0 16px rgba(255,200,110,.35)}
.st-extra small{font-family:inherit;font-weight:600;font-size:11px;letter-spacing:.06em;color:#5a3a10}
.st-extra.locked{color:#cfc4ee;background:rgba(10,6,30,.55);border-color:rgba(232,203,140,.35);box-shadow:none}
.st-extra.locked small{color:#a99cd0}
.st-extra i{font-style:normal;font-size:11px;margin-right:4px}
.st-xrule{font-size:12.5px;line-height:1.8;color:#e2d9f7;margin:8px 0 0;text-align:left}
.st-xrule b{color:#ffc8a0}
