:root{--info: var(--lb-info);--info-weak: var(--lb-color25);--info-weak2: var(--lb-color24);--primary: var(--lb-primary);--success: var(--lb-color05);--warning: var(--lb-color21);--danger: var(--lb-color02);--black1: var(--lb-fg1);--black2: var(--lb-fg3);--gray1: var(--lb-fg5);--gray2: var(--lb-fg6);--gray3: var(--lb-fg7);--gray4: var(--lb-line);--gray5: var(--lb-line-soft);--link: var(--lb-fg4);--red1: var(--lb-red1);--blue1: var(--lb-blue1);--red: var(--lb-color01);--green: var(--lb-color05);--bg-gray1: var(--lb-bg);--bg-gray3: var(--lb-bg-gray3);--bg-gray5: var(--lb-bg-gray5);--line: var(--lb-line-softer);--surface: var(--lb-surface);--color01: var(--lb-color01);--color02: var(--lb-color02);--color03: var(--lb-color03);--color04: var(--lb-color04);--color05: var(--lb-color05);--color06: var(--lb-color06);--color07: var(--lb-color07);--color08: var(--lb-color08);--color09: var(--lb-color09);--color10: var(--lb-color10);--color11: var(--lb-color11);--color12: var(--lb-color12);--color13: var(--lb-color13);--color14: var(--lb-color14);--color15: var(--lb-color15);--color16: var(--lb-color16);--color17: var(--lb-color17);--color18: var(--lb-color18);--color19: var(--lb-color19);--color20: var(--lb-color20);--color21: var(--lb-color21);--color22: var(--lb-color22);--color23: var(--lb-color23);--color24: var(--lb-color24);--color25: var(--lb-color25);--color26: var(--lb-color26);--color27: var(--lb-color27);--color28: var(--lb-color28);--radius: var(--lb-radius);--radius-lg: var(--lb-radius-lg);--radius-pill: var(--lb-radius-pill);--shadow-sm: var(--lb-shadow-card);--shadow: var(--lb-shadow-pop);--shadow-lg: var(--lb-shadow-layer);--font-base: var(--lb-font-sans);--font-brand: var(--lb-font-title)}*{box-sizing:border-box}html,body,#root{margin:0;padding:0;height:100%}body{font-family:var(--font-base);font-size:15px;color:var(--link);background:var(--bg-gray1);-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button{font-family:inherit;cursor:pointer}input,select,textarea{font-family:inherit;font-size:14px;color:var(--black2)}h1,h2,h3,h4{color:var(--black1);margin:0;font-weight:700}.btn{display:inline-flex;align-items:center;gap:6px;justify-content:center;border:1px solid var(--info);background:var(--info);color:#fff;border-radius:var(--radius);padding:8px 16px;font-size:14px;font-weight:600;transition:background .15s,border-color .15s,box-shadow .15s,opacity .15s;white-space:nowrap}.btn:hover{background:#4820cf;border-color:#4820cf}.btn:active{transform:translateY(.5px)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.ghost{background:var(--surface);color:var(--gray1);border-color:var(--gray5)}.btn.ghost:hover{background:var(--bg-gray5);color:var(--black2);border-color:var(--gray4)}.btn.outline{background:var(--surface);color:var(--info);border-color:var(--info)}.btn.outline:hover{background:var(--info-weak)}.btn.danger{background:var(--surface);color:var(--red1);border-color:var(--red1)}.btn.danger:hover{background:var(--red1);color:#fff}.btn.danger-solid{background:var(--red1);border-color:var(--red1);color:#fff}.btn.danger-solid:hover{background:#d92e2b;border-color:#d92e2b}.btn.pill{border-radius:var(--radius-pill)}.btn.sm{padding:4px 10px;font-size:13px}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:20px;box-shadow:var(--shadow-sm)}.input,input:where(:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]):not([type=file])),select,textarea{border:1px solid var(--gray5);border-radius:var(--radius);background:var(--surface);color:var(--black2);padding:8px 10px;outline:none;transition:border-color .15s,box-shadow .15s}.input::placeholder,input::placeholder,textarea::placeholder{color:var(--gray2);opacity:1}.input:-webkit-autofill,input:-webkit-autofill,textarea:-webkit-autofill{-webkit-text-fill-color:var(--black2);-webkit-box-shadow:0 0 0 1000px var(--surface) inset}.input:focus,input:focus,select:focus,textarea:focus{border-color:var(--info);box-shadow:0 0 0 3px var(--info-weak)}.muted{color:var(--gray2)}.error-text{color:var(--red1);font-size:13px}.hstack{display:flex;align-items:center;gap:8px}.signal{display:inline-flex;align-items:center;gap:5px;font-size:13px}.signal:before{content:"";width:8px;height:8px;border-radius:50%;background:var(--gray3)}.signal.on:before{background:var(--color11)}.signal.off:before{background:var(--gray3)}.signal.del:before{background:var(--color01)}.data-grid-wrap{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow:auto;box-shadow:var(--shadow-sm)}table.data-grid{width:100%;border-collapse:collapse;font-size:14px}table.data-grid thead th{text-align:left;padding:10px 12px;background:var(--bg-gray3);color:var(--black2);font-weight:700;white-space:nowrap;border-bottom:1px solid var(--line);position:sticky;top:0;-webkit-user-select:none;user-select:none}table.data-grid tbody td{padding:9px 12px;border-bottom:1px solid var(--line);color:var(--gray1)}table.data-grid tbody tr:hover{background:var(--bg-gray5)}table.data-grid tbody tr.clickable{cursor:pointer}table.data-grid tbody tr.selected{background:var(--bg-primary-weak, #eef0ff)}table.data-grid tbody tr.selected:hover{background:var(--bg-primary-weak, #e6e9ff)}table.data-grid tbody tr.selected td{border-bottom-color:var(--primary, #5629ee)}table.data-grid .empty{padding:28px;text-align:center;color:var(--gray2)}.badge{display:inline-block;padding:2px 9px;border-radius:var(--radius-pill);font-size:12px;color:#fff;white-space:nowrap;font-weight:600}.toolbar{display:flex;gap:8px;align-items:center;margin-bottom:14px;flex-wrap:wrap}.toolbar .spacer{flex:1}.filter-bar{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;margin-bottom:14px;box-shadow:var(--shadow-sm)}.filter-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:10px 20px}.filter-field{display:grid;grid-template-columns:88px 1fr;align-items:center;gap:10px}.filter-field>label{font-size:13px;color:var(--gray1);font-weight:600}.filter-field input,.filter-field select{width:100%;border:1px solid var(--gray5);border-radius:var(--radius);padding:7px 10px;background:var(--surface);color:var(--black2)}.filter-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--gray5);border-radius:6px;border:2px solid transparent;background-clip:padding-box}::-webkit-scrollbar-thumb:hover{background:var(--gray4)}.drive-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(172px,1fr));gap:12px}.drive-tile{display:flex;flex-direction:column;align-items:center;gap:6px;min-height:196px;padding:12px 10px;background:var(--white, #fff);border:1px solid var(--line);border-radius:6px;cursor:pointer;text-align:center;font:inherit;color:inherit;outline:2px solid transparent;outline-offset:-2px}.drive-tile{position:relative}.drive-tile:hover{background:var(--bg-gray5)}.drive-tile.selected{background:var(--bg-primary-weak, #eef0ff);outline-color:var(--primary, #5629ee);box-shadow:var(--shadow-sm, 0 1px 4px rgba(0, 0, 0, .12))}.drive-tile.selected:after{content:"¹3";position:absolute;top:6px;left:6px;width:18px;height:18px;border-radius:4px;background:var(--primary, #5629ee);color:#fff;font-size:12px;line-height:18px;text-align:center}.drive-tile:focus-visible{outline-color:var(--primary, #5629ee)}.drive-tile-folder{justify-content:center}.drive-tile-icon{font-size:44px;line-height:1}.drive-tile-thumb{display:grid;place-items:center;height:96px}.drive-tile-name{font-size:13px;color:var(--gray1);word-break:break-all;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.drive-tile-sub{font-size:11px;color:var(--gray2)}.drive-tile-badges{display:flex;gap:4px;flex-wrap:wrap;justify-content:center;margin-top:auto}.drive-tile.anchored{outline-style:dashed;outline-color:var(--warning, #fdc23e)}.drive-tile.anchored.selected{outline-style:solid;outline-color:var(--primary, #5629ee)}.drive-tile.anchored.selected:after{background:var(--warning, #fdc23e);color:#4a3a00}.drive-dropzone{position:relative}.drive-dropzone.dragover:after{content:"여기에 놓으면 이 폴더로 업로드합니다";position:absolute;top:0;right:0;bottom:0;left:0;z-index:5;display:grid;place-items:center;background:#5629ee0f;border:2px dashed var(--primary, #5629ee);border-radius:6px;color:var(--primary, #5629ee);font-size:14px;font-weight:600;pointer-events:none}.page-title{margin-bottom:18px;display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}.page-title h1{font-size:21px;letter-spacing:-.3px}.page-title p{margin:0;font-size:13px;color:var(--gray2)}.build-tag{font-family:ui-monospace,Cascadia Mono,Consolas,monospace;font-size:11px;letter-spacing:.02em;-webkit-user-select:text;user-select:text}.build-tag-dev{color:var(--warning);font-weight:700}.build-tag-date{opacity:.8}.no-menu{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;text-align:center}.no-menu h2{font-size:18px;margin:0}.no-menu p{margin:0}
