html{color-scheme:light dark}img{max-width:100%}[hidden]{display:none!important}
:root{
  --bg:#EDEFF1; --surface:#FFFFFF; --surface-2:#F6F7F8; --line:#D9DDE1; --line-strong:#B9C0C6;
  --ink:#1B1F23; --ink-2:#4E575F; --muted:#7A838B;
  --accent:#1F6F5B; --accent-ink:#FFFFFF; --accent-soft:#E3F1EC;
  --warn:#B4741A; --warn-soft:#FBF1E0; --bad:#B23A3A; --bad-soft:#F9E6E6;
  --birch:#E6CFA3; --scene-bg:#FFFFFF; --scene-floor:#EDEFF1;
  --shadow:0 1px 2px rgba(20,25,30,.06),0 8px 24px -12px rgba(20,25,30,.18);
  --radius:6px;
  --font-display:"Archivo",system-ui,sans-serif;
  --font-body:"IBM Plex Sans",system-ui,sans-serif;
  --font-mono:"IBM Plex Mono",ui-monospace,Menlo,monospace;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#15181B; --surface:#1E2226; --surface-2:#24292E; --line:#30373D; --line-strong:#48515A;
    --ink:#ECEEF0; --ink-2:#B8C0C7; --muted:#8A949D;
    --accent:#4FB397; --accent-ink:#0F1A16; --accent-soft:#1D3A32;
    --warn:#E0A64A; --warn-soft:#3A2E17; --bad:#E06666; --bad-soft:#3E1F1F;
    --scene-bg:#FFFFFF; --scene-floor:#EDEFF1;
    --shadow:0 1px 2px rgba(0,0,0,.4),0 8px 24px -12px rgba(0,0,0,.6);
  }
}
:root[data-theme="dark"]{
  --bg:#15181B; --surface:#1E2226; --surface-2:#24292E; --line:#30373D; --line-strong:#48515A;
  --ink:#ECEEF0; --ink-2:#B8C0C7; --muted:#8A949D;
  --accent:#4FB397; --accent-ink:#0F1A16; --accent-soft:#1D3A32;
  --warn:#E0A64A; --warn-soft:#3A2E17; --bad:#E06666; --bad-soft:#3E1F1F;
  --scene-bg:#FFFFFF; --scene-floor:#EDEFF1;
  --shadow:0 1px 2px rgba(0,0,0,.4),0 8px 24px -12px rgba(0,0,0,.6);
}
html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font-body);font-size:13px;line-height:1.45;-webkit-font-smoothing:antialiased}
*{box-sizing:border-box}
button,input,select{font:inherit;color:inherit}
h1,h2,h3{font-family:var(--font-display);margin:0;text-wrap:balance}
.app{height:100%;display:grid;grid-template-rows:auto 1fr;padding-inline:0}
header{display:flex;align-items:center;gap:14px;padding:10px 16px;border-bottom:1px solid var(--line);background:var(--surface)}
header h1{font-size:15px;font-weight:600;letter-spacing:-.01em}
header .tag{font-family:var(--font-mono);font-size:11px;color:var(--muted);padding:2px 6px;border:1px solid var(--line);border-radius:4px}
header .spacer{flex:1}
.btn{border:1px solid var(--line-strong);background:var(--surface);border-radius:var(--radius);padding:6px 10px;cursor:pointer;font-size:12.5px;font-weight:500;color:var(--ink);display:inline-flex;align-items:center;gap:6px}
.btn:hover{background:var(--surface-2)}
.btn:focus-visible,.item:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
.btn.primary:hover{filter:brightness(1.05)}
.btn.small{padding:4px 8px;font-size:12px}
.btn.on{background:var(--accent-soft);border-color:var(--accent);color:var(--ink)}
.btn.danger{color:var(--bad);border-color:var(--bad)}
.seg{display:inline-flex;border:1px solid var(--line-strong);border-radius:var(--radius);overflow:hidden}
.seg .btn{border:0;border-radius:0}
.seg .btn+.btn{border-left:1px solid var(--line-strong)}
main{display:grid;grid-template-columns:270px 1fr 300px;min-height:0}
aside{background:var(--surface);border-right:1px solid var(--line);overflow:auto;padding:14px 16px;display:flex;flex-direction:column;gap:18px}
aside.right{border-right:0;border-left:1px solid var(--line)}
section h2{font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:8px}
.field{display:grid;grid-template-columns:1fr auto;align-items:center;gap:8px;padding:5px 0}
.field label{color:var(--ink-2)}
.field input,.field select{width:112px;padding:5px 7px;border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--surface);font-family:var(--font-mono);font-size:12px;text-align:right}
.field select{text-align:left;font-family:var(--font-body)}
.layout-readout{font-family:var(--font-mono);font-size:11.5px;color:var(--ink-2);background:var(--surface-2);border-radius:var(--radius);padding:8px 10px;line-height:1.6;margin-top:6px}
.layout-readout b{color:var(--ink);font-weight:500}
.cat-group{margin-bottom:10px}
.cat-group h3{font-size:12px;font-weight:600;color:var(--ink-2);margin:6px 0 6px}
.items{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.item{border:1px solid var(--line);background:var(--surface);border-radius:var(--radius);padding:8px 8px 7px;cursor:pointer;text-align:left;display:flex;flex-direction:column;gap:3px}
.item:hover{border-color:var(--accent);background:var(--accent-soft)}
.item.on{border-color:var(--accent);background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent)}
.item .n{font-weight:500;font-size:12px}
.item .d{font-family:var(--font-mono);font-size:10.5px;color:var(--muted)}
.item svg{width:100%;height:34px;display:block;margin-bottom:2px}
.viewport{position:relative;min-width:0;min-height:0;background:var(--scene-bg)}
.viewport canvas{display:block;width:100%;height:100%;touch-action:none;-webkit-user-select:none;user-select:none}
.hud{position:absolute;left:12px;top:12px;display:flex;gap:6px;flex-wrap:wrap}
.tone{display:inline-flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--radius);padding:3px 10px;font-size:12px;color:var(--ink-2)}
.tone input{width:110px;accent-color:var(--accent);margin:0}
.hint{position:absolute;left:12px;bottom:12px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:6px 10px;font-size:12px;color:var(--ink-2);box-shadow:var(--shadow);max-width:min(420px,calc(100% - 24px))}
.hint.bad{border-color:var(--bad);color:var(--bad);background:var(--bad-soft)}
.card{border:1px solid var(--line);border-radius:var(--radius);padding:10px 12px;background:var(--surface-2)}
.card .title{display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.card .title b{font-family:var(--font-display);font-weight:600;font-size:13px}
.card .dims{font-family:var(--font-mono);font-size:11px;color:var(--muted)}
.row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:5px 0;border-top:1px solid var(--line)}
.row:first-of-type{border-top:0}
.row .k{color:var(--ink-2)}
.row .v{font-family:var(--font-mono);font-size:12px}
.chips{display:flex;gap:6px;flex-wrap:wrap}
.chip{width:22px;height:22px;border-radius:50%;border:2px solid var(--surface);box-shadow:0 0 0 1px var(--line-strong);cursor:pointer;padding:0}
.chip.on{box-shadow:0 0 0 2px var(--accent)}
.chip.natural{background:var(--birch)}
.warn{background:var(--warn-soft);color:var(--warn);border-radius:var(--radius);padding:6px 9px;font-size:12px;margin-top:8px}
.empty{color:var(--muted);font-size:12.5px;padding:8px 0}
table{width:100%;border-collapse:collapse;font-size:12px}
td{padding:4px 0;border-top:1px solid var(--line);vertical-align:top}
tr:first-child td{border-top:0}
td.q,td.p{font-family:var(--font-mono);text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
td.q{color:var(--muted);padding-right:8px}
tfoot td{border-top:2px solid var(--line-strong);font-weight:600;padding-top:6px}
.note{color:var(--muted);font-size:11.5px;margin-top:8px;line-height:1.5}
textarea{width:100%;height:96px;font-family:var(--font-mono);font-size:11px;border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--surface);color:var(--ink);padding:8px;resize:vertical}
.actions{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.saved{display:flex;flex-direction:column;gap:4px}
.saved .srow{display:flex;align-items:center;gap:6px;padding:6px 8px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-2)}
.saved .srow .nm{flex:1;font-weight:500;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.saved .srow .meta{font-family:var(--font-mono);font-size:10.5px;color:var(--muted);white-space:nowrap}
.saved .srow button{padding:2px 7px}
.toast{position:absolute;left:50%;top:14px;transform:translateX(-50%);background:var(--ink);color:var(--bg);padding:7px 12px;border-radius:var(--radius);font-size:12.5px;opacity:0;transition:opacity .2s;pointer-events:none}
.toast.show{opacity:1}
@media (max-width:1280px){ main{grid-template-columns:230px 1fr 260px} .items{grid-template-columns:1fr} }
@media (pointer:coarse){ .btn{padding:8px 12px;min-height:38px} .btn.small{padding:6px 10px;min-height:34px} .item{padding:10px} .chip{width:28px;height:28px} .field input,.field select{padding:8px} }
/* ── Phone layout: full-screen 3D view + bottom drawer with tabs ── */
.tabbar{display:none}
.phone-only{display:none}
.badge{display:inline-block;font-family:var(--font-mono);font-size:9.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--warn);background:var(--warn-soft);border-radius:3px;padding:1px 5px;vertical-align:middle;margin-left:4px}
.item.sandbox{border-style:dashed}
.sandbox-only{display:none}
body[data-mode="sandbox"] .sandbox-only{display:flex}
body:not([data-mode="sandbox"]) #ideasSection{display:none!important}
body[data-mode="sandbox"] header{box-shadow:inset 0 -2px 0 var(--warn)}
.ideas{display:flex;flex-direction:column;gap:8px}
.idea{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-2);padding:8px;display:grid;grid-template-columns:120px 1fr;gap:10px;align-items:start;cursor:pointer}
.idea:hover{border-color:var(--accent)}
.idea.current{border-style:dashed}
.idea svg{width:120px;height:auto;display:block;border-radius:3px;background:var(--surface)}
.idea .t{font-family:var(--font-display);font-weight:600;font-size:12.5px;margin-bottom:2px}
.idea .m{font-size:11.5px;color:var(--ink-2);line-height:1.45}
.idea .m b{font-weight:500;color:var(--ink)}
.idea .actions{margin-top:6px}
.sandbox-only-tab{display:none!important}
body[data-mode="sandbox"] .sandbox-only-tab{display:block!important}
td.subhead{color:var(--warn);font-family:var(--font-mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;padding-top:8px}
@media (max-width:960px){ .phone-only{display:flex} }
@media (max-width:960px){
  .app{grid-template-rows:auto 1fr auto}
  .app{width:100%;overflow:hidden}
  header{padding:6px 10px;gap:6px;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}
  header::-webkit-scrollbar{display:none}
  header .tag{display:none}
  header h1{font-size:13px;white-space:nowrap}
  header .btn{padding:6px 9px;font-size:12px;white-space:nowrap;min-height:34px}
  #btnPreset,#btnClear{display:none}
  .hud .btn{padding:6px 9px;font-size:12px;min-height:34px}
  main{display:block;position:relative;min-height:0;overflow:hidden}
  .viewport{position:absolute;inset:0}
  aside{position:absolute;left:0;right:0;bottom:0;top:auto;max-height:58%;border:0;border-top:1px solid var(--line);border-radius:14px 14px 0 0;box-shadow:0 -8px 30px -12px rgba(0,0,0,.35);transform:translateY(100%);transition:transform .22s ease;padding:10px 16px 16px;display:none;z-index:5}
  aside.right{border-left:0}
  body[data-drawer="open"] aside.active{display:flex;transform:translateY(0)}
  aside section{display:none}
  aside section.active{display:block}
  .tabbar{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);background:var(--surface);border-top:1px solid var(--line);padding:4px 6px calc(4px + env(safe-area-inset-bottom,0px))}
  .tabbar button{border:0;background:transparent;color:var(--muted);font:inherit;font-size:11.5px;font-weight:500;padding:8px 2px;border-radius:var(--radius);min-height:40px}
  .tabbar button.on{color:var(--accent);background:var(--accent-soft)}
  .hud{top:10px;left:10px;right:10px}
  .tone{display:none}
  .hint{bottom:10px;font-size:11.5px;max-width:calc(100% - 20px)}
  .items{grid-template-columns:1fr 1fr}
  textarea{height:72px}
}
@media (max-width:960px) and (orientation:landscape){
  aside{left:auto;top:0;bottom:0;width:min(46%,380px);max-height:none;border-radius:0;border-top:0;border-left:1px solid var(--line);transform:translateX(100%);box-shadow:-8px 0 30px -12px rgba(0,0,0,.35)}
  body[data-drawer="open"] aside.active{transform:translateX(0)}
  .items{grid-template-columns:1fr}
}
@media (prefers-reduced-motion:reduce){.toast{transition:none}}
/* ── rejig: account, sign-in card, developer-only parts, embed badge ── */
.dev-only{display:none!important}
body[data-dev="1"] .dev-only{display:inline-flex!important}
.account{display:flex;align-items:center;gap:8px;margin-left:4px}
.account .who{font-family:var(--font-mono);font-size:11px;color:var(--muted);max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
a.btn{text-decoration:none}
td.p{color:var(--ink-2)}
td.subhead.dev{color:var(--accent)}
.price-head{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin:8px 0 2px}
.frame-badge{position:absolute;right:12px;bottom:12px;background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--radius);padding:6px 10px;font-size:12px;color:var(--ink);text-decoration:none;box-shadow:var(--shadow)}
body[data-auth="out"] .app,body[data-auth="loading"] .app{pointer-events:none;user-select:none}
body[data-auth="out"] .app{filter:saturate(.7)}
body[data-auth="out"] header .seg,body[data-auth="out"] #btnPreset,body[data-auth="out"] #btnClear{visibility:hidden}
body[data-framed="1"] .app{pointer-events:auto}
.gate{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;padding:16px;background:color-mix(in srgb,var(--bg) 55%,transparent);z-index:20;overflow:auto}
.gate-card{width:min(440px,100%);background:var(--surface);border:1px solid var(--line);border-top:3px solid var(--accent);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px 22px 18px;max-height:calc(100% - 8px);overflow:auto}
.gate-card .eyebrow{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin:0 0 10px}
.gate-card h2{font-size:24px;font-weight:600;letter-spacing:-.01em;line-height:1.15;margin:0 0 10px;text-transform:none;color:var(--ink)}
.gate-card .lede{margin:0 0 10px;color:var(--ink-2);font-size:13.5px}
.gate-card .lbl{display:block;font-weight:500;margin:12px 0 4px}
.gate-card input[type=email],.gate-card input[type=text]{width:100%;padding:8px 10px;border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--surface);color:var(--ink);font-size:14px}
.gate-card .boxes{display:flex;flex-direction:column;gap:6px;margin-top:10px}
.gate-card .boxes label{display:grid;grid-template-columns:auto 1fr;gap:8px;align-items:start;font-size:12.5px;color:var(--ink-2)}
.gate-card .boxes input{margin-top:2px;accent-color:var(--accent)}
.gate-card .sent{margin:6px 0 0;color:var(--ink-2)}
.gate-msg{margin:10px 0 0;padding:7px 10px;border-radius:var(--radius);background:var(--bad-soft);color:var(--bad);font-size:12.5px}
.gate-msg.ok{background:var(--accent-soft);color:var(--ink)}
.gate-alt{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:16px;padding-top:12px;border-top:1px solid var(--line);color:var(--muted);font-size:12.5px}
@media (max-width:960px){ .account .who{display:none} .account{margin-left:0} }
header .btn{white-space:nowrap}
@media (max-width:1280px){ header .tag{display:none} .account .who{display:none} }
@media (max-width:960px){ header > :not(.spacer){flex-shrink:0} }
