:root{
  --bg:#E9ECE8; --surface:#F8F9F6; --ink:#1C2228; --muted:#5B646D; --line:#CDD2CB;
  --yellow:#F2B705; --red:#C2332B; --wheel:#171B1F; --wheel-ink:#F4F4F0; --ok:#2E7A4D; --warn-bg:#FFF4D1;
  box-sizing:border-box;
  padding-top:env(safe-area-inset-top,0px); padding-bottom:env(safe-area-inset-bottom,0px);
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --bg:#14181B; --surface:#1D2327; --ink:#E7EBE8; --muted:#9AA3AA; --line:#323A40;
    --red:#E0574E; --wheel:#0A0D0F; --ok:#5DBB84; --warn-bg:#3A3112;
  }
}
*,*::before,*::after{box-sizing:inherit}
html{height:100%;scroll-padding-top:env(safe-area-inset-top,0px)}
body{margin:0;min-height:100%;background:var(--bg);color:var(--ink);
  font-family:system-ui,-apple-system,"Apple SD Gothic Neo","Malgun Gothic","Noto Sans KR",sans-serif;
  font-size:16px;line-height:1.55;-webkit-text-size-adjust:100%}
img{max-width:100%}
button,input,select,textarea{font:inherit;color:inherit}
:focus-visible{outline:3px solid var(--yellow);outline-offset:2px}
[hidden]{display:none !important}

