/* AZRION GAME — boot sequence kit (azboot) v1.0.0
   Publisher splash -> notice -> title (KV + START) -> first-run consent ->
   loading (top progress line + %). Shared by all AZRION GAME titles.
   Motion follows the house law: quiet glides, long refined easing, no bounce. */
.azboot{
  --azb-accent:#d8b84a;
  --azb-ink:#f2f1fa;
  --azb-dim:rgba(242,241,250,.66);
  --azb-line:rgba(255,255,255,.16);
  --azb-ease:cubic-bezier(.22,.9,.26,1);
  /* 高さは --azb-h（azboot.js が実画面の実測で書く）を正とする。
     100dvh はフォールバック：standalone でレイアウト領域が実画面より
     短い端末（2026-11-01 実機で ~46pt の帯）では dvh では届かない。 */
  position:fixed;inset:0;height:100vh;height:100dvh;height:var(--azb-h,100dvh);z-index:10000;
  font-family:-apple-system,BlinkMacSystemFont,"Hiragino Sans","Noto Sans JP",sans-serif;
  color:var(--azb-ink);
  -webkit-tap-highlight-color:transparent;
  overscroll-behavior:none;
}
.azboot[hidden]{display:none}
.azboot *{margin:0;padding:0;box-sizing:border-box}
.azboot-stage{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;
  padding:calc(20px + env(safe-area-inset-top)) 22px calc(20px + env(safe-area-inset-bottom));
  opacity:0;pointer-events:none;transition:opacity .55s var(--azb-ease);}
.azboot-stage.on{opacity:1;pointer-events:auto}
.azboot.leaving{opacity:0;transition:opacity .5s var(--azb-ease);pointer-events:none}

/* ---------- top progress line (loading) ---------- */
.azboot-progress{position:absolute;top:0;left:0;right:0;height:3px;background:rgba(255,255,255,.10);opacity:0;transition:opacity .3s}
.azboot-progress.on{opacity:1}
.azboot-progress>i{display:block;height:100%;width:0%;background-color:var(--azb-accent);border-radius:0 2px 2px 0;
  /* 精錬パス（2026-11-01・-10）：反射とグローを外し、平らな線にする */
  transition:width .35s var(--azb-ease)}

/* ---------- world backdrop (every stage performs inside the title's world) ----------
   Owner design law (2026-10-30): no generic white/common screens — even the
   splash, notice and loading stages stand inside the title's scenery. */
