:root{--bg: #07131a;--bg-elevated: #0d1c26;--ink: #e7f0f4;--muted: #8aa0ad;--line: rgba(231, 240, 244, .12);--accent: #3ecf8e;--accent-dim: rgba(62, 207, 142, .15);--danger: #ff6b6b;--radius: 4px;--font-display: "Instrument Serif", Georgia, serif;--font-body: "DM Sans", system-ui, sans-serif}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{min-height:100%}body{font-family:var(--font-body);color:var(--ink);background:radial-gradient(ellipse 80% 50% at 10% -10%,rgba(62,207,142,.12),transparent 55%),radial-gradient(ellipse 60% 40% at 90% 0%,rgba(56,120,160,.18),transparent 50%),linear-gradient(180deg,#0a1820 0%,var(--bg) 40%,#050d12 100%);background-attachment:fixed;line-height:1.5;-webkit-font-smoothing:antialiased}button,input,textarea{font:inherit;color:inherit}button{cursor:pointer;border:none;background:none}a{color:var(--accent)}.app{width:min(1120px,calc(100% - 2rem));margin:0 auto;padding:2.5rem 0 4rem}.hero{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:1.25rem;padding:2rem 0 2.25rem;border-bottom:1px solid var(--line);animation:rise .7s ease both}.brand{font-family:var(--font-display);font-size:clamp(3rem,8vw,4.75rem);font-weight:400;letter-spacing:-.02em;line-height:.95;margin-bottom:.75rem}.brand span{font-style:italic;color:var(--accent)}.tagline{max-width:34rem;color:var(--muted);font-size:1.05rem}.btn-upload{flex-shrink:0}.btn-upload svg{width:1rem;height:1rem}.panel-title{font-size:.75rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin:0}.library{margin-top:2rem;animation:rise .8s ease .1s both}.library-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1.25rem}.view-toggle{display:inline-flex;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.view-toggle button{display:inline-flex;align-items:center;gap:.4rem;padding:.5rem .85rem;color:var(--muted);font-size:.85rem;font-weight:600;background:transparent}.view-toggle button svg{width:.95rem;height:.95rem}.view-toggle button.is-active{background:var(--accent-dim);color:var(--accent)}.view-toggle button:not(.is-active):hover{color:var(--ink);background:#ffffff08}.empty{padding:2.5rem 1rem;border:1px solid var(--line);color:var(--muted);text-align:center}.empty-cta{display:grid;gap:1rem;justify-items:center}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:1rem}.video-card{text-align:left;border:1px solid var(--line);background:#0d1c26a6;border-radius:var(--radius);overflow:hidden;transition:border-color .15s ease,transform .15s ease,background .15s ease}.video-card:hover{border-color:#3ecf8e73;transform:translateY(-2px);background:#0d1c26e6}.card-media{aspect-ratio:3 / 4;background:#000;overflow:hidden}.card-media img,.card-media video{width:100%;height:100%;object-fit:cover;display:block}.card-body{padding:.75rem .85rem .9rem}.card-body h3{font-family:var(--font-display);font-size:1.1rem;font-weight:400;line-height:1.2;margin-bottom:.3rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.card-body p{color:var(--muted);font-size:.78rem}.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius)}.data-table{width:100%;border-collapse:collapse;min-width:780px;font-size:.9rem}.data-table th,.data-table td{padding:.75rem .85rem;text-align:left;border-bottom:1px solid var(--line);vertical-align:middle}.data-table th{font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:600;background:#0d1c26b3}.data-table tbody tr:hover{background:#ffffff05}.data-table tbody tr:last-child td{border-bottom:none}.table-thumb{width:48px;height:64px;border-radius:var(--radius);overflow:hidden;border:1px solid var(--line);background:#000;padding:0}.table-thumb img{width:100%;height:100%;object-fit:cover;display:block}.table-thumb-fallback{display:grid;place-items:center;width:100%;height:100%;color:var(--muted);font-size:.7rem}.table-title{color:var(--ink);font-weight:600;text-align:left}.table-title:hover{color:var(--accent)}.cell-url{display:inline-block;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:.75rem;color:#c5d7e0}.table-actions{display:flex;flex-wrap:wrap;gap:.35rem}.btn-tiny{padding:.35rem .6rem;font-size:.78rem}.upload-zone{position:relative;border:1px dashed var(--line);background:#0d1c26b3;padding:1.75rem;margin-top:1.15rem;transition:border-color .2s ease,background .2s ease,transform .25s ease}.upload-zone.is-drag{border-color:var(--accent);background:var(--accent-dim);transform:translateY(-2px)}.upload-zone input[type=file]{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;cursor:pointer}.upload-hint{pointer-events:none;text-align:center;padding:1.5rem .5rem}.upload-hint strong{display:block;font-size:1.05rem;margin-bottom:.35rem}.upload-hint span{color:var(--muted);font-size:.9rem}.field{margin-top:1.15rem;display:grid;gap:.4rem}.field-first{margin-top:0}.field label{font-size:.85rem;color:var(--muted)}.required{color:var(--accent)}.thumb-picker{position:relative;min-height:7.5rem;border:1px dashed var(--line);background:var(--bg);border-radius:var(--radius);overflow:hidden;display:flex;align-items:center;justify-content:center}.thumb-picker input[type=file]{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;cursor:pointer}.thumb-picker img{width:100%;height:7.5rem;object-fit:cover;display:block}.thumb-placeholder{color:var(--muted);font-size:.9rem;padding:1rem;text-align:center;pointer-events:none}.btn-small{margin-top:.55rem;padding:.45rem .8rem;font-size:.82rem}.field input{width:100%;padding:.7rem .85rem;background:var(--bg);border:1px solid var(--line);border-radius:var(--radius);outline:none;transition:border-color .15s ease}.field input:focus{border-color:var(--accent)}.file-chip{margin-top:1rem;padding:.65rem .85rem;background:var(--bg);border:1px solid var(--line);border-radius:var(--radius);font-size:.9rem;color:var(--muted);word-break:break-all}.file-chip em{color:var(--ink);font-style:normal}.actions{margin-top:1.25rem;display:flex;gap:.75rem;flex-wrap:wrap}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;padding:.7rem 1.15rem;border-radius:var(--radius);font-weight:600;font-size:.92rem;transition:transform .15s ease,opacity .15s ease,background .15s ease}.btn:disabled{opacity:.5;cursor:not-allowed}.btn:not(:disabled):hover{transform:translateY(-1px)}.btn-primary{background:var(--accent);color:#042016}.btn-ghost{border:1px solid var(--line);color:var(--ink)}.btn-ghost:hover{background:#ffffff0a}.btn-danger{color:var(--danger);border:1px solid rgba(255,107,107,.35)}.status{margin-top:.9rem;font-size:.9rem;color:var(--muted)}.status.error{color:var(--danger)}.status.ok{color:var(--accent)}.progress{margin-top:1rem;height:3px;background:var(--line);overflow:hidden;border-radius:999px}.progress>span{display:block;height:100%;width:40%;background:var(--accent);animation:slide 1.1s ease infinite}.toast{margin-top:1rem;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem 1rem;border:1px solid var(--line);border-radius:var(--radius);background:#0d1c26e6;font-size:.9rem}.toast.ok{border-color:#3ecf8e59;color:var(--accent)}.toast.error{border-color:#ff6b6b59;color:var(--danger)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#03080cb8;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:grid;place-items:center;padding:1rem;animation:fade .2s ease both}.modal{width:min(520px,100%);max-height:min(90vh,900px);overflow:auto;background:var(--bg-elevated);border:1px solid var(--line);border-radius:8px;padding:1.25rem 1.35rem 1.5rem;box-shadow:0 24px 60px #00000073;animation:rise .25s ease both}.modal-wide{width:min(720px,100%)}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1.15rem}.modal-head h2{font-family:var(--font-display);font-size:1.6rem;font-weight:400}.modal-close{width:2rem;height:2rem;border-radius:var(--radius);border:1px solid var(--line);font-size:1.35rem;line-height:1;color:var(--muted)}.modal-close:hover{color:var(--ink);background:#ffffff0a}.detail-body{display:grid;gap:1.15rem}.detail-preview{display:flex;justify-content:center;background:transparent}.detail-preview video{width:auto;height:auto;max-width:100%;max-height:55vh;background:#000;border-radius:var(--radius)}.meta{display:grid;gap:.85rem}.meta h3{font-family:var(--font-display);font-size:1.45rem;font-weight:400;margin-bottom:.15rem}.meta .sub{color:var(--muted);font-size:.85rem}.iframe-box{display:grid;gap:.45rem}.iframe-box label{font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.iframe-row{display:flex;gap:.5rem;align-items:stretch}.iframe-row textarea{flex:1;min-width:0;min-height:5.5rem;height:auto;resize:none;overflow:hidden;padding:.75rem .85rem;background:var(--bg);border:1px solid var(--line);border-radius:var(--radius);font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:.78rem;line-height:1.5;color:#c5d7e0;white-space:pre-wrap;word-break:break-all;overflow-wrap:anywhere}.iframe-row .btn{align-self:stretch;white-space:nowrap}.link-row{display:flex;flex-wrap:wrap;gap:.55rem}.link-row .action{display:inline-flex;align-items:center;gap:.4rem;padding:.5rem .75rem;border:1px solid var(--line);border-radius:var(--radius);background:#0d1c268c;color:var(--ink);text-decoration:none;font-size:.85rem;font-weight:500;transition:border-color .15s ease,background .15s ease,color .15s ease}.link-row .action:hover{border-color:#3ecf8e73;background:var(--accent-dim);color:var(--accent)}.link-row .action svg{width:.95rem;height:.95rem;flex-shrink:0}.link-row .action.danger{color:var(--danger);border-color:#ff6b6b59}.link-row .action.danger:hover{background:#ff6b6b1f;border-color:#ff6b6b8c;color:var(--danger)}@keyframes rise{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes slide{0%{transform:translate(-100%)}to{transform:translate(350%)}}
