:root{
  --bg:#f5f6f8; --fg:#151821; --sub:#5b6273; --line:#d8dce4;
  --accent:#4f46e5; --ok:#16a34a; --okbg:#dcfce7; --warn:#b45309; --warnbg:#fef3c7;
  --free:#7c3aed; --freebg:#ede9fe; --bad:#dc2626;
  --card:#fff; --radius:12px;
  color-scheme:light;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  background:var(--bg); color:var(--fg);
  font-family:system-ui,-apple-system,"Segoe UI","Hiragino Kaku Gothic ProN","Noto Sans JP",sans-serif;
  font-size:16px; line-height:1.5;
  padding-bottom:env(safe-area-inset-bottom);
}
h1{font-size:17px;margin:0}
h2{font-size:15px;margin:18px 0 8px;color:var(--sub)}
main{max-width:720px;margin:0 auto;padding:12px 12px 40px}

.appbar{
  position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:8px;
  justify-content:space-between;padding:10px 12px;background:var(--card);
  border-bottom:1px solid var(--line);
}
.steps{
  position:sticky;top:47px;z-index:19;display:grid;grid-template-columns:repeat(4,1fr);
  gap:6px;padding:8px 12px;background:var(--bg);border-bottom:1px solid var(--line);
  max-width:720px;margin:0 auto;
}
.stepbtn{
  padding:9px 4px;border:1px solid var(--line);background:var(--card);color:var(--sub);
  border-radius:999px;font-size:13px;font-weight:600;cursor:pointer;
}
.stepbtn.on{background:var(--accent);border-color:var(--accent);color:#fff}
.stepbtn.done{border-color:var(--ok);color:var(--ok)}

.panel{display:none}
.panel.on{display:block}
.lead{color:var(--sub);font-size:14px;margin:8px 0 12px}
.note{font-size:13px;color:var(--warn);min-height:1.2em;margin:8px 0}
.count{font-weight:400;font-size:13px;color:var(--sub)}

input:not([type=range]),select,textarea{color:var(--fg)}
::placeholder{color:#9aa1ae;opacity:1}

button,.filebtn{
  font:inherit;border-radius:10px;border:1px solid var(--line);background:var(--card);
  color:var(--fg);padding:10px 14px;cursor:pointer;font-weight:600;
}
button.primary{background:var(--accent);border-color:var(--accent);color:#fff}
button.ghost{background:var(--card);color:var(--sub)}
button.small{padding:6px 10px;font-size:13px;font-weight:500}
button:disabled{opacity:.5}
.filebtn{display:inline-block;text-align:center;flex:1}
.filebtn input{display:none}

.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:10px 0}
.row.tight{gap:12px;font-size:13px;color:var(--sub)}
.row input[type=text],.row input[type=number]{
  font:inherit;padding:9px 10px;border:1px solid var(--line);border-radius:10px;background:var(--card);
}
.row input[type=text]{flex:1;min-width:140px}
.row input[type=number]{width:64px}
.row input[type=range]{width:110px;vertical-align:middle}
.check{display:inline-flex;align-items:center;gap:6px;font-size:14px;color:var(--sub)}
.opts{margin:14px 0 6px}

/* picker */
.picker{margin:12px 0;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:10px}
.canvaswrap{position:relative;touch-action:none;user-select:none}
canvas.view{display:block;width:100%;border-radius:8px;background:#eee}
canvas.mag{
  position:absolute;bottom:8px;left:8px;width:90px;height:90px;border:2px solid #fff;
  border-radius:8px;box-shadow:0 2px 8px rgba(0,0,0,.3);display:none;background:#fff;
}
canvas.mag.on{display:block}
.zoombar{position:absolute;right:8px;top:8px;display:flex;flex-direction:column;gap:6px}
.zoombar button{
  padding:0 10px;height:36px;min-width:36px;font-size:15px;font-weight:800;
  background:rgba(255,255,255,.94);border:2px solid var(--line);color:var(--fg);
  border-radius:8px;box-shadow:0 1px 4px rgba(0,0,0,.2);
}

/* regions */
.regions{margin:10px 0 4px}
.region{
  display:flex;align-items:center;gap:5px;flex-wrap:wrap;
  border-left:4px solid var(--line);background:var(--bg);border-radius:8px;
  padding:6px 8px;margin-bottom:6px;font-size:13px;color:var(--sub);
}
.region.on{box-shadow:inset 0 0 0 1px var(--accent)}
.region select,.region input{font:inherit;padding:5px 6px;border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--fg)}
.region input[type=number]{width:52px}
.region input.lbl{flex:1;min-width:70px}
.regno{
  border:none;color:#fff;width:24px;height:24px;border-radius:50%;padding:0;
  font-size:13px;font-weight:800;flex:none;
}

/* progress */
.progress{margin:10px 0;font-size:13px;color:var(--sub)}
.progress .bar{height:6px;background:var(--line);border-radius:3px;overflow:hidden;margin-bottom:4px}
.progress .bar::after{content:"";display:block;height:100%;width:var(--p,0%);background:var(--accent);transition:width .2s}

/* chips */
.chips{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0}
.chip{
  display:inline-flex;align-items:center;gap:4px;background:var(--card);border:1px solid var(--line);
  border-radius:999px;padding:5px 6px 5px 12px;font-weight:700;font-variant-numeric:tabular-nums;
}
.chip.low{border-color:var(--warn);background:var(--warnbg)}
.chip input{width:2.6em;font:inherit;font-weight:700;border:none;background:transparent;text-align:center;padding:0}
.chip button{border:none;background:transparent;color:var(--sub);padding:0 4px;font-size:16px;line-height:1}

/* card grid */
.cardgrid{display:grid;grid-template-columns:repeat(5,1fr);gap:5px;margin:10px 0}
.cell{
  position:relative;aspect-ratio:1;display:flex;align-items:center;justify-content:center;
  background:var(--card);border:2px solid var(--line);border-radius:10px;
  font-size:min(6.4vw,26px);font-weight:800;font-variant-numeric:tabular-nums;
}
.cardgrid.edit .cell{cursor:pointer}
.cell input{
  width:100%;height:100%;border:none;background:transparent;text-align:center;
  font:inherit;font-weight:800;padding:0;border-radius:10px;
}
.cell.suspect{border-color:var(--warn);background:var(--warnbg)}
.cell.empty{color:#c3c8d2}
.cell.free{background:var(--freebg);border-color:var(--free);color:var(--free);font-size:12px}
.cell.open{background:var(--okbg);border-color:var(--ok);color:#14532d}
.cell.closed{color:#9aa1ae;background:#f0f1f4}
.cell.inline{box-shadow:inset 0 0 0 3px var(--ok)}
.cell .colmark{position:absolute;top:2px;left:5px;font-size:9px;font-weight:600;color:var(--sub);opacity:.65}
.headrow{display:grid;grid-template-columns:repeat(5,1fr);gap:5px;text-align:center;font-weight:800;color:var(--accent)}

/* result */
.summary{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:14px;margin:12px 0}
.big{font-size:30px;font-weight:800;color:var(--ok);line-height:1.1}
.summary .sub{font-size:13px;color:var(--sub)}
.punchlist{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.punchlist span{background:var(--okbg);border:1px solid var(--ok);color:#14532d;border-radius:999px;padding:4px 10px;font-weight:700}
.reach li{margin:4px 0}
.tag{display:inline-block;background:var(--accent);color:#fff;border-radius:6px;padding:1px 7px;font-size:12px;font-weight:700;margin-right:6px}
.tag.gray{background:var(--sub)}
table.what{width:100%;border-collapse:collapse;font-size:14px;margin-top:6px}
table.what th,table.what td{border-bottom:1px solid var(--line);padding:6px 4px;text-align:left}
table.what td.n{text-align:right;font-variant-numeric:tabular-nums;font-weight:700}

/* 読み取り確認 */
.hint{font-size:13px;color:var(--sub);margin:0 0 8px}
.overlay{position:relative;margin:0 0 12px;border:2px solid var(--line);border-radius:10px;overflow:hidden;background:var(--card)}
.overlay canvas{cursor:pointer}
.cellEdit{
  position:absolute;z-index:5;padding:0;text-align:center;font-weight:800;
  font-size:17px;border:3px solid var(--accent);border-radius:8px;
  background:#fff;color:var(--fg);box-shadow:0 2px 10px rgba(0,0,0,.3);
}
.overlay canvas,#cardOverlay canvas,#boardOverlays canvas{display:block;width:100%;max-width:100%;height:auto}
.ovcap{color:#fff;font-size:12px;font-weight:700;padding:4px 10px}

/* thumbs */
details{margin:12px 0;font-size:14px;color:var(--sub)}
.thumbs{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.thumbs figure{margin:0;text-align:center;font-size:12px;font-weight:700;color:var(--sub)}
.thumbs canvas{border:1px solid var(--line);background:#fff;height:60px;width:auto;border-radius:4px}

.foot{max-width:720px;margin:0 auto;padding:0 12px 28px;color:var(--sub);font-size:12px}
.foot a{color:var(--sub)}

/* 利用規約ページ */
.terms{font-size:14px}
.terms h2{font-size:15px;color:var(--fg);margin:22px 0 6px;border-bottom:2px solid var(--line);padding-bottom:4px}
.terms h3{font-size:14px;color:var(--sub);margin:14px 0 4px}
.terms ul{margin:6px 0;padding-left:1.2em}
.terms li{margin:3px 0}
.terms p{margin:6px 0}
.terms .sub{color:var(--sub);font-size:12px;margin-top:24px}
a{color:var(--accent)}

/* ダークモードは使わない。端末が暗色でも常に明色で表示する
   （color-scheme:light を付けないと入力欄・selectがOS側の暗色になって字が読めなくなる） */