.tape{height:7px;background:repeating-linear-gradient(-45deg,var(--yellow) 0 12px,var(--wheel) 12px 24px)}
header{background:var(--surface);border-bottom:1px solid var(--line);position:sticky;top:env(safe-area-inset-top,0px);z-index:5}
.hrow{max-width:860px;margin:0 auto;padding:12px 16px 0;display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap}
h1{font-size:1.15rem;margin:0;font-weight:700}
.small{font-size:.85rem;font-weight:500}
.period{display:flex;align-items:center;gap:8px;font-size:.9rem;color:var(--muted)}
.period input{border:1px solid var(--line);background:var(--bg);border-radius:6px;padding:4px 8px}
nav{max-width:860px;margin:0 auto;display:flex;gap:4px;padding:8px 12px 0;overflow-x:auto}
nav button{border:0;background:none;padding:10px 12px;border-bottom:3px solid transparent;color:var(--muted);font-weight:600;white-space:nowrap;cursor:pointer}
nav button[aria-selected="true"]{color:var(--ink);border-bottom-color:var(--yellow)}
nav .count{display:inline-block;min-width:1.4em;padding:0 5px;margin-left:4px;border-radius:9px;background:var(--red);color:#fff;font-size:.75rem;text-align:center}

main{max-width:860px;margin:0 auto;padding:18px 16px 48px}
.login{max-width:380px;padding-top:12vh}
.login h1{font-size:1.5rem;margin-bottom:16px}
.banner{background:var(--warn-bg);border-left:4px solid var(--yellow);padding:10px 12px;margin-bottom:16px;font-size:.9rem}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:16px;margin-bottom:16px}
h2{font-size:1rem;margin:0 0 10px}
.m0{margin:0}
.mt{margin-top:12px}
.mt2{margin-top:16px}
.muted{color:var(--muted);font-size:.9rem}
.hint{margin:8px 2px 16px}
.err{color:var(--red);min-height:1.4em;margin:8px 0}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:8px;border:1px solid var(--line);background:var(--surface);padding:10px 16px;font-weight:600;cursor:pointer;min-height:44px}
.btn.primary{background:var(--yellow);border-color:var(--yellow);color:#1C2228}
.btn.dark{background:var(--wheel);border-color:var(--wheel);color:var(--wheel-ink)}
.btn.danger{color:var(--red)}
.btn.sm{min-height:36px;padding:4px 12px}
.btn.wide{width:100%}
.btn:disabled{opacity:.5;cursor:not-allowed}
.shoot{width:100%;min-height:96px;font-size:1.15rem;border-radius:12px}
.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.row.between{justify-content:space-between;margin-bottom:8px}
.push{margin-left:auto}
label.f{display:block;font-size:.85rem;color:var(--muted);margin-bottom:4px}
.field{border:1px solid var(--line);background:var(--bg);border-radius:8px;padding:10px 12px;width:100%;min-height:44px}
textarea.field{min-height:110px;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.9rem}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media (max-width:520px){.grid2{grid-template-columns:1fr}}

.wheelrow{margin:16px 0 4px}
.wheels{display:inline-flex;gap:3px;padding:8px;background:#9097A0;border-radius:8px;box-shadow:inset 0 2px 4px rgba(0,0,0,.35)}
.wheels span{display:inline-flex;align-items:center;justify-content:center;width:1.55em;height:2.1em;
  font-family:ui-monospace,Menlo,Consolas,monospace;font-weight:700;font-size:1.7rem;background:var(--wheel);color:var(--wheel-ink);border-radius:3px;
  background-image:linear-gradient(rgba(255,255,255,.12),transparent 30%,transparent 70%,rgba(0,0,0,.4))}
.wheels span.dec{background-color:var(--red);color:#fff}
.wheels span.dot{width:.35em;background:none;color:#1C2228}
.wheels.sm span{font-size:1rem;height:1.9em;width:1.45em}
.unit{font-weight:600;color:var(--muted)}

.preview{width:100%;max-height:320px;object-fit:contain;background:var(--wheel);border-radius:10px;display:block}
.status{display:flex;align-items:center;gap:10px;margin:12px 0;color:var(--muted)}
.spin{width:18px;height:18px;border-radius:50%;border:3px solid var(--line);border-top-color:var(--yellow);animation:sp .8s linear infinite}
@keyframes sp{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.spin{animation:none}}
.warns{margin:10px 0 0;padding:0;list-style:none}
.warns li{background:var(--warn-bg);border-left:4px solid var(--yellow);padding:8px 10px;margin-top:6px;font-size:.9rem}
.matched{color:var(--ok);font-size:.9rem;font-weight:600}

.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:16px}
.stat{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:12px}
.stat b{display:block;font-size:1.5rem;font-variant-numeric:tabular-nums;line-height:1.2}
.stat small{color:var(--muted)}
@media (max-width:520px){.stat b{font-size:1.2rem}}
.tablewrap{overflow-x:auto}
table{border-collapse:collapse;width:100%;font-variant-numeric:tabular-nums;font-size:.95rem}
th,td{padding:9px 8px;border-bottom:1px solid var(--line);text-align:right;white-space:nowrap}
th:first-child,td:first-child{text-align:left}
th{font-size:.8rem;color:var(--muted);font-weight:600}
tr.area td{background:var(--bg);font-weight:700;text-align:left;font-size:.9rem}
tbody tr.click{cursor:pointer}
tbody tr.click:hover td{background:var(--bg)}
.tag{display:inline-block;padding:1px 8px;border-radius:10px;font-size:.78rem;font-weight:600;border:1px solid currentColor}
.t-auto,.t-approved{color:var(--ok)} .t-edited{color:var(--muted)} .t-review{color:var(--red)} .t-none{color:var(--muted);border-style:dashed}

.card{display:grid;grid-template-columns:140px 1fr;gap:14px;align-items:start}
@media (max-width:520px){.card{grid-template-columns:1fr}}
.card img{width:100%;border-radius:8px;background:var(--wheel);aspect-ratio:4/3;object-fit:cover;cursor:zoom-in}
.hlist{list-style:none;margin:0;padding:0}
.hlist li{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:8px 0;border-bottom:1px solid var(--line)}
.empty{text-align:center;padding:28px 12px;color:var(--muted)}
dialog{border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--ink);padding:18px;width:min(560px,94vw);max-height:90vh}
dialog::backdrop{background:rgba(0,0,0,.45)}
dialog img{width:100%;border-radius:8px;background:var(--wheel);max-height:320px;object-fit:contain}
#toast{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(20px + env(safe-area-inset-bottom,0px));background:var(--wheel);color:var(--wheel-ink);padding:12px 18px;border-radius:10px;max-width:90vw;z-index:20;font-weight:600}
body:not(.is-admin) .admin-only{display:none !important}
.usage{margin:-6px 2px 14px}
.price-input{max-width:220px}
.hlist li.editing{display:block}
.hlist .edit-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:6px 0}
@media (max-width:520px){.hlist .edit-grid{grid-template-columns:1fr 1fr}}
.mb{margin-bottom:12px}
.hlist .price-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
#complex{border:1px solid var(--line);background:var(--bg);border-radius:6px;padding:4px 8px;max-width:160px}
.bitem{display:grid !important;grid-template-columns:96px 1fr;gap:12px;align-items:start}
.bitem img{width:96px;height:96px;object-fit:cover;border-radius:8px;background:var(--wheel)}
.bitem .bfields{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:6px}
@media (max-width:420px){.bitem .bfields{grid-template-columns:1fr}}
.bstate{font-size:.85rem;font-weight:600}
.bstate.ok{color:var(--ok)} .bstate.bad{color:var(--red)}
.bitem.saved{opacity:.6}
.newhome{margin-top:12px;padding:12px;border:1px dashed var(--yellow);border-radius:8px}
.bnew{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}
