:root{
  --bg:#101318; --panel:#171b22; --panel2:#1d222b; --line:#2a303b; --text:#e6e9ef; --dim:#8b93a3;
  --accent:#f0b44c; --accent2:#4fd1a5; --blue:#7c9cff; --red:#ff6b6b;
  --r:10px;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%;background:var(--bg);color:var(--text);font:14px/1.5 "Pretendard","Apple SD Gothic Neo","Malgun Gothic",system-ui,sans-serif}
button,input,select,textarea{font:inherit;color:inherit}
.hidden{display:none!important}
a{color:inherit}

/* login */
.login{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:radial-gradient(ellipse at top,#1c2330,#0c0e12)}
.login form{width:320px;display:flex;flex-direction:column;gap:12px;text-align:center}
.login p{margin:-4px 0 10px;color:var(--dim)}
.login input{padding:12px 14px;border-radius:var(--r);border:1px solid var(--line);background:var(--panel);outline:none}
.login input:focus{border-color:var(--accent)}
.login button{padding:12px;border:0;border-radius:var(--r);background:var(--accent);color:#1a1205;font-weight:700;cursor:pointer}
.err{color:var(--red);min-height:20px;font-size:13px}

.brand{display:flex;align-items:center;gap:10px;font-size:17px;letter-spacing:.2px;white-space:nowrap}
.brand b{color:var(--accent)}
.brand.big{font-size:26px;justify-content:center}
.crate{width:22px;height:16px;border-radius:3px;background:linear-gradient(var(--accent) 0 30%,#c98a1e 30% 36%,var(--accent) 36%);box-shadow:inset 0 0 0 1px #0004;display:inline-block}
.brand.big .crate{width:32px;height:23px}

/* layout */
header{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:12px;padding:10px 16px;background:#101318ee;backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
.search{flex:1;max-width:560px}
.search input{width:100%;padding:9px 14px;border-radius:999px;border:1px solid var(--line);background:var(--panel);outline:none}
.search input:focus{border-color:var(--accent)}
header select{padding:8px 10px;border-radius:8px;border:1px solid var(--line);background:var(--panel)}
.hbtn{padding:8px 12px;border-radius:8px;border:1px solid var(--line);background:var(--panel2);text-decoration:none;cursor:pointer;white-space:nowrap}
.hbtn.ghost{background:transparent;color:var(--dim)}
.body{display:flex;min-height:calc(100vh - 57px)}
aside{width:250px;flex:none;border-right:1px solid var(--line);padding:14px 12px;position:sticky;top:57px;height:calc(100vh - 57px);overflow:auto}
main{flex:1;padding:14px 18px;min-width:0}

/* filters */
.fgroup{margin-bottom:18px}
.fgroup h4{margin:0 0 6px;font-size:12px;color:var(--dim);font-weight:600;letter-spacing:.4px;display:flex;justify-content:space-between}
.fgroup h4 button{border:0;background:none;color:var(--dim);cursor:pointer;font-size:11px}
.chip{display:flex;align-items:center;justify-content:space-between;gap:6px;width:100%;padding:5px 8px;margin:1px 0;border-radius:7px;border:0;background:none;text-align:left;cursor:pointer;color:var(--text)}
.chip:hover{background:var(--panel2)}
.chip.on{background:#f0b44c22;color:var(--accent)}
.chip .n{color:var(--dim);font-size:12px}
.chip.zero{opacity:.45}
.tagcloud{display:flex;flex-wrap:wrap;gap:4px}
.tagcloud .chip{width:auto;padding:3px 8px;border:1px solid var(--line);border-radius:999px;font-size:12px}
.seg{display:flex;gap:4px}
.seg .chip{justify-content:center;border:1px solid var(--line)}

/* grid */
.bar{display:flex;gap:10px;align-items:center;color:var(--dim);margin-bottom:12px;min-height:26px;flex-wrap:wrap}
.pill{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:999px;background:var(--panel2);color:var(--text);font-size:12px;cursor:pointer}
.pill:after{content:"✕";color:var(--dim);font-size:10px}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;cursor:pointer;transition:transform .12s,border-color .12s}
.card:hover{transform:translateY(-2px);border-color:#3a4252}
.thumb{aspect-ratio:1;background:repeating-conic-gradient(#1a1e25 0 25%,#151920 0 50%) 0 0/20px 20px;display:flex;align-items:center;justify-content:center;position:relative}
.thumb img{width:100%;height:100%;object-fit:contain}
.thumb .ph{color:var(--dim);font-size:12px}
.badge{position:absolute;top:8px;left:8px;padding:1px 7px;border-radius:6px;font-size:11px;font-weight:700;background:#000a}
.badge.d3{color:var(--accent2)} .badge.d2{color:var(--blue)} .badge.dm{color:var(--accent)}
.src{position:absolute;top:8px;right:8px;padding:1px 7px;border-radius:6px;font-size:11px;background:#000a;color:var(--dim)}
.cbody{padding:9px 10px 10px}
.cname{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cmeta{font-size:12px;color:var(--dim);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ctags{display:flex;gap:4px;flex-wrap:wrap;margin-top:6px;max-height:44px;overflow:hidden}
.t{font-size:11px;padding:1px 6px;border-radius:999px;background:var(--panel2);color:var(--dim)}
.t.p{background:#4fd1a522;color:var(--accent2)}
.more{text-align:center;margin:18px 0}
.more button{padding:9px 20px;border-radius:8px;border:1px solid var(--line);background:var(--panel2);cursor:pointer}
.empty{text-align:center;color:var(--dim);padding:60px 0}

/* drawer */
.drawer{position:fixed;inset:0;z-index:20;background:#000a;display:flex;justify-content:flex-end}
.dpanel{width:min(1100px,100%);height:100%;background:var(--panel);display:grid;grid-template-columns:1.3fr 1fr;position:relative}
.close{position:absolute;top:10px;right:12px;z-index:3;border:0;background:#0006;color:var(--text);width:32px;height:32px;border-radius:8px;cursor:pointer}
.preview{position:relative;background:#22262e;min-height:0}
.preview canvas{width:100%!important;height:100%!important;display:block}
.preview img{width:100%;height:100%;object-fit:contain;background:repeating-conic-gradient(#262a32 0 25%,#1f232a 0 50%) 0 0/24px 24px}
.ptools{position:absolute;left:10px;bottom:10px;display:flex;gap:6px;flex-wrap:wrap}
.ptools button,.ptools select{padding:5px 10px;border-radius:7px;border:1px solid #ffffff22;background:#0008;font-size:12px;cursor:pointer}
.ptools button.on{border-color:var(--accent);color:var(--accent)}
.pmsg{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--dim)}
.dinfo{overflow:auto;padding:18px 18px 40px;border-left:1px solid var(--line)}
.dinfo h2{margin:0 36px 2px 0;font-size:20px}
.dsub{color:var(--dim);font-size:12px;margin-bottom:14px}
.sec{margin-top:16px}
.sec h5{margin:0 0 6px;font-size:12px;color:var(--dim);font-weight:600}
.kv{width:100%;border-collapse:collapse;font-size:13px}
.kv td{padding:4px 0;border-bottom:1px solid var(--line);vertical-align:top}
.kv td:first-child{color:var(--dim);width:40%}
.files a{display:flex;justify-content:space-between;gap:8px;padding:6px 8px;border-radius:7px;background:var(--panel2);margin:4px 0;text-decoration:none;font-size:13px}
.files a span:last-child{color:var(--dim);white-space:nowrap}
.field{display:flex;flex-direction:column;gap:4px;margin:10px 0}
.field label{font-size:12px;color:var(--dim)}
.field input,.field textarea,.field select{padding:7px 10px;border-radius:8px;border:1px solid var(--line);background:var(--bg);outline:none}
.field input:focus,.field textarea:focus{border-color:var(--accent)}
.field textarea{min-height:64px;resize:vertical}
.tagedit{display:flex;flex-wrap:wrap;gap:5px;padding:6px;border:1px solid var(--line);border-radius:8px;background:var(--bg)}
.tagedit .tg{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:999px;background:var(--panel2);font-size:12px}
.tagedit .tg button{border:0;background:none;color:var(--dim);cursor:pointer;padding:0}
.tagedit input{flex:1;min-width:80px;border:0!important;padding:2px 4px!important;background:none!important}
.prow{display:grid;grid-template-columns:1fr 1.4fr auto;gap:6px;margin:4px 0}
.prow button{border:1px solid var(--line);background:var(--panel2);border-radius:7px;cursor:pointer;padding:0 9px}
.addp{border:1px dashed var(--line);background:none;border-radius:7px;padding:5px;cursor:pointer;color:var(--dim);width:100%;margin-top:4px}
.save{display:flex;gap:8px;align-items:center;margin-top:12px}
.save button{padding:8px 18px;border:0;border-radius:8px;background:var(--accent);color:#1a1205;font-weight:700;cursor:pointer}
.save button:disabled{opacity:.4;cursor:default}
.save span{color:var(--dim);font-size:12px}

@media (max-width:900px){
  aside{display:none}
  .dpanel{grid-template-columns:1fr;grid-template-rows:45vh 1fr}
  .dinfo{border-left:0;border-top:1px solid var(--line)}
  header .hbtn:not(.ghost){display:none}
}
