:root{
  --G:#7DC221;--GD:#4f8c0e;--GL:#a8d84a;--GP:#d6f090;
  --ivory:#f5f0e0;--ivory-dark:#e8e0c8;--ivory-mid:#ede5cc;
  --retro-red:#d63031;--retro-blue:#2980b9;--retro-yellow:#f39c12;
  --chrome:#c8c8c0;--chrome-dark:#a0a098;--chrome-light:#e8e8e0;
  --black:#1a1a1a;--shadow:rgba(0,0,0,0.25);
}
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
html{background:#5a9a10;}
body{
  min-height:100svh;
  font-family:'Zen Kaku Gothic New',sans-serif;
  background:
    radial-gradient(ellipse at 20% 20%,rgba(255,255,255,0.08) 0%,transparent 50%),
    radial-gradient(ellipse at 80% 80%,rgba(0,0,0,0.1) 0%,transparent 50%),
    linear-gradient(160deg,#4f8c0e 0%,#7DC221 40%,#5a9a10 70%,#3d6e08 100%);
  color:var(--black);
  overflow-x:hidden;
  user-select:none;
}

/* ── レトロドット背景 ── */
body::before{
  content:'';position:fixed;inset:0;
  background-image:radial-gradient(circle,rgba(255,255,255,0.06) 1px,transparent 1px);
  background-size:24px 24px;
  pointer-events:none;z-index:0;
}

/* ── HEADER ── */
.header{
  position:relative;z-index:1;
  padding:12px 20px 10px;text-align:center;
  background:var(--G);
  border-bottom:3px solid rgba(255,255,255,0.2);
  box-shadow:0 2px 12px rgba(0,0,0,0.2);
}
.header-inner{display:flex;align-items:center;justify-content:center;gap:10px;}
.header-logo{height:26px;width:auto;}
.header-text{
  font-family:'Zen Kaku Gothic New',sans-serif;
  font-size:1rem;color:white;letter-spacing:0.1em;
  text-shadow:2px 2px 0 rgba(0,0,0,0.3);
}
.header-sub{font-size:0.68rem;color:rgba(255,255,255,0.65);letter-spacing:0.12em;margin-top:3px;}

/* ── MAIN ── */
.main{position:relative;z-index:1;max-width:360px;margin:0 auto;padding:14px 12px 60px;}

/* ── STATE MSG ── */
.state-msg{
  text-align:center;padding:8px 0 10px;
  font-size:0.8rem;letter-spacing:0.06em;min-height:30px;
  font-weight:700;
}
.state-msg.hint{color:rgba(255,255,255,0.7);}
.state-msg.action{color:#fff176;text-shadow:0 1px 4px rgba(0,0,0,0.3);}
.state-msg.warning{color:#ffa07a;font-weight:700;}
.state-msg.limit{color:#ff8080;}

/* ── PROGRESS ── */
.progress-wrap{margin:0 0 10px;height:8px;background:rgba(0,0,0,0.2);border-radius:4px;overflow:hidden;display:none;border:1px solid rgba(255,255,255,0.15);}
.progress-bar{height:100%;background:linear-gradient(90deg,#fff176,var(--GL));border-radius:4px;width:0%;transition:width 0.1s;box-shadow:0 0 6px rgba(255,241,118,0.5);}
.progress-wrap.show{display:block;}

/* ════════════════════
   GACHA MACHINE
════════════════════ */
.machine{
  position:relative;
  width:min(310px,82vw);
  margin:0 auto 14px;
}

/* ── 上部フレーム ── */
.machine-top{
  background:linear-gradient(160deg,var(--ivory),var(--ivory-mid),var(--ivory-dark));
  border-radius:18px 18px 0 0;
  border:3px solid var(--chrome-dark);
  border-bottom:none;
  padding:10px 10px 0;
  position:relative;
  box-shadow:
    inset 0 3px 8px rgba(255,255,255,0.7),
    inset 0 -2px 6px rgba(0,0,0,0.08);
}

/* レトロネジ */
.screw{
  position:absolute;
  width:10px;height:10px;border-radius:50%;
  background:radial-gradient(circle at 35% 35%,var(--chrome-light),var(--chrome-dark));
  border:1px solid var(--chrome-dark);
  box-shadow:0 1px 2px rgba(0,0,0,0.3);
}
.screw::after{
  content:'';position:absolute;top:50%;left:50%;
  width:6px;height:1.5px;
  background:rgba(0,0,0,0.3);
  transform:translate(-50%,-50%) rotate(45deg);
}
.screw.tl{top:6px;left:6px;}
.screw.tr{top:6px;right:6px;}

/* ブランドバー */
.machine-brand{
  background:linear-gradient(135deg,var(--G),var(--GD));
  border-radius:8px 8px 0 0;
  padding:6px 14px;
  display:flex;align-items:center;justify-content:space-between;
  margin-bottom:8px;
  box-shadow:inset 0 2px 4px rgba(255,255,255,0.2),0 2px 6px rgba(0,0,0,0.15);
  border:1px solid var(--GD);
}
.machine-brand-left{display:flex;align-items:center;gap:6px;}
.machine-brand-logo{height:16px;width:auto;}
.machine-brand-name{
  font-family:'Zen Kaku Gothic New',sans-serif;
  font-size:0.78rem;color:white;letter-spacing:0.08em;
  text-shadow:1px 1px 0 rgba(0,0,0,0.3);
}
.machine-brand-badge{
  background:white;border-radius:4px;
  padding:2px 6px;
  font-family:'Bebas Neue',sans-serif;
  font-size:0.65rem;color:var(--GD);
  letter-spacing:0.1em;
  box-shadow:0 1px 3px rgba(0,0,0,0.2);
}

/* ガラス窓 */
.machine-glass{
  background:linear-gradient(
    145deg,
    rgba(200,235,255,0.5) 0%,
    rgba(220,245,220,0.4) 30%,
    rgba(180,220,200,0.3) 60%,
    rgba(200,230,255,0.4) 100%
  );
  border:2px solid rgba(255,255,255,0.8);
  border-radius:6px;
  height:min(175px,45vw);
  position:relative;overflow:hidden;
  box-shadow:
    inset 0 3px 14px rgba(255,255,255,0.5),
    inset 0 -4px 10px rgba(0,0,0,0.06),
    0 2px 8px rgba(0,0,0,0.1);
}
.glass-shine{position:absolute;top:0;left:0;right:0;height:45%;background:linear-gradient(to bottom,rgba(255,255,255,0.55),transparent);border-radius:4px 4px 0 0;pointer-events:none;z-index:3;}
.glass-left{position:absolute;top:5%;left:4%;width:12%;height:55%;background:rgba(255,255,255,0.35);border-radius:50%;transform:rotate(-15deg);filter:blur(5px);pointer-events:none;z-index:3;}

/* ロゴボール */
.logo-ball{
  position:absolute;border-radius:50%;
  background:rgba(255,255,255,0.18);
  border:2px solid rgba(255,255,255,0.45);
  box-shadow:0 3px 10px rgba(0,0,0,0.12),inset 0 1px 4px rgba(255,255,255,0.4);
  display:flex;align-items:center;justify-content:center;overflow:hidden;
}
.logo-ball img{width:75%;height:75%;object-fit:contain;}
.lb1{width:54px;height:54px;top:5%;left:3%;}
.lb2{width:44px;height:44px;top:3%;right:5%;}
.lb3{width:58px;height:58px;bottom:6%;left:5%;}
.lb4{width:40px;height:40px;bottom:5%;right:4%;}
.lb5{width:48px;height:48px;top:40%;left:1%;}
.lb6{width:36px;height:36px;top:36%;right:2%;}

@keyframes logo-float{
  0%,100%{transform:translate(0,0) rotate(0deg);}
  25%{transform:translate(2px,-4px) rotate(4deg);}
  50%{transform:translate(-1px,2px) rotate(-2deg);}
  75%{transform:translate(3px,-2px) rotate(3deg);}
}
.logo-ball{animation:logo-float 3s ease-in-out infinite;}
.lb2{animation-delay:0.5s;}.lb3{animation-delay:1s;}
.lb4{animation-delay:1.5s;}.lb5{animation-delay:0.8s;}.lb6{animation-delay:1.3s;}

@keyframes cap-shake{
  0%,100%{transform:translate(0,0) rotate(0);}
  20%{transform:translate(-3px,2px) rotate(-5deg);}
  40%{transform:translate(3px,-2px) rotate(5deg);}
  60%{transform:translate(-2px,3px) rotate(-3deg);}
  80%{transform:translate(2px,-1px) rotate(3deg);}
}
.shaking .logo-ball{animation:cap-shake 0.1s linear infinite !important;}

/* ロゴ円形パネル */
.machine-logo-panel{
  position:absolute;top:50%;left:50%;
  transform:translate(-50%,-50%);
  width:min(108px,28vw);height:min(108px,28vw);
  border-radius:50%;
  background:radial-gradient(circle at 40% 35%,#8ed622,var(--G) 60%,var(--GD));
  border:5px solid white;
  box-shadow:0 4px 16px rgba(90,154,16,0.35),inset 0 2px 8px rgba(255,255,255,0.25),0 0 0 2px var(--GD);
  display:flex;align-items:center;justify-content:center;z-index:2;
}
.machine-logo-panel img{width:68%;height:auto;}

/* ── ジョイント ── */
.machine-joint{
  height:14px;
  background:linear-gradient(to bottom,var(--chrome),var(--chrome-dark));
  border-left:3px solid var(--chrome-dark);
  border-right:3px solid var(--chrome-dark);
  position:relative;
}
.machine-joint::before{
  content:'';position:absolute;top:3px;left:0;right:0;
  height:3px;background:rgba(255,255,255,0.4);
}
.machine-joint::after{
  content:'';position:absolute;bottom:3px;left:0;right:0;
  height:2px;background:rgba(0,0,0,0.12);
}

/* ── 下部ボディ ── */
.machine-bottom{
  background:linear-gradient(175deg,var(--ivory),var(--ivory-mid),var(--ivory-dark));
  border:3px solid var(--chrome-dark);
  border-top:none;
  border-radius:0 0 18px 18px;
  padding:14px 14px 16px;
  position:relative;
  box-shadow:
    inset 0 -3px 10px rgba(0,0,0,0.08),
    inset 0 3px 6px rgba(255,255,255,0.5);
}
.screw.bl{bottom:8px;left:6px;}
.screw.br{bottom:8px;right:6px;}

/* コイン表示 */
.coin-row{
  display:flex;align-items:center;gap:10px;
  margin-bottom:12px;
  background:rgba(0,0,0,0.04);
  border-radius:10px;padding:8px 10px;
  border:1px solid rgba(0,0,0,0.06);
}
.coin-badge{
  background:linear-gradient(135deg,var(--G),var(--GD));
  border-radius:8px;padding:5px 8px;text-align:center;
  border:2px solid var(--GD);
  box-shadow:0 2px 6px rgba(90,154,16,0.3),inset 0 1px 3px rgba(255,255,255,0.2);
  flex-shrink:0;
}
.coin-badge-top{font-size:0.5rem;color:rgba(255,255,255,0.8);letter-spacing:0.08em;}
.coin-badge-num{font-family:'Bebas Neue',sans-serif;font-size:1.6rem;color:white;line-height:1;letter-spacing:0.1em;}
.coin-badge-sub{font-size:0.48rem;color:rgba(255,255,255,0.7);}
.coin-info{flex:1;font-size:0.66rem;color:#666;line-height:1.65;}
.coin-info-remain{color:var(--GD);font-weight:700;font-size:0.72rem;}
.coin-slot-btn{
  width:34px;height:34px;border-radius:50%;
  background:linear-gradient(135deg,var(--ivory-mid),var(--ivory-dark));
  border:2px solid var(--chrome-dark);
  box-shadow:0 2px 5px rgba(0,0,0,0.15),inset 0 1px 3px rgba(255,255,255,0.6);
  display:flex;align-items:center;justify-content:center;flex-shrink:0;
}
.coin-slot-slit{width:3px;height:13px;background:#888;border-radius:2px;}

/* ハンドルエリア */
.handle-row{
  display:flex;align-items:center;justify-content:center;gap:10px;
}

/* 角度表示 */
.angle-box{
  background:linear-gradient(135deg,#1a1a1a,#2a2a2a);
  border-radius:10px;padding:8px 10px;text-align:center;
  border:2px solid #444;
  box-shadow:inset 0 2px 6px rgba(0,0,0,0.4),0 2px 6px rgba(0,0,0,0.2);
  min-width:68px;
}
.angle-label{font-size:0.55rem;color:rgba(255,255,255,0.4);letter-spacing:0.1em;font-family:'Bebas Neue',sans-serif;}
.angle-val{font-family:'Bebas Neue',sans-serif;font-size:1.4rem;color:#7DC221;letter-spacing:0.1em;line-height:1.1;text-shadow:0 0 8px rgba(125,194,33,0.5);}
.angle-remain{font-size:0.52rem;color:rgba(255,255,255,0.3);margin-top:1px;}

/* ── ハンドル（レトロ立体） ── */
.handle-wrap{display:flex;flex-direction:column;align-items:center;gap:3px;}

.handle-outer{
  width:min(108px,28vw);height:min(108px,28vw);
  border-radius:50%;
  background:linear-gradient(145deg,var(--ivory-mid),var(--ivory-dark),var(--chrome));
  border:4px solid var(--chrome-dark);
  box-shadow:
    0 6px 16px rgba(0,0,0,0.25),
    0 2px 4px rgba(0,0,0,0.15),
    inset 0 3px 10px rgba(255,255,255,0.6),
    inset 0 -3px 8px rgba(0,0,0,0.12);
  position:relative;cursor:grab;touch-action:none;
  display:flex;align-items:center;justify-content:center;
}
.handle-outer:active{cursor:grabbing;}

/* 外側カラーリング（きみどり） */
.handle-ring-color{
  position:absolute;inset:5px;border-radius:50%;
  border:4px solid var(--G);
  box-shadow:0 0 0 1px var(--GD),inset 0 0 6px rgba(125,194,33,0.2);
}

/* 内側白ボディ */
.handle-body-inner{
  position:absolute;inset:14px;border-radius:50%;
  background:linear-gradient(145deg,#f8f8f4,#e8e8e0,#f0f0e8);
  border:2px solid var(--chrome);
  box-shadow:
    inset 0 3px 8px rgba(255,255,255,0.8),
    inset 0 -3px 6px rgba(0,0,0,0.1),
    0 2px 6px rgba(0,0,0,0.15);
  display:flex;align-items:center;justify-content:center;
}

/* 矢印インジケーター */
.handle-arrow-wrap{
  position:absolute;
  width:100%;height:100%;
  display:flex;align-items:center;justify-content:center;
}
.handle-arrow{
  position:absolute;
  top:12%;left:50%;
  transform:translateX(-50%);
  width:0;height:0;
  border-left:7px solid transparent;
  border-right:7px solid transparent;
  border-bottom:14px solid var(--G);
  filter:drop-shadow(0 1px 2px rgba(0,0,0,0.2));
  transform-origin:50% 330%;
}

/* 中心ハブ */
.handle-hub{
  width:14px;height:14px;border-radius:50%;
  background:radial-gradient(circle at 35% 35%,var(--chrome-light),var(--chrome-dark));
  border:2px solid var(--chrome-dark);
  box-shadow:0 1px 4px rgba(0,0,0,0.25);
  z-index:3;position:relative;
}

/* レトロリベット（ハンドル外周） */
.handle-rivet{
  position:absolute;
  width:7px;height:7px;border-radius:50%;
  background:radial-gradient(circle at 35% 35%,var(--chrome-light),var(--chrome-dark));
  border:1px solid var(--chrome-dark);
  box-shadow:0 1px 2px rgba(0,0,0,0.2);
}
.rv1{top:2px;left:50%;transform:translateX(-50%);}
.rv2{bottom:2px;left:50%;transform:translateX(-50%);}
.rv3{left:2px;top:50%;transform:translateY(-50%);}
.rv4{right:2px;top:50%;transform:translateY(-50%);}

.handle-hint{font-size:0.6rem;color:rgba(255,255,255,0.5);letter-spacing:0.06em;margin-top:3px;text-align:center;}

/* ── 取り出し口 ── */
.outlet-wrap{margin-top:12px;display:flex;justify-content:center;}
.outlet{
  width:min(110px,30vw);
  background:linear-gradient(to bottom,#111,#0a0a0a);
  border-radius:10px 10px 6px 6px;
  border:3px solid var(--chrome-dark);
  border-top:none;
  padding:8px 10px 10px;
  box-shadow:inset 0 4px 12px rgba(0,0,0,0.7),0 3px 8px rgba(0,0,0,0.2);
  position:relative;
}
.outlet-flap{
  position:absolute;top:0;left:0;right:0;height:50%;
  background:linear-gradient(to bottom,#4a4a4a,#333);
  border-radius:4px 4px 0 0;
  transform-origin:top center;
  transition:transform 0.4s ease;
  border-bottom:1px solid #222;
}
.outlet-label{
  font-family:'Bebas Neue',sans-serif;
  font-size:0.58rem;color:rgba(255,255,255,0.18);
  text-align:center;letter-spacing:0.15em;padding-top:12px;
}

/* ── 落下カプセル ── */
.falling-capsule{
  position:fixed;z-index:100;border-radius:50%;
  border:3px solid rgba(255,255,255,0.5);
  display:none;align-items:center;justify-content:center;
  font-size:20px;cursor:pointer;
  box-shadow:0 8px 24px rgba(0,0,0,0.3),0 0 0 4px rgba(255,255,255,0.15);
}
.falling-capsule.show{display:flex;}
@keyframes fall-anim{
  0%{transform:translateY(0) rotate(0) scale(0.7);}
  50%{transform:translateY(40px) rotate(20deg) scale(1.1);}
  75%{transform:translateY(70px) rotate(-10deg) scale(0.95);}
  100%{transform:translateY(82px) rotate(0) scale(1);}
}
@keyframes bounce-wait{
  0%,100%{transform:translateY(82px) scale(1);}
  50%{transform:translateY(74px) scale(1.06);}
}
@keyframes crack-open{
  0%{transform:translateY(82px) scale(1) rotate(0);opacity:1;}
  40%{transform:translateY(82px) scale(1.4) rotate(-12deg);opacity:1;}
  100%{transform:translateY(82px) scale(0) rotate(180deg);opacity:0;}
}

/* ── RESULT ── */
.result-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.78);z-index:200;display:none;align-items:flex-end;justify-content:center;padding:12px;backdrop-filter:blur(5px);}
.result-overlay.open{display:flex;}
.result-sheet{background:white;border-radius:28px 28px 20px 20px;width:100%;max-width:400px;max-height:88svh;overflow-y:auto;animation:sheet-up 0.4s cubic-bezier(0.34,1.56,0.64,1);}
@keyframes sheet-up{0%{transform:translateY(100%);opacity:0;}100%{transform:translateY(0);opacity:1;}}
.result-rank-bar{padding:14px 20px;text-align:center;font-family:'Zen Kaku Gothic New',sans-serif;font-size:1.05rem;letter-spacing:0.1em;color:white;border-radius:28px 28px 0 0;}
.rank-gold .result-rank-bar{background:linear-gradient(90deg,#b8860b,#ffd700,#b8860b);}
.rank-silver .result-rank-bar{background:linear-gradient(90deg,#666,#bbb,#666);}
.rank-bronze .result-rank-bar{background:linear-gradient(90deg,#8b4513,#cd7f32,#8b4513);}
.rank-green .result-rank-bar{background:linear-gradient(90deg,var(--GD),var(--G),var(--GD));}
.rank-miss .result-rank-bar{background:linear-gradient(90deg,#636e72,#b2bec3,#636e72);}
.result-body{padding:20px 20px 24px;color:#1a1a1a;}
.result-status{display:inline-block;padding:3px 12px;border-radius:20px;font-size:0.7rem;font-weight:700;letter-spacing:0.08em;margin-bottom:10px;}
.status-active{background:#e8f5e9;color:#2e7d32;}
.status-used{background:#f5f5f5;color:#999;}
.status-expired{background:#fce4ec;color:#c62828;}
.result-name{font-family:'Noto Serif JP',serif;font-size:1.3rem;font-weight:700;margin-bottom:6px;line-height:1.3;}
.result-discount{font-family:'Bebas Neue',sans-serif;font-size:2.5rem;color:var(--G);letter-spacing:0.05em;line-height:1;margin-bottom:6px;}
.result-desc{font-size:0.82rem;color:#666;margin-bottom:14px;line-height:1.75;}
.result-code-box{background:#f4fae2;border-radius:12px;padding:13px 16px;margin-bottom:13px;display:flex;align-items:center;justify-content:space-between;gap:10px;}
.result-code-label{font-size:0.68rem;color:var(--GD);font-weight:700;letter-spacing:0.1em;}
.result-code{font-family:'Bebas Neue',sans-serif;font-size:1.6rem;color:var(--GD);letter-spacing:0.2em;}
.copy-btn{background:var(--G);color:white;border:none;font-size:0.7rem;font-weight:700;padding:6px 12px;border-radius:20px;cursor:pointer;white-space:nowrap;font-family:'Zen Kaku Gothic New',sans-serif;}
.result-meta{display:flex;justify-content:space-between;font-size:0.75rem;color:#aaa;border-top:1px solid #eee;padding-top:12px;margin-bottom:14px;}
.result-meta strong{color:#333;font-size:0.8rem;display:block;margin-top:2px;}
.btn-use{display:block;width:100%;background:#1a1a1a;color:white;font-family:'Zen Kaku Gothic New',sans-serif;font-weight:700;font-size:0.93rem;padding:14px;border-radius:50px;border:none;cursor:pointer;margin-bottom:8px;transition:all 0.2s;}
.btn-use:disabled{background:#ccc;cursor:not-allowed;}
.btn-share{display:block;width:100%;background:transparent;color:var(--GD);font-family:'Zen Kaku Gothic New',sans-serif;font-weight:700;font-size:0.86rem;padding:12px;border-radius:50px;border:2px solid var(--G);cursor:pointer;transition:all 0.2s;margin-bottom:6px;}
.btn-close-r{display:block;width:100%;background:transparent;color:#aaa;font-family:'Zen Kaku Gothic New',sans-serif;font-size:0.78rem;padding:10px;border:none;cursor:pointer;}

/* ── HISTORY ── */
.history-sec{margin-top:4px;}
.history-title{font-size:0.72rem;color:rgba(255,255,255,0.55);letter-spacing:0.1em;margin-bottom:8px;text-align:center;}
.history-item{background:rgba(255,255,255,0.92);border-radius:12px;padding:11px 14px;margin-bottom:6px;display:flex;align-items:center;justify-content:space-between;gap:10px;cursor:pointer;transition:all 0.15s;border:1px solid rgba(255,255,255,0.5);box-shadow:0 2px 8px rgba(0,0,0,0.1);}
.history-item:hover{background:white;transform:translateY(-1px);}
.history-name{font-size:0.83rem;font-weight:700;color:#1a1a1a;}
.history-date{font-size:0.68rem;color:#aaa;margin-top:2px;}
.history-code{font-family:'Bebas Neue',sans-serif;font-size:0.9rem;color:var(--GD);letter-spacing:0.1em;}

/* ── ADMIN ── */
.admin-link{display:block;text-align:center;color:rgba(255,255,255,0.3);font-size:0.66rem;letter-spacing:0.08em;cursor:pointer;padding:12px 0;text-decoration:underline;margin-top:4px;}
.modal-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,0.65);z-index:500;align-items:center;justify-content:center;padding:16px;}
.modal-overlay.open{display:flex;}
.modal{background:white;color:#1a1a1a;border-radius:20px;width:100%;max-width:480px;max-height:88svh;overflow-y:auto;padding:20px;}
.modal-title{font-family:'Zen Kaku Gothic New',sans-serif;font-size:1.1rem;margin-bottom:14px;}
.admin-table{width:100%;border-collapse:collapse;font-size:0.76rem;}
.admin-table th{background:var(--G);color:white;padding:7px 10px;text-align:left;}
.admin-table td{padding:7px 10px;border-bottom:1px solid #eee;vertical-align:middle;}
.modal-close{display:block;width:100%;margin-top:14px;background:#1a1a1a;color:white;font-family:'Zen Kaku Gothic New',sans-serif;font-weight:700;font-size:0.88rem;padding:13px;border-radius:50px;border:none;cursor:pointer;}

/* confetti */
.confetti-p{position:fixed;pointer-events:none;z-index:300;border-radius:2px;animation:cf 1.8s ease-in forwards;}
@keyframes cf{0%{opacity:1;transform:translateY(0) rotate(0);}100%{opacity:0;transform:translateY(100vh) rotate(720deg);}}

/* ━━━ 日本語タイポグラフィ改善 ━━━ */
/* 行間：本文1.8、見出し1.4に統一 */
/* 文字間：日本語は0でOK、英字ラベルのみ調整 */
/* 禁則処理：文頭・文末の約物を整える */
/* 1行の適切な文字数：スマホ20〜24文字 */

html {
  /* 禁則処理を有効化 */
  word-break: normal;
  overflow-wrap: break-word;
  -webkit-locale: "ja";
}

/* 本文の行間・文字間を最適化 */
p, .t-body, li, td, th {
  line-height: 1.85;
  word-break: normal;
  overflow-wrap: break-word;
  /* 和文の文字詰め */
  font-feature-settings: "palt" 1, "kern" 1;
  -webkit-font-smoothing: antialiased;
}

/* 見出しの行間 */
h1, h2, h3, .t-display, .t-heading {
  line-height: 1.3;
  word-break: keep-all;
  overflow-wrap: break-word;
  font-feature-settings: "palt" 1;
  -webkit-font-smoothing: antialiased;
}

/* 本文最大幅（1行が長くなりすぎないように） */
.t-body {
  max-width: 40em; /* 約40文字 */
}

/* 見出しと本文のサイズ差を明確に */
.section .t-label {
  font-size: .72rem;
  letter-spacing: .24em;
  margin-bottom: 6px;
}
.section .t-heading {
  font-size: clamp(1.4rem, 4.5vw, 1.9rem);
  margin-bottom: 20px;
}

/* ナビの文字は折り返さない */
.nav-menu a {
  white-space: nowrap;
}

/* ボタンテキストは折り返さない */
.hero-btn, .btn-white, .btn-outline-w, .fixed-cta-btn,
.store-map-btn, .btn-submit {
  white-space: nowrap;
  word-break: keep-all;
}

/* フッターリンクは折り返さない */
.footer-links a {
  white-space: nowrap;
}
