/* ドパドリル おまけ「こぜにを へらせ！」（非公式改造版）。元の style.css の上に重ねて使う。 */

/* 画面の文言を含むサブセットフォント（../fonts/ に生成手順あり） */
@font-face { font-family: "Drill Maru"; src: url("../fonts/drill-maru-bold.woff2") format("woff2"); font-weight: 700; font-display: block; }
@font-face { font-family: "Drill Maru"; src: url("../fonts/drill-maru-black.woff2") format("woff2"); font-weight: 900; font-display: block; }
/* 見出し・数字用: 丸ゴシックの いちばん太い字（しゃかい と同じ。どの太さを指定されても この字で出す） */
@font-face { font-family: "Drill Heavy"; src: url("../fonts/drill-maru-black.woff2") format("woff2"); font-weight: 100 900; font-display: block; }
/* 元の fx.js が canvas に "Dela Gothic One" と名前で書く文字（「そこは ○○」・コンボ・+ドパ）も この字にする（同じ条件の @font-face は あとのものが使われる） */
@font-face { font-family: "Dela Gothic One"; src: url("../fonts/drill-maru-black.woff2") format("woff2"); font-display: block; }
@font-face { font-family: "Dela Gothic One"; src: url("../fonts/drill-maru-black.woff2") format("woff2"); font-weight: 900; font-display: block; }

/* ビートに合わせた光（元の style.css の body.lv9 .card）に使う値。カードにだけ書き、子には伝えない（毎フレーム変わるので、地図などの計算をしなおさないように） */
@property --kick { syntax: '<number>'; inherits: false; initial-value: 0; }

:root {
  --round: "Drill Maru", "Zen Maru Gothic", "Hiragino Maru Gothic ProN", "Yu Gothic", sans-serif;
  --chunky: "Drill Heavy", "Drill Maru", "Zen Maru Gothic", sans-serif;
  --mm: 1.9px; /* お金の絵の大きさ（本物の 1mm を何 px で描くか） */
  --tray: #eef4ff;
  --leather: #f4dfbb;
}

#app { width: min(100vw, 1000px); }
/* 子ども向けの文は ことばの間に空白を入れているので、ことばの途中では改行しない */
#app, .modal { word-break: keep-all; overflow-wrap: anywhere; }

