/* GraySlides — Framer-dark theme (same language as GrayMockup) */
:root{
  --bg:#0e0f11; --panel:#151619; --panel2:#1b1d21; --line:#26282e;
  --txt:#e8eaee; --dim:#8b8f98; --acc:#0a99ff; --accd:#0879c9;
  --danger:#ff5c5c; --ok:#3ecf8e; --r:10px;
}
*{box-sizing:border-box; margin:0; padding:0}
html,body{height:100%}
body{background:var(--bg); color:var(--txt);
  font:14px/1.45 -apple-system,BlinkMacSystemFont,"Segoe UI",Inter,Roboto,sans-serif;
  -webkit-font-smoothing:antialiased; overflow:hidden}
.hidden{display:none!important}
button{font:inherit; color:inherit; background:none; border:0; cursor:pointer}
input,select,textarea{font:inherit; color:var(--txt)}
input[type=text],input[type=email],input[type=password],input[type=number],textarea,select{
  background:var(--panel2); border:1px solid var(--line); border-radius:8px;
  padding:7px 10px; outline:none; width:100%}
input:focus,textarea:focus,select:focus{border-color:var(--acc)}
select{appearance:none; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%238b8f98' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:right 10px center; padding-right:26px}
::selection{background:rgba(10,153,255,.35)}

/* scrollbars — floating pill */
*{scrollbar-width:thin; scrollbar-color:#3a3d45 transparent}
*::-webkit-scrollbar{width:8px; height:8px}
*::-webkit-scrollbar-track{background:transparent}
*::-webkit-scrollbar-thumb{background:#3a3d45; border-radius:99px; border:2px solid transparent; background-clip:content-box}
*::-webkit-scrollbar-thumb:hover{background:#4a4e58; border:2px solid transparent; background-clip:content-box}

/* buttons */
.btn{display:inline-flex; align-items:center; gap:6px; padding:8px 14px; border-radius:8px;
  font-weight:600; font-size:13px; white-space:nowrap; transition:background .12s}
.btn.sm{padding:6px 11px; font-size:12.5px}
.btn-acc{background:var(--acc); color:#fff}
.btn-acc:hover{background:var(--accd)}
.btn-ghost{background:var(--panel2); border:1px solid var(--line)}
.btn-ghost:hover{background:#22242a}
.btn-danger{background:transparent; border:1px solid #55302f; color:var(--danger)}
.btn-danger:hover{background:#2a1717}
.btn:disabled{opacity:.45; cursor:default}

/* sliders */
input[type=range]{-webkit-appearance:none; appearance:none; width:100%; height:18px; background:transparent}
input[type=range]::-webkit-slider-runnable-track{height:4px; border-radius:99px; background:#2c2f36}
input[type=range]::-webkit-slider-thumb{-webkit-appearance:none; width:14px; height:14px; margin-top:-5px;
  border-radius:50%; background:#fff; box-shadow:0 1px 4px rgba(0,0,0,.5)}
input[type=range]::-moz-range-track{height:4px; border-radius:99px; background:#2c2f36}
input[type=range]::-moz-range-thumb{width:14px; height:14px; border:0; border-radius:50%; background:#fff}

/* round color pickers */
input[type=color]{-webkit-appearance:none; appearance:none; width:26px; height:26px; padding:0;
  border:2px solid var(--line); border-radius:50%; background:none; cursor:pointer; flex:none}
input[type=color]::-webkit-color-swatch-wrapper{padding:0}
input[type=color]::-webkit-color-swatch{border:0; border-radius:50%}
input[type=color]::-moz-color-swatch{border:0; border-radius:50%}

/* checkboxes */
.crow{display:flex; align-items:center; gap:9px; cursor:pointer; padding:6px 0; font-size:13px}
.crow input{display:none}
.cbox{width:16px; height:16px; border-radius:5px; border:1.5px solid #3a3d45; background:var(--panel2); flex:none; position:relative}
.crow input:checked + .cbox{background:var(--acc); border-color:var(--acc)}
.crow input:checked + .cbox::after{content:""; position:absolute; left:4.5px; top:1.5px; width:4px; height:8px;
  border:solid #fff; border-width:0 2px 2px 0; transform:rotate(45deg)}

/* ============ login ============ */
#viewLogin{position:fixed; inset:0; display:flex; align-items:center; justify-content:center;
  background:radial-gradient(1200px 700px at 50% -10%, #16202c 0%, var(--bg) 55%)}
.login-card{width:340px; background:var(--panel); border:1px solid var(--line); border-radius:16px;
  padding:34px 30px; display:flex; flex-direction:column; gap:12px}
.login-logo{font-size:26px; font-weight:800; letter-spacing:-.5px; text-align:center}
.login-logo span{color:var(--acc)}
.login-sub{color:var(--dim); font-size:12.5px; text-align:center; margin:-8px 0 10px}
.login-err{color:var(--danger); font-size:12.5px; text-align:center; min-height:16px}

/* ============ shell ============ */
#viewApp{position:fixed; inset:0; display:flex; flex-direction:column}
#topbar{display:flex; align-items:center; gap:22px; padding:0 18px; height:52px;
  border-bottom:1px solid var(--line); background:var(--panel); flex:none}
.brand{font-weight:800; font-size:16px; letter-spacing:-.3px}
.brand span{color:var(--acc)}
#mainNav{display:flex; gap:4px}
.nav-btn{padding:7px 13px; border-radius:8px; color:var(--dim); font-weight:600; font-size:13px}
.nav-btn:hover{color:var(--txt)}
.nav-btn.active{background:var(--panel2); color:var(--txt)}
.top-right{margin-left:auto; display:flex; align-items:center; gap:10px}
#userChip{color:var(--dim); font-size:12.5px}
#pages{flex:1; overflow:auto; min-height:0}
.page{max-width:1400px; margin:0 auto; padding:26px 28px 60px}
.page-head{display:flex; align-items:center; justify-content:space-between; margin-bottom:20px}
.page-head h1{font-size:20px; font-weight:700; letter-spacing:-.3px}
.note{background:#1d2330; border:1px solid #2b3650; color:#9fb6da; padding:10px 14px;
  border-radius:10px; font-size:13px; margin-bottom:16px}

/* cards grid */
.cards{display:grid; grid-template-columns:repeat(auto-fill,minmax(230px,1fr)); gap:16px}
.card{background:var(--panel); border:1px solid var(--line); border-radius:14px; overflow:hidden;
  cursor:pointer; transition:border-color .12s; position:relative}
.card:hover{border-color:#3a3f4a}
.card .cthumb{width:100%; aspect-ratio:4/5; object-fit:cover; background:var(--panel2); display:block}
.card .cthumb.empty{display:flex; align-items:center; justify-content:center; color:var(--dim); font-size:12px}
.card .cbody{padding:10px 12px 11px}
.card .cname{font-weight:600; font-size:13.5px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.card .cmeta{color:var(--dim); font-size:11.5px; margin-top:2px}
.card .cdel{position:absolute; top:8px; right:8px; background:rgba(14,15,17,.75); border-radius:7px;
  padding:4px 8px; font-size:11.5px; color:#f3b0b0; opacity:0; transition:opacity .12s}
.card:hover .cdel{opacity:1}
.card .cbadge{position:absolute; top:8px; left:8px; background:rgba(14,15,17,.75); border-radius:6px;
  padding:3px 7px; font-size:10.5px; color:#cfd3da; font-weight:600}
.gadd{border:1.5px dashed #33363e; border-radius:14px; display:flex; flex-direction:column; gap:6px;
  align-items:center; justify-content:center; color:var(--dim); min-height:180px; cursor:pointer; font-size:13px}
.gadd:hover{border-color:var(--acc); color:var(--txt)}
.gadd b{font-size:26px; font-weight:400}

/* ============ brand page ============ */
.brand-cols{display:grid; grid-template-columns:1fr 1fr; gap:20px; align-items:start}
@media (max-width:980px){.brand-cols{grid-template-columns:1fr}}
.bsec{background:var(--panel); border:1px solid var(--line); border-radius:14px; padding:18px; margin-bottom:20px}
.bsec-head{font-weight:700; font-size:14px; margin-bottom:4px}
.bsec-hint{color:var(--dim); font-size:12px; margin-bottom:14px}
.frow{display:flex; flex-direction:column; gap:5px; margin-bottom:12px; font-size:12.5px; color:var(--dim)}
.frow input{color:var(--txt)}
.frow-inline{display:flex; gap:14px; align-items:center}
.crow2{display:flex; align-items:center; gap:8px; font-size:12.5px; color:var(--dim)}
.srow{display:flex; align-items:center; gap:10px; margin:7px 0; font-size:12.5px; color:var(--dim)}
.srow span{width:82px; flex:none}
.srow b{width:44px; text-align:right; font-weight:600; color:var(--txt); font-size:12px; flex:none}
.srow.grow{flex:1}
.colorrow{display:flex; align-items:center; gap:10px; padding:7px 0; border-bottom:1px solid var(--line)}
.colorrow:last-of-type{border-bottom:0}
.colorrow input[type=text]{width:130px; flex:none}
.colorrow .hexlbl{color:var(--dim); font-size:11.5px; width:64px}
.colorrow .vtag{display:flex; align-items:center; gap:6px; font-size:11.5px; color:var(--dim); cursor:pointer; margin-left:auto}
.colorrow .rm{color:var(--dim); padding:4px 7px; border-radius:6px}
.colorrow .rm:hover{color:var(--danger); background:#241618}
.stylerow{border-bottom:1px solid var(--line); padding:12px 0}
.stylerow:last-of-type{border-bottom:0}
.stylerow .sr-head{display:flex; align-items:center; gap:10px; margin-bottom:8px}
.stylerow .sr-name{font-weight:700; font-size:13px; width:80px}
.stylerow .sr-preview{color:var(--dim); font-size:11.5px; margin-left:auto}
.stylerow .sr-grid{display:grid; grid-template-columns:1fr 90px 90px; gap:8px; margin-bottom:8px}
.stylerow .sr-grid2{display:grid; grid-template-columns:1fr 1fr 1fr; gap:8px}
.mini-lbl{font-size:10.5px; color:var(--dim); display:block; margin-bottom:3px}
#brandLogoRow{display:flex; align-items:center; gap:12px}
#brandLogoImg{height:44px; max-width:160px; object-fit:contain; background:#fff; border-radius:8px; padding:4px}
.teamrow{display:flex; align-items:center; gap:10px; padding:7px 0; font-size:13px; border-bottom:1px solid var(--line)}
.teamrow:last-child{border-bottom:0}
.teamrow .trole{margin-left:auto; color:var(--dim); font-size:11.5px; background:var(--panel2);
  padding:2px 8px; border-radius:99px}

/* ============ editors ============ */
.editor{position:fixed; inset:0; background:var(--bg); display:flex; flex-direction:column; z-index:40}
.ed-top{display:flex; align-items:center; gap:12px; height:50px; padding:0 14px;
  border-bottom:1px solid var(--line); background:var(--panel); flex:none}
.ed-name{width:240px; background:transparent; border:1px solid transparent; font-weight:700; font-size:14px}
.ed-name:hover{border-color:var(--line)}
.ed-size{color:var(--dim); font-size:12px; white-space:nowrap}
.spacer{flex:1}
.save-state{color:var(--dim); font-size:11.5px}
.sel.sm{width:auto; padding:6px 26px 6px 10px; font-size:12.5px}
.ed-body{flex:1; display:flex; min-height:0}
.ed-left{width:210px; flex:none; border-right:1px solid var(--line); background:var(--panel);
  overflow-y:auto; padding:14px 12px; display:flex; flex-direction:column; gap:10px}
.ed-right{width:280px; flex:none; border-left:1px solid var(--line); background:var(--panel);
  overflow-y:auto; padding:14px}
.ed-canvas-wrap{flex:1; min-width:0; min-height:0; display:flex; align-items:center; justify-content:center;
  padding:26px; overflow:hidden; background:
    radial-gradient(800px 500px at 50% 0%, rgba(255,255,255,.025), transparent 60%)}
.ed-canvas-wrap canvas{max-width:100%; max-height:100%; border-radius:6px;
  box-shadow:0 8px 40px rgba(0,0,0,.55); background:#222}
.pane-head{font-size:11px; font-weight:700; letter-spacing:.8px; text-transform:uppercase; color:var(--dim)}
.addgrid{display:grid; grid-template-columns:1fr 1fr; gap:7px}
.addb{background:var(--panel2); border:1px solid var(--line); border-radius:9px; padding:9px 4px 7px;
  display:flex; flex-direction:column; align-items:center; gap:3px; font-size:15px}
.addb span{font-size:10.5px; color:var(--dim)}
.addb:hover{border-color:var(--acc)}
.layers{display:flex; flex-direction:column; gap:3px}
.layer{display:flex; align-items:center; gap:8px; padding:6px 8px; border-radius:7px; font-size:12.5px;
  cursor:pointer; color:var(--dim)}
.layer:hover{background:var(--panel2); color:var(--txt)}
.layer.sel{background:rgba(10,153,255,.14); color:var(--txt)}
.layer .lic{width:16px; text-align:center; flex:none; font-size:11px}
.layer .lname{flex:1; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.layer .ltag{font-size:9.5px; background:#1d3a26; color:#7fd8a2; border-radius:4px; padding:1px 5px}

/* props panel */
.egroup{border:1px solid var(--line); border-radius:11px; margin-bottom:12px; overflow:hidden}
.ehead{padding:9px 12px; font-size:11px; font-weight:700; letter-spacing:.7px; text-transform:uppercase;
  color:var(--dim); background:var(--panel2)}
.ebody{padding:11px 12px}
.prow{display:flex; align-items:center; gap:8px; margin-bottom:9px; font-size:12.5px}
.prow:last-child{margin-bottom:0}
.prow > span{color:var(--dim); width:74px; flex:none; font-size:12px}
.prow input[type=number]{width:64px; padding:5px 7px; font-size:12px}
.prow .half > div{flex:1; min-width:0}
.prow .half input[type=number]{width:100%}
.prow .half{display:flex; gap:6px; flex:1}
.prow textarea{min-height:64px; resize:vertical; font-size:12.5px}
.tokrow{display:flex; flex-wrap:wrap; gap:7px}
.tok{width:26px; height:26px; border-radius:50%; border:2px solid var(--line); cursor:pointer; flex:none}
.tok.sel{border-color:var(--acc); box-shadow:0 0 0 2px rgba(10,153,255,.35)}
.chips{display:flex; flex-wrap:wrap; gap:7px}
.chip{padding:5px 11px; border-radius:99px; background:var(--panel2); border:1px solid var(--line);
  font-size:12px; cursor:pointer}
.chip.sel{background:rgba(10,153,255,.16); border-color:var(--acc); color:#fff}
.btnrow{display:flex; gap:7px; flex-wrap:wrap}
.props-empty{color:var(--dim); font-size:12.5px; text-align:center; padding:30px 10px; line-height:1.6}

/* fill panel */
.fillfield{margin-bottom:16px}
.fillfield .fl{font-size:12px; font-weight:600; margin-bottom:6px; display:flex; justify-content:space-between}
.fillfield .fl .cnt{color:var(--dim); font-weight:400; font-size:11px}
.fillfield .fl .cnt.over{color:var(--danger)}
.imgslot{border:1.5px dashed #33363e; border-radius:10px; padding:14px; text-align:center;
  color:var(--dim); font-size:12px; cursor:pointer}
.imgslot:hover{border-color:var(--acc); color:var(--txt)}
.imgslot img{max-width:100%; max-height:110px; border-radius:6px; display:block; margin:0 auto 8px}

/* filmstrip */
#filmstrip{flex:none; height:118px; border-top:1px solid var(--line); background:var(--panel);
  display:flex; align-items:center; gap:10px; padding:0 14px; overflow-x:auto}
#stripSlides{display:flex; gap:10px; align-items:center}
.sslide{position:relative; flex:none; cursor:pointer; border-radius:8px; overflow:hidden;
  border:2px solid transparent}
.sslide canvas{display:block; height:86px}
.sslide.sel{border-color:var(--acc)}
.sslide .snum{position:absolute; left:5px; top:4px; background:rgba(0,0,0,.6); color:#fff;
  font-size:10px; padding:1px 6px; border-radius:5px; font-weight:600}
.strip-add{flex:none; width:70px; height:86px; border:1.5px dashed #33363e; border-radius:8px;
  color:var(--dim); font-size:18px; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:2px}
.strip-add span{font-size:10px}
.strip-add:hover{border-color:var(--acc); color:var(--txt)}

/* modal */
.modal{position:fixed; inset:0; background:rgba(5,6,8,.7); display:flex; align-items:center;
  justify-content:center; z-index:90}
.modal-card{background:var(--panel); border:1px solid var(--line); border-radius:16px;
  padding:22px; width:min(560px, 92vw); max-height:84vh; overflow-y:auto}
.modal-card h2{font-size:16px; margin-bottom:14px}
.mrow{margin-bottom:13px}
.mrow .ml{font-size:12px; color:var(--dim); margin-bottom:5px}
.mactions{display:flex; justify-content:flex-end; gap:9px; margin-top:18px}
.fmtgrid{display:grid; grid-template-columns:1fr 1fr; gap:9px}
.fmtopt{border:1.5px solid var(--line); border-radius:11px; padding:11px 12px; cursor:pointer}
.fmtopt:hover{border-color:#3a3f4a}
.fmtopt.sel{border-color:var(--acc); background:rgba(10,153,255,.08)}
.fmtopt b{display:block; font-size:13px}
.fmtopt i{font-style:normal; color:var(--dim); font-size:11.5px}
.tplpick{display:grid; grid-template-columns:repeat(auto-fill,minmax(130px,1fr)); gap:11px}
.tplpick .tp{border:1.5px solid var(--line); border-radius:10px; overflow:hidden; cursor:pointer}
.tplpick .tp:hover{border-color:var(--acc)}
.tplpick .tp img,.tplpick .tp canvas{width:100%; aspect-ratio:4/5; object-fit:cover; display:block; background:var(--panel2)}
.tplpick .tp div{padding:6px 8px; font-size:11.5px; font-weight:600; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}

/* toast */
.toast{position:fixed; bottom:26px; left:50%; transform:translateX(-50%); background:#22242a;
  border:1px solid var(--line); color:var(--txt); padding:10px 18px; border-radius:99px;
  font-size:13px; z-index:120; box-shadow:0 8px 30px rgba(0,0,0,.5)}
.toast.err{border-color:#5a2b2b; color:#ffb3b3}
