:root{--bg:#11131a;--panel:#1a1d27;--panel2:#232735;--line:#2e3344;--text:#e7e9f0;--dim:#9aa0b4;--gold:#e3b341;--gold-d:#b9892b;--bad:#3a2326;--radius:10px;--minw:90px;--track:calc(25% - 6px)}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0;font-family:Pretendard,Malgun Gothic,system-ui,sans-serif;font-size:14px}header{z-index:20;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-bottom:1px solid var(--line);background:#11131af2;padding:12px 16px;position:sticky;top:0}h1{color:var(--text);align-items:center;gap:8px;margin:0;font-size:16px;display:flex}h1 .dot{background:var(--gold);border-radius:50%;width:9px;height:9px}.hbar{justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px;transition:margin-bottom .2s;display:flex}.barToggle{background:var(--panel2);color:var(--dim);border:1px solid var(--line);cursor:pointer;white-space:nowrap;border-radius:8px;flex:none;padding:6px 12px;font-size:12px}.barToggle:hover{border-color:var(--gold-d);color:var(--text)}.controls{flex-wrap:wrap;align-items:flex-end;gap:10px 14px;max-height:1200px;transition:max-height .2s,opacity .16s;display:flex;overflow:hidden}header.collapsed .hbar{margin-bottom:0}header.collapsed .controls{opacity:0;pointer-events:none;max-height:0}.field{flex-direction:column;gap:4px;display:flex}.field label{color:var(--dim);letter-spacing:.04em;font-size:11px}input[type=text]{background:var(--panel2);border:1px solid var(--line);color:var(--text);border-radius:8px;min-width:80px;padding:7px 9px;font-size:13px}input:focus{border-color:var(--gold-d);outline:none}.range{align-items:center;gap:6px;display:flex}input[type=range]{accent-color:var(--gold)}button{background:var(--panel2);color:var(--text);border:1px solid var(--line);cursor:pointer;border-radius:8px;padding:7px 11px;font-size:13px}button:hover{border-color:var(--gold-d)}button.primary{background:var(--gold);color:#1a1408;border-color:var(--gold);font-weight:600}select{background:var(--panel2);color:var(--text);border:1px solid var(--line);cursor:pointer;border-radius:8px;padding:7px 9px;font-size:13px}select:hover{border-color:var(--gold-d)}select:focus{border-color:var(--gold-d);outline:none}.chips{flex-wrap:wrap;gap:6px;padding:10px 16px 4px;display:flex}.chip{background:var(--panel);border:1px solid var(--line);color:var(--dim);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:999px;padding:5px 11px;font-size:12px}.chip:hover{color:var(--text)}.chip.active{background:var(--gold);color:#1a1408;border-color:var(--gold);font-weight:600}.meta{color:var(--dim);padding:6px 16px;font-size:12px}.meta code{color:var(--gold);background:var(--panel);border-radius:5px;padding:1px 6px}main{padding:8px 16px 60px}.grid{grid-template-columns:repeat(auto-fill, minmax(min(100%, max(var(--minw,90px), var(--track,25%))), 1fr));align-items:start;gap:8px;display:grid}.cell{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;min-height:160px;position:relative;overflow:hidden}.cell img{background:#0c0e14;width:100%;height:auto;display:block}@keyframes cellpulse{0%,to{background:var(--panel)}50%{background:var(--panel2)}}.cell:not(.on):not(.missing){animation:1.3s ease-in-out infinite cellpulse}.cell .num{color:#fff;background:#0009;border-radius:50px;padding:1px 5px;font-size:10px;position:absolute;bottom:5px;left:5px}.cell .cap{color:#fff;text-align:center;background:linear-gradient(#0000,#000000d9);padding:8px;font-size:12px;position:absolute;bottom:0;left:0;right:0}.cell.cover:hover{border-color:var(--gold)}.cell.missing{background:var(--bad)}.cell.missing img{display:none}.cell.missing:after{content:"없음";color:#a8606a;justify-content:center;align-items:center;font-size:11px;display:flex;position:absolute;inset:0}.hide-missing .cell.missing{display:none}.detailbar{flex-wrap:wrap;align-items:center;gap:12px;margin:4px 0 12px;display:flex}.dtitle{font-size:15px}.dtitle .badge{color:var(--dim);font-size:12px}.hint{color:var(--dim);padding:2px 0 8px;font-size:12px}.lb{z-index:50;background:#06070be6;flex-direction:column;justify-content:center;align-items:center;gap:10px;display:none;position:fixed;inset:0}.lb.open{display:flex}.lb img{border-radius:8px;max-width:90vw;max-height:78vh}.lb .bar{flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;max-width:92vw;display:flex}.lb .url{color:var(--dim);word-break:break-all;max-width:70vw;font-size:12px}.lb .nav{cursor:pointer;color:#fff;-webkit-user-select:none;user-select:none;background:#0006;padding:6px 16px;font-size:30px;position:absolute;top:50%;transform:translateY(-50%)}.lb .nav.prev{left:12px}.lb .nav.next{right:12px}.lb .close{cursor:pointer;color:var(--dim);font-size:14px;position:absolute;top:14px;right:18px}.empty{color:var(--dim);text-align:center;padding:40px}.app-container{grid-template-rows:50px 1fr;grid-template-columns:280px 1fr;height:100vh;display:grid}.header{background-color:#1a1a1a;border-bottom:1px solid #2a2a2a;grid-column:1/-1;justify-content:space-between;align-items:center;padding:0 20px;display:flex}.sidebar{background-color:#161616;border-right:1px solid #2a2a2a;grid-template-rows:1fr auto 180px;display:grid;overflow:hidden}.panel{border-bottom:1px solid #2a2a2a;padding:15px;overflow-y:auto}.panel:last-child{border-bottom:none}.panel h3{text-transform:uppercase;color:#888;letter-spacing:1px;margin-bottom:10px;font-size:.85rem}.path-input-wrapper input{color:#fff;background-color:#222;border:1px solid #333;border-radius:4px;width:100%;margin-bottom:8px;padding:8px 12px;font-size:.9rem}.path-input-wrapper button{color:#fff;cursor:pointer;background-color:#007acc;border:none;border-radius:4px;width:100%;padding:8px;font-weight:700}.path-input-wrapper button:hover{background-color:#0098ff}.viewer-area{background-color:#0d0d0d;grid-template-rows:1fr auto auto;display:grid;overflow:hidden}.main-canvas{justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.main-canvas img{object-fit:contain;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;max-width:100%;max-height:100%}.thumbnail-bar{white-space:nowrap;background-color:#141414;border-top:1px solid #2a2a2a;gap:10px;padding:12px;display:flex;overflow-x:auto}.thumbnail-item{cursor:pointer;background-color:#222;border:2px solid #0000;border-radius:4px;width:70px;height:70px;transition:all .1s;display:inline-block}.thumbnail-item:hover{border-color:#555}.thumbnail-item.active{border-color:#007acc}.status-bar{color:#aaa;background-color:#1a1a1a;border-top:1px solid #2a2a2a;justify-content:space-between;align-items:center;padding:8px 20px;font-size:.85rem;display:flex}.status-controls button{color:#aaa;cursor:pointer;background:0 0;border:none;padding:0 10px}.status-controls button:hover{color:#fff}.sidebar-sub-folder{border-radius:4px;padding:4px 0;transition:background .2s}.sidebar-sub-folder:hover{background:#ffffff0d}body.light-theme .sidebar-sub-folder:hover{background:#0000000d}@media (width<=768px){.app-container{flex-direction:column;height:100vh;display:flex;overflow:hidden}.header{height:50px;padding:0 10px}.header h2{font-size:1.1rem}.sidebar{border-bottom:1px solid #333;border-right:none;flex-direction:column;padding:5px 10px;display:flex;width:100%!important;height:auto!important}body.light-theme .sidebar{border-bottom:1px solid #ddd}.sidebar .panel{margin-bottom:5px;padding:8px}.sidebar .folder-tree{white-space:nowrap;-webkit-overflow-scrolling:touch;align-items:center;gap:10px;display:flex;overflow-x:auto}.sidebar .folder-tree h3{display:none}.sidebar .folder-tree div:first-of-type{font-size:.85rem;margin-bottom:0!important}.sidebar .folder-tree>div:last-of-type{gap:8px;flex-direction:row!important;display:flex!important}.sidebar-sub-folder{background:#2d2d2d;border-radius:20px!important;padding:6px 12px!important;font-size:.8rem!important}body.light-theme .sidebar-sub-folder{background:#e0e0e0}.sidebar .path-input-wrapper,.sidebar .history-list{display:none}.viewer-area{flex-direction:column;flex:1;height:calc(100vh - 150px);display:flex}.main-canvas{flex:1}.main-canvas img{max-width:95%;max-height:95%}.thumbnail-bar{gap:6px;height:70px;padding:5px}.thumbnail-item{width:50px;height:50px}.status-bar{height:35px;padding:0 8px;font-size:.75rem}.status-controls button{padding:4px 8px;font-size:.75rem}}
