/* Mading Digital: ruang admin dan installer. Token warna, radius, dan bayangan ada di style.css (lihat DESIGN.md). */
.boot{margin:0;padding:40px var(--gut);font-weight:700}

/* ---------- masuk, setup, installer ---------- */
.auth-head{padding:20px var(--gut) 0}
.auth{display:grid;justify-items:center;padding:20px 16px 56px}
.auth-card{width:min(440px,100%);padding:clamp(18px,4vw,28px);background:var(--white);border:2px solid var(--ink);border-radius:var(--r2)}
.auth-card.wide{width:min(620px,100%)}
.auth-card h1{margin:0 0 6px;font:800 clamp(24px,5vw,30px)/1.15 var(--font-d)}
.auth-card h2{margin:24px 0 10px;font:800 18px/1.2 var(--font-d)}
.auth-card>p{margin:0 0 16px;color:var(--grey)}
.auth-card .err p{margin:0}
.auth-card .err p+p{margin-top:4px}
.auth-card textarea{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:14px}
.checks{list-style:none;margin:0 0 16px;padding:0;display:grid;gap:6px}
.checks li{display:flex;gap:12px;padding:8px 12px;border:2px solid var(--ink);border-radius:var(--r1);background:var(--white);font-size:15px}
.checks strong{flex:none;min-width:72px}
.checks .ok{background:var(--mint)} .checks .bad{background:var(--coral)} .checks .warn{background:var(--sun)}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.btnrow{display:flex;flex-wrap:wrap;gap:10px;margin-top:8px}
.tog{display:inline-flex;align-items:center;gap:10px;min-height:var(--tap);font-weight:700;cursor:pointer}
.tog input{width:20px;height:20px;accent-color:var(--ink);flex:none}

/* ---------- bilah atas ---------- */
.adm-top{display:flex;flex-wrap:wrap;align-items:center;gap:10px 18px;padding:10px var(--gut);padding-top:max(10px,env(safe-area-inset-top));background:var(--sun);border-bottom:2px solid var(--ink)}
.adm-top .wordmark{font-size:24px}
.adm-top .wordmark small{margin-left:8px;font:700 15px var(--font-b);letter-spacing:0}
.adm-top .datebar{margin-left:0}
.adm-actions{display:flex;align-items:center;gap:8px;margin-left:auto}
.savechip{min-width:112px;padding:6px 10px;border:2px solid var(--ink);border-radius:var(--r1);background:var(--white);text-align:center;font:700 14px var(--font-b)}
.savechip:empty{visibility:hidden}
.savechip.saved{background:var(--mint)}
.savechip.error{background:var(--coral)}

/* ---------- tata letak ---------- */
.mtabs{display:none}
.adm-main{display:grid;grid-template-columns:340px minmax(0,1fr) 320px;gap:18px;align-items:start;padding:18px var(--gut) 64px}
.adm-main.wide{grid-template-columns:minmax(0,1fr) 320px}
.adm-main.wide .rail{display:none}
.rail,.insp{position:sticky;top:12px;max-height:calc(100dvh - 24px);overflow:auto;background:var(--white);border:2px solid var(--ink);border-radius:var(--r2)}
.canvas{min-width:0}

