:root{--bg:#0b1118;--surface:#111a24;--surface-2:#192635;--accent:#33d1ff;--text:#e6eef8;--muted:#8fa3bb;--danger:#f06666;--success:#78d9a4}*{box-sizing:border-box}body,html{margin:0;min-height:100%;font-family:Segoe UI,Inter,sans-serif;background:radial-gradient(circle at 10% 10%,#152433 0,var(--bg) 55%);color:var(--text)}a{color:var(--accent);text-decoration:none}.page{min-height:100vh;display:grid;place-items:center}.card,.page{padding:24px}.card{width:min(560px,100%);border:1px solid #28425b;background:linear-gradient(180deg,rgba(25,38,53,.96),rgba(17,26,36,.96));border-radius:16px;box-shadow:0 20px 40px rgba(0,0,0,.35)}.row{display:flex;gap:12px;flex-wrap:wrap}label{display:block;font-size:.9rem;color:var(--muted);margin-bottom:6px}button,input{border-radius:10px;border:1px solid #314f6d;background:#0f1720;color:var(--text);padding:10px 12px}input{width:100%}button{cursor:pointer;transition:transform .15s ease,border-color .15s ease}button:hover{border-color:var(--accent);transform:translateY(-1px)}button.primary{background:linear-gradient(120deg,#1f8eb0,#2db7d8);color:#061019;font-weight:700}button.danger{background:#2b1214;border-color:#6f2a31;color:#ffc6cb}button.danger:hover{border-color:#f06666}.error{color:var(--danger)}.success{color:var(--success)}.dropzone{border:2px dashed #3e617f;border-radius:14px;padding:28px;text-align:center;color:var(--muted);background:rgba(10,18,26,.8);transition:border-color .15s ease,background .15s ease,transform .15s ease}.dropzone.active{border-color:var(--accent);background:rgba(25,47,66,.85);transform:scale(1.01)}.topbar{width:100%;display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.shell{width:min(1100px,100%)}table{width:100%;border-collapse:collapse;margin-top:12px}td,th{text-align:left;border-bottom:1px solid #2a4258;padding:8px;font-size:.9rem}.viewerFrame{width:100%;height:80vh;border:1px solid #2f4a63;border-radius:12px;background:#000}.viewerCard{width:min(1500px,100%)}.viewerCard.maximized{position:fixed;inset:12px;width:auto;height:auto;z-index:1000;margin:0;border-color:#3d607f;display:flex;flex-direction:column}.viewerCard.maximized .viewerFrame{flex:1 1;height:auto;min-height:0}