/* Toybox Labs — sits on top of base.css (Toybox Studio's design system, unchanged). */
[hidden]{display:none!important}
.side-brand{text-decoration:none;color:inherit}
.logo-img{width:32px;height:32px;border-radius:8px;flex-shrink:0}
a.nav-item{text-decoration:none}
.side-card{display:flex;flex-direction:column;gap:12px}
.side-card h3{margin-bottom:0}
label.field select{width:140px}
textarea{width:100%;resize:vertical;line-height:20px}

/* ── home grid ───────────────────────────────────────────────────────── */
.tool-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:16px}
.tool{position:relative;display:flex;flex-direction:column;gap:8px;padding:24px;min-height:210px;
  background:var(--card);border:1px solid var(--line);border-radius:16px;text-decoration:none;color:var(--text);
  overflow:hidden;transition:transform .35s var(--ease),border-color .35s var(--ease),background .35s var(--ease)}
.tool::after{content:"";position:absolute;inset:auto -40px -60px auto;width:160px;height:160px;border-radius:50%;
  background:var(--c);opacity:.10;transition:opacity .35s var(--ease),transform .5s var(--ease)}
.tool:hover{transform:translateY(-3px);border-color:color-mix(in srgb,var(--c) 55%,transparent)}
.tool:hover::after{opacity:.18;transform:scale(1.15)}
.tool:active{transform:scale(.99)}
.tool-art{width:56px;height:56px;display:grid;place-items:center;font-size:30px;border-radius:14px;margin-bottom:8px;
  background:color-mix(in srgb,var(--c) 18%,transparent)}
.tool b{font-size:18px;line-height:24px;font-weight:800}
.tool span:not(.tool-art){color:var(--dim);line-height:20px;max-width:260px}
.tag{position:absolute;top:20px;right:20px;font-style:normal;font-size:11px;font-weight:700;letter-spacing:.6px;
  text-transform:uppercase;padding:3px 8px;border-radius:999px;background:var(--raise);color:var(--dim)}
