/* StorybookWalk Studio — shared brand kit.
   Tokens + base layout lifted from the public player page so every creator tool
   matches it, plus form/result styles the tools need. */
:root{
  --ink:#1c1a17;        /* near-black warm ink */
  --muted:#6b645b;      /* soft brown-grey */
  --paper:#fbf7ef;      /* warm cream page */
  --card:#ffffff;
  --accent:#1f7a6b;     /* storybook teal */
  --accent-ink:#0f5346;
  --line:#e9e1d3;
  --danger:#b4452f;
  --shadow:0 6px 24px rgba(28,26,23,.10);
  --logo-filter:none;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  background:var(--paper);
  color:var(--ink);
  font-family:system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  line-height:1.45;
  -webkit-text-size-adjust:100%;
  min-height:100dvh;
  display:flex;
  flex-direction:column;
}
.wrap{
  width:100%;max-width:560px;margin:0 auto;
  padding:max(20px,env(safe-area-inset-top)) 20px 28px;
  flex:1 0 auto;display:flex;flex-direction:column;
}
.brand{display:block;margin:6px auto 0;padding:8px;width:fit-content}
.brand img{display:block;height:48px;width:auto;max-width:78vw;filter:var(--logo-filter)}
main{flex:1 0 auto;display:flex;flex-direction:column;justify-content:center}

.card{
  background:var(--card);border:1px solid var(--line);border-radius:18px;
  box-shadow:var(--shadow);padding:26px 22px;margin:22px 0;
}
.eyebrow{
  text-transform:uppercase;letter-spacing:.09em;font-size:.72rem;font-weight:700;
  color:var(--accent-ink);margin:0 0 6px;
}
h1{font-size:1.5rem;line-height:1.2;margin:0 0 4px;letter-spacing:-.02em;font-weight:800}
.lede{margin:0 0 20px;color:var(--muted);font-size:1rem}

/* --- form fields --- */
.field{margin:0 0 18px}
.field label{display:block;font-weight:700;font-size:.9rem;margin:0 0 6px}
.field label .opt{font-weight:400;color:var(--muted)}
.field input[type=text],.field input[type=url]{
  width:100%;padding:12px 14px;font-size:1rem;font-family:inherit;color:var(--ink);
  background:var(--paper);border:1px solid var(--line);border-radius:12px;
}
.field input[type=text]:focus,.field input[type=url]:focus{outline:3px solid var(--accent-ink);outline-offset:1px;border-color:var(--accent)}
.field .hint{font-size:.8rem;color:var(--muted);margin:6px 0 0}

/* file drop / picker */
.filepick{
  display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;
  padding:22px;border:2px dashed var(--line);border-radius:14px;background:var(--paper);
  cursor:pointer;transition:border-color .15s ease,background .15s ease;
}
.filepick.drag{border-color:var(--accent);background:rgba(31,122,107,.06)}
.filepick input[type=file]{display:none}
.filepick .picked{font-weight:700;color:var(--accent-ink)}
.filepick .ph{color:var(--muted);font-size:.92rem}

/* --- buttons --- */
.btn{
  -webkit-appearance:none;appearance:none;border:0;cursor:pointer;
  font:inherit;font-weight:800;border-radius:999px;padding:14px 22px;
  background:var(--accent);color:#fff;width:100%;
  box-shadow:0 8px 20px rgba(31,122,107,.30);
  transition:transform .08s ease,background .15s ease,opacity .15s ease;
  touch-action:manipulation;
}
.btn:active{transform:scale(.98)}
.btn:focus-visible{outline:3px solid var(--accent-ink);outline-offset:3px}
.btn[disabled]{opacity:.5;cursor:not-allowed;box-shadow:none}
.btn-ghost{
  background:transparent;color:var(--accent-ink);box-shadow:none;
  border:1px solid var(--line);font-weight:700;
}

/* --- status / spinner --- */
.status{font-weight:700;text-align:center;margin:14px 0 0;min-height:1.4em}
.status.err{color:var(--danger)}
.spinner{
  width:20px;height:20px;border-radius:50%;border:3px solid var(--line);
  border-top-color:var(--accent);display:inline-block;vertical-align:-4px;margin-right:8px;
  animation:spin .8s linear infinite;
}
@keyframes spin{to{transform:rotate(360deg)}}

/* --- result (QR + short URL) --- */
.result{text-align:center}
.qr-img{
  width:240px;height:240px;max-width:80%;image-rendering:pixelated;
  border:1px solid var(--line);border-radius:14px;background:#fff;padding:10px;
}
.kv{margin:16px 0 0;text-align:left}
.kv .k{font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:700}
.urlrow{display:flex;gap:8px;align-items:stretch;margin-top:4px}
.urlrow input{
  flex:1;min-width:0;padding:10px 12px;font-size:.95rem;font-family:ui-monospace,Menlo,Consolas,monospace;
  border:1px solid var(--line);border-radius:10px;background:var(--paper);color:var(--ink);
}
.copybtn{flex:0 0 auto;padding:10px 14px;border-radius:10px;border:1px solid var(--line);
  background:var(--card);color:var(--accent-ink);font-weight:700;cursor:pointer}
.copybtn:active{transform:scale(.97)}

/* --- tool list (landing) --- */
.tools{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}
.tools a{
  display:flex;align-items:center;gap:14px;text-decoration:none;color:inherit;
  background:var(--card);border:1px solid var(--line);border-radius:14px;padding:16px 18px;
  box-shadow:var(--shadow);transition:transform .08s ease;
}
.tools a:active{transform:scale(.99)}
.tools .ico{font-size:1.6rem;line-height:1}
.tools .t{font-weight:800}
.tools .d{color:var(--muted);font-size:.88rem}
.tools .soon{opacity:.55;pointer-events:none}

/* --- sign-in gate --- */
.gate{text-align:center}
.gate #gbtn{display:flex;justify-content:center;margin:18px 0 6px}
.whoami{font-size:.82rem;color:var(--muted);text-align:center;margin-top:8px}
.whoami a{color:var(--accent-ink);font-weight:600;text-decoration:none}

footer{flex-shrink:0;text-align:center;font-size:.85rem;color:var(--muted);padding-top:8px}
footer a{color:var(--accent-ink);font-weight:600;text-decoration:none;display:inline-block;padding:10px 6px}
footer a:hover{text-decoration:underline}

@media (prefers-color-scheme:dark){
  :root{
    --ink:#f3ede2;--muted:#a89f90;--paper:#1a1815;--card:#262219;
    --accent:#2f9e8a;--accent-ink:#7fe0cf;--line:#3a342a;--danger:#e98b74;
    --shadow:0 6px 24px rgba(0,0,0,.4);
    --logo-filter:invert(1) brightness(1.9) contrast(1.05);
  }
  .qr-img{background:#fff}
}
