/* =====================================================
   Landscape Design Studio v3 — studio.css
   ===================================================== */
:root{
  --bg:#0d1117;--surf:#161b27;--surf2:#1e2638;--surf3:#26304a;
  --bdr:#2d3a55;--accent:#3ecf8e;--blue:#4fa8ff;--danger:#f05a5a;
  --warn:#f0a040;--txt:#e2e8f4;--txt2:#8896b3;--txt3:#3d4f70;
  --r:8px;--rl:14px;--font:'Segoe UI',system-ui,sans-serif;
  --tbh:52px;--sidew:240px;--propsw:224px;
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
body{font-family:var(--font)}

/* ── AUTH GATE ── */
.lds-gate{display:flex;align-items:center;justify-content:center;min-height:500px;background:var(--bg);font-family:var(--font)}
.lds-gate-card{background:var(--surf);border:1px solid var(--bdr);border-radius:var(--rl);padding:48px 40px;text-align:center;max-width:400px;color:var(--txt)}
.lds-gate-card h2{font-size:24px;margin-bottom:10px}
.lds-gate-card p{color:var(--txt2);margin-bottom:24px}

/* ── BUTTONS ── */
.lds-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:9px 18px;border:none;border-radius:var(--r);font:600 13px var(--font);cursor:pointer;transition:all .15s;white-space:nowrap;text-decoration:none}
.lds-btn-green{background:var(--accent);color:#000}.lds-btn-green:hover{background:#52e0a0}
.lds-btn-blue{background:var(--blue);color:#fff}.lds-btn-blue:hover{background:#6bbeff}
.lds-btn-outline{background:transparent;color:var(--txt);border:1px solid var(--bdr)}.lds-btn-outline:hover{background:var(--surf2)}
.lds-btn-danger{background:var(--danger);color:#fff}.lds-btn-danger:hover{background:#e04040}
.lds-btn-sm{padding:5px 11px;font-size:12px}

/* ── WRAP ── */
.lds-wrap{display:flex;flex-direction:column;height:100vh;min-height:600px;background:var(--bg);color:var(--txt);font-family:var(--font);font-size:13px;overflow:hidden}

/* ── TOPBAR ── */
.lds-topbar{display:flex;align-items:center;gap:12px;height:var(--tbh);background:var(--surf);border-bottom:1px solid var(--bdr);padding:0 14px;flex-shrink:0;z-index:20}
.lds-topbar-left{display:flex;align-items:center;gap:8px;flex-shrink:0}
.lds-logo{font-size:24px}
.lds-proj-name{font:600 15px var(--font);color:var(--txt);outline:none;min-width:80px;max-width:240px;cursor:text;border-bottom:1px dashed transparent;padding:2px 4px;border-radius:3px}
.lds-proj-name:focus{border-color:var(--accent);background:var(--surf2)}
.lds-topbar-center{display:flex;align-items:center;gap:4px;flex:1;flex-wrap:wrap}
.lds-topbar-right{margin-left:auto;flex-shrink:0}
.lds-tbtn{display:inline-flex;align-items:center;gap:4px;padding:6px 12px;background:var(--surf2);border:1px solid var(--bdr);border-radius:6px;color:var(--txt);font:500 12px var(--font);cursor:pointer;transition:all .15s;white-space:nowrap}
.lds-tbtn:hover{background:var(--surf3);border-color:var(--accent);color:var(--accent)}
.lds-tbtn-green{background:rgba(62,207,142,.12);border-color:rgba(62,207,142,.35);color:var(--accent)}.lds-tbtn-green:hover{background:rgba(62,207,142,.25)}
.lds-tbtn-blue{background:rgba(79,168,255,.12);border-color:rgba(79,168,255,.35);color:var(--blue)}.lds-tbtn-blue:hover{background:rgba(79,168,255,.25)}
.lds-sep{width:1px;height:26px;background:var(--bdr);margin:0 3px}
.lds-status{font-size:11px;color:var(--txt3);font-family:monospace}

/* ── BODY ── */
.lds-body{display:flex;flex:1;overflow:hidden;min-height:0}

/* ── SIDEBAR ── */
.lds-sidebar{width:var(--sidew);background:var(--surf);border-right:1px solid var(--bdr);display:flex;flex-direction:column;overflow:hidden;flex-shrink:0}
.lds-search-wrap{padding:10px;border-bottom:1px solid var(--bdr)}
.lds-search-wrap input{width:100%;padding:7px 10px;background:var(--surf2);border:1px solid var(--bdr);border-radius:6px;color:var(--txt);font:13px var(--font)}
.lds-search-wrap input:focus{outline:none;border-color:var(--accent)}
.lds-sidebar-scroll{flex:1;overflow-y:auto;padding-bottom:20px}
.lds-sidebar-scroll::-webkit-scrollbar{width:4px}
.lds-sidebar-scroll::-webkit-scrollbar-thumb{background:var(--bdr);border-radius:4px}

/* ── CATEGORY ── */
.lds-cat{margin-bottom:1px}
.lds-cat-hdr{display:flex;align-items:center;gap:7px;padding:9px 12px;cursor:pointer;color:var(--txt2);font:600 11px var(--font);text-transform:uppercase;letter-spacing:.7px;user-select:none;position:sticky;top:0;background:var(--surf);z-index:1;border-bottom:1px solid var(--bdr)}
.lds-cat-hdr:hover{color:var(--txt)}
.lds-arr{margin-left:auto;font-size:10px;transition:transform .2s}
.lds-cat-body{padding:8px}
.lds-cat-body.closed{display:none}

/* ── ELEMENT TILES ── */
.lds-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.lds-tile{
  display:flex;flex-direction:column;align-items:center;gap:4px;
  padding:8px 4px;background:var(--surf2);border:1px solid var(--bdr);
  border-radius:10px;cursor:grab;transition:all .15s;user-select:none;
  position:relative;
}
.lds-tile:hover{background:var(--surf3);border-color:var(--accent);transform:translateY(-3px);box-shadow:0 6px 18px rgba(62,207,142,.18)}
.lds-tile:active{cursor:grabbing;transform:scale(.95)}
.lds-tile-icon{width:52px;height:52px;display:flex;align-items:center;justify-content:center;filter:drop-shadow(0 2px 6px rgba(0,0,0,.5))}
.lds-tile-icon svg{width:52px;height:52px}
.lds-tile-icon img{width:52px;height:52px;object-fit:contain}
.lds-tile-lbl{font-size:10px;color:var(--txt2);text-align:center;line-height:1.2;max-width:62px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lds-del-icon-btn{position:absolute;top:2px;right:2px;background:var(--danger);color:#fff;border:none;border-radius:50%;width:16px;height:16px;font-size:10px;cursor:pointer;display:none;align-items:center;justify-content:center;line-height:1}
.lds-tile:hover .lds-del-icon-btn{display:flex}
.lds-upload-tile{display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 4px;background:var(--surf2);border:2px dashed var(--bdr);border-radius:10px;cursor:pointer;transition:all .15s;text-align:center}
.lds-upload-tile:hover{border-color:var(--blue);background:var(--surf3)}
.lds-upload-icon{width:40px;height:40px;border-radius:50%;background:var(--surf3);display:flex;align-items:center;justify-content:center;font-size:22px;color:var(--blue)}
.lds-upload-tile span{font-size:10px;color:var(--txt2)}

/* ── CANVAS AREA ── */
.lds-canvas-wrap{flex:1;display:flex;flex-direction:column;overflow:hidden;background:var(--bg);min-width:0}
.lds-ctoolbar{display:flex;align-items:center;gap:10px;padding:7px 14px;background:var(--surf);border-bottom:1px solid var(--bdr);flex-shrink:0;flex-wrap:wrap}
.lds-clabel{display:flex;align-items:center;gap:5px;color:var(--txt2);font-size:12px}
.lds-clabel select{background:var(--surf2);border:1px solid var(--bdr);color:var(--txt);border-radius:5px;padding:4px 7px;font-size:12px}
.lds-num-input{width:64px;background:var(--surf2);border:1px solid var(--bdr);color:var(--txt);border-radius:5px;padding:4px 6px;font-size:12px;text-align:center}
.lds-cbtn{padding:5px 11px;background:var(--surf2);border:1px solid var(--bdr);border-radius:5px;color:var(--txt);font-size:12px;cursor:pointer}
.lds-cbtn:hover{background:var(--surf3);border-color:var(--accent)}
.lds-viewport{flex:1;overflow:auto;position:relative;background:repeating-conic-gradient(#181f2e 0% 25%,#141a27 0% 50%) 0 0 / 24px 24px}
.lds-viewport::-webkit-scrollbar{width:8px;height:8px}
.lds-viewport::-webkit-scrollbar-track{background:var(--bg)}
.lds-viewport::-webkit-scrollbar-thumb{background:var(--bdr);border-radius:4px}
.lds-canvas-box{position:relative;display:inline-block;margin:24px;border-radius:6px;overflow:hidden;box-shadow:0 8px 48px rgba(0,0,0,.7);cursor:default}
#lds-bg,#lds-grid-canvas{display:block;position:absolute;top:0;left:0}
#lds-els{position:absolute;top:0;left:0;width:100%;height:100%}
.lds-drop-hint{position:absolute;bottom:10px;left:50%;transform:translateX(-50%);background:rgba(0,0,0,.6);color:var(--txt2);font-size:11px;padding:5px 14px;border-radius:20px;pointer-events:none;white-space:nowrap;z-index:5}

/* ── CANVAS ELEMENTS ── */
.lds-el{position:absolute;transform-origin:center center;cursor:move;user-select:none}
.lds-el img,.lds-el svg{display:block;width:100%;height:100%;pointer-events:none}
.lds-el.sel{outline:2px solid var(--accent);outline-offset:2px;border-radius:3px}
.lds-el.sel::after{content:'';position:absolute;inset:-5px;border:1.5px dashed var(--accent);border-radius:5px;opacity:.5;pointer-events:none}
/* resize corner handle */
.lds-rh{position:absolute;bottom:-5px;right:-5px;width:14px;height:14px;background:var(--accent);border-radius:50%;cursor:se-resize;z-index:20;border:2px solid #fff;box-shadow:0 2px 6px rgba(0,0,0,.4)}

/* ── DRAG GHOST ── */
.lds-ghost{position:fixed;pointer-events:none;z-index:9999;opacity:.8;transform:translate(-50%,-50%);border-radius:6px;width:80px;height:80px;display:flex;align-items:center;justify-content:center;filter:drop-shadow(0 4px 12px rgba(0,0,0,.6))}
.lds-ghost svg,.lds-ghost img{width:80px;height:80px;object-fit:contain}

/* ── RIGHT PANEL ── */
.lds-props{width:var(--propsw);background:var(--surf);border-left:1px solid var(--bdr);overflow-y:auto;flex-shrink:0;padding:14px 13px}
.lds-props::-webkit-scrollbar{width:4px}
.lds-props::-webkit-scrollbar-thumb{background:var(--bdr)}
.lds-props-title{font:700 11px var(--font);text-transform:uppercase;letter-spacing:.7px;color:var(--txt3);margin-bottom:14px;padding-bottom:8px;border-bottom:1px solid var(--bdr)}
.lds-no-sel{text-align:center;padding:32px 10px;color:var(--txt2)}
.lds-pg{margin-bottom:13px}
.lds-pg2{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.lds-pl{display:block;font-size:11px;color:var(--txt2);margin-bottom:4px}
.lds-pi{width:100%;padding:6px 8px;background:var(--surf2);border:1px solid var(--bdr);border-radius:5px;color:var(--txt);font-size:12px}
.lds-pi:focus{outline:none;border-color:var(--accent)}
.lds-range{width:100%;appearance:none;height:4px;background:var(--surf3);border-radius:2px;outline:none;cursor:pointer;margin-top:2px}
.lds-range::-webkit-slider-thumb{appearance:none;width:14px;height:14px;border-radius:50%;background:var(--accent);cursor:pointer}
.lds-color-input{width:100%;height:34px;border:1px solid var(--bdr);border-radius:5px;background:var(--surf2);cursor:pointer;padding:2px}
.lds-btn-row{display:flex;gap:6px}
.lds-pbtn{flex:1;padding:6px 8px;background:var(--surf2);border:1px solid var(--bdr);border-radius:5px;color:var(--txt);font-size:12px;cursor:pointer;transition:all .15s;width:100%}
.lds-pbtn:hover{background:var(--surf3);border-color:var(--accent)}
.lds-pbtn-danger{background:rgba(240,90,90,.1);border-color:rgba(240,90,90,.3);color:var(--danger)}
.lds-pbtn-danger:hover{background:var(--danger);color:#fff;border-color:var(--danger)}

/* ── MODALS ── */
.lds-overlay{position:fixed;inset:0;background:rgba(0,0,0,.75);z-index:1000;display:flex;align-items:center;justify-content:center;backdrop-filter:blur(4px)}
.lds-modal{background:var(--surf);border:1px solid var(--bdr);border-radius:var(--rl);padding:28px;min-width:340px;max-width:94vw;box-shadow:0 16px 64px rgba(0,0,0,.6);color:var(--txt)}
.lds-modal-wide{min-width:600px}
.lds-modal h3{font-size:18px;margin-bottom:18px}
.lds-mf{margin-bottom:14px}
.lds-mf label{display:block;font-size:12px;color:var(--txt2);margin-bottom:5px}
.lds-mi{width:100%;padding:8px 10px;background:var(--surf2);border:1px solid var(--bdr);border-radius:6px;color:var(--txt);font-size:13px}
.lds-mi:focus{outline:none;border-color:var(--accent)}
.lds-mbtns{display:flex;gap:8px;justify-content:flex-end;margin-top:18px}
.lds-proj-list{max-height:420px;overflow-y:auto;margin-bottom:8px}
.lds-prow{display:flex;align-items:center;gap:12px;padding:11px;border-radius:7px;cursor:pointer;transition:background .12s;border-bottom:1px solid var(--bdr)}
.lds-prow:hover{background:var(--surf2)}
.lds-pthumb{width:72px;height:54px;background:var(--surf2);border-radius:5px;overflow:hidden;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:22px}
.lds-pthumb img{width:100%;height:100%;object-fit:cover}
.lds-pinfo{flex:1}
.lds-pname{font:600 13px var(--font);margin-bottom:3px}
.lds-pmeta{font-size:11px;color:var(--txt2)}
.lds-pdel{background:none;border:none;color:var(--danger);font-size:18px;cursor:pointer;padding:5px;opacity:.5}
.lds-pdel:hover{opacity:1}

/* ── TOAST ── */
.lds-toast{position:fixed;bottom:28px;left:50%;transform:translateX(-50%) translateY(16px);background:var(--surf2);color:var(--txt);border:1px solid var(--bdr);border-radius:24px;padding:10px 24px;font-size:13px;z-index:2000;opacity:0;transition:all .3s;pointer-events:none;white-space:nowrap;box-shadow:0 8px 32px rgba(0,0,0,.5)}
.lds-toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.lds-toast.ok{border-color:var(--accent);background:rgba(62,207,142,.15)}
.lds-toast.err{border-color:var(--danger);background:rgba(240,90,90,.15)}

/* ── DASHBOARD ── */
.lds-dashboard{padding:28px;font-family:var(--font);color:var(--txt);background:var(--bg);min-height:400px}
.lds-dash-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}
.lds-dash-header h2{font-size:22px}
.lds-dash-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:18px}
.lds-dash-card{background:var(--surf);border:1px solid var(--bdr);border-radius:var(--rl);overflow:hidden;transition:transform .2s,box-shadow .2s}
.lds-dash-card:hover{transform:translateY(-4px);box-shadow:0 8px 32px rgba(0,0,0,.4)}
.lds-dash-thumb{height:130px;background:var(--surf2);display:flex;align-items:center;justify-content:center;font-size:40px;overflow:hidden}
.lds-dash-thumb img{width:100%;height:100%;object-fit:cover}
.lds-dash-info{padding:10px 13px}
.lds-dash-info strong{display:block;font-size:13px;margin-bottom:3px}
.lds-dash-info small{color:var(--txt2);font-size:11px}
.lds-dash-actions{padding:9px 13px;border-top:1px solid var(--bdr);display:flex;gap:7px}

/* ── RESPONSIVE ── */
@media(max-width:960px){.lds-props{display:none}}
@media(max-width:680px){:root{--sidew:180px}.lds-topbar-center{display:none}}
@media(max-width:480px){.lds-sidebar{display:none}}