/* ===== DESIGN TOKENS ===== */
:root {
  /* Brand Colors */
  --navy:   #0c2b52;
  --navy-2: #153f76;
  --navy-3: #091e3a;
  --ink:    #1c1d2b;
  --paper:  #fdf8ee;
  --paper-2:#fffcf5;
  --paper-3:#fef4d8;
  --line:   #d8bf93;
  --gold:   #b87c14;
  --gold-lt:#f0c96a;
  --blue:   #1a5fb4;
  --green:  #277a48;
  --orange: #c55000;
  --teal:   #1aabb4;
  --muted:  #7a6a50;
  /* Legacy compat */
  --teal-light:#d0f0ef;
  --yellow:#f5c842;
  --bg:var(--paper); --card:var(--paper-2); --border:var(--line); --text:var(--ink);
  --shadow:rgba(4,18,38,.18); --radius:10px;
  /* Spacing scale (8px grid) */
  --s1:4px; --s2:8px; --s3:12px; --s4:16px; --s5:20px;
  --s6:24px; --s8:32px; --s10:40px; --s12:48px;
  /* Type scale */
  --t-xs:12px; --t-sm:13px; --t-base:15px; --t-md:17px;
  --t-lg:20px; --t-xl:24px; --t-2xl:30px; --t-3xl:38px;
  /* Radius */
  --r-sm:6px; --r:10px; --r-lg:16px; --r-full:9999px;
  /* Layered shadows */
  --sh-xs:0 1px 3px rgba(12,43,82,.07);
  --sh-sm:0 2px 8px rgba(12,43,82,.09),0 1px 2px rgba(12,43,82,.05);
  --sh-md:0 4px 16px rgba(12,43,82,.11),0 2px 4px rgba(12,43,82,.07);
  --sh-lg:0 8px 32px rgba(12,43,82,.13),0 4px 8px rgba(12,43,82,.07);
  --sh-rpg:0 5px 0 rgba(3,18,38,.38),0 8px 24px rgba(12,43,82,.18);
}

*,*::before,*::after { box-sizing:border-box; margin:0; padding:0; }
img { display:block; max-width:100%; }
button { font-family:inherit; }

/* ===== BASE ===== */
body {
  font-family:'Noto Sans JP','Hiragino Kaku Gothic ProN',sans-serif;
  font-weight:400;
  font-size:var(--t-base);
  line-height:1.65;
  color:var(--ink);
  background:
    radial-gradient(ellipse at 30% 0%,rgba(26,95,180,.2) 0%,transparent 50%),
    linear-gradient(160deg,#091f3d 0%,#143266 50%,#091f3d 100%);
  min-height:100vh;
  overflow-x:hidden;
  padding-bottom:88px;
  -webkit-font-smoothing:antialiased;
}

/* ===== APP WRAPPER ===== */
.app {
  width:min(100%,860px);
  margin:0 auto;
  min-height:100vh;
}

/* ===== HEADER ===== */
header {
  background:rgba(8,24,50,.94);
  border-bottom:1px solid rgba(184,124,20,.3);
  position:sticky; top:0; z-index:20;
  backdrop-filter:blur(12px);
}
.hdr-top {
  padding:0 var(--s4); height:60px;
  display:grid; grid-template-columns:1fr auto 1fr; align-items:center;
}
.header-logo { display:flex; align-items:center; justify-content:center; }
.header-logo picture { display:flex; align-items:center; justify-content:center; }
.header-logo img { width:190px; height:48px; object-fit:contain; display:block; }
.top-logo-picture { display:block; }
.top-logo-picture img { width:min(560px,78vw); height:auto; display:block; }
.header-side { display:flex; align-items:center; }
.header-right { justify-content:flex-end; }
#quest-bar {
  display:none; /* JS: flex */
  height:60px; padding:0 var(--s4);
  align-items:center; gap:var(--s3);
}
.hdr-progress-wrap {
  flex:1; display:flex; flex-direction:column; gap:4px;
}
.hdr-progress-label {
  display:flex; justify-content:space-between; align-items:baseline;
}
.hdr-progress-name {
  font-size:12px; font-weight:700; color:rgba(255,255,255,.9);
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:180px;
}
.hdr-progress-pct {
  font-size:13px; font-weight:900; color:var(--gold-lt);
  font-family:'Inter',sans-serif; white-space:nowrap;
}
.hdr-progress-bar {
  height:6px; background:rgba(255,255,255,.15); border-radius:3px; overflow:hidden;
}
.hdr-progress-fill {
  height:100%; background:linear-gradient(90deg,var(--gold-lt),var(--gold));
  border-radius:3px; transition:width .4s ease;
}
.hdr-time-hint {
  font-size:10px; color:rgba(255,255,255,.4); white-space:nowrap;
}
.hdr-save-btn {
  padding:6px 12px; border-radius:var(--r-sm);
  background:rgba(255,255,255,.1); border:1px solid rgba(255,255,255,.2);
  color:#fff; font-size:12px; font-weight:600; cursor:pointer; font-family:inherit;
  white-space:nowrap; transition:background .15s;
}
.hdr-save-btn:hover { background:rgba(255,255,255,.2); }
.crest {
  width:38px; height:44px;
  display:grid; place-items:center;
  color:#fff; font-size:18px;
  background:linear-gradient(180deg,#ffd45c,#b87914);
  clip-path:polygon(50% 0,92% 15%,92% 67%,50% 100%,8% 67%,8% 15%);
  filter:drop-shadow(0 2px 0 rgba(6,26,52,.6));
  flex-shrink:0;
}
h1 {
  margin:0;
  font-size:clamp(15px,4vw,20px);
  font-weight:700;
  color:#fff;
  letter-spacing:.02em;
  line-height:1.2;
}
.byline {
  margin-top:2px;
  font-size:10px;
  font-weight:500;
  color:rgba(255,255,255,.5);
  letter-spacing:.06em;
}
.menu {
  width:60px; height:48px;
  display:grid; place-items:center; gap:1px;
  border:1px solid rgba(184,124,20,.35);
  border-radius:var(--r-sm);
  color:rgba(255,255,255,.75);
  background:rgba(255,255,255,.06);
  font-size:11px; font-weight:600;
  cursor:pointer;
  transition:background .15s,border-color .15s;
}
.menu:hover { background:rgba(255,255,255,.12); border-color:rgba(184,124,20,.65); }
.menu span {
  display:block; width:22px; height:14px;
  background:
    linear-gradient(rgba(255,255,255,.7),rgba(255,255,255,.7)) 0 0/22px 2px no-repeat,
    linear-gradient(rgba(255,255,255,.7),rgba(255,255,255,.7)) 0 6px/22px 2px no-repeat,
    linear-gradient(rgba(255,255,255,.7),rgba(255,255,255,.7)) 0 12px/22px 2px no-repeat;
}

/* ===== MAIN ===== */
main { padding:var(--s5) var(--s4) 0; }

/* ===== QUEST / PROGRESS ===== */
.quest {
  display:grid;
  grid-template-columns:170px 1fr;
  border-radius:var(--r);
  overflow:hidden;
  margin-bottom:var(--s5);
  box-shadow:var(--sh-rpg);
  border:1.5px solid rgba(184,124,20,.45);
}
.quest-title, .progress { background:var(--paper); }
.quest-title {
  padding:var(--s4) var(--s5);
  display:flex; flex-direction:column; justify-content:center; gap:var(--s1);
  border-right:1px solid rgba(184,124,20,.25);
}
.quest-title strong {
  font-size:10px; font-weight:700;
  color:var(--muted); letter-spacing:.08em; text-transform:uppercase;
}
.quest-title b {
  font-size:var(--t-3xl); font-weight:900;
  color:var(--navy); line-height:.85;
  font-family:'Inter',sans-serif;
}
.progress {
  padding:var(--s4) var(--s4);
  display:grid;
  grid-template-columns:repeat(8,1fr) 40px;
  gap:4px; align-items:center;
  background:var(--paper-2);
}
.step {
  width:28px; height:28px; margin:0 auto;
  display:grid; place-items:center;
  border-radius:50%; background:#ddd6c8;
  color:#fff; font-size:11px; font-weight:700;
  font-family:'Inter',sans-serif;
  position:relative; z-index:1;
  transition:background .25s;
}
.step::after {
  content:""; position:absolute; left:100%; top:50%;
  width:16px; height:2px; background:#ddd6c8;
  transform:translateY(-50%); z-index:-1;
}
.step:nth-of-type(8)::after { display:none; }
.step.active { background:var(--blue); box-shadow:0 0 0 3px rgba(26,95,180,.22); }
.step.done { background:var(--gold); }
.treasure {
  width:40px; height:32px;
  display:grid; place-items:center;
  font-size:24px;
  filter:drop-shadow(1px 2px 0 rgba(0,0,0,.2));
}

/* ===== PANEL ===== */
.panel {
  border-radius:var(--r-lg);
  background:var(--paper);
  border:1px solid rgba(184,124,20,.25);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.85),
    var(--sh-lg),
    0 4px 0 rgba(3,20,41,.25);
  margin-bottom:var(--s5);
  padding:var(--s6) var(--s6);
  position:relative;
  overflow:hidden;
}
.panel::before {
  content:'';
  position:absolute; inset:0;
  background:radial-gradient(circle at 20px 20px,rgba(184,124,20,.035) 1px,transparent 1px);
  background-size:20px 20px;
  pointer-events:none;
}

