/* Laura Dawn Design: the editor's own styling. Warm dark, quiet, the picture is the point. */
:root{
  --bg:#0b0807; --panel:#141010; --panel2:#1b1614; --line:rgba(255,255,255,.08); --line2:rgba(255,255,255,.14);
  --ink:#f0e1ce; --ink2:rgba(240,225,206,.62); --ink3:rgba(240,225,206,.4);
  --copper:#bd6341; --rose:#dba98b; --cream:#f0e1ce; --accent:#dba98b;
  --mono:ui-monospace,Menlo,monospace; --sans:Inter,-apple-system,BlinkMacSystemFont,sans-serif;
}
*{box-sizing:border-box}
html,body{height:100%;margin:0;background:var(--bg);color:var(--ink);font:13px/1.4 var(--sans);-webkit-font-smoothing:antialiased}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
.app{height:100%;display:grid;grid-template-rows:52px minmax(0,1fr)}
.top{display:flex;align-items:center;gap:14px;padding:0 14px;background:var(--panel);border-bottom:1px solid var(--line)}
.brand{font-size:14px;white-space:nowrap} .brand b{font-weight:700} .ver{margin-left:8px;color:var(--ink3);font-size:11px}
.top-mid{display:flex;align-items:center;gap:10px;margin:0 auto}
.top-acts{display:flex;gap:6px;align-items:center}
.seg{display:flex;border:1px solid var(--line2);border-radius:99px;overflow:hidden}
.seg button{all:unset;cursor:pointer;padding:6px 12px;color:var(--ink2);font-size:12px}
.seg button[aria-pressed="true"]{background:var(--rose);color:#1a120e}
.zoom{display:flex;align-items:center;gap:2px;border:1px solid var(--line2);border-radius:99px;padding:0 4px}
.zoom button{all:unset;cursor:pointer;padding:5px 8px;color:var(--ink2);font-size:12px} .zoom output{min-width:44px;text-align:center;font-size:11px;color:var(--ink2)}
.pill{all:unset;cursor:pointer;padding:6px 13px;border-radius:99px;border:1px solid var(--line2);color:var(--ink);font-size:12px;white-space:nowrap}
.pill:hover{border-color:rgba(255,255,255,.3)} .pill.primary{background:var(--rose);color:#1a120e;border-color:var(--rose)}
.pill:disabled{opacity:.4;cursor:default}
.mini{all:unset;cursor:pointer;padding:3px 9px;border-radius:99px;border:1px solid var(--line2);font-size:11px;color:var(--ink2)} .mini:hover{color:var(--ink)}
.main{display:grid;grid-template-columns:272px minmax(0,1fr) 316px;min-height:0}
.side{background:var(--panel);overflow:auto;min-height:0}
.side.left{border-right:1px solid var(--line)} .side.right{border-left:1px solid var(--line)}
.panel-head{display:flex;align-items:center;justify-content:space-between;padding:12px 12px 6px;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink3)}
.hint{margin:0 12px 6px;font-size:11px;color:var(--ink3)}
.center{display:grid;grid-template-rows:minmax(0,1fr) 26px;min-height:0;background:#070505;position:relative}
.stage-wrap{position:relative;overflow:auto;display:grid;place-items:center;padding:30px}
.stage{position:relative;transform-origin:0 0;flex:none;box-shadow:0 30px 80px rgba(0,0,0,.6);background:#000}
.frame{position:absolute;inset:0;overflow:hidden;isolation:isolate;container-type:inline-size}
.overlay{position:absolute;inset:0;z-index:50;pointer-events:none}
.status{display:flex;align-items:center;gap:14px;padding:0 12px;font-size:11px;color:var(--ink3);border-top:1px solid var(--line);background:var(--panel)}
/* layers in the frame */
.ly{position:absolute;left:0;top:0;width:100%;height:100%}
.ly[data-fill="0"]{width:auto;height:auto}
.ly.hidden{display:none}
.ly > .ly-in{position:absolute;inset:0}
/* selection box and handles */
.sel{position:absolute;border:1px solid var(--rose);pointer-events:none;box-shadow:0 0 0 1px rgba(0,0,0,.5)}
.sel .h{position:absolute;width:10px;height:10px;background:#fff;border:1px solid var(--copper);border-radius:2px;pointer-events:auto;cursor:nwse-resize;transform:translate(-50%,-50%)}
.sel .h.n,.sel .h.s{cursor:ns-resize} .sel .h.e,.sel .h.w{cursor:ew-resize} .sel .h.ne,.sel .h.sw{cursor:nesw-resize}
.sel .lab{position:absolute;left:-1px;top:-24px;padding:3px 8px;border-radius:6px;background:var(--rose);color:#1a120e;font-size:11px;white-space:nowrap;pointer-events:none}
.guide{position:absolute;background:rgba(219,169,139,.9);pointer-events:none} .guide.v{width:1px;top:0;bottom:0} .guide.h{height:1px;left:0;right:0}
.hover-box{position:absolute;border:1px dashed rgba(219,169,139,.6);pointer-events:none}
/* sections list */
.sections{padding:0 8px 8px}
.sec-row{display:flex;align-items:center;gap:8px;padding:7px 8px;border-radius:8px;cursor:pointer;color:var(--ink2)}
.sec-row.on{background:var(--panel2);color:var(--ink)} .sec-row small{margin-left:auto;color:var(--ink3)}
.sec-row input{all:unset;flex:1;min-width:0}
/* layers list */
.layers{padding:0 8px 12px}
.ly-row{display:grid;grid-template-columns:14px 22px 34px minmax(0,1fr) auto;align-items:center;gap:8px;padding:6px 6px;border-radius:8px;cursor:pointer;color:var(--ink2)}
.ly-row.on{background:var(--panel2);color:var(--ink)} .ly-row.off{opacity:.5}
.ly-row .grip{color:var(--ink3);cursor:grab;font-size:12px} .ly-row.dragging{opacity:.4}
.ly-row .eye{all:unset;cursor:pointer;width:22px;height:22px;display:grid;place-items:center;color:var(--ink2);border-radius:6px} .ly-row .eye:hover{background:rgba(255,255,255,.06)}
.ly-row .th{width:34px;height:22px;border-radius:4px;background:#333;border:1px solid var(--line)}
.ly-row .nm{display:flex;flex-direction:column;min-width:0} .ly-row .nm b{font-weight:500;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap} .ly-row .nm small{font-size:10px;color:var(--ink3)}
.ly-row .op{font:11px var(--mono);color:var(--ink3)}
.ly-row.drop-above{box-shadow:0 -2px 0 var(--rose)} .ly-row.drop-below{box-shadow:0 2px 0 var(--rose)}
/* inspector */
.inspector{padding:12px}
.insp-title{display:flex;align-items:center;gap:10px;margin-bottom:10px} .insp-title .th{width:30px;height:22px;border-radius:4px;border:1px solid var(--line)}
.insp-title input{all:unset;flex:1;min-width:0;font-size:14px;font-weight:600}
.note{margin:0 0 12px;font-size:11.5px;line-height:1.45;color:var(--ink2)}
.f{margin:0 0 10px} .f label{display:flex;justify-content:space-between;font-size:11.5px;color:var(--ink2);margin-bottom:4px} .f output{font:11px var(--mono);color:var(--ink3)}
.f input[type=range]{width:100%;-webkit-appearance:none;appearance:none;height:18px;background:none;margin:0}
.f input[type=range]::-webkit-slider-runnable-track{height:3px;border-radius:2px;background:linear-gradient(90deg,var(--rose) var(--v,0%),rgba(255,255,255,.14) var(--v,0%))}
.f input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:13px;height:13px;border-radius:50%;background:#fff;border:1px solid var(--copper);margin-top:-5px}
.f .lab{font-size:11.5px;color:var(--ink2);margin-bottom:5px}
.f .seg{flex-wrap:wrap;border-radius:8px} .f .seg button{padding:5px 9px;font-size:11.5px;flex:1;text-align:center}
.f .seg button[aria-pressed="true"]{border-radius:0}
.f select,.f input[type=text],.f textarea{width:100%;background:var(--panel2);border:1px solid var(--line2);border-radius:8px;padding:6px 8px;color:var(--ink);font-size:12px}
.f textarea{min-height:64px;resize:vertical}
.f .sw{display:flex;gap:6px;flex-wrap:wrap} .f .sw button{all:unset;cursor:pointer;width:26px;height:26px;border-radius:50%;border:2px solid transparent} .f .sw button[aria-pressed="true"]{border-color:#fff}
.f .cf{display:flex;align-items:center;justify-content:space-between;gap:8px} .f input[type=color]{width:44px;height:26px;border:1px solid var(--line2);border-radius:6px;background:none;padding:0;cursor:pointer}
.f .tg{all:unset;cursor:pointer;padding:5px 10px;border-radius:99px;border:1px solid var(--line2);font-size:11.5px;color:var(--ink2);margin:0 6px 6px 0} .f .tg[aria-pressed="true"]{background:var(--rose);color:#1a120e;border-color:var(--rose)}
details.grp{border-top:1px solid var(--line);padding:8px 0 2px;margin-top:4px} details.grp summary{cursor:pointer;list-style:none;font-size:11.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink3);padding:4px 0 10px;display:flex;justify-content:space-between} details.grp summary::after{content:"+"} details.grp[open] summary::after{content:"−"}
.blend{display:grid;grid-template-columns:1fr 1fr;gap:4px} .blend button{all:unset;cursor:pointer;display:flex;align-items:center;gap:7px;padding:5px 8px;border-radius:8px;border:1px solid var(--line);font-size:11.5px;color:var(--ink2)} .blend button i{width:16px;height:10px;border-radius:3px} .blend button[aria-pressed="true"]{border-color:var(--rose);color:var(--ink)}
.acts{display:flex;gap:6px;flex-wrap:wrap;margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}
.bp-note{font-size:11px;color:var(--rose);margin:0 0 10px;padding:6px 8px;border:1px solid rgba(219,169,139,.3);border-radius:8px}
.bp-note button{all:unset;cursor:pointer;text-decoration:underline;margin-left:6px}
/* modal */
.modal{position:fixed;inset:0;z-index:100;background:rgba(0,0,0,.65);display:grid;place-items:center;padding:20px}
.modal[hidden]{display:none}
.box{width:min(720px,100%);max-height:90vh;overflow:auto;background:var(--panel);border:1px solid var(--line2);border-radius:14px;padding:18px;display:flex;flex-direction:column;gap:12px}
.box h3{margin:0;font-size:15px;font-weight:600} .box p{margin:0;color:var(--ink2);font-size:12.5px;line-height:1.5}
.box textarea{width:100%;height:40vh;background:#0b0807;border:1px solid var(--line2);border-radius:10px;padding:10px;font:11.5px/1.45 var(--mono);color:var(--ink)}
.box .row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}
.card{all:unset;cursor:pointer;display:flex;flex-direction:column;gap:6px;padding:10px;border-radius:10px;border:1px solid var(--line);background:var(--panel2)} .card:hover{border-color:var(--rose)}
.card .th{height:44px;border-radius:6px;background:#333} .card b{font-size:12px;font-weight:600} .card small{font-size:10.5px;color:var(--ink3)}
.cat{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink3);margin:6px 0 0}
/* preview mode */
.app.previewing .side,.app.previewing .status{display:none} .app.previewing .main{grid-template-columns:1fr}
.app.previewing .stage-wrap{padding:0;background:#000}
/* in-place text editing */
.ly[data-type="text"] .ly-in{cursor:text} .ly .txt:focus{outline:1px solid rgba(219,169,139,.6)}
/* tabs on the left */
.tabs{display:flex;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--panel);z-index:2}
.tabs button{all:unset;cursor:pointer;flex:1;text-align:center;padding:11px 0;font-size:12px;color:var(--ink3);border-bottom:2px solid transparent}
.tabs button[aria-pressed="true"]{color:var(--ink);border-bottom-color:var(--rose)}
.gallery{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:0 10px 12px}
.gallery .card{position:relative} .gallery .card .th{height:52px} .gallery .card.add .th{display:grid;place-items:center;font-size:22px;color:var(--ink3);background:transparent;border:1px dashed var(--line2)}
.gallery .card i,.preset i{position:absolute;top:4px;right:6px;font-style:normal;color:var(--ink3);cursor:pointer;font-size:14px} .gallery .card i:hover,.preset i:hover{color:#fff}
.secacts{margin-left:auto;display:flex;gap:3px} .sec-row small{margin-left:0}
/* presets row in the inspector */
.presets{display:flex;gap:6px;overflow-x:auto;padding:2px 0 10px;margin-bottom:6px;scrollbar-width:thin}
.preset{all:unset;cursor:pointer;position:relative;flex:none;width:78px;display:flex;flex-direction:column;gap:4px}
.preset .th{height:44px;border-radius:7px;border:1px solid var(--line);display:grid;place-items:center;color:var(--ink3);font-size:20px}
.preset:hover .th{border-color:var(--rose)} .preset small{font-size:10.5px;color:var(--ink2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.preset.add .th{border-style:dashed}
/* font picker */
.fontbtn{all:unset;cursor:pointer;display:flex;justify-content:space-between;width:100%;box-sizing:border-box;background:var(--panel2);border:1px solid var(--line2);border-radius:8px;padding:7px 9px;font-size:14px} .fontbtn i{font-style:normal;color:var(--ink3);font-size:11px}
.f{position:relative}
.fontmenu{position:absolute;left:0;right:0;top:100%;z-index:20;background:#1f1917;border:1px solid var(--line2);border-radius:10px;padding:6px;box-shadow:0 20px 50px rgba(0,0,0,.5);max-height:320px;overflow:auto}
.fontmenu button{all:unset;cursor:pointer;display:block;width:100%;box-sizing:border-box;padding:7px 9px;border-radius:7px;font-size:16px} .fontmenu button:hover{background:rgba(255,255,255,.06)} .fontmenu button small{font-size:11px;color:var(--ink3)}
/* colour controls with the palette */
.cpick{align-items:center} .cpick input[type=color]{width:26px;height:26px;border-radius:50%;padding:0;border:1px dashed var(--line2)}
.palette{align-items:center} .pswatch{position:relative} .pswatch input{width:28px;height:28px;border-radius:50%;padding:0;border:1px solid var(--line2);cursor:pointer;background:none} .pswatch i{position:absolute;top:-6px;right:-6px;font-style:normal;font-size:11px;background:#000;color:var(--ink2);border-radius:50%;width:14px;height:14px;display:none;place-items:center;cursor:pointer} .pswatch:hover i{display:grid}
/* the floating toolbar on the selection */
.tb{position:absolute;display:flex;align-items:center;gap:2px;padding:4px;border-radius:10px;background:#1f1917;border:1px solid var(--line2);box-shadow:0 12px 30px rgba(0,0,0,.5);pointer-events:auto;white-space:nowrap;z-index:5}
.tb button{all:unset;cursor:pointer;min-width:26px;height:26px;padding:0 7px;border-radius:6px;font-size:12px;color:var(--ink);text-align:center} .tb button:hover{background:rgba(255,255,255,.08)} .tb button.wide{max-width:150px;overflow:hidden;text-overflow:ellipsis}
.tb select{background:var(--panel2);color:var(--ink);border:1px solid var(--line2);border-radius:6px;height:26px;font-size:12px}
.tb .sep{width:1px;height:18px;background:var(--line2);margin:0 4px}
.tb .fontmenu{left:0;right:auto;width:220px;top:calc(100% + 4px)}