/* ------------------------------------------------------------ タイトル */
#screen-title { gap: 12px; padding-top: calc(12px + env(safe-area-inset-top)); }
#screen-title > * { width: 100%; max-width: 520px; }
.kz-top { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.kz-top .icon-btn { display: grid; place-items: center; width: 44px; height: 44px; padding: 4px; text-decoration: none; color: var(--ink); font-size: 26px; line-height: 1; box-shadow: 0 3px 0 var(--ink); }
.kz-gear svg { width: 100%; height: 100%; }
.kz-unofficial { padding: 3px 10px; border: 2px dashed var(--ink); border-radius: 999px; background: #fff; font-size: 12px; }
.kz-logo { margin: 4px 0 0; display: grid; justify-items: center; line-height: 1.05; font-weight: 400; }
.kz-logo-sub { padding: 2px 16px; border: 3px solid var(--ink); border-radius: 999px; background: var(--yellow); font-family: var(--round); font-weight: 900; font-size: 17px; box-shadow: 0 4px 0 var(--ink); transform: rotate(-3deg); }
.kz-logo-main { margin-top: 8px; font-family: var(--chunky); font-size: clamp(34px, 10.4vw, 52px); color: #ffb000; letter-spacing: .02em; white-space: nowrap;
  text-shadow: 3px 0 0 var(--ink), -3px 0 0 var(--ink), 0 3px 0 var(--ink), 0 -3px 0 var(--ink), 3px 3px 0 var(--ink), -3px 3px 0 var(--ink), 0 7px 0 var(--ink); }
.kz-title-stage { height: min(16vh, 140px); }

.kz-levels { display: grid; gap: 10px; }
.kz-level { display: grid; grid-template-columns: auto 1fr; align-items: center; gap: 4px 12px; min-height: 66px; padding: 8px 16px; border: 3px solid var(--ink); border-radius: 20px; background: #fff; box-shadow: 0 5px 0 var(--ink); text-align: left; transition: transform .08s; }
.kz-level b { font-family: var(--chunky); font-weight: 400; font-size: 24px; color: #1aa37a; }
.kz-level small { font-size: 13px; }
.kz-level:nth-child(2) b { color: var(--blue); }
.kz-level:nth-child(3) b { color: #d2452f; }
.kz-level[aria-pressed="true"] { background: #fffbe6; }
.kz-level:active, .kz-chips button:active { transform: translateY(4px); box-shadow: 0 1px 0 var(--ink); }

.kz-panel { padding: 12px 12px 14px; border: 3px solid var(--ink); border-radius: 20px; background: #fff; box-shadow: 0 5px 0 var(--ink); }
.kz-panel h2 { margin: 0 0 8px; font-size: 16px; }
.kz-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.kz-chips button { min-height: 40px; padding: 4px 14px; border: 2.5px solid var(--ink); border-radius: 999px; background: #fff; font-size: 15px; box-shadow: 0 3px 0 var(--ink); }
.kz-chips button[aria-checked="true"] { background: var(--blue); color: #fff; }
.kz-howto ol { margin: 0; padding-left: 1.4em; font-size: 14px; line-height: 1.7; }
.kz-howto ol b { color: #d2452f; }
.kz-example { margin-top: 10px; padding: 8px 10px; border-radius: 14px; background: var(--paper); font-size: 13px; line-height: 1.6; }
.kz-example-q { margin: 0 0 4px; }
.kz-example-row { display: flex; flex-wrap: wrap; gap: 0 8px; }
.kz-bad, .kz-good { font-weight: 900; }
.kz-bad { color: #8d88ad; }
.kz-good { color: #d2452f; }
.kz-records p { margin: 0; font-size: 14px; line-height: 1.7; }
.kz-credit { margin: 4px 0 0; font-size: 12px; text-align: center; line-height: 1.6; }
.kz-credit a { color: var(--blue); }

/* ------------------------------------------------------------ お金の絵（本物のデザインはまねず、大きさと色だけ） */
.kz-p { position: relative; flex: none; display: grid; place-items: center; box-sizing: border-box; font-style: normal; font-family: var(--round); font-weight: 900; line-height: 1; letter-spacing: -.03em; }
.kz-coin { --d: 22; width: calc(var(--mm) * var(--d)); height: calc(var(--mm) * var(--d)); border-radius: 50%; border: 2px solid var(--ink); color: var(--txt);
  font-size: calc(var(--mm) * var(--d) * .3);
  background: radial-gradient(circle at 34% 28%, rgba(255, 255, 255, .75) 0 14%, transparent 42%), var(--face);
  box-shadow: inset 0 0 0 calc(var(--mm) * 1.3) var(--rim), 0 2px 0 var(--ink); }
.kz-coin.m1 { --d: 20; --face: #eef1f3; --rim: #cdd4d9; --txt: #7b8791; }
.kz-coin.m5 { --d: 22; --face: #ebc95f; --rim: #c9a43f; --txt: #74560e; }
.kz-coin.m10 { --d: 23.5; --face: #cf7f47; --rim: #a95f2d; --txt: #fff; }
.kz-coin.m50 { --d: 21; --face: #e2e6e9; --rim: #bac2c8; --txt: #5f6b75; }
.kz-coin.m100 { --d: 22.6; --face: #d3d9de; --rim: #aab4bb; --txt: #4f5a64; }
.kz-coin.m500 { --d: 26.5; --face: radial-gradient(circle, #dfe3e6 0 52%, #e3c46a 54%); --rim: #c8a44a; --txt: #5b4a14; }
/* 穴あきの 5円玉・50円玉: 数字は穴の上に */
.kz-coin.m5, .kz-coin.m50 { place-items: start center; padding-top: 11%; }
.kz-coin.m5 span, .kz-coin.m50 span { font-size: .92em; }
.kz-coin.m5::after, .kz-coin.m50::after { content: ""; position: absolute; left: 50%; top: 56%; width: 22%; height: 22%; transform: translate(-50%, -50%); border-radius: 50%; background: var(--hole, #fff); border: 1.5px solid var(--ink); }
.kz-bill { width: calc(var(--mm) * 40); height: calc(var(--mm) * 20.5); border: 2px solid var(--ink); border-radius: calc(var(--mm) * 2.2); background: var(--face); color: var(--ink); font-size: calc(var(--mm) * 8.4); box-shadow: 0 2px 0 var(--ink); overflow: hidden; }
.kz-bill::before { content: ""; position: absolute; left: 7%; top: 18%; width: 30%; height: 64%; border-radius: 50%; background: rgba(255, 255, 255, .45); }
.kz-bill span { position: relative; margin-left: 28%; }
.kz-bill.m1000 { --face: #a9cbe8; }
.kz-bill.m5000 { --face: #cdb6e6; }
.kz-bill.m10000 { --face: #dcbf92; }

/* 同じお金をまとめたボタン（重ねて置き、枚数を添える） */
.kz-group { position: relative; display: inline-flex; align-items: center; padding: 4px 6px 6px; border: 0; border-radius: 14px; background: transparent; color: var(--ink); touch-action: manipulation; }
.kz-stack { display: flex; align-items: center; }
.kz-stack .kz-coin + .kz-coin { margin-left: calc(var(--mm) * var(--d) * -.66); }
.kz-stack .kz-bill + .kz-bill { margin-left: calc(var(--mm) * -33); }
.kz-n { margin-left: 3px; padding: 0 6px; border-radius: 999px; background: var(--ink); color: #fff; font-size: 13px; font-weight: 900; line-height: 20px; }
.kz-group:active .kz-stack { transform: translateY(2px); }
.kz-group.hint { background: #fff3b8; box-shadow: 0 0 0 3px var(--yellow); animation: kz-hint .9s ease-in-out infinite; }
.kz-need { position: absolute; left: 50%; top: -12px; transform: translateX(-50%); padding: 0 7px; border: 2px solid var(--ink); border-radius: 999px; background: var(--pink); color: #fff; font-size: 12px; font-weight: 900; line-height: 18px; white-space: nowrap; }
@keyframes kz-hint { 50% { box-shadow: 0 0 0 7px rgba(255, 210, 63, .55); } }
body.reduced .kz-group.hint { animation: none; }
.kz-flying { position: fixed; z-index: 5; margin: 0; pointer-events: none; --hole: #fff; }
.kz-empty { margin: 0; padding: 8px; font-size: 13px; color: #8d88ad; }

/* ------------------------------------------------------------ プレイ */
#screen-play { padding-bottom: calc(8px + env(safe-area-inset-bottom)); }
.hud { gap: 8px; }
.kz-quit { font-size: 22px; line-height: 1; }
.pips.lots .pip { width: 8px; height: 8px; border-width: 1.5px; }
.kz-stage { flex: 0 0 auto; height: clamp(56px, 9vh, 110px); min-height: 0; }
.kz-card { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; margin: 0 10px 8px; padding: 8px 10px 6px; }
.kz-body { flex: 1 1 auto; min-height: 0; overflow-y: auto; display: flex; flex-direction: column; gap: 8px; margin-top: 6px; padding: 2px 2px 6px; }

.kz-counter { display: flex; align-items: center; gap: 8px; }
.kz-register { flex: 1; display: grid; gap: 2px; padding: 6px 14px 8px; border: 3px solid var(--ink); border-radius: 16px; background: #213a3f; color: #c6ff9e; box-shadow: inset 0 3px 0 rgba(0, 0, 0, .25); }
.kz-reg-row { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; }
.kz-reg-row > span { color: #e9fff0; font-size: 13px; }
.kz-reg-row b { font-family: var(--chunky); font-weight: 400; font-variant-numeric: tabular-nums; letter-spacing: .02em; }
.kz-reg-row small { margin-left: 2px; font-family: var(--round); font-size: .55em; }
.kz-reg-price b { font-size: clamp(30px, 9vw, 40px); color: #ffe066; }
.kz-reg-paid b { font-size: 22px; }
.kz-speak-q { flex: none; width: 40px; height: 40px; border: 2.5px solid var(--ink); border-radius: 50%; background: #fff; font-size: 18px; box-shadow: 0 3px 0 var(--ink); }

.kz-tray { --hole: var(--tray); position: relative; padding: 16px 6px 4px; border: 2.5px dashed #8fa6dc; border-radius: 16px; background: var(--tray); }
.kz-tray::before { content: "トレー"; position: absolute; left: 10px; top: 1px; font-size: 11px; color: #6a7fb8; }
.kz-tray-paid { display: flex; flex-wrap: wrap; align-items: center; gap: 2px 4px; min-height: 58px; }
.kz-tray-change { margin-top: 4px; padding-top: 4px; border-top: 2px dashed #8fa6dc; }
.kz-change-label { margin: 0 0 2px; font-size: 13px; }
.kz-change-label b { color: #d2452f; font-size: 16px; }
.kz-change-coins { --mm: 1.15px; display: flex; flex-wrap: wrap; align-items: center; gap: 0 2px; }
.kz-change-coins .kz-group { padding: 2px 4px; }
.kz-change-coins .kz-coin, .kz-change-coins .kz-bill { border-width: 1.5px; box-shadow: none; }
.kz-change-coins .kz-n { font-size: 11px; line-height: 16px; }
.kz-shake { animation: kz-shake .35s; }
@keyframes kz-shake { 20%, 60% { transform: translateX(-7px); } 40%, 80% { transform: translateX(7px); } }

.kz-actions { display: grid; grid-template-columns: auto 1fr; gap: 8px; }
.kz-undo { height: 50px; padding: 0 12px; border: 2.5px solid var(--ink); border-radius: 16px; background: #fff; font-size: 14px; font-weight: 900; box-shadow: 0 3px 0 var(--ink); }
.kz-pay { height: 50px; border: 3px solid var(--ink); border-radius: 16px; background: var(--yellow); font-family: var(--chunky); font-weight: 400; font-size: 24px; box-shadow: 0 4px 0 var(--ink); }
.kz-undo:active, .kz-pay:active { transform: translateY(3px); box-shadow: 0 1px 0 var(--ink); }

.kz-wallet-box { --hole: var(--leather); padding: 6px 8px 8px; border: 3px solid var(--ink); border-radius: 18px; background: var(--leather); outline: 2px dashed #c29a62; outline-offset: -8px; }
.kz-wallet-head { display: flex; align-items: center; justify-content: space-between; padding: 2px 6px 0; }
.kz-wallet-title { padding: 1px 12px; border-radius: 999px; background: #8a5a2b; color: #fff; font-size: 13px; }
.kz-coins { font-size: 14px; }
.kz-coins b { font-family: var(--chunky); font-weight: 400; font-size: 24px; color: #d2452f; }
.kz-wallet { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 6px; min-height: 64px; padding-top: 10px; }

.kz-step { min-height: 24px; font-size: 13px; line-height: 1.6; word-break: keep-all; overflow-wrap: anywhere; }
.kz-step .help-text { color: var(--violet); font-weight: 900; }

/* 横長の画面（タブレット横・PC）: 左にレジとトレー、右にさいふ */
@media (min-width: 760px) and (min-aspect-ratio: 5/4) {
  :root { --mm: 2.3px; }
  .kz-body { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); grid-template-rows: auto auto 1fr; grid-template-areas: "counter wallet" "tray wallet" "actions wallet"; align-content: start; column-gap: 14px; }
  .kz-counter { grid-area: counter; }
  .kz-tray { grid-area: tray; }
  .kz-actions { grid-area: actions; align-self: start; }
  .kz-wallet-box { grid-area: wallet; align-self: stretch; }
  .kz-pay { height: 62px; font-size: 30px; }
  .kz-undo { height: 62px; }
}
/* 小さいスマホ・背の低い画面: さいふまでスクロールせずに見えるよう、全体を小さくする */
@media (max-width: 370px) {
  :root { --mm: 1.7px; }
}
@media (max-height: 760px) and (max-aspect-ratio: 5/4) {
  :root { --mm: 1.55px; }
  .kz-stage { height: 46px; }
  .kz-register { padding: 3px 12px 5px; }
  .kz-reg-price b { font-size: 28px; }
  .kz-reg-paid b { font-size: 18px; }
  .kz-body { gap: 6px; margin-top: 4px; }
  .kz-tray { padding-top: 13px; }
  .kz-tray-paid { min-height: 42px; }
  .kz-undo, .kz-pay { height: 44px; }
  .kz-pay { font-size: 21px; }
  .kz-wallet { min-height: 48px; padding-top: 4px; }
}

/* ------------------------------------------------------------ 結果 */
#screen-result .result-card { max-width: 520px; }
.kz-wrong { margin: 8px 0 4px; text-align: left; }
.kz-wrong-title { margin: 0 0 6px; font-size: 14px; text-align: center; }
.kz-wrong-item { --mm: 1.05px; --hole: var(--paper); display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; margin: 0 0 6px; padding: 6px 10px; border: 2px solid var(--ink); border-left: 8px solid #ffb000; border-radius: 12px; background: var(--paper); }
.kz-wrong-item > b { font-size: 18px; }
.kz-wrong-item > span:last-child { flex-basis: 100%; font-size: 13px; word-break: keep-all; overflow-wrap: anywhere; }
.kz-mini { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 2px 6px; }
.kz-mini-part { display: inline-flex; align-items: center; gap: 1px; }
.kz-mini-part small { font-size: 12px; }
.kz-mini .kz-coin, .kz-mini .kz-bill { border-width: 1.5px; box-shadow: none; }
.kz-perfect { margin: 6px 0; text-align: center; font-size: 16px; color: var(--pink); }
.kz-retry { width: 100%; min-width: 0; padding: 0 12px; font-size: clamp(15px, 4.4vw, 20px); white-space: nowrap; background: var(--pink); color: var(--ink); text-shadow: none; }

/* ------------------------------------------------------------ 設定 */
.kz-reset { background: #fff0f4; }
