/* ── DESIGN TOKENS ─────────────────────────────────────────────────────────── */
:root {
  --pri:#6750A4; --pri-c:#EADDFF; --on-pri:#FFFFFF;
  --sec:#625B71; --sec-c:#E8DEF8; --ter:#7D5260;
  --surf:#FFFBFE; --surf-v:#E7E0EC;
  --on-surf:#1C1B1F; --on-sv:#49454F;
  --outline:#79747E; --out-v:#CAC4D0;
  --err:#B3261E; --err-c:#F9DEDC;
  --succ:#386A20; --succ-c:#C3EFAD;
  --e1:0px 1px 2px rgba(0,0,0,.3),0px 1px 3px 1px rgba(0,0,0,.15);
  --e2:0px 1px 2px rgba(0,0,0,.3),0px 2px 6px 2px rgba(0,0,0,.15);
  --e3:0px 4px 8px 3px rgba(0,0,0,.15),0px 1px 3px rgba(0,0,0,.3);
  --r-sm:8px; --r-md:12px; --r-lg:16px; --r-xl:28px; --r-full:50px;
}

/* ── RESET ─────────────────────────────────────────────────────────────────── */
*{box-sizing:border-box;margin:0;padding:0}
body{background:var(--surf);font-family:'Google Sans','Roboto',sans-serif;min-height:100vh;color:var(--on-surf)}

/* ── LAYOUT ────────────────────────────────────────────────────────────────── */
.app{max-width:960px;margin:0 auto;padding:24px 16px 64px}

/* ── TOP BAR ───────────────────────────────────────────────────────────────── */
.top-bar{display:flex;align-items:center;gap:16px;margin-bottom:24px}
.app-icon{width:48px;height:48px;border-radius:var(--r-md);background:var(--pri-c);display:flex;align-items:center;justify-content:center;font-size:26px;border:none;outline:none;padding:0;cursor:pointer;flex-shrink:0;transition:opacity .15s}
.app-icon:hover{opacity:.85}
.app-icon:focus-visible{outline:2px solid var(--pri);outline-offset:2px}
h1{font-family:'Google Sans Display',sans-serif;font-size:clamp(22px,5vw,32px);font-weight:700}
.tagline{font-size:13px;color:var(--on-sv);margin-top:2px}

/* ── STEPPER ───────────────────────────────────────────────────────────────── */
.steps{display:flex;align-items:center;margin-bottom:24px;background:var(--surf-v);border-radius:var(--r-full);padding:6px 16px}
.step{display:flex;align-items:center;gap:8px;flex:1;opacity:.4}
.step.active{opacity:1}.step.done{opacity:.65}
.step-dot{width:28px;height:28px;border-radius:50%;background:white;border:2px solid var(--out-v);display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;flex-shrink:0}
.step.active .step-dot{background:var(--pri);border-color:var(--pri);color:var(--on-pri)}
.step.done .step-dot{background:var(--sec-c);border-color:var(--sec);color:var(--sec)}
.step-label{font-size:12px;font-weight:600;color:var(--on-sv)}
.step.active .step-label{color:var(--pri);font-weight:700}
.step-line{flex:1;height:2px;background:var(--out-v);margin:0 8px;min-width:20px}

/* ── PANEL ─────────────────────────────────────────────────────────────────── */
.panel{background:var(--surf);border-radius:var(--r-xl);padding:28px;box-shadow:var(--e1);border:1px solid var(--out-v)}
.panel-title{font-family:'Google Sans Display',sans-serif;font-size:22px;font-weight:700;margin-bottom:20px;display:flex;align-items:center;gap:10px}
.panel-title .material-icons-round{color:var(--pri);font-size:26px}

/* ── MODE CARDS ────────────────────────────────────────────────────────────── */
.mode-cards{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}
@media(max-width:800px){.mode-cards{grid-template-columns:repeat(3,1fr)}}
@media(max-width:500px){.mode-cards{grid-template-columns:repeat(2,1fr)}}
.mode-card{display:flex;flex-direction:column;align-items:center;gap:10px;padding:24px 16px;border-radius:var(--r-lg);border:2px solid var(--out-v);background:var(--surf);cursor:pointer;text-align:center;font-family:'Google Sans',sans-serif;transition:all .2s}
.mode-card:hover{border-color:var(--pri);background:var(--pri-c);box-shadow:var(--e2);transform:translateY(-3px)}
.mode-card-icon{font-size:32px;color:var(--pri);background:var(--pri-c);width:60px;height:60px;border-radius:50%;display:flex;align-items:center;justify-content:center}
.mode-card-title{font-size:15px;font-weight:700}
.mode-card-desc{font-size:12px;color:var(--on-sv);line-height:1.4}

/* ── BUTTONS ───────────────────────────────────────────────────────────────── */
.btn{display:inline-flex;align-items:center;gap:8px;padding:10px 24px;border-radius:var(--r-full);border:none;font-family:'Google Sans',sans-serif;font-size:14px;font-weight:700;cursor:pointer;white-space:nowrap}
.btn .material-icons-round{font-size:18px}
.btn-primary{background:var(--pri);color:var(--on-pri);box-shadow:var(--e1)}
.btn-tonal{background:var(--sec-c);color:var(--sec)}
.btn-success{background:var(--succ-c);color:var(--succ)}
.btn-success:disabled{background:rgba(28,27,31,.12);color:rgba(28,27,31,.38);cursor:not-allowed}
.btn-outlined{background:transparent;color:var(--on-sv);border:1px solid var(--out-v)}

