:root{
  --app:#1b1b1b; --bar:#2b2b2b; --panel:#303030; --panel-hd:#282828; --input:#1e1e1e;
  --border:#444; --border-soft:#3a3a3a; --text:#d6d6d6; --dim:#959595;
  --accent:#378ef0; --accent-h:#4b9cf5; --hover:#3c3c3c; --sel:#2d4f7c; --paste:#4a4a4a;
  --none:linear-gradient(to top right,#fff calc(50% - 1.5px),#e33 calc(50% - 1.5px),#e33 calc(50% + 1.5px),#fff calc(50% + 1.5px));
}
*{box-sizing:border-box}
html,body{margin:0;height:100%;overflow:hidden}
body{background:var(--app);color:var(--text);font:12px/1.35 "Segoe UI",system-ui,-apple-system,Roboto,sans-serif;
  display:grid;grid-template-rows:32px 40px minmax(0,1fr) 24px;user-select:none}
button,input,select{font:inherit;color:inherit}
input,select{user-select:text}
svg.i{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;display:block}
[hidden]{display:none!important}

/* ---------- menu bar ---------- */
.menubar{display:flex;align-items:center;background:var(--bar);border-bottom:1px solid #111;padding:0 8px;gap:2px}
.logo{width:24px;height:24px;border-radius:4px;margin-right:8px;flex:none;display:block}
.menu{position:relative}
.menu>button{background:none;border:0;padding:5px 9px;border-radius:4px;cursor:default}
.menu>button:hover,.menu.open>button{background:var(--hover)}
.dropdown{display:none;position:absolute;top:100%;left:0;min-width:240px;background:#333;border:1px solid #4a4a4a;border-radius:6px;box-shadow:0 12px 32px rgba(0,0,0,.55);padding:4px;z-index:50}
.menu.open .dropdown{display:block}
.dropdown button{display:flex;width:100%;justify-content:space-between;align-items:center;gap:24px;background:none;border:0;padding:6px 10px 6px 26px;border-radius:4px;text-align:left;position:relative;cursor:default}
.dropdown button:hover{background:var(--accent);color:#fff}
.dropdown kbd{font:inherit;color:var(--dim)}
.dropdown button:hover kbd{color:#e2ecfc}
.dropdown button.check.on::before{content:"✓";position:absolute;left:9px}
.dropdown hr{border:0;border-top:1px solid #474747;margin:4px 6px}
.spacer{flex:1}
.doc-title{color:var(--dim);margin-right:12px;white-space:nowrap}
.btn{background:#3b3b3b;border:1px solid #4c4c4c;border-radius:5px;padding:4px 12px;cursor:pointer;white-space:nowrap}
.btn:hover{background:#464646}
.btn.blue{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600;margin-left:6px}
.btn.blue:hover{background:var(--accent-h)}

/* ---------- top tool bar with color palette ---------- */
.optbar{display:flex;align-items:center;gap:4px;background:var(--panel);border-bottom:1px solid #151515;padding:0 10px;overflow-x:auto;white-space:nowrap}
.tool-name{display:flex;align-items:center;gap:6px;min-width:150px;font-weight:600}
.sep{width:1px;height:22px;background:var(--border);margin:0 8px;flex:none}
.ib{background:none;border:1px solid transparent;border-radius:4px;padding:4px;cursor:pointer;color:var(--text);flex:none;display:grid;place-items:center}
.ib:hover{background:var(--hover);border-color:var(--border)}
.ib.on{background:#4a4a4a;border-color:#555}
.ib:disabled{opacity:.35;pointer-events:none}
.lbl{color:var(--dim);margin-right:2px}
.palette{display:flex;align-items:center;flex:none;margin-left:6px}
.palette button{width:17px;height:24px;border:1px solid #111;border-left-width:0;padding:0;cursor:pointer;position:relative}
.palette button:first-child{border-left-width:1px;border-radius:3px 0 0 3px}
.palette button:last-child{border-radius:0 3px 3px 0}
.palette button:hover{transform:scale(1.3);z-index:2;border-width:1px;box-shadow:0 2px 6px rgba(0,0,0,.6)}
.palette .none{background:var(--none)}
.rainbow{width:22px;height:22px;border-radius:50%;background:conic-gradient(#f00,#ff0,#0f0,#0ff,#00f,#f0f,#f00);box-shadow:inset 0 0 0 2px #303030,0 0 0 1px #111}

/* ---------- fill / outline indicator ---------- */
.fs{position:relative;width:34px;height:34px;flex:none}
.fs button{position:absolute;padding:0;cursor:pointer;border-radius:2px}
.fs .fs-fill{left:0;top:0;width:22px;height:22px;border:1px solid #000;box-shadow:inset 0 0 0 1px rgba(255,255,255,.15);z-index:1}
.fs .fs-stroke{left:12px;top:12px;width:22px;height:22px;background:transparent;border:6px solid #000;box-shadow:0 0 0 1px #111,inset 0 0 0 1px #111}
.fs .on{z-index:3}
.fs .none{background:var(--none)!important;border-color:#fff!important}
.fs .fs-stroke.none{border-width:2px}

/* ---------- color picker pop-up ---------- */
.popover{position:fixed;z-index:60;width:256px;background:#333;border:1px solid #4a4a4a;border-radius:8px;box-shadow:0 14px 36px rgba(0,0,0,.55);padding:10px}
.pop-row{display:flex;gap:6px;align-items:center;margin-bottom:10px}
.seg{display:flex;background:var(--input);border:1px solid var(--border);border-radius:5px;padding:2px;flex:1}
.seg button{flex:1;background:none;border:0;border-radius:3px;padding:4px;cursor:pointer;color:var(--dim)}
.seg button.on{background:#4a4a4a;color:#fff}
.nonebtn{width:26px;height:26px;border:1px solid #111;border-radius:3px;background:var(--none);cursor:pointer;flex:none}
.sv{position:relative;height:150px;border-radius:3px;cursor:crosshair;touch-action:none;background:#f00}
.sv::before{content:"";position:absolute;inset:0;background:linear-gradient(to right,#fff,rgba(255,255,255,0));border-radius:inherit}
.sv::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,#000,rgba(0,0,0,0));border-radius:inherit}
.knob{position:absolute;width:12px;height:12px;border:2px solid #fff;border-radius:50%;box-shadow:0 0 0 1px rgba(0,0,0,.7),inset 0 0 0 1px rgba(0,0,0,.4);transform:translate(-50%,-50%);pointer-events:none;z-index:1}
.hue{position:relative;height:12px;margin-top:10px;border-radius:6px;background:linear-gradient(to right,#f00,#ff0,#0f0,#0ff,#00f,#f0f,#f00);cursor:pointer;touch-action:none}
.hue .knob{top:50%}
.vals{display:grid;grid-template-columns:1.6fr 1fr 1fr 1fr;gap:5px;margin-top:10px}
.vals label{display:flex;flex-direction:column;gap:2px;color:var(--dim);font-size:10px}
.chips{display:grid;grid-template-columns:repeat(8,1fr);gap:4px}
.chips button{aspect-ratio:1;border:1px solid #111;border-radius:2px;padding:0;cursor:pointer}
.chips button:hover{outline:2px solid var(--accent);outline-offset:1px}

/* ---------- main layout ---------- */
main{display:grid;grid-template-columns:46px 236px minmax(0,1fr) 270px;min-height:0}
.toolbar{background:var(--panel);border-right:1px solid #151515;display:flex;flex-direction:column;align-items:center;padding:8px 0;gap:3px}
.tool{width:34px;height:34px;display:grid;place-items:center;background:none;border:0;border-radius:5px;cursor:pointer;color:var(--text);position:relative}
.tool:hover{background:var(--hover)}
.tool.on{background:#505050;color:#fff}
.tool[data-key]::after{content:attr(data-key);position:absolute;right:2px;bottom:1px;font-size:8px;color:var(--dim)}

.side{background:var(--panel);overflow-y:auto;min-height:0}
.side.left{border-right:1px solid #151515}
.side.right{border-left:1px solid #151515}
.pnl{border-bottom:1px solid #1c1c1c}
.pnl-hd{display:flex;align-items:center;gap:7px;background:var(--panel-hd);padding:7px 10px;font-weight:600;cursor:pointer}
.pnl-hd::before{content:"";border:4px solid transparent;border-top-color:var(--dim);transform:translateY(2px);flex:none}
.pnl.collapsed .pnl-hd::before{transform:rotate(-90deg) translateX(-2px)}
.pnl.collapsed .pnl-bd{display:none}
.pnl-hd .grow{flex:1}
.pnl-hd label{font-weight:400;color:var(--dim);display:flex;align-items:center;gap:4px;cursor:pointer}
.pnl-bd{padding:10px}
.tabs{display:flex;border-bottom:1px solid var(--border);margin:-10px -10px 10px}
.tabs button{flex:1;background:none;border:0;border-bottom:2px solid transparent;padding:8px 4px;cursor:pointer;color:var(--dim)}
.tabs button.on{color:var(--text);border-bottom-color:var(--accent)}
.grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.tile{background:#262626;border:1px solid var(--border-soft);border-radius:5px;padding:5px;cursor:grab;display:flex;flex-direction:column;gap:4px}
.tile:hover{border-color:var(--accent)}
.thumb{position:relative;width:100%;aspect-ratio:3/2;border-radius:3px;background:#fff;overflow:hidden}
.thumb img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;pointer-events:none}
.grid.logos .thumb{aspect-ratio:1;background:#1a1a1a}
.grid.logos .thumb img{padding:8px}
.tile span{font-size:11px;color:var(--dim);text-align:center}
.tag{position:absolute;left:4px;top:4px;background:rgba(0,0,0,.65);color:#fff;font-size:9px;padding:1px 5px;border-radius:3px;z-index:2}
.note{color:var(--dim);margin:0 0 8px;font-size:11px;line-height:1.5}
.check-row{display:flex;align-items:center;gap:6px;margin:0 0 10px;color:var(--text);cursor:pointer}
.field{display:flex;flex-direction:column;gap:4px;margin-bottom:8px}
.field>label,.k{color:var(--dim);font-size:11px}
input[type=text],input[type=number],select{width:100%;background:var(--input);border:1px solid var(--border);border-radius:4px;padding:5px 7px;min-width:0}
input:focus,select:focus{outline:none;border-color:var(--accent)}
input:disabled{opacity:.45}
.card{background:#282828;border:1px solid var(--border-soft);border-radius:6px;padding:10px;margin-bottom:10px}
.wide{width:100%;margin-top:4px}
.upload{display:block;text-align:center;margin-top:10px}
.upload input{display:none}
.g2{display:grid;grid-template-columns:1fr 1fr;gap:6px 8px}
.pair{display:flex;align-items:center;gap:6px}
.pair .k{width:14px;flex:none;text-align:center}
.sub{color:var(--dim);font-size:10.5px;text-transform:uppercase;letter-spacing:.7px;margin:14px 0 7px}
.sub:first-child{margin-top:0}
input[type=range]{width:100%;accent-color:var(--accent)}
.empty-state{color:var(--dim);line-height:1.6}
.empty-state b{color:var(--text);font-weight:600}
.tipbox{background:#26303d;border:1px solid #34506f;border-radius:6px;padding:8px 10px;color:#c9dbf2;line-height:1.5;margin-top:12px}

/* ---------- layers ---------- */
.layers{max-height:340px;overflow-y:auto;margin:-10px}
.layer{display:flex;align-items:center;gap:3px;padding:2px 6px;border-bottom:1px solid #2a2a2a;cursor:pointer;height:28px}
.layer:hover{background:#383838}
.layer.sel{background:var(--sel)}
.layer.off .lname,.layer.off .lchip{opacity:.4}
.layer .ib{padding:2px}
.layer .ib svg{width:14px;height:14px}
.layer .ib.faint{opacity:.3}
.lchip{width:16px;height:16px;border:1px solid #111;border-radius:2px;flex:none;margin:0 4px}
.lname{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.layer.drop-above{box-shadow:inset 0 2px 0 var(--accent)}
.layer.drop-below{box-shadow:inset 0 -2px 0 var(--accent)}

/* ---------- work area ---------- */
.work{display:grid;grid-template-columns:20px minmax(0,1fr);grid-template-rows:auto 20px minmax(0,1fr);min-width:0;min-height:0;background:var(--paste)}
.doctabs{grid-column:1/-1;background:var(--bar);display:flex;border-bottom:1px solid #151515}
.doctab{padding:6px 16px;background:var(--panel);border-right:1px solid #151515;font-size:11px}
.corner{grid-column:1;grid-row:2;background:#2a2a2a;border-right:1px solid #1a1a1a;border-bottom:1px solid #1a1a1a}
canvas.ruler{display:block;background:#2a2a2a}
#rulerTop{grid-column:2;grid-row:2;width:100%;height:20px;border-bottom:1px solid #1a1a1a}
#rulerLeft{grid-column:1;grid-row:3;width:20px;height:100%;border-right:1px solid #1a1a1a}
.work.no-rulers{grid-template-columns:0 minmax(0,1fr);grid-template-rows:auto 0 minmax(0,1fr)}
.work.no-rulers .ruler,.work.no-rulers .corner{display:none}
.viewport{grid-column:2;grid-row:3;position:relative;overflow:hidden;min-width:0;min-height:0}
.viewport.over::after{content:"Drop it here";position:absolute;inset:10px;border:2px dashed var(--accent);border-radius:8px;display:grid;place-items:center;font-size:18px;font-weight:600;color:#fff;background:rgba(55,142,240,.12);pointer-events:none;z-index:6}
#overlay{position:absolute;inset:0;z-index:5;touch-action:none}
#overlay[data-tool=hand]{cursor:grab}
#overlay.grabbing{cursor:grabbing}
#overlay[data-tool=zoom]{cursor:zoom-in}
#overlay[data-tool=eyedropper]{cursor:crosshair}
#overlay[data-tool=name],#overlay[data-tool=number]{cursor:text}

/* ---------- status bar ---------- */
.status{display:flex;align-items:center;gap:16px;background:var(--bar);border-top:1px solid #111;padding:0 10px;color:var(--dim);font-size:11px;white-space:nowrap;overflow:hidden}
.status input{width:60px;padding:1px 5px;font-size:11px}
.status .hint{margin-left:auto;color:#b8c7da}

/* ---------- help dialog ---------- */
.modal{position:fixed;inset:0;background:rgba(0,0,0,.55);display:grid;place-items:center;z-index:100}
.modal-box{background:#333;border:1px solid #4a4a4a;border-radius:8px;width:min(480px,92vw);max-height:82vh;overflow:auto;padding:18px 20px;box-shadow:0 20px 60px rgba(0,0,0,.6)}
.modal-box h2{margin:0 0 12px;font-size:15px;display:flex;justify-content:space-between;align-items:center}
.modal-box table{width:100%;border-collapse:collapse}
.modal-box td{padding:5px 0;border-bottom:1px solid #404040}
.modal-box td:last-child{text-align:right;color:var(--dim)}

/* ---------- phones & small tablets ---------- */
@media (max-width:600px){
  html,body{overflow:auto;height:auto}
  body{grid-template-rows:auto auto auto auto}
  .menubar{flex-wrap:wrap;padding:4px 8px;min-height:32px}
  .doc-title,.tool-name,.status .hint{display:none}
  .optbar{min-height:42px}
  main{grid-template-columns:1fr}
  .toolbar{order:0;flex-direction:row;justify-content:center;border-right:0;border-bottom:1px solid #151515;padding:4px}
  .work{order:1;height:60vh;grid-template-columns:0 minmax(0,1fr);grid-template-rows:auto 0 minmax(0,1fr)}
  .work .ruler,.work .corner{display:none}
  .side.left{order:2;border:0}
  .side.right{order:3;border:0}
  .side{overflow:visible}
  .grid{grid-template-columns:repeat(3,1fr)}
}

.app-title{font-weight:600;margin-right:10px;white-space:nowrap}
.toast{position:fixed;left:50%;bottom:40px;transform:translateX(-50%);z-index:120;background:#5a2a2a;border:1px solid #a54848;color:#fff;padding:10px 16px;border-radius:8px;box-shadow:0 10px 30px rgba(0,0,0,.5);max-width:min(560px,90vw);text-align:center}
@media (max-width:980px){.app-title{display:none}}

.zoom-opts{display:flex;align-items:center;gap:6px;flex:none}
.zoom-opts .seg{flex:none}
.zoom-opts .seg button{padding:4px 10px;white-space:nowrap}
#overlay[data-tool=zoomout]{cursor:zoom-out}
.status{gap:12px}
.zbtn{background:#3b3b3b;border:1px solid #4c4c4c;border-radius:4px;width:22px;height:18px;line-height:14px;padding:0;cursor:pointer;color:var(--text)}
.zbtn:hover{background:#4a4a4a}
.status input#zoomPct{margin:0 -6px;text-align:center}

#bikeSel{font-weight:600}
/* embed=1: inside your website the site already shows your logo */
body.embed .logo, body.embed .app-title, body.embed .doc-title{display:none}

/* ---------- medium width (Ecwid description box, small tablets) ----------
   tools on the left, the artboard big on top,
   Libraries | Properties | Layers side by side underneath */
@media (min-width:601px) and (max-width:980px){
  body{grid-template-rows:auto auto minmax(0,1fr) 24px}
  .menubar{flex-wrap:wrap;row-gap:2px;padding:3px 8px}
  .doc-title,.tool-name,.status .hint{display:none}
  .optbar{flex-wrap:wrap;row-gap:4px;padding:4px 8px;overflow:visible}
  main{grid-template-columns:44px repeat(3,minmax(0,1fr));grid-template-rows:minmax(0,1fr) minmax(0,290px)}
  .toolbar{grid-column:1;grid-row:1/3}
  .work{grid-column:2/5;grid-row:1;grid-template-columns:0 minmax(0,1fr);grid-template-rows:auto 0 minmax(0,1fr)}
  .work .ruler,.work .corner{display:none}
  .side.left{grid-column:2;grid-row:2;border-right:1px solid #151515;border-top:1px solid #151515}
  .side.right{grid-column:3/5;grid-row:2;display:grid;grid-template-columns:1fr 1fr;overflow:hidden;border-left:0;border-top:1px solid #151515}
  .side.right .pnl{overflow-y:auto;min-height:0;border-left:1px solid #1c1c1c}
  .layers{max-height:none;margin:-10px}
  .tipbox{display:none}
}

/* Save button + "Saved!" note */
.btn.save{background:#ff6a00;border-color:#ff6a00;color:#fff;font-weight:700;margin-left:6px;padding:5px 16px}
.btn.save:hover{background:#ff8124}
.saved-back{position:fixed;inset:0;z-index:130;background:rgba(0,0,0,.55);display:grid;place-items:center;padding:16px}
.saved-back[hidden]{display:none}
.saved-card{background:#2b2b2b;border:1px solid #555;border-radius:12px;padding:22px 24px;max-width:400px;width:100%;text-align:center;box-shadow:0 20px 60px rgba(0,0,0,.6)}
.saved-check{width:52px;height:52px;margin:0 auto 8px;border-radius:50%;background:#2e9d4f;color:#fff;font:700 30px/52px Arial}
.saved-card h3{margin:0 0 8px;font-size:22px}
.saved-card p{margin:0 0 12px;line-height:1.5;color:#ddd}
.saved-card code{color:#ffb27a;word-break:break-all}
.saved-next{background:#363636;border-radius:8px;padding:10px 12px}
.saved-card .btn.save{margin:4px 0 0;font-size:15px;padding:8px 26px}

/* scroll bars on the drawing area */
.sb{position:absolute;z-index:5;background:rgba(0,0,0,.25)}
.sb-h{left:0;right:12px;bottom:0;height:12px}
.sb-v{top:0;bottom:12px;right:0;width:12px}
.sb .sb-thumb{position:absolute;background:#6a6a6a;border-radius:6px;border:2px solid transparent;background-clip:padding-box;cursor:default}
.sb .sb-thumb:hover,.sb .sb-thumb.drag{background-color:#8c8c8c}
.sb-h .sb-thumb{top:0;bottom:0}
.sb-v .sb-thumb{left:0;right:0}
.sb[hidden]{display:none}