/* ===== STEP PANELS ===== */
.step-panel { display:none; }
.step-panel.active { display:block; }

/* ===== INTRO / MASCOT ===== */
.intro {
  display:grid; grid-template-columns:1fr 150px;
  gap:var(--s5); align-items:center; margin-bottom:var(--s6);
}
.speech {
  padding:var(--s5) var(--s5);
  position:relative;
  background:rgba(255,255,255,.78);
  border:1px solid rgba(157,144,127,.4);
  border-radius:var(--r);
  font-size:clamp(13px,3.2vw,16px);
  line-height:1.75;
  color:var(--ink);
  font-weight:500;
  box-shadow:var(--sh-sm);
}
.speech > * + * { margin-top:3px; }
.speech::after {
  content:""; position:absolute; right:-12px; top:50%;
  width:20px; height:20px; background:rgba(255,255,255,.78);
  border-top:1px solid rgba(157,144,127,.4);
  border-right:1px solid rgba(157,144,127,.4);
  transform:translateY(-50%) rotate(45deg);
}
.mascot {
  width:130px; margin:0 auto;
  filter:drop-shadow(3px 5px 0 rgba(4,18,38,.16));
  display:block;
}

/* ===== FEATURES ===== */
.features {
  display:grid; grid-template-columns:repeat(3,1fr);
  gap:var(--s3); margin-bottom:var(--s6);
}
.feature {
  display:flex; flex-direction:column;
  align-items:center; text-align:center; gap:var(--s2);
  background:rgba(255,255,255,.62);
  border:1px solid rgba(184,124,20,.18);
  border-radius:var(--r);
  padding:var(--s5) var(--s3);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.9),var(--sh-xs);
}
.icon { font-size:36px; line-height:1; }
.feature .icon { font-size:32px; flex-shrink:0; }
.feature strong { font-size:16px; font-weight:700; color:var(--ink); line-height:1.4; display:block; }
.feature p { margin:0; font-size:13px; font-weight:500; color:var(--muted); line-height:1.55; }

/* ===== TOP PAGE ===== */
.top-tagline { display:block; }

/* ===== CTA BUTTON ===== */
.cta {
  width:100%; height:68px;
  border:none; border-radius:var(--r);
  background:linear-gradient(160deg,#1e5fa6 0%,#0d3470 100%);
  color:#fff; font-size:clamp(17px,4.5vw,24px); font-weight:700;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.18),
    0 4px 0 rgba(5,20,48,.5),
    0 2px 12px rgba(14,52,110,.38);
  cursor:pointer;
  display:flex; align-items:center; justify-content:center; gap:var(--s4);
  transition:transform .12s,box-shadow .12s;
  letter-spacing:.02em; position:relative; overflow:hidden;
}
.cta::before {
  content:''; position:absolute; inset:0;
  background:linear-gradient(rgba(255,255,255,.07),transparent);
  border-radius:inherit;
}
.cta:active {
  transform:translateY(3px);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.12),0 1px 0 rgba(5,20,48,.5);
}
.text-link {
  display:table; margin:var(--s4) auto 0;
  color:var(--blue); font-size:var(--t-sm); font-weight:600;
  text-decoration:underline; text-underline-offset:4px; cursor:pointer;
  background:none; border:none; transition:color .15s;
}
.text-link:hover { color:var(--navy); }

/* ===== SECTION TITLE ===== */
.section-title-rpg {
  display:flex; align-items:center; gap:var(--s3);
  margin:0 0 var(--s5);
  font-size:var(--t-md); font-weight:700; color:var(--ink);
  position:relative; padding-bottom:var(--s3);
}
.section-title-rpg::after {
  content:''; position:absolute; bottom:0; left:0;
  width:36px; height:2px;
  background:linear-gradient(90deg,var(--gold),transparent);
  border-radius:2px;
}

/* ===== PLANS (RPG) ===== */
.plans { display:flex; flex-direction:column; gap:var(--s2); }
.plan-rpg {
  display:flex; flex-direction:column; gap:6px;
  padding:var(--s4) var(--s4);
  border-radius:var(--r);
  background:rgba(255,255,255,.72);
  border:2px solid rgba(184,124,20,.18);
  border-left-width:5px;
  box-shadow:var(--sh-sm);
  cursor:pointer;
  transition:box-shadow .15s, background .15s, border-color .15s;
  user-select:none;
}
.plan-rpg:hover { box-shadow:0 0 0 2px var(--gold-lt),var(--sh-md); background:rgba(255,255,255,.9); }
.plan-rpg.blue   { border-left-color:var(--blue); }
.plan-rpg.green  { border-left-color:var(--green); }
.plan-rpg.orange { border-left-color:var(--orange); }
.plan-top { display:flex; align-items:center; justify-content:space-between; gap:var(--s2); }
.plan-main { display:flex; align-items:center; gap:var(--s2); flex:1; min-width:0; }
.plan-icon { font-size:22px; flex-shrink:0; }
.plan-name { font-size:var(--t-base); font-weight:700; color:var(--ink); }
.plan-desc { font-size:11px; color:var(--muted); line-height:1.4; padding-left:30px; }
.plan-right { display:flex; align-items:center; gap:var(--s3); flex-shrink:0; }
.plan-price {
  font-family:'Inter',sans-serif; font-size:var(--t-xl); font-weight:900;
  white-space:nowrap; line-height:1;
}
.blue  .plan-price { color:var(--blue); }
.green .plan-price { color:var(--green); }
.orange .plan-price { color:var(--orange); }
.plan-arrow { font-size:22px; color:var(--muted); transition:transform .15s, opacity .15s; opacity:.5; }
.plan-rpg:hover .plan-arrow { transform:translateX(3px); opacity:.8; }
.plan-check { display:none; font-size:20px; color:var(--gold); font-weight:900; }
.plan-rpg.selected-plan {
  background:rgba(240,201,106,.13);
  border-color:var(--gold);
  border-left-width:5px;
  box-shadow:0 0 0 2px var(--gold),var(--sh-md);
}
.plan-rpg.selected-plan .plan-arrow { display:none; }
.plan-rpg.selected-plan .plan-check { display:inline; }

/* ===== GENRES (RPG) ===== */
.genres { display:flex; flex-wrap:wrap; gap:var(--s3); justify-content:center; }
.genre-rpg {
  width:126px; height:92px;
  border-radius:var(--r);
  background:rgba(255,255,255,.62);
  border:1px solid rgba(184,124,20,.18);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.9),var(--sh-xs);
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:var(--s2);
  font-size:var(--t-sm); font-weight:600;
  cursor:pointer; transition:background .15s,box-shadow .15s,transform .1s;
}
.genre-rpg .icon { font-size:28px; }
.genre-rpg:hover { background:rgba(255,255,255,.88); transform:translateY(-1px); }
.genre-rpg.selected {
  background:rgba(255,255,255,.92);
  box-shadow:0 0 0 2px var(--gold),inset 0 1px 0 rgba(255,255,255,.9),var(--sh-sm);
}

/* ===== WEBO GUIDE ===== */
.webo-guide { display:flex; align-items:flex-end; gap:var(--s3); margin-bottom:var(--s5); }
.webo-guide img { width:64px; flex-shrink:0; filter:drop-shadow(2px 3px 0 rgba(4,18,38,.12)); }
.webo-bubble {
  background:rgba(255,255,255,.78); border:1px solid rgba(157,144,127,.4);
  border-radius:var(--r) var(--r) var(--r) 0;
  padding:var(--s3) var(--s4); font-size:clamp(12px,2.8vw,15px);
  font-weight:500; line-height:1.65; flex:1; color:var(--ink);
  box-shadow:var(--sh-xs);
}

/* ===== EXTRA CONTENT BLOCKS ===== */
.extra-block { border:1.5px solid var(--line); border-radius:var(--r); overflow:hidden; margin-bottom:var(--s3); background:rgba(255,255,255,.4); }
.extra-block-hdr { display:flex; align-items:center; justify-content:space-between; padding:14px var(--s4); }
.extra-block-info { display:flex; align-items:center; gap:12px; }
.extra-block-icon { font-size:22px; flex-shrink:0; }
.extra-block-name { font-size:14px; font-weight:700; color:var(--ink); }
.extra-block-desc { font-size:11px; color:var(--muted); margin-top:2px; }
.extra-block-body { padding:0 var(--s4) var(--s4); border-top:1px dashed var(--line); padding-top:var(--s3); }