.azboot-worldbg{position:absolute;inset:0;overflow:hidden;background:#080503}
.azboot-worldbg img{width:100%;height:100%;object-fit:cover;object-position:center;display:block}
.azboot-worldbg::after{content:"";position:absolute;inset:0;background:rgba(9,6,3,.52)}
/* パス6：平らな闇にしない——上部に夕光の気配（暖色の放射グラデーション）を薄く重ねる */
.azboot-worldbg.deep::after{background:radial-gradient(120% 62% at 50% -6%,rgba(255,186,118,.13),rgba(255,186,118,0) 60%),linear-gradient(180deg,rgba(9,6,3,.66),rgba(9,6,3,.48) 45%,rgba(9,6,3,.78))}
.azboot-worldbg.soft::after{background:radial-gradient(120% 62% at 50% -6%,rgba(255,186,118,.10),rgba(255,186,118,0) 60%),linear-gradient(180deg,rgba(9,6,3,.38),rgba(9,6,3,.22) 45%,rgba(9,6,3,.55))}
/* ロード画面専用の地（2026-11-01 実機評：状態文が絵に埋もれて読めない）。
   soft の最暗部は中央帯（.22）で、明るいKVだと％・状態文・確認行が
   一番明るい絵の上に乗る。ロード画面だけ、中央に静かな闇の池を作る */
.azboot-worldbg.load::after{background:radial-gradient(120% 62% at 50% -6%,rgba(255,186,118,.10),rgba(255,186,118,0) 60%),linear-gradient(180deg,rgba(9,6,3,.46),rgba(9,6,3,.58) 42%,rgba(9,6,3,.64) 68%,rgba(9,6,3,.74))}
.azboot-stage>*{position:relative;z-index:1}
.azboot-stage>.azboot-worldbg{position:absolute;z-index:0}

/* ---------- 1. splash (publisher mark, inside the world) ---------- */
.azboot-splash{background:#080503;color:#fff}
.azboot-splash .azb-mark{width:74px;height:auto;opacity:0;transform:translateY(10px) scale(.985);
  filter:drop-shadow(0 4px 22px rgba(0,0,0,.5));
  transition:opacity .8s var(--azb-ease),transform .8s var(--azb-ease)}
.azboot-splash .azb-word{margin-top:16px;font-size:15px;font-weight:700;letter-spacing:.44em;text-indent:.44em;color:#fff;
  text-shadow:0 2px 14px rgba(0,0,0,.6);
  opacity:0;transform:translateY(8px);transition:opacity .8s var(--azb-ease) .12s,transform .8s var(--azb-ease) .12s}
.azboot-splash .azb-sub{margin-top:7px;font-size:9.5px;letter-spacing:.34em;text-indent:.34em;color:rgba(255,255,255,.55);
  opacity:0;transition:opacity .8s var(--azb-ease) .24s}
.azboot-stage.on .azb-mark,.azboot-stage.on .azb-word,.azboot-stage.on .azb-sub{opacity:1;transform:none}

/* ---------- title corner: データ修復・引き継ぎ ---------- */
.azboot-repair-link{pointer-events:auto;display:block;margin:14px auto 0;padding:7px 16px;cursor:pointer;
  border:1px solid rgba(255,255,255,.22);border-radius:999px;color:rgba(255,255,255,.72);
  background:rgba(255,255,255,.05);
  font-size:11px;letter-spacing:.1em}
.azboot-repair-link:active{transform:scale(.97)}

/* ---------- repair stage rows ---------- */
.azboot-repair-rows{margin-top:16px;border-top:1px solid rgba(255,190,110,.18)}
.azboot-repair-row{display:flex;align-items:baseline;gap:12px;padding:10px 2px;border-bottom:1px solid rgba(255,190,110,.18);font-size:12.5px}
.azboot-repair-row span{color:var(--azb-dim);letter-spacing:.06em;flex:0 0 86px}
.azboot-repair-row b{font-weight:600;letter-spacing:.03em}

/* ---------- loading data check (quiet lines under the gauge) ---------- */
.azboot-datacheck{order:5;margin-top:12px;text-align:center;font-size:11px;line-height:1.9;color:rgba(255,255,255,.8);letter-spacing:.08em;min-height:34px;
  text-shadow:0 1px 8px rgba(0,0,0,.6)}

/* ---------- shared card stages (notice / consent) ---------- */
.azboot-dim{background:#080503}
/* タイトル作り直し（2026-11-01・-11）：カードは滑らかな磨りガラスの面に。
   旧形の「布の縫い目（破線の内枠）＋織りテクスチャ＋斜めの反射帯」は
   ドット／ピクセル質感に見えるとの実機指摘（龍大）で全廃。細い無地の縁と
   柔らかい影だけで、本編の滑らかな世界に質感を合わせる */
.azboot-card{width:min(92vw,430px);max-height:100%;overflow-y:auto;-webkit-overflow-scrolling:touch;
  background:rgba(21,15,9,.68);backdrop-filter:blur(16px) saturate(1.12);-webkit-backdrop-filter:blur(16px) saturate(1.12);
  border:1px solid rgba(255,255,255,.14);border-radius:20px;
  padding:24px 22px 20px;box-shadow:inset 0 1px 0 rgba(255,255,255,.07),0 24px 60px rgba(0,0,0,.42);
  opacity:0;transform:translateY(12px);transition:opacity .6s var(--azb-ease),transform .6s var(--azb-ease)}
.azboot-stage.on .azboot-card{opacity:1;transform:none}
.azboot-kicker{display:flex;align-items:center;gap:8px;font-size:10px;letter-spacing:.34em;color:var(--azb-accent);font-weight:700}
.azboot-kicker::before{content:"";width:6px;height:6px;flex:0 0 auto;background:var(--azb-accent);transform:rotate(45deg)}
.azboot-h{margin-top:9px;font-size:20px;font-weight:700;letter-spacing:.06em;text-shadow:0 2px 12px rgba(0,0,0,.5)}
.azboot-body{margin-top:15px;font-size:13.5px;line-height:1.78;color:var(--azb-ink);text-align:left;line-break:strict}
.azboot-body li{margin:0 0 9px 1.15em;line-height:1.74;text-align:left;text-justify:none;-webkit-text-justify:none}
.azb-nw{white-space:nowrap}
.azboot-body li::marker{color:var(--azb-accent)}
.azboot-body p{margin-bottom:10px}
.azboot-note{font-size:11.5px;color:var(--azb-dim);line-height:1.75}
/* 主ボタンは「生成りの板」：平らな暖色ペーパー＋場面に馴染む接触影だけ。
   精錬パス（2026-11-01・-10）：艶グラデーション＋橙グローは実機で安く
   見えたため廃止（龍大「入り口からダサい」）。押下では少し沈む。 */
.azboot-btn{pointer-events:auto;display:block;width:100%;margin-top:18px;padding:13px 16px;border:1px solid rgba(255,250,238,.45);border-radius:14px;
  background-color:#f4e9d6;color:#2a1a08;font-size:14.5px;font-weight:700;letter-spacing:.12em;cursor:pointer;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.5),0 8px 20px rgba(0,0,0,.38);
  transition:transform .18s var(--azb-ease),opacity .3s,filter .18s var(--azb-ease),box-shadow .18s var(--azb-ease)}
.azboot-btn:active{transform:translateY(1px) scale(.98);filter:brightness(.97);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.5),0 4px 12px rgba(0,0,0,.35)}
.azboot-btn[disabled]{opacity:.45;pointer-events:none}
/* 「同意しないで戻る」は静かな無地のピル（-11：艶グラデーションを外し平らに） */
.azboot-linkbtn{display:block;margin:14px auto 0;padding:9px 20px;color:var(--azb-dim);
  border:1px solid rgba(255,255,255,.18);border-radius:999px;
  background:rgba(255,255,255,.04);
  font-size:12px;letter-spacing:.08em;cursor:pointer;text-decoration:none}
.azboot-linkbtn:active{transform:scale(.97)}
.azboot-links{margin-top:14px;display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
/* 規約・プライバシーのリンクも無地のチップに（-11：艶を外す） */
.azboot-links a{color:var(--azb-ink);font-size:12px;letter-spacing:.06em;text-decoration:none;
  padding:8px 15px;border:1px solid rgba(255,255,255,.18);border-radius:999px;
  background:rgba(255,255,255,.05)}
.azboot-links a:active{transform:scale(.96)}

/* ---------- 3. title ---------- */
.azboot-title{padding:0;justify-content:flex-end;background:#080503}
.azboot-kv{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center;
  opacity:0;transform:scale(1.035);transition:opacity 1.1s var(--azb-ease),transform 2.6s var(--azb-ease)}
/* 作り直し（-11）で発覚：kvSp 使用時の <picture> 包みでは、%解決が
   0×0 の picture に引かれて KV が潰れる（Chromium 実測）。picture 自体を
   ステージ全面に絶対配置して受け皿にする */
.azboot-title picture{position:absolute;inset:0;width:100%;height:100%;display:block}
.azboot-stage.on .azboot-kv{opacity:1;transform:scale(1)}
.azboot-shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(8,5,2,.34) 0%,rgba(8,5,2,0) 30%,rgba(8,5,2,.18) 58%,rgba(8,5,2,.86) 100%)}
.azboot-brand{position:absolute;top:calc(14px + env(safe-area-inset-top));left:16px;display:flex;align-items:center;gap:8px;opacity:.92}
.azboot-brand img{width:20px;height:auto;display:block}
.azboot-brand span{font-size:10px;font-weight:700;letter-spacing:.3em;color:#fff;text-shadow:0 1px 8px rgba(0,0,0,.5)}
.azboot-titlebox{position:relative;width:100%;padding:0 24px calc(24px + env(safe-area-inset-bottom));text-align:center}
.azboot-title-en{font-size:10px;font-weight:700;letter-spacing:.52em;text-indent:.52em;color:var(--azb-accent);text-shadow:0 1px 10px rgba(0,0,0,.55)}
/* 作り直し（-11）：題字は一段小さく・細く。KV自体の質で格を出し、
   文字は静かに添える（ハウスの設計スケール則：小さい・細い・静か） */
.azboot-title-name{margin-top:7px;font-size:clamp(33px,9.4vw,46px);font-weight:700;line-height:1.14;color:#fff;
  font-family:var(--azb-title-font,inherit);letter-spacing:var(--azb-title-spacing,.05em);
  text-shadow:0 2px 20px rgba(0,0,0,.5)}
/* 精錬パス（2026-11-01・-10）：タイトル文字の縦グラデーション（白→橙）は
   実機で安いロゴスタンプに見えたため廃止。平らな暖白＋柔らかい影だけに
   する（.azboot-title-name の基本指定がそのまま効く）。 */
.azboot-catch{margin-top:9px;font-size:13px;letter-spacing:.14em;color:rgba(255,244,230,.92);text-shadow:0 1px 10px rgba(0,0,0,.6)}
/* START はタイトルの顔：焚き火の橙の板。2026-10-31 接地の見直し：
   呼吸グロー（無限アニメ＋橙の外光）は「浮いたステッカー」に見えたため廃止。
   影は場面の光に馴染む暗い接触影だけにし、板そのものの色と艶で立たせる。 */
.azboot-start{pointer-events:auto;margin:20px auto 0;display:flex;flex-direction:column;align-items:center;gap:2px;
  min-width:186px;padding:10px 28px 9px;border-radius:15px;border:1px solid rgba(255,250,238,.45);
  background:#f4e9d6;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.5),0 8px 20px rgba(0,0,0,.44);
  color:#2a1a08;cursor:pointer;transition:transform .18s var(--azb-ease),filter .18s var(--azb-ease)}
.azboot-start:active{transform:translateY(1px) scale(.97);filter:brightness(.97)}
.azboot-start .s1{font-size:16px;font-weight:800;letter-spacing:.34em;text-indent:.34em}
.azboot-start .s2{font-size:9.5px;letter-spacing:.24em;text-indent:.24em;color:rgba(42,21,3,.72)}
.azboot-titlefoot{margin-top:20px;display:flex;align-items:flex-end;justify-content:space-between;gap:12px}
.azboot-titlefoot .l{display:flex;gap:16px}
.azboot-titlefoot a{color:rgba(255,255,255,.62);font-size:11px;letter-spacing:.05em;text-decoration:underline;text-underline-offset:3px}
.azboot-ver{font-size:11px;color:rgba(255,255,255,.55);letter-spacing:.08em;font-variant-numeric:tabular-nums;white-space:nowrap}

/* ---------- 5. loading (a page of its own, inside the world's scenery) ----------
   Composition (owner, 2026-10-30 17:09): big % at centre, a gauge right
   under it, the house-promo banner at the foot — and when the paced load
   completes, the whole stage leaves together (root fade in .leaving). */
.azboot-loading{background:#080503}
.azboot-load-mark{order:1;width:46px;height:auto;opacity:.95;filter:drop-shadow(0 3px 14px rgba(0,0,0,.55))}
.azboot-load-pct{order:2;margin-top:16px;font-size:clamp(60px,17vw,96px);font-weight:800;line-height:1;letter-spacing:.02em;font-variant-numeric:tabular-nums;
  text-shadow:0 2px 16px rgba(0,0,0,.65)}
/* 精錬パス（2026-11-01・-10）：％数字の縦グラデーションも廃止し、
   平らな白＋影（基本指定）に戻す。 */
.azboot-load-pct small{font-size:.34em;font-weight:700;color:rgba(255,255,255,.75);margin-left:3px}
/* ゲージ：％の真下に置く太めのピル。上面の反射＋淡いグローはトップラインと同文法 */
.azboot-gauge{order:3;margin-top:20px;width:min(74vw,360px);height:10px;border-radius:999px;
  background:rgba(255,190,110,.16);
  box-shadow:inset 0 1px 3px rgba(0,0,0,.45),0 1px 0 rgba(255,255,255,.08);overflow:hidden}
.azboot-gauge>i{display:block;height:100%;width:0%;border-radius:999px;background-color:var(--azb-accent);
  /* 精錬パス（2026-11-01・-10）：反射とグローを外し、平らな充填にする */
  transition:width .16s linear}
.azboot-load-msg{order:4;margin-top:14px;font-size:11.5px;color:rgba(255,255,255,.9);letter-spacing:.14em;min-height:16px;
  text-shadow:0 1px 10px rgba(0,0,0,.65);transition:opacity .17s ease}
.azboot-load-title{position:absolute;bottom:calc(22px + env(safe-area-inset-bottom));left:0;right:0;text-align:center;
  font-size:10.5px;letter-spacing:.3em;color:rgba(255,230,200,.42)}

/* ---------- loading foot banner (optional house promo, CFG.banner) ----------
   Same slot as kit v1.3.0, appended to this title's own azboot copy so its
   darker world shades stay untouched. In this title it renders ONLY on the
   loading stage (owner, 2026-10-30 17:09); the title stage stays clean. */
.azboot-banner{pointer-events:auto;position:absolute;left:50%;transform:translate(-50%,10px);
  bottom:calc(52px + env(safe-area-inset-bottom));
  width:min(92vw,430px);display:flex;align-items:center;gap:11px;
  padding:11px 16px 11px 13px;border-radius:14px;text-decoration:none;color:var(--azb-ink);
  background:rgba(26,17,9,.62);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  border:1px solid rgba(255,255,255,.16);box-shadow:inset 0 1px 0 rgba(255,255,255,.08),0 14px 34px rgba(0,0,0,.35);
  opacity:0;transition:opacity .6s var(--azb-ease) .25s,transform .6s var(--azb-ease) .25s}
.azboot-stage.on .azboot-banner{opacity:1;transform:translate(-50%,0)}
.azboot-banner:active{transform:translate(-50%,0) scale(.98)}
.azboot-banner img{width:24px;height:auto;display:block;flex:none}
.azb-btxt{display:flex;flex-direction:column;gap:1px;min-width:0;text-align:left}
.azb-b1{font-size:12.5px;font-weight:700;letter-spacing:.14em;color:#fff;white-space:nowrap}
.azb-b2{font-size:10.5px;letter-spacing:.06em;color:var(--azb-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.azb-barrow{margin-left:auto;font-size:19px;line-height:1;color:var(--azb-accent);flex:none}
/* wide image variant, full-bleed (RESIZE 2026-10-31): 4:1 artwork
   (1560x390), edge to edge, no card chrome — bigger and clearer at full
   viewport width (KUDAKA 2026-10-31). Bottom anchor unchanged. */
.azboot-banner-img{left:0;right:0;transform:translateY(10px);width:100%;max-width:none;
  padding:0;border:none;border-radius:0;background:none;box-shadow:none;
  backdrop-filter:none;-webkit-backdrop-filter:none;line-height:0}
.azboot-stage.on .azboot-banner-img{transform:translateY(0)}
.azboot-banner-img:active{transform:scale(.995)}
.azboot-banner-img img{width:100%;height:auto}

/* Scroll lock while the boot is up (kit v1.4.1, 2026-10-31): the page
   behind the tap-only stage must not scroll or rubber-band. azboot.js
   adds and removes .azboot-locked on <html> and stops touch/wheel input. */
html.azboot-locked,html.azboot-locked body{overflow:hidden !important;overscroll-behavior:none !important}

@media (prefers-reduced-motion: reduce){
  .azboot *,.azboot-stage,.azboot-card,.azboot-kv{transition-duration:.01s !important;animation:none !important}
}