/* ---------- panel kiri ---------- */
.tabs{display:grid;grid-template-columns:repeat(3,1fr);position:sticky;top:0;z-index:2;background:var(--paper);border-bottom:2px solid var(--ink)}
.tabs button,.mtabs button{min-height:var(--tap);padding:0 6px;border:0;background:transparent;font:800 15px var(--font-d)}
.tabs button+button{border-left:2px solid var(--ink)}
.tabs button[aria-selected=true],.mtabs button[aria-selected=true]{background:var(--sun)}
.tabs button:focus-visible,.mtabs button:focus-visible{outline-offset:-4px}
.pane{padding:14px}
.pane-h{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}
.pane-h h2{margin:0;font:800 18px/1.2 var(--font-d)}
.dz{display:flex;flex-direction:column;align-items:center;gap:2px;padding:18px 12px;text-align:center;background:var(--paper);border:2px dashed var(--ink);border-radius:var(--r2);cursor:pointer}
.dz:hover,.dz.over{background:var(--mint)}
.dz svg{width:30px;height:30px;margin-bottom:4px}
.dz b{font:800 16px var(--font-d)}
.dz small{color:var(--grey);font-size:14px}
.filters{display:flex;flex-wrap:wrap;gap:6px;margin:14px 0 10px}
.filters button{min-height:var(--tap);padding:0 12px;border:2px solid var(--ink);border-radius:var(--r1);background:var(--white);font:700 14px var(--font-b)}
.filters button[aria-pressed=true]{background:var(--ink);color:var(--white)}
.plist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.pitem{display:flex;gap:10px;align-items:center;width:100%;min-height:var(--tap);padding:6px;text-align:left;background:var(--white);border:2px solid var(--ink);border-radius:var(--r1)}
.pitem:hover{background:var(--mint)}
.pitem.sel{background:var(--sun)}
.mini{position:relative;flex:none;width:42px;height:54px;overflow:hidden;background:var(--mint);border:2px solid var(--ink);border-radius:4px;display:grid;place-items:center;font:800 12px var(--font-d)}
.mini img,.mini canvas{width:100%;height:100%;object-fit:cover;display:block}
.pitem .t{flex:1;min-width:0}
.pitem .t b{display:block;font:800 15px/1.25 var(--font-d);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pitem .t span{display:block;font-size:14px;color:var(--grey)}
.st{flex:none;padding:3px 8px;border:2px solid var(--ink);border-radius:4px;font:800 12px/1.2 var(--font-b)}
.st.live{background:var(--mint)} .st.sched{background:var(--sun)} .st.ended{background:var(--white);color:var(--grey)}
.none{margin:6px 0;padding:14px;text-align:center;color:var(--grey);font-weight:700}
.eitem{display:flex;gap:10px;align-items:center;padding:8px;margin-bottom:8px;background:var(--white);border:2px solid var(--ink);border-radius:var(--r1)}
.av{flex:none;width:46px;height:46px;overflow:hidden;border:2px solid var(--ink);border-radius:50%;display:grid;place-items:center;font:800 16px var(--font-d);background:var(--mint)}
.av img{width:100%;height:100%;object-fit:cover;display:block}
.eitem .t{flex:1;min-width:0}
.eitem .t b{display:block;font:800 15px/1.2 var(--font-d)}
.eitem .t span{font-size:14px;color:var(--grey)}
.eitem .acts{display:flex;gap:6px}
.mh{margin:16px 0 6px;font:800 15px/1.2 var(--font-d)}
.setrow{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:12px}
.setrow .in{width:100px;text-align:center}
hr.sep{border:0;border-top:2px solid var(--ink);margin:20px 0}

/* ---------- kanvas papan ---------- */
.tools{display:flex;flex-wrap:wrap;align-items:center;gap:10px 12px;margin-bottom:12px}
.tools .grow{flex:1}
.tools .tog{padding:0 12px;border:2px solid var(--ink);border-radius:var(--r1);background:var(--white)}
.hint{margin:0 0 22px;max-width:70ch;color:var(--grey);font-size:15px}
.hint .touch{display:none}
@media (pointer:coarse){.hint .touch{display:inline}.hint .mouse{display:none}}
.board-wrap{position:relative}
.adm-board .card{cursor:grab;touch-action:none}
.adm-board .hit{cursor:grab}
.adm-board .card:hover{transform:rotate(var(--rot,0deg));z-index:var(--z,1)}
.adm-board .card.sel{z-index:900}
.adm-board .card.drag{z-index:950;cursor:grabbing}
.adm-board .card.drag .paper{box-shadow:max(5px,2.4cqw) max(5px,2.4cqw) 0 var(--ink)}
.adm-board .card.sel .paper{outline:3px solid var(--ink);outline-offset:4px}
.adm-board .card.ghost{opacity:.45}
.adm-board .card.ghost.sel{opacity:.9}
.adm-board .media *{pointer-events:none}
.adm-board .card:has(.hit:focus-visible){transform:rotate(var(--rot,0deg))}
.hd{position:absolute;display:none;z-index:6;width:max(20px,6.4cqw);height:max(20px,6.4cqw);background:var(--white);border:2px solid var(--ink)}
.hd::after{content:"";position:absolute;inset:-12px}
.card.sel .hd{display:block}
.hd.rs{right:-3cqw;bottom:-3cqw;cursor:nwse-resize;border-radius:4px;background:var(--sun)}
.hd.rt{right:-3cqw;top:-3cqw;cursor:grab;border-radius:50%}
.drop-veil{position:absolute;inset:0;z-index:1000;display:grid;place-items:center;padding:20px;background:var(--sun);border:3px dashed var(--ink);border-radius:var(--r2);font:800 clamp(20px,3vw,32px)/1.2 var(--font-d);text-align:center;pointer-events:none}

/* ---------- pengaturan kartu ---------- */
.insp{padding:14px}
.insp-h{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}
.insp-h h2{margin:0;font:800 18px/1.2 var(--font-d)}
.insp-close{display:none}
.insp .pv{display:flex;gap:10px;align-items:center;margin-bottom:14px}
.insp .pv .mini{width:56px;height:72px}
.insp .pv small{display:block;color:var(--grey);font-size:14px;word-break:break-all}
.presets{display:flex;flex-wrap:wrap;gap:6px;margin:-4px 0 14px}
.presets button{min-height:36px;padding:0 10px;border:2px solid var(--ink);border-radius:var(--r1);background:var(--white);font:700 14px var(--font-b)}
.presets button:hover{background:var(--mint)}
@media (pointer:coarse){.presets button{min-height:var(--tap)}}
.summary{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 14px;font-weight:700;font-size:15px}
.swatches{display:flex;gap:8px;margin-bottom:14px}
.swatches button{width:var(--tap);height:var(--tap);border:2px solid var(--ink);border-radius:var(--r1);background:var(--c)}
.swatches button[aria-pressed=true]{outline:3px solid var(--ink);outline-offset:2px}
.fld input[type=range]{padding:0;border:0;accent-color:var(--ink);min-height:var(--tap)}
.nudge{display:grid;grid-template-columns:repeat(4,var(--tap));gap:6px;margin-bottom:14px}
.btnrow.tight{margin:0 0 14px}
.insp-empty{margin:0;color:var(--grey)}
.insp-empty ul{margin:10px 0 0;padding-left:20px;font-size:15px}

/* ---------- dialog unggah ---------- */
.up-bulk{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px;padding:12px;margin-bottom:14px;background:var(--mint);border:2px solid var(--ink);border-radius:var(--r2)}
.up-bulk .fld{margin:0;flex:1 1 140px}
.up-list{display:flex;flex-direction:column;gap:12px}
.up-row{display:flex;gap:12px;align-items:flex-start;padding:10px;background:var(--white);border:2px solid var(--ink);border-radius:var(--r2)}
.up-row .mini{width:60px;height:76px}
.up-f{flex:1;min-width:0}
.up-f .in{margin-bottom:8px}
.up-dates{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.up-dates label{display:flex;align-items:center;gap:6px;font:700 14px var(--font-b)}
.up-dates .in{width:auto;margin:0}
.up-meta{font-size:14px;color:var(--grey)}
.bar{height:8px;margin-top:8px;border:2px solid var(--ink);border-radius:4px;overflow:hidden;background:var(--white);display:none}
.bar i{display:block;height:100%;width:0;background:var(--teal);transition:width .15s}
.up-row.busy .bar{display:block}
.up-msg{margin-top:4px;font-size:14px;font-weight:700}
.up-row.fail{background:var(--coral)}
.up-row.done{background:var(--mint)}
.eom-prev{display:flex;align-items:center;gap:12px;margin-bottom:14px}
.eom-prev .av{width:76px;height:76px;font-size:24px}

/* ---------- tablet: dua kolom ---------- */
@media (max-width:1240px){
  .adm-main,.adm-main.wide{grid-template-columns:minmax(0,1fr) 300px}
  .rail{grid-column:1/-1;position:static;max-height:none;order:3}
  .canvas{order:1} .insp{order:2}
  .adm-main.wide .rail{display:none}
}

/* ---------- ponsel: tab bagian dan lembar pengaturan dari bawah ---------- */
@media (max-width:860px){
  .adm-top{gap:8px 12px}
  .adm-actions{margin-left:0;width:100%;justify-content:space-between}
  .adm-top .datebar{width:100%}
  .mtabs{display:grid;grid-template-columns:repeat(4,1fr);position:sticky;top:0;z-index:40;background:var(--paper);border-bottom:2px solid var(--ink)}
  .mtabs button+button{border-left:2px solid var(--ink)}
  .adm-main,.adm-main.wide{grid-template-columns:minmax(0,1fr);padding:14px 14px 40px}
  .adm-main.sheet{padding-bottom:78dvh}
  .adm-main[data-m=board] .rail{display:none}
  .adm-main[data-m=rail] .canvas{display:none}
  .rail{grid-column:auto;order:0;border:0;background:transparent;border-radius:0;overflow:visible}
  .rail .tabs,#btnWide{display:none}
  .pane{padding:0}
  .insp{position:fixed;left:0;right:0;bottom:0;top:auto;z-index:1200;max-height:72dvh;border-width:2px 0 0;border-radius:var(--r2) var(--r2) 0 0;
    padding-bottom:max(16px,env(safe-area-inset-bottom));box-shadow:0 -4px 0 var(--ink);transform:translateY(110%);visibility:hidden;transition:transform .2s ease-out,visibility 0s .2s}
  .insp.open{transform:none;visibility:visible;transition:transform .2s ease-out}
  .insp-close{display:inline-flex}
  .insp-empty{display:none}
  .row2.keep{grid-template-columns:1fr 1fr}
}
@media (max-width:560px){
  .row2{grid-template-columns:1fr}
  .row2.keep{grid-template-columns:1fr 1fr}
  .up-row{flex-wrap:wrap}
  .up-row .mini{display:none}
  .tools .seg{width:100%} .tools .seg button{flex:1;justify-content:center;padding:0 8px}
  .tools .grow{display:none}
}
