@import url('https://fonts.googleapis.com/css2?family=Zen+Antique&family=Zen+Kaku+Gothic+New:wght@400;700&display=swap');

:root{
  --bench:#5C4733;
  --bench-lo:#43331F;
  --wood:#EFE3C8;
  --sumi:#2B2724;
  --beni:#C7302B;
  --roku:#4E7A4A;
  --wax:#F7D98A;
  --paper:#F6EBD2;
  --cream:#fff9ed;
  --shadow:rgba(29,21,14,.32);
}

*{box-sizing:border-box}
html,body{margin:0;height:100%;background:var(--bench-lo);font-family:"Zen Kaku Gothic New",system-ui,sans-serif;color:var(--cream);overflow:hidden}
button,input{font:inherit}
button{touch-action:manipulation}

#app{
  position:relative;
  width:min(100vw,560px);
  height:100dvh;
  min-height:560px;
  margin:0 auto;
  overflow:hidden;
  background:var(--bench);
  box-shadow:0 0 40px rgba(0,0,0,.32);
}

#gameCanvas{position:absolute;inset:0;width:100%;height:100%;touch-action:none}

.topbar{
  position:absolute;z-index:5;left:0;right:0;top:0;
  display:flex;align-items:flex-start;justify-content:space-between;
  padding:calc(12px + env(safe-area-inset-top)) 14px 8px;
  pointer-events:none;
  text-shadow:0 2px 8px rgba(0,0,0,.4)
}
.topbar strong{font-family:"Zen Antique",serif;font-size:19px;font-weight:400}
.eyebrow{display:block;font-size:10px;letter-spacing:.16em;opacity:.72;margin-bottom:2px}
.top-actions{display:flex;gap:8px;pointer-events:auto}
.tiny-toggle{
  display:flex;gap:5px;align-items:center;font-size:11px;
  background:rgba(67,51,31,.72);padding:6px 8px;border-radius:999px;
  backdrop-filter:blur(5px)
}
.tiny-toggle input{accent-color:var(--beni)}

.screen{
  position:absolute;z-index:4;inset:0;
  display:grid;place-items:center;
  padding:78px 20px calc(112px + env(safe-area-inset-bottom));
  pointer-events:none
}
.screen > *{pointer-events:auto}

.panel{
  width:min(100%,440px);
  background:rgba(67,51,31,.92);
  border:1px solid rgba(255,255,255,.12);
  border-radius:24px;
  padding:22px;
  box-shadow:0 18px 45px var(--shadow);
  backdrop-filter:blur(10px)
}
.panel h1,.panel h2{font-family:"Zen Antique",serif;font-weight:400;margin:0}
.panel h1{font-size:38px;line-height:1.05}
.panel h2{font-size:26px}
.panel p{line-height:1.7;color:rgba(255,249,237,.86);margin:10px 0}

.primary,.secondary,.ghost{
  border:0;border-radius:16px;padding:13px 18px;font-weight:700;cursor:pointer;
  transition:background-color 120ms,color 120ms,transform 120ms
}
.primary{background:var(--wood);color:var(--sumi);width:100%;margin-top:10px}
.primary:active,.secondary:active,.ghost:active{transform:translateY(1px)}
.secondary{background:var(--beni);color:white}
.ghost{background:rgba(255,255,255,.1);color:var(--cream);border:1px solid rgba(255,255,255,.12)}

.style-list{display:grid;gap:10px;margin-top:16px}
.style-card{
  width:100%;text-align:left;border:1px solid rgba(255,255,255,.12);
  color:var(--cream);background:rgba(255,255,255,.055);
  border-radius:16px;padding:10px 12px;cursor:pointer;
  display:grid;grid-template-columns:68px 1fr;gap:12px;align-items:center
}
.style-preview{display:block;width:62px;height:98px}
.style-copy{display:block}
.style-card:hover,.style-card:focus-visible{background:rgba(255,255,255,.1)}
.style-card strong{font-family:"Zen Antique";font-weight:400;font-size:21px}
.style-card small{display:block;opacity:.66;margin:2px 0 6px}
.style-card span{font-size:13px;line-height:1.55;opacity:.9}

.controls{
  position:absolute;z-index:6;left:0;right:0;bottom:0;
  padding:10px 12px calc(12px + env(safe-area-inset-bottom));
  background:linear-gradient(180deg,transparent 0,rgba(67,51,31,.72) 18%,rgba(67,51,31,.96) 55%);
}
.controls:empty{display:none}

.instruction{
  width:fit-content;max-width:94%;margin:0 auto 8px;
  padding:7px 11px;border-radius:12px;
  font-size:12px;line-height:1.4;text-align:center;
  color:var(--cream);background:rgba(43,39,36,.65);backdrop-filter:blur(6px)
}
.blade-picker{
  width:min(100%,440px);margin:0 auto;display:grid;grid-template-columns:1fr 1fr auto;gap:7px;align-items:center;
  padding:8px;border-radius:14px;background:rgba(43,39,36,.78)
}
.blade-picker button{
  border:1px solid rgba(255,255,255,.14);border-radius:11px;padding:8px;
  background:rgba(255,255,255,.08);color:var(--cream);font-size:12px;font-weight:700
}
.blade-picker button.active{background:var(--wood);color:var(--sumi)}
.blade-picker span{padding:0 5px;font-size:11px;color:var(--wood);white-space:nowrap}
.carve-actions{margin-top:8px}
.control-row{display:flex;gap:8px;align-items:center;justify-content:center;flex-wrap:wrap}
.control-row .primary{width:auto;margin:0}
.palette{display:flex;gap:9px;justify-content:center;align-items:center}
.swatch{
  width:38px;height:38px;border-radius:50%;border:3px solid rgba(255,255,255,.35);
  box-shadow:0 2px 8px rgba(0,0,0,.25);cursor:pointer
}
.swatch.active{outline:3px solid var(--wood);outline-offset:2px}