/* ── SEARCH ────────────────────────────────────────────────────────────────── */
.search-row{display:flex;gap:12px;flex-wrap:wrap}
.search-field{flex:1;min-width:200px;position:relative}
.search-input{width:100%;padding:14px 16px 14px 48px;border-radius:var(--r-full);border:2px solid var(--outline);font-family:'Google Sans',sans-serif;font-size:16px;outline:none;background:var(--surf)}
.search-input:focus{border-color:var(--pri);box-shadow:0 0 0 3px rgba(103,80,164,.12)}
.search-icon{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--on-sv);font-size:22px;pointer-events:none}
.suggestions{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.chip{padding:6px 16px;border-radius:var(--r-sm);border:1px solid var(--out-v);font-family:'Google Sans',sans-serif;font-size:13px;font-weight:600;cursor:pointer;background:var(--surf);color:var(--on-sv)}
.chip:hover{background:var(--pri-c);border-color:var(--pri);color:var(--pri)}

/* ── IMAGE GRID ────────────────────────────────────────────────────────────── */
.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:8px}
@media(max-width:500px){.grid{grid-template-columns:repeat(2,1fr)}}
.img-card{border-radius:var(--r-md);overflow:hidden;cursor:pointer;border:2px solid transparent;position:relative;aspect-ratio:1;background:var(--surf-v)}
.img-card:hover{box-shadow:var(--e3)}
.img-card.selected{border-color:var(--pri);box-shadow:0 0 0 3px rgba(103,80,164,.2)}
.img-card img{width:100%;height:100%;object-fit:cover;display:block}
.img-card .chk{position:absolute;top:8px;right:8px;width:28px;height:28px;background:var(--pri);border-radius:50%;display:flex;align-items:center;justify-content:center;color:white;opacity:0;transform:scale(0)}
.img-card.selected .chk{opacity:1;transform:scale(1)}
.img-card .chk .material-icons-round{font-size:16px}

/* ── SHARED UI ─────────────────────────────────────────────────────────────── */
.action-row{display:flex;gap:12px;margin-top:20px;flex-wrap:wrap;align-items:center}
.loading-box{text-align:center;padding:48px 24px}
.md-progress{display:flex;justify-content:center;gap:8px;margin-bottom:24px}
.md-dot{width:12px;height:12px;border-radius:50%;background:var(--pri);animation:pulse 1.2s ease-in-out infinite}
.md-dot:nth-child(2){animation-delay:.2s;background:var(--sec)}
.md-dot:nth-child(3){animation-delay:.4s;background:var(--ter)}
@keyframes pulse{0%,80%,100%{transform:scale(.6);opacity:.4}40%{transform:scale(1);opacity:1}}
.loading-text{font-size:16px;font-weight:500;color:var(--on-sv)}

/* ── COLORING FRAME ────────────────────────────────────────────────────────── */
.col-area{text-align:center}
.col-title{font-family:'Google Sans Display',sans-serif;font-size:20px;font-weight:700;color:var(--pri);margin-bottom:16px}
.col-frame{display:inline-block;background:white;border-radius:var(--r-lg);padding:20px;box-shadow:var(--e2);border:1px solid var(--out-v);max-width:100%;margin-bottom:24px}
.col-frame canvas:not(#traceCanvas),.col-frame img{display:block;width:520px;max-width:100%;height:auto;object-fit:cover}
#traceCanvas{display:block;width:100%;height:auto}

/* ── SLIDERS / CONTROLS ────────────────────────────────────────────────────── */
.sliders{background:var(--surf-v);border-radius:var(--r-md);padding:16px 20px;text-align:left}
.sliders h4{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.8px;color:var(--on-sv);margin-bottom:14px}
.sl-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:10px}
.sl-row:last-child{margin-bottom:0}
.sl-label{font-size:13px;font-weight:600;color:var(--on-sv);min-width:110px}
input[type=range]{flex:1;min-width:100px;accent-color:var(--pri);cursor:pointer}
.seed-row{display:flex;align-items:center;gap:10px;margin-top:12px}
.seed-val{font-size:12px;font-family:monospace;background:white;padding:4px 10px;border-radius:var(--r-sm);border:1px solid var(--out-v);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.shape-tabs{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px}
.shape-tab{padding:5px 13px;border-radius:var(--r-full);border:1.5px solid var(--out-v);background:var(--surf);font-family:'Google Sans',sans-serif;font-size:12px;font-weight:600;color:var(--on-sv);cursor:pointer;transition:all .15s;user-select:none}
.shape-tab.on{background:var(--pri);border-color:var(--pri);color:var(--on-pri)}
.shape-tab:not(.on):hover{border-color:var(--pri);color:var(--pri);background:var(--pri-c)}
.seg-check{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:var(--on-sv);cursor:pointer;user-select:none}
.seg-check input{accent-color:var(--pri);width:16px;height:16px;cursor:pointer}

/* ── MISC ──────────────────────────────────────────────────────────────────── */
.divider{height:1px;background:var(--out-v);margin:20px 0}
.err{display:flex;align-items:center;gap:10px;background:var(--err-c);border-radius:var(--r-md);padding:12px 16px;color:var(--err);font-weight:600;font-size:14px;margin-top:14px}
.attr{font-size:11px;color:var(--on-sv);text-align:center;margin-top:32px;opacity:.6}
.attr a{color:var(--pri);text-decoration:none}
