:root{
  --bg:#14110f; --bg2:#1d1916; --card:#231e1a; --line:#3a312a; --ink:#f5efe8; --dim:#b3a698;
  --accent:#f59e0b; --accent2:#3b82f6; --ok:#3ecf8e; --crit:#ff5d6c; --info:#9fb4d6;
  --paper:#fbf8f2; --disc:#f59e0b; --disc-e:#7c2d12; --frame:#3b82f6; --frame-e:#1e3a8a; --pen:#1b1b1b; --hot:#e11d48;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{background:var(--bg);color:var(--ink);font:15px/1.45 system-ui,Segoe UI,Roboto,sans-serif;-webkit-text-size-adjust:100%}
a{color:var(--accent)}
button{font:inherit;cursor:pointer;border:0;border-radius:10px;padding:9px 14px;background:var(--accent);color:#1a0f00;font-weight:650}
button.ghost{background:transparent;color:var(--ink);border:1px solid var(--line)}
button.ghost:hover{border-color:var(--accent)}
button.sm{padding:5px 10px;font-size:13px;border-radius:8px}
button.danger{background:var(--crit);color:#fff}
button:disabled{opacity:.45;cursor:not-allowed}
input,select{font:inherit;background:var(--bg2);color:var(--ink);border:1px solid var(--line);border-radius:10px;padding:8px 10px;width:100%}
input[type=range]{padding:0;border:0;background:transparent;accent-color:var(--accent);height:28px}
input[type=checkbox]{width:auto;accent-color:var(--accent)}
label{display:block;font-size:13px;color:var(--dim);margin:10px 0 4px}
details summary{cursor:pointer;color:var(--dim)}
.wrap{max-width:1000px;margin:0 auto;padding:0 16px 96px}
.wrap.wide{max-width:1240px}
.card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:16px;margin:14px 0}
.card.narrow{max-width:460px;margin:14px auto}
.card-h{display:flex;align-items:center;gap:10px;margin-bottom:6px}
.card-h b{font-size:16px}
.num{width:24px;height:24px;border-radius:50%;background:var(--accent);color:#1a0f00;font-weight:800;font-size:13px;
     display:inline-flex;align-items:center;justify-content:center}
.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.row.nowrap{flex-wrap:nowrap}
.grow{flex:1 1 auto;min-width:0}
.muted{color:var(--dim)}
.pill{display:inline-block;padding:2px 9px;border-radius:999px;font-size:12px;font-weight:700}
.pill.info{background:rgba(159,180,214,.14);color:var(--info)}
.pill.warn{background:rgba(245,158,11,.16);color:var(--accent)}
header{position:sticky;top:0;z-index:5;background:linear-gradient(180deg,#14110f,#14110fe6);backdrop-filter:blur(6px);border-bottom:1px solid var(--line)}
.bar{max-width:1240px;margin:0 auto;display:flex;align-items:center;gap:10px;padding:10px 16px}
.logo{font-weight:800;letter-spacing:.3px}
.logo b{color:var(--accent)}
.ver{font-size:12px;color:var(--dim);border:1px solid var(--line);border-radius:999px;padding:1px 8px}
nav{display:flex;gap:4px;overflow-x:auto;max-width:1240px;margin:0 auto;padding:0 12px 8px}
nav button{background:transparent;color:var(--dim);border-radius:10px;padding:7px 12px;font-weight:600;white-space:nowrap}
nav button.on{background:var(--card);color:var(--ink);border:1px solid var(--line)}
/* watermark + version on every screen (boss rule) */
.watermark{position:fixed;left:0;right:0;bottom:8px;text-align:center;font-size:11px;color:#5b4d40;z-index:1;pointer-events:none;letter-spacing:.4px}
/* scrollable lists ALWAYS scroll with the wheel / touch (boss rule) */
.scroll{max-height:60vh;overflow:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
.list-item{border:1px solid var(--line);border-radius:12px;padding:12px;margin:8px 0;background:var(--bg2)}
.chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:10px;padding:6px 10px;
      background:var(--bg2);cursor:pointer;user-select:none;margin:0;color:var(--ink);font-size:13px}
.sm-chip{padding:4px 8px}
.sm-sel{padding:4px 8px;font-size:13px;border-radius:8px}
.w70{width:70px;flex:0 0 70px}
/* designer */
.grid2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:0 18px}
.col{min-width:0}
.seg{display:flex;background:var(--bg2);border:1px solid var(--line);border-radius:12px;padding:3px;gap:3px}
.seg button{flex:1;background:transparent;color:var(--dim);padding:7px 6px;border-radius:9px;font-size:14px}
.seg button.on{background:var(--accent);color:#1a0f00}
.shape-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(78px,1fr));gap:8px}
.shape-btn{background:var(--bg2);border:1px solid var(--line);border-radius:12px;padding:6px 4px 4px;color:var(--ink);
           display:flex;flex-direction:column;align-items:center;gap:2px;font-size:12px;font-weight:600}
.shape-btn svg{width:46px;height:46px}
.shape-btn.on{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset}
.drop{display:flex;align-items:center;justify-content:center;text-align:center;border:2px dashed var(--line);border-radius:14px;
      padding:20px 12px;cursor:pointer;color:var(--ink);font-size:14px;margin:0;background:var(--bg2)}
.drop.over,.drop:hover{border-color:var(--accent)}
.drop input{display:none}
.mini{background:var(--paper);border-radius:12px;margin-top:12px;aspect-ratio:1/1;max-height:300px;display:flex;justify-content:center}
.mini svg{height:100%;max-width:100%}
.fields{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:0 12px}
.stage{position:relative;background:radial-gradient(circle at 50% 45%,#2b241f,#191512);border-radius:14px;aspect-ratio:1/1;overflow:hidden}
.stage svg{width:100%;height:100%;display:block}
.stage-empty{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;text-align:center;padding:30px;color:var(--dim)}
.step-text{min-height:44px;margin-top:10px;text-align:center;font-size:14px}
.step-text b{color:var(--accent)}
.controls button{min-width:40px}
.kpi{display:flex;gap:10px;flex-wrap:wrap}
.kpi .b{background:var(--bg2);border:1px solid var(--line);border-radius:12px;padding:8px 12px;min-width:84px;text-align:center;flex:1}
.kpi .b .n{font-size:19px;font-weight:800}
.kpi .b .l{font-size:11px;color:var(--dim)}
.dl{display:flex;flex-wrap:wrap;gap:8px}
.dl button{flex:1 1 auto}
.job{display:flex;gap:12px;align-items:center}
.job img{width:72px;height:72px;border-radius:10px;background:#fff;flex:0 0 72px}
.prose p,.prose li{max-width:70ch}
.prose ol{padding-left:20px}
.f18{font-size:18px}
/* overlay (modal) - its inner body also wheel-scrolls */
.overlay{position:fixed;inset:0;background:#0b0907cc;display:flex;align-items:center;justify-content:center;padding:16px;z-index:20}
.overlay .box{background:var(--card);border:1px solid var(--line);border-radius:16px;max-width:520px;width:100%;max-height:86vh;display:flex;flex-direction:column}
.overlay .box h3{margin:0;padding:16px 16px 0}
.overlay .body{overflow:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding:16px}
.hide{display:none!important}
.mono{font-family:ui-monospace,Consolas,monospace}
.small{font-size:13px}
.spin{display:inline-block;width:14px;height:14px;border:2px solid var(--dim);border-top-color:var(--accent);border-radius:50%;animation:sp 1s linear infinite;vertical-align:-2px}
@keyframes sp{to{transform:rotate(360deg)}}
.toast{position:fixed;left:50%;bottom:76px;transform:translateX(-50%);background:#2a221c;border:1px solid var(--line);padding:10px 16px;border-radius:12px;z-index:40;max-width:90%}
.mt4{margin-top:4px}.mt8{margin-top:8px}.mt10{margin-top:10px}.mt12{margin-top:12px}
.f20{font-size:20px}.f26{font-size:26px}
.mh30{max-height:30vh}
.w-auto{width:auto}
.hero{text-align:center;margin:40px 0 10px}
.jc-center{justify-content:center;gap:6px}
.qr{width:220px;margin:0 auto}
.c-crit{color:var(--crit)}.c-ok{color:var(--ok)}.c-warn{color:var(--accent)}
@media (max-width:860px){ .grid2{grid-template-columns:minmax(0,1fr)} }
@media (max-width:520px){ .hide-sm{display:none} .bar .logo{font-size:14px} }

/* v1.4.0 edit lines card */
#editCount{background:rgba(245,158,11,.16);color:var(--accent)}
.edit-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px;align-items:start}
@media (max-width:560px){.edit-grid{grid-template-columns:1fr}}
.edit-pic{margin-top:0;max-height:340px}
.edit-pic .hit{stroke:transparent;stroke-width:.07;fill:none;cursor:pointer;pointer-events:stroke}
.edit-pic .ln{pointer-events:none}
.edit-pic .ln.off{stroke:#b9b2a8 !important;stroke-dasharray:.03 .03;opacity:.7}
.edit-pic .ln.hot{stroke-width:.05 !important}
.edit-list{border:1px solid var(--line);border-radius:12px;padding:4px}
.edit-row{display:flex;align-items:center;gap:8px;padding:5px 8px;border-radius:8px;cursor:pointer;font-size:13px}
.edit-row:hover,.edit-row.hot{background:rgba(255,255,255,.06)}
.edit-row.off{opacity:.5;text-decoration:line-through}
.edit-row .sw{width:14px;height:14px;border-radius:4px;flex:none}
.edit-row input{width:auto;margin:0}
/* v1.6.0 Match % pill */
.pill.ok{background:rgba(62,207,142,.16);color:var(--ok)}
.pill.crit{background:rgba(255,93,108,.16);color:var(--crit)}
#matchPill{margin-left:6px;cursor:help}

/* v1.7.0 drawing location grid + text card */
.mini-row{display:flex;gap:14px;align-items:flex-start;flex-wrap:wrap}
.mini-row .mini{flex:1 1 220px;min-width:0}
.place-box{flex:0 0 150px;margin-top:12px}
.place-grid{display:grid;grid-template-columns:repeat(3,40px);grid-template-rows:repeat(3,40px);gap:4px;
  background:var(--paper);border-radius:50%;padding:8px;width:max-content}
.place-grid button{border-radius:8px;background:rgba(0,0,0,.06);border:1px dashed #b9b2a8;padding:0;cursor:pointer}
.place-grid button:hover{background:rgba(245,158,11,.25)}
.place-grid button.on{background:var(--accent);border:1px solid var(--accent)}
.text-prev{background:var(--paper);border-radius:12px;padding:6px}
.text-prev svg{width:100%;height:auto;display:block}

/* v1.8.0 eye badge in the edit list */
.edit-row .eye{font-size:11px;padding:1px 6px;border-radius:999px;background:rgba(62,207,142,.16);color:var(--ok)}

/* v1.8.5 a drawing location that doesn't work for these lines */
.place-grid button.off,.place-grid button:disabled{opacity:.35;cursor:not-allowed;background:repeating-linear-gradient(45deg,rgba(0,0,0,.08) 0 4px,transparent 4px 8px)}
.place-grid button:disabled:hover{background:repeating-linear-gradient(45deg,rgba(0,0,0,.08) 0 4px,transparent 4px 8px)}

/* v1.11.0 crop + rotate */
.crop-card{border:1px solid var(--line);border-radius:12px;padding:10px}
.crop-stage{text-align:center}
.crop-wrap{position:relative;display:inline-block;max-width:100%;touch-action:none;user-select:none;overflow:hidden;border-radius:8px;vertical-align:top}
.crop-wrap canvas{display:block;max-width:100%;max-height:340px;background:#fff}
.crop-box{position:absolute;border:2px solid var(--accent);box-shadow:0 0 0 9999px rgba(0,0,0,.45);cursor:move;box-sizing:border-box}
.crop-box i{position:absolute;width:16px;height:16px;background:var(--accent);border-radius:4px}
.crop-box i[data-h=nw]{left:-8px;top:-8px;cursor:nwse-resize}.crop-box i[data-h=ne]{right:-8px;top:-8px;cursor:nesw-resize}
.crop-box i[data-h=sw]{left:-8px;bottom:-8px;cursor:nesw-resize}.crop-box i[data-h=se]{right:-8px;bottom:-8px;cursor:nwse-resize}
.crop-tools{align-items:flex-end;gap:8px}
.jc-between{justify-content:space-between}

/* v1.12.0 turn the doodle under the step 2 preview */
.mini-col{display:flex;flex-direction:column;min-width:0}
.turn-row{display:flex;align-items:flex-end;gap:8px;flex-wrap:wrap}
.turn-row label{min-width:120px}
.mini-row .mini-col{flex:1 1 220px}
.mini-col .mini{width:100%}

/* v1.13.0 cards flow left to right (rows 1|2, 3|4, 5|6); one column on phones keeps the same order */
.grid2.flow{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 18px;align-items:stretch}
.grid2.flow>.card{margin:14px 0}
@media (max-width:860px){ .grid2.flow{grid-template-columns:minmax(0,1fr)} }

/* v1.14.0 keyword doodle */
.kw-box{border-top:1px solid var(--line);padding-top:10px}
.kw-row{gap:8px;align-items:center;flex-wrap:wrap}
.kw-row input{min-width:160px}
.kw-chips{display:flex;flex-wrap:wrap;gap:6px}
.kw-chips .chip.on{border-color:var(--accent);color:var(--accent)}

/* v1.15.0 Christian quick picks */
.kw-chr{display:flex;flex-wrap:wrap;gap:6px;align-items:center}

/* v1.16.3 original drawing preview (keyword / random drawing) */
.orig-box{background:var(--paper);border-radius:12px;padding:8px;text-align:center}
.orig-box .small{color:#6b6257;text-align:left}
.orig-box svg{width:100%;max-width:240px;height:auto;aspect-ratio:1/1;display:block;margin:4px auto 0}

/* v1.17.0 theme detection (boss): the page follows the device theme (or the header switch).
   DARK: drawing previews are dark paper with WHITE lines; LIGHT: a light page with dark lines on paper. */
:root[data-theme="dark"]{
  --paper:#1b1714; --pen:#f5efe8; --paper-line:#3a312a;
}
:root[data-theme="light"]{
  --bg:#f6f2ec; --bg2:#ffffff; --card:#ffffff; --line:#e2d8cb; --ink:#1d1916; --dim:#6e6359;
  --info:#3f5f8f; --paper:#fbf8f2; --pen:#1b1b1b; --paper-line:#e2d8cb;
}
:root[data-theme="light"] .stage{background:radial-gradient(circle at 50% 45%,#ffffff,#ece5da)}
:root[data-theme="light"] .edit-row:hover,:root[data-theme="light"] .edit-row.hot{background:rgba(0,0,0,.05)}
:root[data-theme="dark"] .mini,:root[data-theme="dark"] .orig-box,:root[data-theme="dark"] .text-prev{border:1px solid var(--paper-line)}
:root[data-theme="dark"] .orig-box .small{color:var(--dim)}
:root[data-theme="dark"] .job img{filter:invert(1) hue-rotate(180deg)}          /* saved-disc thumbnails: white lines */
:root[data-theme="dark"] .edit-pic .ln.off{stroke:#6b6157 !important}
:root[data-theme="dark"] .place-grid button{background:rgba(255,255,255,.07);border-color:#5a5047}
:root[data-theme="light"] header{background:linear-gradient(180deg,#f6f2ec,#f6f2ece6)}
:root[data-theme="light"] .toast{background:#ffffff;color:var(--ink)}
:root[data-theme="light"] .overlay{background:#3a312a80}
:root[data-theme="light"] .watermark{color:#a79a8c}

/* v1.17.1 boss: on narrow screens the Create button is one of the first steps -> cards 1, 5, 4, then 2, 3, 6
   (wide screens keep 1|2, 3|4, 5|6). DOM order: 1 Drawing, 2 Lines, 3 Edit, 4 Text, 5 Disc & frame, 6 Spin preview */
@media (max-width:860px){
  .grid2.flow>.card:nth-child(1){order:1}
  .grid2.flow>.card:nth-child(5){order:2}
  .grid2.flow>.card:nth-child(4){order:3}
  .grid2.flow>.card:nth-child(2){order:4}
  .grid2.flow>.card:nth-child(3){order:5}
  .grid2.flow>.card:nth-child(6){order:6}
}
.stage-empty button{pointer-events:auto}

/* v1.18.0 black-line copy preview */
#lineCopyBox img{display:block;max-width:100%;max-height:340px;margin:6px auto 0;background:#fff;border-radius:8px}
:root[data-theme="dark"] #lineCopyBox img{filter:invert(1)}      /* dark theme: white lines on dark */

/* v1.18.2 boss: "Preview picture background must always be white and lines black" - in EVERY theme
   (overrides the v1.17.0 dark-theme white-on-dark previews; the rest of the dark theme stays) */
:root,:root[data-theme="dark"],:root[data-theme="light"]{--paper:#ffffff; --pen:#000000; --paper-line:#d9d2c8}
:root[data-theme="dark"] .job img,:root[data-theme="dark"] #lineCopyBox img{filter:none}
.orig-box .small,:root[data-theme="dark"] .orig-box .small{color:#5b5148}
.edit-pic .ln.off,:root[data-theme="dark"] .edit-pic .ln.off{stroke:#b9b2a8 !important}
.edit-pic .ln.hot{stroke:var(--accent) !important}
.mini,.orig-box,.text-prev{border:1px solid var(--paper-line)}
:root[data-theme="dark"] .place-grid button{background:rgba(0,0,0,.06);border-color:#b9b2a8}
.stage,:root[data-theme="light"] .stage{background:#ffffff;border:1px solid var(--paper-line)}
.stage-empty{color:#5b5148}

/* v1.18.3 boss: all lines equal thickness - the hovered line in step 3 changes colour only, never width */
.edit-pic .ln.hot{stroke-width:.022 !important}

/* v1.18.5 boss: ALL previews in every tab / section: black lines on white (shape picker, spin preview, thumbnails) */
.shape-btn svg{background:#ffffff;color:#000;border-radius:8px;padding:3px;box-sizing:content-box}
.stage svg #hot{mix-blend-mode:normal}
.job img{background:#ffffff}

/* v1.18.8 boss: "all previews should ALWAYS have white background and black lines, no matter the device theme".
   Phone browsers (Chrome auto-dark, Samsung Internet dark mode) repaint pages dark on their own; 'only light' tells
   them to leave the preview areas alone. Every preview: white background, black lines, in every theme. */
:root{color-scheme:dark light}
.mini,.orig-box,.text-prev,.stage,.place-grid,.shape-btn svg,.job img,#lineCopyBox img,.crop-wrap canvas,
#mini,#editSvg,#origSvg,#t_prev,#stage{color-scheme:only light;forced-color-adjust:none}
.mini,.orig-box,.text-prev,.stage,.place-grid,.shape-btn svg,.job img,#lineCopyBox img{background:#ffffff !important}
#origSvg path,#stage #traced path{stroke:#000 !important}

/* ---------- AdManager ---------- */
.arrow{font-size:22px;align-self:flex-end;padding-bottom:8px}
.wrapr{flex-wrap:wrap;gap:10px}
.adrow{display:flex;gap:10px;align-items:center;padding:8px 4px;border-bottom:1px solid var(--line,#3335);cursor:pointer}
.adrow img{width:90px;height:75px;object-fit:contain;background:#0001;border-radius:6px}
.thumbs{display:flex;flex-wrap:wrap;gap:8px}
.thumbs figure{margin:0;width:150px;font-size:11px;cursor:pointer;border:2px solid transparent;border-radius:8px;padding:4px}
.thumbs figure.on{border-color:var(--accent,#4ade80)}
.thumbs img{width:100%;height:90px;object-fit:contain;background:#0001;border-radius:6px}
.thumbs figcaption{word-break:break-all;margin-top:2px}
.drop{border:2px dashed var(--line,#8886);border-radius:12px;padding:18px;text-align:center;margin-top:8px}
.drop.over{border-color:var(--accent,#4ade80);background:#4ade8014}
.linkish{text-decoration:underline;cursor:pointer}
.cropbox{max-height:60vh;overflow:hidden;background:#0002;border-radius:8px}.cropbox img{display:block;max-width:100%}
.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:10px}
.note{margin-top:14px;padding:10px 12px;border-left:3px solid var(--accent,#4ade80);background:#4ade8010;border-radius:6px;font-size:13px}
input.sec{width:64px;display:inline-block}
.mh40{max-height:40vh}.scroll{overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.overlay .box{max-height:88vh;overflow-y:auto;overscroll-behavior:contain}
details summary{cursor:pointer}
.drop .muted{display:block;margin-top:6px}
/* v0.8.0 stats table */
.tbl{width:100%;border-collapse:collapse;font-size:14px}
.tbl th,.tbl td{padding:6px 8px;border-bottom:1px solid var(--line);text-align:left;white-space:nowrap}
.tbl td:nth-child(n+4),.tbl th:nth-child(n+4){text-align:right}
.tbl tfoot th{border-top:2px solid var(--line)}
.tbl tfoot th:not(:first-child){text-align:right}
/* v0.9.0 Preview tab */
.pvframe{width:100%;height:70vh;border:1px solid var(--line);border-radius:10px;background:#fff}