.tabs{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-bottom:8px}
.tab{
  border:0;border-radius:12px;padding:9px 5px;background:rgba(255,255,255,.09);color:var(--cream);
  font-size:12px;font-weight:700
}
.tab.active{background:var(--wood);color:var(--sumi)}
.paint-picker{
  width:min(100%,440px);margin:0 auto;padding:8px;border-radius:16px;
  background:rgba(43,39,36,.78)
}
.paint-picker .tabs{margin-bottom:7px}
.part-icon-grid{
  display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;
  max-height:126px;overflow-y:auto;padding:1px;scrollbar-width:thin
}
.part-icon-grid.eyes{grid-template-columns:repeat(6,minmax(0,1fr))}
.part-icon{
  display:grid;place-items:center;min-width:0;height:58px;padding:2px;
  border:1px solid rgba(255,255,255,.14);border-radius:12px;
  background:var(--cream);color:var(--sumi);cursor:pointer
}
.part-icon canvas{display:block;width:100%;height:52px;object-fit:contain}
.part-icon:hover,.part-icon:focus-visible{border-color:var(--wax);outline:2px solid var(--wax);outline-offset:1px}
.part-icon.active{background:var(--wood);border:3px solid var(--beni);box-shadow:inset 0 0 0 1px var(--cream)}
.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.part-select-row{display:grid;grid-template-columns:44px minmax(0,1fr) 44px;gap:7px;align-items:stretch}
.part-step{
  min-height:48px;border:1px solid rgba(255,255,255,.14);border-radius:12px;
  background:rgba(255,255,255,.09);color:var(--cream);font-size:28px;line-height:1
}
.part-select-wrap{
  display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:9px;
  min-height:48px;padding:5px 7px 5px 10px;border-radius:12px;background:var(--wood);color:var(--sumi)
}
.part-select-wrap span{font-size:10px;line-height:1.2;opacity:.7}
.part-select{
  width:100%;min-width:0;border:0;border-radius:9px;padding:8px 28px 8px 9px;
  background:var(--cream);color:var(--sumi);font-weight:700
}
.choice-count{text-align:center;font-size:10px;line-height:1;margin-top:5px;color:rgba(255,249,237,.6)}
.part-grid{display:flex;gap:7px;overflow-x:auto;padding:2px 1px 4px;scrollbar-width:none}
.part-grid::-webkit-scrollbar{display:none}
.part{
  min-width:82px;border:1px solid rgba(255,255,255,.13);border-radius:12px;padding:9px 8px;
  background:rgba(255,255,255,.08);color:var(--cream);font-size:12px;text-align:center
}
.part.active{background:var(--beni);border-color:rgba(255,255,255,.28)}

.result-card{
  width:min(100%,420px);padding:20px;border-radius:26px;
  background:rgba(246,235,210,.97);color:var(--sumi);
  box-shadow:0 20px 55px rgba(0,0,0,.35)
}
.result-card h2{font-family:"Zen Antique";font-weight:400;font-size:30px;margin:0}

.result-preview{
  display:block;width:min(100%,320px);height:auto;margin:4px auto 0;border-radius:16px;
  background:linear-gradient(180deg,rgba(92,71,51,.08),rgba(92,71,51,.16))
}
button:disabled{opacity:.38;cursor:default}

.result-card p{color:var(--sumi);margin:8px 0;line-height:1.55}
.result-card .fact{font-size:12px;padding:9px 10px;border-radius:12px;background:rgba(92,71,51,.1)}
.result-card .tags{font-size:12px;color:var(--roku)}
.result-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}
.result-actions button{margin:0}
.result-card .ghost{color:var(--sumi);background:rgba(92,71,51,.08);border-color:rgba(92,71,51,.15)}

.toast{
  position:absolute;z-index:20;left:50%;top:76px;transform:translate(-50%,-12px);
  background:rgba(43,39,36,.92);color:white;padding:9px 13px;border-radius:999px;
  font-size:12px;opacity:0;pointer-events:none;transition:opacity 120ms,transform 120ms;
  white-space:nowrap
}
.toast.show{opacity:1;transform:translate(-50%,0)}

@media (max-height:680px){
  .panel{padding:17px}.panel h1{font-size:32px}
  .screen{padding-top:64px;padding-bottom:96px}
  .topbar{padding-top:calc(8px + env(safe-area-inset-top))}
  .controls{padding-top:6px}
  .swatch{width:34px;height:34px}
  .part{min-width:72px;padding:7px 6px}
}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}
}