.tag.ai{background:var(--accent-soft);color:#B9A8FF}

/* ── tool pieces ─────────────────────────────────────────────────────── */
.thumb{width:100%;max-height:180px;object-fit:contain;border-radius:8px;background:var(--ink)}
.seg{display:flex;gap:8px}
.seg button{flex:1;display:flex;flex-direction:column;align-items:center;gap:0;padding:8px}
.seg button.on{border-color:var(--accent);background:var(--accent-soft)}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chips button{font-size:12px;line-height:16px;padding:6px 10px;border-radius:999px;text-align:left}
canvas.plate{max-width:100%;max-height:56vh;border-radius:8px;box-shadow:0 12px 40px rgba(0,0,0,.35)}
.card-preview{min-height:420px}
#storyCard{width:100%;max-width:420px;height:auto;border-radius:20px;box-shadow:0 16px 50px rgba(0,0,0,.45)}
.pair{display:grid;grid-template-columns:1fr 1fr;gap:16px;width:100%}
.pair figure{margin:0;display:flex;flex-direction:column;gap:8px;align-items:center}
.pair img{width:100%;max-height:46vh;object-fit:contain;border-radius:10px;background:#fff}
.pair figcaption{color:var(--dim);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.8px}
.panel-head .dl{margin-left:12px}
.panel-head .verdict{margin-left:auto}

.checks{display:flex;flex-direction:column;gap:8px;padding:16px;border-top:1px solid var(--line)}
.checks .size{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px}
.checks .size b{font-size:18px;line-height:24px}
.checks .size span{color:var(--dim);font-size:12px}
.checks .why{color:var(--dim);margin-bottom:4px}
.ck{display:grid;grid-template-columns:20px 1fr;column-gap:8px;align-items:baseline}
.ck i{font-style:normal;font-weight:800}
.ck.ok i{color:var(--ok)} .ck.no i{color:var(--danger)}
.ck span{grid-column:2;color:var(--dim);font-size:12px;line-height:16px}
.changed{margin-top:4px}

.spinner{width:36px;height:36px;border-radius:50%;border:3px solid var(--raise);border-top-color:var(--accent);
  animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

.back{display:none;margin-bottom:12px;font-weight:700;text-decoration:none}

/* ── phones: the home grid is the menu, so the sidebar steps aside ──── */
@media (max-width:640px){
  #sidebar{display:none}
  main{padding:16px}
  .page-head{flex-direction:column;gap:12px}
  .head-actions,.head-actions button{width:100%}
  body:not([data-tab="home"]) .back{display:inline-block}
  .tool{min-height:0;padding:20px}
  .pair{grid-template-columns:1fr}
  #toasts{left:16px;right:16px}
}

.panel-head{flex-wrap:wrap;gap:4px 8px}
.panel-head > span.dim{text-transform:none;letter-spacing:0;font-weight:500;flex:1;min-width:180px}
.thumb{background:#EDEDED}

/* ── Print on Toybox + the new tools (2026-10-17) ───────────────────── */
.tbp-slot{display:inline-flex}
.tbp-slot:empty{display:none}
.panel-head .tbp-btn{padding:5px 12px;font-size:12px;line-height:16px;box-shadow:none;text-transform:none;letter-spacing:0}
.head-actions{display:flex;gap:8px;flex-wrap:wrap}
.frame-pane.on{display:flex;flex-direction:column}
.tool-frame{width:100%;height:calc(100vh - 170px);min-height:560px;border:1px solid var(--line);border-radius:14px;background:#111}
.car-form{display:flex;gap:8px}
.car-form input{flex:1;min-width:0}
.chips button.on{border-color:var(--accent);background:var(--accent-soft)}
.car-img{width:100%;max-height:52vh;object-fit:contain;border-radius:10px}
.ha-working{display:flex;align-items:center;gap:8px;margin:0}
.small-spin{width:16px;height:16px;border-width:2px;flex-shrink:0}
.ha-list{display:flex;flex-direction:column;gap:8px}
.ha-list:empty::before{content:"Nothing yet.";color:var(--dim);font-size:13px}
.ha-item{display:grid;grid-template-columns:64px 1fr auto;gap:12px;align-items:center;padding:8px;border:1px solid var(--line);border-radius:12px;background:var(--raise)}
.ha-item canvas{width:64px;height:64px;object-fit:contain;background:#2A2A2E;border-radius:8px}
.ha-item b{display:block;font-size:14px;line-height:18px}
.ha-item .dim{display:block;font-size:12px;line-height:16px;margin-bottom:4px}
.ha-item label.field input{width:72px}
.ha-plate-wrap{display:flex;flex-direction:column;align-items:center;gap:12px;width:100%}
#haPlate{width:100%;max-width:560px;height:auto;aspect-ratio:1}
.ha-spools{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}
.ha-spool{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:700;padding:4px 10px;border-radius:999px;background:var(--raise)}
.ha-spool i{width:12px;height:12px;border-radius:50%;box-shadow:0 0 0 1px rgba(255,255,255,.25)}
@media (max-width:640px){
  .tool-frame{height:calc(100vh - 120px);min-height:480px}
  .car-img{aspect-ratio:1.15;object-fit:cover;object-position:center}   /* just the middle view: the toy, wheels on */
  .head-actions{flex-direction:column}
  .head-actions .tbp-btn{justify-content:center}
}

/* ── start with a picture ───────────────────────────────────────────── */
.start-drop{display:flex;align-items:center;gap:18px;padding:22px 24px;margin-bottom:20px;cursor:pointer;
  border:2px dashed color-mix(in srgb,var(--accent) 55%,var(--line));border-radius:18px;
  background:linear-gradient(120deg,color-mix(in srgb,var(--accent) 14%,var(--card)),var(--card));
  transition:border-color .25s var(--ease),transform .25s var(--ease)}
.start-drop:hover,.start-drop.over{border-color:var(--accent);transform:translateY(-2px)}
.start-drop input,.ghost-btn input{display:none}
.start-art{font-size:34px;width:64px;height:64px;display:grid;place-items:center;border-radius:16px;flex-shrink:0;
  background:color-mix(in srgb,var(--accent) 22%,transparent)}
.start-words{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}
.start-words b{font-size:20px;line-height:26px;font-weight:800;color:var(--text)}
.start-words span{color:var(--dim);line-height:20px}
.start-btn{flex-shrink:0;font-weight:800;padding:11px 18px;border-radius:12px;background:var(--accent);color:#fff}
.food-drop{border-color:color-mix(in srgb,#F25C54 55%,var(--line));background:linear-gradient(120deg,color-mix(in srgb,#F25C54 14%,var(--card)),var(--card))}
.food-drop .start-art{background:color-mix(in srgb,#F25C54 22%,transparent)}
.food-drop .start-btn{background:#F25C54}
.ghost-btn{display:inline-flex;align-items:center;font-weight:700;padding:9px 14px;border-radius:10px;border:1px solid var(--line);cursor:pointer;background:var(--card)}
#waysSwap[hidden]{display:none!important}
.ways-pic{display:flex;align-items:center;gap:14px;margin-bottom:16px}
.ways-pic img{width:84px;height:84px;object-fit:cover;border-radius:12px;border:1px solid var(--line)}
.ways-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:16px}
.way{display:flex;flex-direction:column;text-align:left;padding:0;overflow:hidden;cursor:pointer;color:var(--text);
  background:var(--card);border:1px solid var(--line);border-radius:16px;transition:transform .3s var(--ease),border-color .3s var(--ease)}
.way:hover{transform:translateY(-3px);border-color:color-mix(in srgb,var(--c) 60%,transparent)}
.way-look{position:relative;display:block;aspect-ratio:1;background:var(--ink)}
.way-look canvas{width:100%;height:100%;display:block}
.way-look .tag{top:10px;right:10px}
.way-nolook{display:grid;place-items:center;height:100%;color:var(--dim)}
.way-words{display:flex;flex-direction:column;gap:4px;padding:14px 16px 6px}
.way-words b{font-size:17px;line-height:22px;font-weight:800}
.way-words span{color:var(--dim);line-height:19px;font-size:14px}
.way-words .way-best{font-size:12px;font-weight:700;color:color-mix(in srgb,var(--c) 75%,var(--text))}
.way-go{margin:6px 16px 16px;font-weight:800;color:var(--c)}
.ways-foot{margin-top:16px}

/* ── food ───────────────────────────────────────────────────────────── */
.food-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:4px 0 14px;flex-wrap:wrap}
.food-bar b{font-size:16px}
.food-bar input{width:min(320px,100%)}
.food-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px}
.food{display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line);border-radius:14px;overflow:hidden}
.food-img{display:block;aspect-ratio:1;background:var(--ink)}
.food-img{overflow:hidden}.food-img img{width:100%;aspect-ratio:1;height:auto;object-fit:cover;display:block}
.food-words{display:flex;flex-direction:column;gap:6px;padding:10px 12px 12px;flex:1}
.food-words b{font-size:15px;line-height:20px}
.food-meta{display:flex;align-items:center;gap:4px;flex-wrap:wrap;color:var(--dim);font-size:12px}
.food-meta i{width:12px;height:12px;border-radius:50%;border:1px solid rgba(255,255,255,.35);display:inline-block}
.food-btns{display:flex;flex-direction:column;gap:6px;margin-top:auto;padding-top:4px}
.food-btns>*{flex:1;text-align:center;font-size:12px;font-weight:800;padding:7px 6px;border-radius:9px;text-decoration:none;cursor:pointer}
.food-get{background:var(--raise);color:var(--text);border:1px solid var(--line)}
.food-print{background:#FF5A36;color:#fff;border:0}
.food-foot{margin-top:16px}
@media (max-width:640px){
  .start-drop{flex-wrap:wrap;padding:16px;gap:12px}
  .start-art{width:48px;height:48px;font-size:26px}
  .start-words b{font-size:17px;line-height:22px}
  .start-btn{width:100%;text-align:center}
  .ways-grid{grid-template-columns:1fr 1fr;gap:10px}
  .way-words{padding:10px 10px 4px}.way-words b{font-size:14px;line-height:18px}.way-words span{font-size:12px;line-height:16px}
  .way-go{margin:4px 10px 12px;font-size:13px}
  .food-grid{grid-template-columns:1fr 1fr;gap:10px}
  .food-bar input{width:100%}
}

/* ── picture → 3D print ─────────────────────────────────────────────── */
.toy-3d-box{position:relative;min-height:420px;flex-direction:column}
.toy3d{width:100%;height:420px;display:block;touch-action:none;cursor:grab;border-radius:12px;
  background:radial-gradient(circle at 50% 40%,#2c2c36,#17171d)}
.toy3d:active{cursor:grabbing}
.toy-step{display:flex;align-items:center;gap:10px;font-weight:700;color:var(--text);margin:16px}
.toy-spools{display:flex;flex-wrap:wrap;gap:8px}
.toy-spools span{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:999px;background:var(--raise);font-weight:700;font-size:13px}
.toy-spools i{width:14px;height:14px;border-radius:50%;border:1px solid rgba(255,255,255,.35)}
.toy-spools em{font-style:normal;color:var(--dim);font-weight:600}
@media (max-width:640px){ .toy3d{height:320px} .toy-3d-box{min-height:320px} }

/* 2026-10-23 (Auston: "I love the look of this view... make that the whole view and feel"):
   every tool page header wears its home card's icon tile, color and glow */
.page-head.dressed{position:relative;overflow:hidden;justify-content:flex-start;gap:18px;padding:22px 24px;margin-bottom:20px;
  border:1px solid color-mix(in srgb,var(--c) 35%,var(--line));border-radius:18px;
  background:linear-gradient(135deg,color-mix(in srgb,var(--c) 14%,transparent),transparent 60%)}
.page-head.dressed::after{content:"";position:absolute;right:-50px;bottom:-80px;width:200px;height:200px;border-radius:50%;
  background:var(--c);opacity:.14;pointer-events:none}
.page-head.dressed .tool-art{flex-shrink:0;margin:0;background:color-mix(in srgb,var(--c) 22%,transparent)}
.page-head.dressed>div:not(.head-actions){flex:1;min-width:0}
.page-head.dressed .head-actions{position:relative;z-index:1}
/* starter pictures under "Start with any picture" */
.start-ex{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:-6px 0 22px}
.start-ex>span{width:100%;font-weight:700}
.start-ex button{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:150px;padding:8px;border-radius:14px;
  border:1px solid var(--line);background:var(--panel,#1b1b22);color:var(--text);cursor:pointer;text-align:left;transition:transform .15s,border-color .15s}
.start-ex button:hover{transform:translateY(-2px);border-color:var(--accent)}
.start-ex img{width:100%;height:96px;object-fit:cover;border-radius:10px;background:#fff;margin-bottom:4px}
.start-ex b{font-size:14px}
.start-ex button span{font-size:12px;color:var(--dim);line-height:16px}
@media (max-width:640px){.start-ex button{width:calc(50% - 5px)}}

/* the real in → out example next to each tool's name */
.ex-pair{display:flex;align-items:center;gap:8px;flex-shrink:0;position:relative;z-index:1}
.ex-pair figure{margin:0;display:flex;flex-direction:column;align-items:center;gap:3px}
.ex-pair img{width:84px;height:84px;object-fit:cover;border-radius:12px;border:1px solid color-mix(in srgb,var(--c) 40%,var(--line));background:#fff}
.ex-pair figcaption{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--dim)}
.ex-arrow{font-size:22px;font-weight:800;color:var(--c);margin-bottom:16px}
@media (max-width:640px){.ex-pair img{width:64px;height:64px}}

/* Stand-Up Animals */
.su-size{display:flex;flex-direction:column;gap:6px}
.su-size input{width:100%}
.su-3d-wrap{width:100%}
.su-3d{width:100%;height:360px;display:block;touch-action:none;cursor:grab}
.sn-swatches{display:flex;flex-wrap:wrap;gap:8px}
.sn-swatches button{width:34px;height:34px;border-radius:50%;padding:0;border:2px solid transparent;background:var(--sw);box-shadow:inset 0 0 0 1px rgba(255,255,255,.15)}
.sn-swatches button.on{border-color:var(--text);outline:2px solid var(--accent);outline-offset:2px}
#snHat button span{font-size:12px}
.sn-ai{display:flex;gap:10px;align-items:center}
.sn-ai img{width:64px;height:64px;object-fit:cover;border-radius:10px;background:#fff}
.sn-ai span{display:flex;flex-direction:column;gap:4px;align-items:flex-start}
#snPlate{width:100%;height:auto;max-width:560px}

/* ── Real or Printed? (2026-10-23) ── */
.rp-game,.rp-end,.rp-add{max-width:620px;margin:0 auto;display:flex;flex-direction:column;gap:12px}
.rp-top{display:flex;justify-content:space-between;color:var(--dim);font-weight:700;font-size:14px}
.rp-stage{position:relative;height:min(52vh,560px);min-height:240px;background:var(--ink);border:1px solid var(--line);border-radius:18px;overflow:hidden}
.rp-stage img{width:100%;height:100%;object-fit:contain;display:block}
.rp-load{position:absolute;inset:0;display:grid;place-items:center;background:var(--ink)}
.rp-pick{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.rp-btn{padding:20px 8px;font-size:20px;font-weight:800;letter-spacing:.5px;border-radius:16px}
.rp-btn.right{border-color:var(--ok);background:color-mix(in srgb,var(--ok) 22%,var(--raise))}
.rp-btn.wrong{border-color:var(--danger);background:color-mix(in srgb,var(--danger) 22%,var(--raise))}
.rp-answer{display:flex;flex-direction:column;gap:4px;padding:16px;border-radius:16px;border:1px solid var(--line);background:var(--card)}
.rp-answer.good{border-color:var(--ok)} .rp-answer.bad{border-color:var(--danger)}
.rp-answer b{font-size:20px;line-height:26px;font-weight:800}
.rp-answer.good b{color:var(--ok)} .rp-answer.bad b{color:var(--danger)}
.rp-answer span{color:var(--dim);line-height:20px}
.rp-credit{font-size:12px}
.rp-row{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-top:8px}
.rp-final{display:flex;flex-direction:column;align-items:center;gap:4px;padding:24px;border-radius:18px;background:var(--card);border:1px solid var(--line)}
.rp-final b{font-size:44px;line-height:52px;font-weight:800}
.rp-final span{color:var(--dim)}
.rp-missed{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px}
.rp-miss{display:flex;flex-direction:column;gap:4px;font-size:13px;line-height:17px}
.rp-miss img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:12px;border:1px solid var(--line)}
.rp-miss b{color:var(--warn)} .rp-miss span{color:var(--dim)}
.rp-add input[type=text],.rp-add #rpWhat{width:100%}
.rp-err{color:var(--danger);min-height:20px;margin:0}
@media (max-width:700px){.rp-stage{height:40vh;min-height:220px}.rp-btn{padding:16px 8px;font-size:18px}}