/* ===== HOURS DAY CHECK ===== */
.day-chk { display:inline-flex;align-items:center;gap:2px;cursor:pointer; }
.day-chk input { display:none; }
.day-chk span { padding:5px 10px;border-radius:var(--r-sm);border:1.5px solid var(--line);font-size:13px;font-weight:700;color:var(--muted);background:rgba(255,255,255,.6);transition:all .15s; }
.day-chk input:checked + span { background:var(--navy);color:#fff;border-color:var(--navy); }

/* ===== FORM ELEMENTS ===== */
.form-group { margin-bottom:var(--s5); }
.form-label {
  display:flex; align-items:center; gap:var(--s2);
  font-size:var(--t-sm); font-weight:600; margin-bottom:var(--s2); color:var(--ink);
}
.form-label .required {
  background:var(--orange); color:#fff;
  font-size:10px; font-weight:700; padding:2px 6px; border-radius:var(--r-full);
}
.form-label .optional {
  background:var(--muted); color:#fff;
  font-size:10px; font-weight:700; padding:2px 6px; border-radius:var(--r-full);
}
.form-input {
  width:100%; padding:var(--s3) var(--s4);
  border:1.5px solid var(--line); border-radius:var(--r-sm);
  font-family:inherit; font-size:var(--t-base); font-weight:400;
  background:var(--paper-2); color:var(--ink);
  transition:border-color .2s,box-shadow .2s; line-height:1.5;
}
.form-input:focus { outline:none; border-color:var(--gold); box-shadow:0 0 0 3px rgba(184,124,20,.1); }
.form-input::placeholder { color:#c0b8ac; font-weight:400; }
.form-hint { margin-top:var(--s1); font-size:var(--t-xs); font-weight:500; color:var(--muted); }

/* ===== TIP BOX ===== */
.tip-box {
  background:#fffbe6; border:1.5px solid #f0cc50; border-radius:var(--r-sm);
  padding:var(--s3) var(--s4); font-size:var(--t-sm); font-weight:500;
  color:#554400; line-height:1.7; margin-bottom:var(--s4);
}
.tip-box .tip-title { font-weight:700; margin-bottom:4px; color:#7a5e00; }

/* ===== IMAGE STEP ===== */
.img-tabs {
  display:flex; margin-bottom:var(--s4);
  border:1.5px solid var(--line); border-radius:var(--r-sm); overflow:hidden;
}
.img-tab {
  flex:1; padding:var(--s3); text-align:center;
  font-size:var(--t-sm); font-weight:600; cursor:pointer;
  background:var(--paper); color:var(--muted); border:none;
  border-right:1px solid var(--line);
  transition:background .2s,color .2s;
}
.img-tab:last-child { border-right:none; }
.img-tab.active { background:var(--navy); color:#fff; }
.local-img-item {
  position:relative; cursor:pointer; border-radius:var(--r-sm); overflow:hidden;
  border:2px solid transparent; transition:border-color .15s,box-shadow .15s,transform .1s;
  aspect-ratio:16/9; background:var(--paper-3);
}
.local-img-item img { width:100%; height:100%; object-fit:cover; display:block; }
.local-img-item:hover { border-color:var(--gold-lt); box-shadow:0 0 0 2px var(--gold-lt); transform:scale(1.01); }
.local-img-item.selected { border-color:var(--gold); box-shadow:0 0 0 3px var(--gold); }
.local-img-item.selected::after {
  content:'✓'; position:absolute; top:6px; right:8px;
  background:var(--gold); color:#fff; font-size:14px; font-weight:900;
  width:26px; height:26px; border-radius:50%; display:flex; align-items:center; justify-content:center;
}
.unsplash-search { display:flex; gap:var(--s2); margin-bottom:var(--s3); }
.unsplash-search input {
  flex:1; padding:var(--s2) var(--s3);
  border:1.5px solid var(--line); border-radius:var(--r-sm);
  font-size:var(--t-sm); font-weight:500; font-family:inherit;
  background:var(--paper); transition:border-color .2s;
}
.unsplash-search input:focus { outline:none; border-color:var(--gold); }
.unsplash-search button {
  padding:var(--s2) var(--s4);
  background:var(--navy); color:#fff; border:none; border-radius:var(--r-sm);
  font-weight:600; cursor:pointer; font-size:var(--t-sm); font-family:inherit;
  transition:background .15s;
}
.unsplash-search button:hover { background:var(--navy-2); }
.photo-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:var(--s2); margin-bottom:var(--s3); }
.photo-item {
  aspect-ratio:16/9; border-radius:var(--r-sm); overflow:hidden;
  border:2px solid transparent; cursor:pointer; transition:border-color .15s,transform .1s;
}
.photo-item img { width:100%; height:100%; object-fit:cover; }
.photo-item:hover { transform:scale(1.01); }
.photo-item.selected { border-color:var(--gold); }
#upload-area {
  border:2px dashed var(--line); border-radius:var(--r-sm);
  padding:var(--s8); text-align:center; cursor:pointer;
  background:var(--paper); transition:border-color .2s,background .2s;
}
#upload-area:hover { border-color:var(--gold); background:rgba(255,247,231,.9); }
#upload-area .upload-icon { font-size:34px; margin-bottom:var(--s2); }
#upload-area p { font-size:var(--t-sm); font-weight:500; color:var(--muted); }

/* ===== COLOR PICKER ===== */
.color-grid { display:flex; flex-wrap:wrap; gap:var(--s2); margin-bottom:var(--s4); }
.color-swatch {
  width:42px; height:42px; border-radius:var(--r-sm);
  cursor:pointer; border:2.5px solid transparent;
  position:relative; transition:transform .15s,border-color .15s;
  box-shadow:var(--sh-sm);
}
.color-swatch:hover { transform:scale(1.1); }
.color-swatch.selected { border-color:var(--ink); transform:scale(1.12); }
.color-swatch.selected::after {
  content:'✓'; position:absolute; inset:0;
  display:grid; place-items:center;
  color:#fff; font-size:18px; font-weight:900;
  text-shadow:0 1px 3px rgba(0,0,0,.5);
}
.font-options { display:flex; flex-direction:column; gap:var(--s2); }
.font-option {
  background:var(--paper); border:1.5px solid var(--line);
  border-radius:var(--r-sm); padding:var(--s3) var(--s4); cursor:pointer;
  transition:border-color .15s,background .15s;
}
.font-option:hover { background:rgba(255,252,245,.9); }
.font-option.selected { border-color:var(--gold); background:rgba(255,247,220,.7); }
.font-option .font-name { font-weight:700; font-size:var(--t-sm); margin-bottom:2px; color:var(--ink); }
.font-option .font-preview { font-size:var(--t-xs); font-weight:400; color:var(--muted); }

/* ===== PARTS TOGGLE ===== */
.parts-list { display:flex; flex-direction:column; gap:var(--s2); }
.part-item {
  background:var(--paper); border:1.5px solid var(--line);
  border-radius:var(--r-sm); padding:var(--s3) var(--s4);
  display:flex; align-items:center; justify-content:space-between;
  transition:border-color .15s;
}
.part-item:hover { border-color:rgba(184,124,20,.4); }
.part-info .part-name { font-weight:600; font-size:var(--t-sm); color:var(--ink); }
.part-info .part-desc { font-size:var(--t-xs); font-weight:500; color:var(--muted); margin-top:2px; }
.toggle-switch { position:relative; width:44px; height:24px; flex-shrink:0; }
.toggle-switch input { opacity:0; width:0; height:0; }
.toggle-track {
  position:absolute; inset:0;
  background:#d4cfc5; border-radius:12px;
  cursor:pointer; transition:background .2s;
}
.toggle-track::before {
  content:''; position:absolute; left:3px; top:3px;
  width:18px; height:18px; border-radius:50%;
  background:#fff; transition:transform .2s;
  box-shadow:0 1px 4px rgba(0,0,0,.15);
}
.toggle-switch input:checked + .toggle-track { background:var(--teal); }
.toggle-switch input:checked + .toggle-track::before { transform:translateX(20px); }

/* ===== CONFIRM ===== */
.confirm-section {
  background:var(--paper); border:1.5px solid var(--line);
  border-radius:var(--r-sm); padding:var(--s4); margin-bottom:var(--s3);
}
.confirm-section h3 {
  font-size:var(--t-sm); font-weight:700; color:var(--navy);
  margin-bottom:var(--s3); padding-bottom:var(--s2);
  border-bottom:1px solid var(--line);
}
.confirm-row {
  display:flex; justify-content:space-between; align-items:baseline;
  font-size:var(--t-sm); padding:5px 0;
  border-bottom:1px dashed rgba(184,124,20,.2);
}
.confirm-row:last-child { border-bottom:none; }
.confirm-row .label { color:var(--muted); font-weight:500; flex-shrink:0; }
.confirm-row .value { font-weight:600; text-align:right; flex:1; margin-left:var(--s3); color:var(--ink); }

/* ===== COMPLETE ===== */
.complete-box { text-align:center; padding:var(--s8) var(--s5); }
.complete-icon { font-size:52px; margin-bottom:var(--s4); }
.complete-box h2 { font-size:var(--t-xl); font-weight:700; margin-bottom:var(--s2); color:var(--ink); }
.complete-box p { font-size:var(--t-sm); font-weight:500; color:var(--muted); line-height:1.75; margin-bottom:var(--s6); }

/* ===== BUTTONS ===== */
.btn-next {
  flex:1;
  background:linear-gradient(160deg,#1e5fa6,#0d3470);
  color:#fff; font-size:var(--t-base); font-weight:700;
  padding:var(--s4); border:none; border-radius:var(--r-sm); cursor:pointer;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.18),0 3px 0 rgba(5,20,48,.45),0 2px 8px rgba(14,52,110,.28);
  transition:transform .12s,box-shadow .12s; font-family:inherit;
}
.btn-next:active { transform:translateY(2px); box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(5,20,48,.4); }

.btn-back {
  flex:0 0 auto;
  background:rgba(255,255,255,.65); color:var(--navy);
  border:1.5px solid var(--line);
  font-size:var(--t-sm); font-weight:600;
  padding:var(--s4) var(--s5); border-radius:var(--r-sm);
  cursor:pointer; font-family:inherit; transition:border-color .15s,background .15s;
}
.btn-back:hover { border-color:var(--navy); background:rgba(255,255,255,.9); }

.btn-primary {
  display:block; width:100%;
  background:linear-gradient(160deg,#1e5fa6,#0d3470);
  color:#fff; font-size:var(--t-base); font-weight:700;
  padding:var(--s4); border:none; border-radius:var(--r-sm); cursor:pointer;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.18),0 3px 0 rgba(5,20,48,.45);
  margin-bottom:var(--s2); font-family:inherit; transition:transform .12s;
}
.btn-primary:active { transform:translateY(2px); }

.btn-secondary {
  display:block; width:100%;
  background:rgba(255,255,255,.65); color:var(--navy);
  font-size:var(--t-sm); font-weight:600;
  padding:var(--s3) var(--s4); border:1.5px solid var(--line);
  border-radius:var(--r-sm); cursor:pointer; font-family:inherit;
  margin-bottom:var(--s2); transition:border-color .15s,background .15s;
}
.btn-secondary:hover { border-color:var(--navy); background:rgba(255,255,255,.9); }

.btn-download {
  display:block; width:100%;
  background:linear-gradient(160deg,#1e5fa6,#0d3470);
  color:#fff; font-size:var(--t-lg); font-weight:700;
  padding:var(--s6); border:none; border-radius:var(--r-sm); cursor:pointer;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.2),
    0 4px 0 rgba(5,20,48,.5),
    0 2px 12px rgba(14,52,110,.35);
  letter-spacing:.02em; margin-bottom:var(--s3); font-family:inherit;
  transition:transform .12s,box-shadow .12s;
}
.btn-download:active { transform:translateY(3px); box-shadow:inset 0 1px 0 rgba(255,255,255,.12),0 1px 0 rgba(5,20,48,.4); }

.btn-pay {
  display:flex; width:100%; align-items:center; justify-content:center; gap:8px;
  background:linear-gradient(160deg,#22a06b,#167349);
  color:#fff; font-size:var(--t-md); font-weight:700;
  padding:var(--s5) var(--s4); border:none; border-radius:var(--r-sm); cursor:pointer;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 4px 0 rgba(5,60,35,.45),0 2px 12px rgba(10,80,45,.3);
  letter-spacing:.02em; margin-bottom:var(--s2); font-family:inherit;
  transition:transform .12s,box-shadow .12s; text-decoration:none;
}
.btn-pay:active { transform:translateY(3px); box-shadow:inset 0 1px 0 rgba(255,255,255,.12),0 1px 0 rgba(5,60,35,.4); }
.pay-note {
  font-size:11px; color:var(--muted); text-align:center; margin-bottom:var(--s4); line-height:1.7;
}
.pay-divider {
  display:flex; align-items:center; gap:8px; margin:var(--s3) 0;
  color:var(--muted); font-size:11px; font-weight:600;
}
.pay-divider::before,.pay-divider::after {
  content:''; flex:1; height:1px; background:var(--line);
}

/* ===== CATCHCOPY SAMPLES ===== */
.catchcopy-samples { display:flex; flex-wrap:wrap; gap:var(--s2); margin-bottom:var(--s3); }
.cc-chip {
  display:inline-flex; align-items:center;
  padding:7px 12px; border-radius:var(--r-full);
  background:rgba(26,95,180,.08); border:1.5px solid rgba(26,95,180,.25);
  color:var(--navy); font-size:12px; font-weight:500; cursor:pointer;
  font-family:inherit; transition:background .15s,border-color .15s;
  text-align:left; line-height:1.45;
}
.cc-chip:hover { background:rgba(26,95,180,.15); border-color:var(--blue); }
.cc-chip.selected { background:rgba(26,95,180,.18); border-color:var(--blue); font-weight:700; }

.hero-cta-chip {
  display:inline-flex; align-items:center;
  padding:6px 12px; border-radius:var(--r-full);
  background:rgba(199,90,0,.08); border:1.5px solid rgba(199,90,0,.25);
  font-size:var(--t-xs); cursor:pointer; color:var(--ink);
  font-family:inherit; transition:background .15s,border-color .15s;
}
.hero-cta-chip:hover { background:rgba(199,90,0,.15); border-color:var(--orange); }
.hero-cta-chip.selected { background:rgba(199,90,0,.18); border-color:var(--orange); font-weight:700; }

.nav-btns { display:flex; gap:var(--s2); margin-top:var(--s5); }

/* サブカラー モード切替ボタン */
.sub-mode-btn {
  padding:5px 16px;
  font-size:12px;
  font-weight:600;
  background:transparent;
  border:none;
  border-radius:18px;
  cursor:pointer;
  color:var(--muted);
  font-family:inherit;
  transition:background .15s,color .15s;
}
.sub-mode-btn.active {
  background:var(--navy);
  color:#fff;
}

/* ===== FLOW / FAQ ===== */
.faq-item {
  background:var(--paper); border:1.5px solid var(--line);
  border-radius:var(--r-sm); margin-bottom:var(--s2); overflow:hidden;
  transition:border-color .15s;
}
.faq-item:hover { border-color:rgba(184,124,20,.5); }
.faq-q {
  padding:var(--s4) var(--s5); font-weight:600; font-size:var(--t-base);
  cursor:pointer; display:flex; justify-content:space-between; align-items:center;
  color:var(--ink); gap:var(--s3);
}
.faq-q span { color:var(--gold); flex-shrink:0; }
.faq-a {
  padding:0 var(--s5); font-size:var(--t-sm); font-weight:500; color:var(--muted);
  line-height:1.75; max-height:0; overflow:hidden;
  transition:max-height .3s,padding .3s;
}
.faq-a.open { max-height:300px; padding:0 var(--s5) var(--s4); }

.flow-steps { display:flex; flex-direction:column; gap:var(--s2); }
.flow-step {
  display:flex; align-items:flex-start; gap:var(--s4);
  background:var(--paper); border:1.5px solid var(--line);
  border-radius:var(--r-sm); padding:var(--s3) var(--s4);
}
.flow-num {
  background:var(--navy); color:#fff;
  width:30px; height:30px; border-radius:50%;
  display:grid; place-items:center;
  font-weight:700; font-size:var(--t-sm);
  font-family:'Inter',sans-serif; flex-shrink:0;
}
.flow-text .flow-title { font-weight:700; font-size:var(--t-sm); margin-bottom:2px; color:var(--ink); }
.flow-text .flow-desc { font-size:var(--t-xs); font-weight:500; color:var(--muted); line-height:1.55; }

/* ===== TOAST ===== */
#toast {
  position:fixed; bottom:92px; left:50%; transform:translateX(-50%);
  background:rgba(20,22,38,.95); color:#fff;
  padding:var(--s2) var(--s5); border-radius:var(--r-full);
  font-size:var(--t-sm); font-weight:600;
  opacity:0; transition:opacity .3s;
  pointer-events:none; z-index:200; white-space:nowrap;
  border:1px solid rgba(184,124,20,.45);
  box-shadow:var(--sh-md);
}
#toast.show { opacity:1; }

/* 初回の自動保存案内 */
#autosave-notice { position:fixed; z-index:190; right:20px; bottom:92px; display:flex; align-items:flex-start; gap:14px; width:min(390px,calc(100vw - 32px)); padding:14px 14px 14px 16px; border:1px solid #98d8d4; border-radius:12px; background:#f1fbfa; color:#174b52; box-shadow:0 8px 24px rgba(7,61,74,.16); opacity:0; transform:translateY(12px); pointer-events:none; transition:opacity .2s,transform .2s; }
#autosave-notice.show { opacity:1; transform:translateY(0); pointer-events:auto; }
#autosave-notice strong { display:block; font-size:14px; color:#08787c; margin-bottom:3px; }
#autosave-notice span { display:block; font-size:12px; line-height:1.6; color:#527075; }
#autosave-notice button { flex:0 0 auto; border:0; background:transparent; color:#527075; font-size:22px; line-height:1; cursor:pointer; padding:1px 2px; }

/* ===== LOADING ===== */
.loading-overlay {
  position:fixed; inset:0;
  background:rgba(7,18,36,.9);
  display:none; place-items:center;
  z-index:300; flex-direction:column; gap:var(--s4);
  backdrop-filter:blur(6px);
}
.loading-overlay.show { display:grid; }
.spinner {
  width:42px; height:42px;
  border:3px solid rgba(184,124,20,.2);
  border-top-color:var(--gold);
  border-radius:50%;
  animation:spin .8s linear infinite;
}
@keyframes spin { to { transform:rotate(360deg); } }
@keyframes bobbing { from { transform:translateY(0); } to { transform:translateY(-8px); } }
.loading-overlay p { color:var(--gold-lt); font-size:var(--t-base); font-weight:600; }


/* ===== BOTTOM NAV ===== */
.bottom-nav {
  position:fixed; left:50%; bottom:0; transform:translateX(-50%);
  width:min(100%,860px); height:76px;
  display:grid; grid-template-columns:repeat(5,1fr);
  background:rgba(7,18,36,.97);
  border-top:1px solid rgba(184,124,20,.22);
  box-shadow:0 -4px 20px rgba(0,0,0,.32);
  z-index:10;
  backdrop-filter:blur(12px);
}
.desktop-nav-logo { display:none; }
.nav-item {
  color:rgba(255,255,255,.5);
  display:grid; place-items:center; align-content:center;
  gap:3px; font-size:10px; font-weight:600; line-height:1.2; text-align:center;
  text-decoration:none; border-left:1px solid rgba(255,255,255,.07);
  cursor:pointer; background:none;
  border-top:none; border-right:none; border-bottom:none;
  transition:color .15s,background .15s; letter-spacing:.02em;
}
.nav-item:first-child { border-left:0; }
.nav-item:first-of-type { border-left:0; }
.nav-item:hover { color:rgba(255,255,255,.8); background:rgba(255,255,255,.04); }
.nav-item.active {
  color:var(--gold-lt);
  background:rgba(255,255,255,.05);
  border-top:2px solid var(--gold);
}
.nav-item span { font-size:20px; line-height:1; }

/* ===== SNS ROWS (STEP3 sub5) ===== */
.sns-row { display:flex; align-items:center; gap:var(--s2); }
.sns-row-icon { width:36px; text-align:center; font-size:22px; flex-shrink:0; }
.sns-row-body { flex:1; }
.sns-row-label { font-size:11px; color:var(--muted); margin-bottom:3px; font-weight:700; }

/* ===== SERVICE ENTRY GROUPS (STEP3 sub6) ===== */
.svc-entry { display:flex; flex-direction:column; gap:4px; }
.svc-entry-label { font-size:12px; font-weight:700; color:var(--muted); margin-bottom:4px; }

/* ===== IMAGE MODE BUTTONS (STEP4) ===== */
.img-mode-btn {
  padding:18px 8px;
  border:2px solid var(--line);
  border-radius:var(--r);
  background:rgba(255,255,255,.4);
  cursor:pointer; font-family:inherit; text-align:center;
  transition:border-color .15s, background .15s;
}
.img-mode-btn.active {
  border-color:var(--gold);
  background:rgba(184,124,20,.15);
}
.img-mode-btn-icon { font-size:28px; margin-bottom:6px; }
.img-mode-btn-title { font-size:13px; font-weight:700; color:var(--ink); }
.img-mode-btn-sub { font-size:10px; color:var(--muted); margin-top:3px; }

/* ===== GUIDE DEMO CARDS ===== */
.guide-demo-card {
  background:rgba(255,255,255,.7);
  border-radius:var(--r); overflow:hidden;
  border:1px solid var(--line);
}
.guide-demo-preview {
  height:90px; display:flex; align-items:center; justify-content:center;
  color:#fff; font-weight:700; font-size:13px;
}
.guide-demo-caption { padding:10px; font-size:11px; color:var(--muted); }

/* ===== INFO CARDS (price/contact pages) ===== */
.info-card {
  border-radius:var(--r-lg);
  padding:var(--s5) var(--s4);
  margin-bottom:var(--s4);
  border-width:2px; border-style:solid;
}
.info-card--blue {
  background:rgba(26,95,180,.07);
  border-color:rgba(26,95,180,.3);
}
.info-card--green {
  background:rgba(39,122,72,.07);
  border-color:rgba(39,122,72,.35);
  position:relative;
}
.info-card--orange {
  background:rgba(197,80,0,.06);
  border-color:rgba(197,80,0,.28);
  margin-bottom:var(--s5);
}
.info-card--soft-blue {
  background:rgba(26,95,180,.06);
  border:1.5px solid rgba(26,95,180,.2);
}
.info-card--neutral {
  background:rgba(255,255,255,.55);
  border:1px solid var(--line);
}
.info-card-header { display:flex; align-items:center; gap:10px; margin-bottom:var(--s3); }
.info-card-icon { font-size:28px; }
.info-card-name { font-size:16px; font-weight:900; color:var(--navy); }
.info-card-sub { font-size:12px; color:var(--muted); }
.info-card-price { margin-left:auto; font-weight:900; }
.info-card-price--blue { font-size:26px; color:var(--blue); }
.info-card-price--green { font-size:26px; color:var(--green); }
.info-card-price--orange { font-size:22px; color:var(--orange); }
.info-card-title { font-size:13px; font-weight:700; color:var(--navy); margin-bottom:var(--s3); }
.info-card-list { font-size:13px; color:var(--ink); line-height:2; padding-left:var(--s4); }

/* ===== RESPONSIVE ===== */
@media (max-width:700px) {
  header { height:60px; padding:0 var(--s4); }
  .header-logo img { width:38px; height:38px; }
  .top-logo-picture img { width:230px; }
  main { padding-inline:var(--s3); }
  .panel { padding:var(--s5) var(--s4); }
  .quest { grid-template-columns:1fr; }
  .progress {
    border-left:2px solid rgba(184,124,20,.35); border-top:0;
    padding:var(--s3); gap:3px;
    grid-template-columns:repeat(8,1fr) 34px;
  }
  .step { width:24px; height:24px; font-size:10px; }
  .step::after { width:10px; }
  .intro { grid-template-columns:1fr 110px; gap:var(--s3); }
  .speech { padding:var(--s4); }
  .mascot { width:100px; }
  .features { grid-template-columns:1fr; gap:var(--s2); }
  .feature { flex-direction:row; text-align:left; padding:var(--s3) var(--s4); gap:var(--s3); }
  .feature .icon { font-size:26px; flex-shrink:0; }
  .genre-rpg { width:calc(33.33% - 8px); max-width:160px; height:80px; }
  .brand { gap:var(--s2); }
}
@media (max-width:480px) {
  .intro { grid-template-columns:1fr; }
  .speech::after { display:none; }
  .mascot { width:80px; margin:0 auto; }
  .progress { overflow:hidden; }
  .treasure { font-size:20px; }
  .bottom-nav { height:68px; }
  .nav-item { font-size:9px; }
  .nav-item span { font-size:18px; }
  .top-tagline { font-size:30px !important; text-shadow:none !important; }
}

/* ===== TOP KANBAN MEDAL BADGE ===== */
.top-kanban-wrap {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  padding:16px 0 12px;
}
.top-kanban-left { flex:1; min-width:0; }
.top-kanban-sub {
  font-size:13px;
  color:var(--muted);
  font-weight:500;
  margin-bottom:4px;
}
.top-kanban-main {
  font-size:36px;
  font-weight:900;
  color:var(--navy);
  line-height:1.15;
  letter-spacing:.02em;
  margin-bottom:8px;
}
/* メダルバッジ外枠（楕円形ゴールド） */
.top-medal-outer {
  flex-shrink:0;
  width:108px;
  height:124px;
  border-radius:54px / 62px;
  background:linear-gradient(145deg,#f5da7a 0%,#a86e10 30%,#e8c060 60%,#7a5208 100%);
  box-shadow:0 4px 20px rgba(184,124,20,.5),inset 0 2px 5px rgba(255,255,255,.3);
  display:flex;
  align-items:center;
  justify-content:center;
  position:relative;
}
/* メダル内側（ネイビー） */
.top-medal-outer::before {
  content:'';
  position:absolute;
  inset:7px;
  border-radius:47px / 55px;
  background:linear-gradient(145deg,#0d2553,#061630);
  border:1.5px solid rgba(240,201,106,.3);
}
/* メダル底部デコ */
.top-medal-outer::after {
  content:'✦ ✦ ✦';
  position:absolute;
  bottom:12px;
  left:50%;
  transform:translateX(-50%);
  font-size:7px;
  color:rgba(240,201,106,.75);
  letter-spacing:3px;
  z-index:2;
  white-space:nowrap;
}
.top-medal-inner {
  position:relative;
  z-index:2;
  text-align:center;
  color:#f0c96a;
  text-shadow:0 1px 4px rgba(0,0,0,.6);
  line-height:1.2;
  padding:0 6px 18px;
}
.top-medal-top {
  font-size:9px;
  font-weight:700;
  letter-spacing:.1em;
  opacity:.9;
  margin-bottom:2px;
}
.top-medal-main {
  font-size:21px;
  font-weight:900;
  letter-spacing:-.01em;
  display:block;
  line-height:1.05;
}
.top-medal-bot {
  font-size:9px;
  font-weight:700;
  letter-spacing:.06em;
  opacity:.8;
  margin-top:3px;
}
@media (max-width:480px) {
  .top-kanban-main { font-size:28px; }
  .top-medal-outer { width:92px; height:106px; border-radius:46px / 53px; }
  .top-medal-outer::before { inset:6px; border-radius:40px / 47px; }
  .top-medal-inner { padding:0 4px 14px; }
  .top-medal-main { font-size:18px; }
  .top-medal-top, .top-medal-bot { font-size:8px; }
}

/* ===== DESKTOP EXPERIENCE =====
   PCで入力する利用者にも、選択肢・入力欄・進行状況を見失わない幅へ最適化 */
.portfolio-card { display:block; border-radius:var(--r); overflow:hidden; border:1.5px solid var(--line); text-decoration:none; background:#fff; transition:transform .15s,box-shadow .15s; }
.portfolio-card:hover { transform:translateY(-2px); box-shadow:var(--sh-md); }
.portfolio-thumb { aspect-ratio:16/9; overflow:hidden; background:#e8edf2; }
.portfolio-thumb img { width:100%; height:100%; object-fit:cover; transition:transform .3s; }
.portfolio-card:hover .portfolio-thumb img { transform:scale(1.04); }
.portfolio-copy { padding:9px 11px 11px; display:flex; flex-direction:column; gap:2px; }
.portfolio-copy strong { font-size:12px; color:var(--ink); }
.portfolio-copy span { font-size:10px; color:var(--muted); }

@media (min-width:701px) {
  body { padding-top:76px; padding-bottom:32px; }
  header { top:76px; }
  .app { width:min(100%,1120px); }
  main { padding:32px 28px 0; }
  .panel { padding:32px 36px; }
  .panel > .section-title-rpg { font-size:20px; }
  .top-logo-area { display:none !important; }
  .bottom-nav {
    top:0; bottom:auto;
    width:100%; height:76px;
    display:flex; align-items:stretch; justify-content:center;
    padding:0 max(24px,calc((100vw - 1120px) / 2));
    border-top:0; border-bottom:1px solid rgba(184,124,20,.28);
    border-radius:0; box-shadow:0 4px 18px rgba(0,0,0,.24);
  }
  .desktop-nav-logo {
    width:380px; min-width:230px; flex:0 1 380px; margin-right:auto;
    display:flex; align-items:center; justify-content:flex-start;
    padding:4px 24px 4px 0;
  }
  .desktop-nav-logo img { display:block; width:100%; height:70px; object-fit:contain; object-position:left center; }
  .nav-item { flex:1 1 124px; min-width:80px; max-width:138px; font-size:12px; padding:0 10px; }
  .nav-item span { display:none; }
  .nav-item.active { border-top:0; border-bottom:2px solid var(--gold); }
  .plans { display:grid; grid-template-columns:repeat(3,1fr); gap:14px; align-items:stretch; }
  .plan-rpg { min-height:158px; padding:20px; }
  .plan-top { align-items:flex-start; }
  .plan-desc { padding-left:0; margin-top:auto; }
  .genres { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:14px; }
  .genre-rpg { width:auto; height:106px; }
  .webo-guide { max-width:780px; margin-left:auto; margin-right:auto; }
  #local-img-grid { grid-template-columns:repeat(4,1fr) !important; gap:14px !important; }
  .portfolio-grid { grid-template-columns:repeat(4,1fr) !important; gap:14px !important; }
  .portfolio-copy strong { font-size:13px; }
  .form-group { max-width:760px; }
  .form-input { min-height:48px; font-size:16px; }
  .img-mode-btn { padding:22px 12px; }
  .img-mode-btn-title { font-size:15px; }
}

@media (min-width:1000px) {
  .app { width:min(100%,1240px); }
  .bottom-nav { padding-inline:max(28px,calc((100vw - 1240px) / 2)); }
  .genres { grid-template-columns:repeat(7,minmax(0,1fr)); }
  .portfolio-grid { grid-template-columns:repeat(5,1fr) !important; }
  #local-img-grid { grid-template-columns:repeat(5,1fr) !important; }
}

/* ===== CLEAN DIAGNOSIS UI =====
   機能はそのまま、診断に集中できる余白・進捗・エメラルド配色へ切り替える。 */
body.clean-builder {
  --navy:#073d4a; --navy-2:#075d62; --navy-3:#062f36;
  --blue:#008f94; --green:#008f94; --teal:#008f94; --teal-light:#e8f8f7;
  --gold:#008f94; --gold-lt:#55c5c2; --ink:#1b2d35; --muted:#60747c;
  --paper:#fff; --paper-2:#fff; --paper-3:#f0fbfa; --line:#dbe7e7;
  background:#f5f9f9; color:var(--ink); padding-bottom:96px;
}
.clean-builder .app { width:min(100%,980px); }
.clean-builder main { padding:36px 22px 0; }
.clean-builder .panel {
  border:1px solid var(--line); border-radius:14px; box-shadow:0 5px 16px rgba(7,61,74,.045);
  background:#fff; padding:30px; overflow:visible;
}
.clean-builder .panel::before { display:none; }
.clean-builder .section-title-rpg { color:var(--navy); font-size:20px; gap:8px; margin-bottom:24px; }
.clean-builder .section-title-rpg::after { background:var(--blue); width:34px; height:3px; }
.clean-builder .form-label { color:var(--ink); font-size:14px; }
.clean-builder .form-input { min-height:48px; border-color:#c9dbdc; background:#fff; border-radius:8px; }
.clean-builder .form-input:focus { border-color:var(--blue); box-shadow:0 0 0 3px rgba(0,143,148,.13); }
.clean-builder .form-hint { color:var(--muted); }
.clean-builder .form-label .required { background:#dd5b54; }
.clean-builder .form-label .optional { background:#73868b; }
.clean-builder .tip-box { background:#f1fbfa; border-color:#b7e7e5; color:#315e61; border-radius:9px; }
.clean-builder .tip-box .tip-title { color:#08787c; }
.clean-builder .btn-primary,.clean-builder .cta,.clean-builder .diag-go-btn {
  background:var(--blue); border-radius:8px; box-shadow:0 3px 7px rgba(0,143,148,.2);
}
.clean-builder .btn-secondary { border-color:#b9d6d7; color:var(--navy); background:#fff; border-radius:8px; }
.clean-builder .plans { gap:12px; }
.clean-builder .plan-rpg { border:1px solid var(--line); border-left:4px solid var(--blue); border-radius:10px; background:#fff; box-shadow:none; padding:18px; }
.clean-builder .plan-rpg:hover { box-shadow:0 0 0 2px rgba(0,143,148,.16); background:#fff; }
.clean-builder .plan-rpg.selected-plan { border-color:var(--blue); background:#f2fbfb; box-shadow:0 0 0 2px var(--blue); }
.clean-builder .plan-price,.clean-builder .blue .plan-price,.clean-builder .green .plan-price,.clean-builder .orange .plan-price { color:var(--blue); }
.clean-builder .genre-rpg { border-color:var(--line); background:#fff; border-radius:10px; box-shadow:none; color:var(--ink); }
.clean-builder .genre-rpg:hover { background:#f5fbfb; box-shadow:0 0 0 2px rgba(0,143,148,.14); }
.clean-builder .genre-rpg.selected { background:#f0fbfa; box-shadow:0 0 0 2px var(--blue); }
.clean-builder .extra-block,.clean-builder .part-item { border-color:var(--line); background:#fff; border-radius:10px; }
.clean-builder .img-tabs { border-color:#c9dbdc; border-radius:8px; }
.clean-builder .img-tab { background:#fff; border-color:#dbe7e7; color:var(--muted); }
.clean-builder .img-tab.active { background:var(--blue); color:#fff; }
.clean-builder .img-mode-btn { border-color:#c9dbdc; background:#fff; border-radius:10px; }
.clean-builder .img-mode-btn.active { border-color:var(--blue); background:#f0fbfa; }
.clean-builder .local-img-item:hover { border-color:var(--blue); box-shadow:0 0 0 2px rgba(0,143,148,.18); }
.clean-builder .local-img-item.selected { border-color:var(--blue); box-shadow:0 0 0 3px var(--blue); }
.clean-builder .toggle-track { background:#ccd9da; }
.clean-builder .toggle-switch input:checked + .toggle-track { background:var(--blue); }
.clean-builder .info-card--blue,.clean-builder .info-card--soft-blue { background:#eefafa; border-color:#bce5e4; }
.clean-builder .info-card--green { background:#eefafa; border-color:#bce5e4; }
.clean-builder .info-card--orange { background:#f5fbfb; border-color:#c7e3e2; }
.clean-builder .info-card--neutral { border-color:var(--line); background:#fff; }
.clean-builder .portfolio-card { border-color:var(--line); }
.clean-builder .portfolio-card:hover { box-shadow:0 6px 18px rgba(7,61,74,.1); }
.clean-builder .bottom-nav { background:#fff; border-color:var(--line); box-shadow:0 -2px 12px rgba(7,61,74,.08); }
.clean-builder .nav-item { color:#60747c; border-color:var(--line); }
.clean-builder .nav-item:hover,.clean-builder .nav-item.active { color:var(--blue); background:#f0fbfa; }
.clean-builder .nav-item.active { border-top-color:var(--blue); }
.clean-builder header { background:#fff; border-bottom:1px solid var(--line); box-shadow:0 2px 10px rgba(7,61,74,.05); backdrop-filter:none; }
.clean-builder #quest-bar { height:70px; padding:0 22px; gap:18px; }
.clean-builder .hdr-progress-name { color:var(--navy); font-size:14px; }
.clean-builder .hdr-progress-pct { color:var(--blue); }
.clean-builder .hdr-progress-bar { height:5px; background:#dbe7e7; }
.clean-builder .hdr-progress-fill { background:var(--blue); }
.clean-builder .hdr-time-hint { color:var(--muted); }
.clean-builder .hdr-save-btn { color:var(--blue); border-color:#b9d6d7; background:#fff; border-radius:8px; }
.clean-builder .hdr-save-btn:hover { background:#f0fbfa; }
.clean-builder .quest { border-color:var(--line); box-shadow:none; }
.clean-builder .quest-title,.clean-builder .progress { background:#fff; }
.clean-builder .step.active { background:var(--blue); box-shadow:0 0 0 3px rgba(0,143,148,.15); }
.clean-builder .step.done { background:var(--blue); }
.clean-builder .step::after { background:#dbe7e7; }
.clean-builder .top-medal-outer,.clean-builder .top-kanban-wrap { box-shadow:none; }
.clean-builder .top-medal-outer { background:var(--blue); }
.clean-builder .top-medal-outer::before { background:#f0fbfa; }
.clean-builder .top-medal-inner { color:var(--navy); text-shadow:none; }
.clean-builder .diag-result-banner { background:#edf8f7; border:1px solid #b8e2df; box-shadow:none; border-radius:10px; color:#075b61; text-align:left; }
.clean-builder .diag-result-banner .banner-ttl { color:var(--navy); }
.clean-builder .diag-result-banner .banner-sub { color:#527075; }
.clean-builder .diag-rec-label { background:#e8f8f7; color:#08787c; }
.clean-builder .diag-all-sep { color:var(--muted); }
.clean-builder .diag-go-btn { background:var(--blue); box-shadow:0 3px 7px rgba(0,143,148,.2); border-radius:8px; }
.clean-builder .diag-btn { background:#fff; border-color:var(--line); border-radius:10px; box-shadow:none; }
.clean-builder .diag-btn:hover,.clean-builder .diag-btn.diag-selected { border-color:var(--blue); background:#f0fbfa; box-shadow:0 0 0 2px rgba(0,143,148,.12); }
.clean-builder .faq-item { border-color:var(--line); background:#fff; box-shadow:none; }
.clean-builder .faq-q { color:var(--navy); }
.clean-builder .faq-a { color:var(--muted); }
.clean-builder .price-card { border-color:var(--line); border-radius:12px; box-shadow:none; background:#fff; }
.clean-builder .price-card.recommended { border-color:var(--blue); box-shadow:0 0 0 2px rgba(0,143,148,.15); }

@media (min-width:701px) {
  .clean-builder { padding-top:72px; padding-bottom:34px; }
  .clean-builder .app { width:min(100%,1120px); }
  .clean-builder .bottom-nav { height:72px; background:#fff; border-bottom:1px solid var(--line); box-shadow:0 2px 12px rgba(7,61,74,.06); }
  .clean-builder .bottom-nav .desktop-nav-logo { width:300px; min-width:210px; }
  .clean-builder .bottom-nav .desktop-nav-logo img { filter:none; }
  .clean-builder .bottom-nav .nav-item { max-width:130px; color:#60747c; }
  .clean-builder .bottom-nav .nav-item.active { color:var(--blue); border-bottom-color:var(--blue); background:#f0fbfa; }
  .clean-builder header { top:72px; }
  .clean-builder main { padding:42px 28px 0; }
  .clean-builder .panel { padding:34px; }
  .clean-builder .plans { grid-template-columns:repeat(3,1fr); }
  .clean-builder .genres { grid-template-columns:repeat(5,minmax(0,1fr)); }
}
@media (max-width:700px) {
  .clean-builder { padding-bottom:80px; }
  .clean-builder main { padding:22px 16px 0; }
  .clean-builder .panel { padding:23px 18px; border-radius:12px; }
  .clean-builder #quest-bar { height:60px; padding:0 16px; }
  .clean-builder .hdr-time-hint { display:none; }
  .clean-builder .bottom-nav { height:68px; }
}

/* 左進捗を使う診断レイアウト */
#clean-stepper { display:none; }
@media (min-width:701px) {
  .clean-builder { display:flex; flex-direction:column; min-height:100vh; padding-bottom:0; }
  .clean-builder main { flex:1 0 auto; }
  .clean-builder.builder-active .app { width:min(100%,1260px); }
  .clean-builder.builder-active main { padding-left:286px; min-height:650px; }
  .clean-builder.builder-active #clean-stepper {
    display:block; position:fixed; z-index:8; top:164px;
    left:calc(50% - 630px); width:220px; color:var(--muted);
  }
  .clean-stepper-title { color:var(--navy); font-weight:700; font-size:13px; margin:0 0 12px; }
  .clean-stepper-progress { height:5px; background:#dbe7e7; border-radius:99px; overflow:hidden; margin-bottom:12px; }
  .clean-stepper-progress i { display:block; width:8%; height:100%; background:var(--blue); border-radius:inherit; transition:width .25s ease; }
  .clean-stepper-count { margin:0 0 14px; font-size:12px; font-weight:700; }
  .clean-stepper-list { list-style:none; padding:0; margin:0; }
  .clean-stepper-list li { display:flex; align-items:center; gap:10px; padding:8px 0; font-size:13px; color:#93a1a7; }
  .clean-stepper-list li[hidden] { display:none !important; }
  .clean-stepper-list li i { display:grid; place-items:center; width:23px; height:23px; font-style:normal; border:1px solid #c8d7d8; border-radius:50%; font-size:11px; }
  .clean-stepper-list li.done { color:#547177; }.clean-stepper-list li.done i { background:var(--blue); border-color:var(--blue); color:#fff; font-size:0; }.clean-stepper-list li.done i::after { content:'✓'; font-size:12px; }
  .clean-stepper-list li.active { color:var(--blue); font-weight:700; }.clean-stepper-list li.active i { border:2px solid var(--blue); color:var(--blue); background:#fff; }
  .clean-stepper-note { margin:27px 0 0; padding:14px; background:#eaf8f7; border-radius:10px; font-size:12px; line-height:1.7; color:#527075; }.clean-stepper-note strong { display:block; color:var(--navy); margin-bottom:3px; }
}

/* ロゴ・トップ・ボタンをテキスト主体のすっきりした印象へ */
.clean-builder .desktop-nav-logo img,.clean-builder .top-logo-picture img,.clean-builder .top-logo-picture source { display:none !important; }
.clean-builder .desktop-nav-logo::after { content:'ホームページクエスト'; color:var(--navy); font-size:19px; font-weight:700; letter-spacing:-.03em; }
.clean-builder .desktop-nav-logo::after::first-letter { color:var(--blue); }
.clean-builder .top-logo-picture { display:flex; align-items:center; justify-content:center; min-height:54px; }
.clean-builder .top-logo-picture::after { content:'ホームページクエスト'; color:var(--navy); font-size:22px; font-weight:700; letter-spacing:-.04em; }
.clean-builder .top-logo-area { padding:24px 0 12px !important; }
.clean-builder .desktop-nav-logo,.clean-builder .top-logo-area a { text-decoration:none !important; }
.clean-builder #page-top .panel { max-width:980px; margin-left:auto; margin-right:auto; }
.clean-builder #page-top .feature { border:1px solid var(--line); border-left:3px solid var(--blue); border-radius:10px; background:#fff; box-shadow:none; min-height:94px; display:flex; align-items:center; justify-content:center; }
.clean-builder #page-top .feature .icon { display:none; }
.clean-builder #page-top .feature strong { font-size:16px; color:var(--navy); }.clean-builder #page-top .feature p { color:var(--muted); }
.clean-builder #page-top .cta { background:var(--blue); box-shadow:0 3px 7px rgba(0,143,148,.2); border-radius:8px; }
.clean-builder #page-top .cta + * { display:none !important; }
.clean-builder #page-top [style*="background:#e83b2f"] { display:none !important; }
.clean-builder .plans { align-items:stretch; }
.clean-builder .plan-rpg { justify-content:space-between; min-height:0; }
.clean-builder .plan-desc { margin-top:6px; }
/* 診断・プラン選択は内容量に合わせる。大きな空白は作らない。 */
.clean-builder #page-step1 .plan-rpg,.clean-builder #page-diagnosis .plan-rpg { min-height:0 !important; height:auto !important; padding:16px 18px !important; }
.clean-builder #page-step1 .plan-desc,.clean-builder #page-diagnosis .plan-desc { margin-top:3px; line-height:1.45; }
@media (min-width:701px) { .clean-builder .plans { grid-auto-rows:auto; }.clean-builder .plan-rpg { min-height:0; } }
/* 既存の青・緑ボタンも、診断UIのエメラルドに統一 */
.clean-builder button[style*="#1a5fb4"],.clean-builder button[style*="#22a06b"],.clean-builder button[style*="#167349"],.clean-builder a[style*="#1a5fb4"],.clean-builder a[style*="#22a06b"] { background:var(--blue) !important; border-color:var(--blue) !important; color:#fff !important; }
/* 左の進捗と重ならない、ページ最下部のフッター領域 */
.clean-builder .btn-next,
.clean-builder #pay-link-btn,
.clean-builder #pay-link-btn-fb,
.clean-builder #pay-mail-btn { background:var(--blue) !important; border-color:var(--blue) !important; color:#fff !important; box-shadow:0 3px 7px rgba(0,143,148,.22) !important; }
.clean-builder.builder-active footer { position:relative; z-index:30; clear:both; width:calc(100% - 286px); margin:0 0 0 286px; background:#073d4a !important; }
.clean-builder.builder-active footer a { color:#d7f4f2 !important; }
.plan-option-note { margin-top:16px; padding:13px 15px; border:1px solid #b8e2df; border-radius:10px; background:#edf8f7; color:#527075; font-size:12px; line-height:1.7; }
.plan-option-note strong { display:block; color:var(--navy); font-size:13px; margin-bottom:2px; }
.clean-builder .design-style-option { width:100%; display:grid; grid-template-columns:116px minmax(0,1fr); align-items:center; gap:14px; }
.design-style-preview { display:block; height:78px; padding:8px; overflow:hidden; border-radius:7px; position:relative; background:#fff; }
.design-style-preview::after { content:'完成イメージ'; position:absolute; left:8px; bottom:6px; color:rgba(10,45,55,.72); font-size:9px; font-weight:700; letter-spacing:.04em; }
.design-style-preview i { display:block; height:30px; border-radius:3px; background:#b9d6d7; }
.design-style-preview b { display:block; width:72%; height:7px; margin-top:9px; border-radius:99px; background:#536f78; }
.design-style-preview em { display:block; width:48%; height:6px; margin-top:6px; border-radius:99px; background:#c2d0d1; }
.preview-clean { background:#fff; border:1px solid #dce8e8; }.preview-clean i { background:linear-gradient(135deg,#dcefed,#84b9b5); }.preview-clean b { background:#134b56; }
.preview-pop { background:#fff8e8; border:2px solid #f3ba45; }.preview-pop i { background:linear-gradient(135deg,#ff866a,#f6bf3c); border-radius:16px 16px 4px 4px; }.preview-pop b { background:#e05236; }.preview-pop em { background:#efb037; }
.preview-friendly { background:#fbfaf5; border:1px solid #d7dfcc; border-radius:16px; }.preview-friendly i { background:linear-gradient(135deg,#c7dcc3,#90ac8e); border-radius:14px; }.preview-friendly b { background:#496850; }.preview-friendly em { background:#a6ba9d; }
.guide-sample-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; }
.guide-sample-grid .guide-demo-card { display:block; overflow:hidden; border:1px solid var(--line); border-radius:10px; background:#fff; color:var(--navy); text-decoration:none; box-shadow:none; }
.guide-sample-grid .guide-demo-card img { display:block; width:100%; aspect-ratio:4 / 3; object-fit:cover; }
.guide-sample-grid .guide-demo-card span { display:block; padding:9px 10px; font-size:13px; font-weight:700; }
@media (min-width:1261px) {
  .clean-builder.builder-active footer { width:calc(50% + 344px); margin-left:calc(50% - 344px); }
}
@media (max-width:700px) {
  .clean-builder.builder-active footer { width:100%; margin:0; }
  .clean-builder .top-logo-area { padding-top:18px !important; }
  .clean-builder .top-logo-picture::after { font-size:18px; }
  .clean-builder .top-logo-picture { min-height:38px; }
  .guide-sample-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
  .clean-builder .design-style-option { grid-template-columns:94px minmax(0,1fr); gap:11px; }
  .design-style-preview { height:66px; padding:7px; }
  .design-style-preview i { height:25px; }
}

/* ===== DIAGNOSIS PAGE ===== */
.diag-progress-wrap {
  display:flex;
  gap:6px;
  margin-bottom:24px;
}
.diag-dot {
  flex:1;
  height:5px;
  border-radius:3px;
  background:rgba(255,255,255,.15);
  transition:background .35s;
}
.diag-dot-active { background:var(--gold) !important; }
.diag-dot-done   { background:var(--gold-lt) !important; }
.diag-question {
  margin-bottom:28px;
}
.diag-question.diag-appear {
  animation:diagFade .35s ease both;
}
@keyframes diagFade {
  from { opacity:0; transform:translateY(14px); }
  to   { opacity:1; transform:translateY(0); }
}
.diag-q-num {
  display:inline-flex;
  align-items:center;
  background:var(--gold);
  color:#fff;
  font-size:11px;
  font-weight:900;
  padding:3px 12px;
  border-radius:var(--r-full);
  margin-bottom:10px;
  letter-spacing:.06em;
  font-family:'Inter',sans-serif;
}
.diag-q-text {
  font-size:17px;
  font-weight:700;
  color:var(--ink);
  margin-bottom:14px;
  line-height:1.4;
}
.diag-explain {
  background:rgba(26,95,180,.05);
  border:1.5px solid rgba(26,95,180,.18);
  border-radius:var(--r);
  padding:12px 14px;
  font-size:12px;
  line-height:1.8;
  color:var(--muted);
  margin-bottom:14px;
}
.diag-explain strong { color:var(--blue); font-weight:700; }
.diag-btn-group { display:flex; flex-direction:column; gap:10px; }
.diag-btn {
  display:flex;
  align-items:center;
  gap:12px;
  width:100%;
  padding:14px 16px;
  border:2px solid rgba(184,124,20,.25);
  border-radius:var(--r);
  background:rgba(255,255,255,.92);
  color:var(--ink);
  font-size:14px;
  font-weight:600;
  cursor:pointer;
  text-align:left;
  transition:border-color .15s,background .15s,box-shadow .15s;
  font-family:inherit;
}
.diag-btn:hover { border-color:var(--gold); background:var(--paper-3); }
.diag-btn.diag-selected {
  border-color:var(--gold);
  background:rgba(240,201,106,.12);
  box-shadow:0 0 0 1px var(--gold);
}
.diag-btn-icon { font-size:26px; flex-shrink:0; }
.diag-btn-body { flex:1; }
.diag-btn-title { font-size:14px; font-weight:700; line-height:1.3; }
.diag-btn-sub { font-size:11px; font-weight:400; color:var(--muted); margin-top:2px; }
/* 結果バナー */
.diag-result-banner {
  background:linear-gradient(90deg,#d48c00,#f0c96a);
  border-radius:var(--r);
  padding:14px 18px;
  text-align:center;
  margin-bottom:16px;
  box-shadow:0 3px 12px rgba(184,124,20,.3);
  animation:diagFade .4s ease both;
}
.diag-result-banner .banner-ttl {
  font-size:15px;
  font-weight:900;
  color:#fff;
  letter-spacing:.04em;
}
.diag-result-banner .banner-sub {
  font-size:12px;
  color:rgba(255,255,255,.9);
  margin-top:4px;
  line-height:1.5;
}
.diag-rec-label {
  display:inline-flex;
  align-items:center;
  gap:4px;
  background:#e83b2f;
  color:#fff;
  font-size:11px;
  font-weight:900;
  padding:3px 12px;
  border-radius:var(--r-full);
  margin-bottom:8px;
  letter-spacing:.04em;
}
.diag-all-sep {
  display:flex;
  align-items:center;
  gap:10px;
  font-size:12px;
  color:var(--muted);
  font-weight:600;
  margin:20px 0 12px;
}
.diag-all-sep::before,.diag-all-sep::after {
  content:'';
  flex:1;
  height:1px;
  background:rgba(184,124,20,.25);
}
.diag-go-btn {
  width:100%;
  padding:16px;
  background:linear-gradient(160deg,#1e5fa6,#0d3470);
  color:#fff;
  font-size:17px;
  font-weight:700;
  border:none;
  border-radius:var(--r);
  cursor:pointer;
  font-family:inherit;
  box-shadow:0 4px 0 rgba(5,20,48,.5),0 2px 12px rgba(14,52,110,.35);
  transition:transform .12s,box-shadow .12s;
  margin-top:28px;
  margin-bottom:10px;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:8px;
}
.diag-go-btn:hover { transform:translateY(-1px); }
.diag-go-btn:active { transform:translateY(1px); box-shadow:0 2px 0 rgba(5,20,48,.5); }

/* 診断結果は選択状態ではなく案内として見せる */
.clean-builder .diag-result-banner { background:#edf8f7; border:1px solid #b8e2df; box-shadow:none; border-radius:10px; color:#075b61; text-align:left; }
.clean-builder .diag-result-banner .banner-ttl { color:var(--navy); }
.clean-builder .diag-result-banner .banner-sub { color:#527075; }
.clean-builder .diag-go-btn,
.clean-builder .btn-next { background:var(--blue) !important; border-color:var(--blue) !important; box-shadow:0 3px 7px rgba(0,143,148,.22) !important; }
.clean-builder .btn-next:active { box-shadow:0 1px 3px rgba(0,143,148,.22) !important; }
