:root{--bg:#000;--panel:#0c0c0f4f;--panel2:#111216;--border:#1f2024;--text:#f0f2f7;--muted:#7c8292;--accent:#007aff;--radius:22px;font-family:"Inter",system-ui}
[data-theme="light"]{--bg:#f6f8fb;--panel:#ffffff85;--panel2:#f8f9fb;--border:#e6e9ef;--text:#0b1220;--muted:#55606e;--accent:#0a84ff}
*{box-sizing:border-box}
html{margin:0;padding:0;overflow-y:auto;overflow-x:hidden}
body{margin:0;padding:0;background:var(--bg);color:var(--text);transition:background .25s,color .25s;font-family:Inter,system-ui,Segoe UI,Roboto,Arial}
.layout{display:flex;position:relative;z-index:1;width:100%;min-height:100vh;}
.sidebar{width:300px;background:var(--panel);padding:26px;display:flex;flex-direction:column;gap:18px;border-right:1px solid var(--border);backdrop-filter:blur(5px);}
.sb-top{display:flex;align-items:center;justify-content:space-between;gap:12px}
.sb-title{font-size:1.35rem;font-weight:700;margin-bottom:8px;letter-spacing:-.3px}
.sb-block{background:var(--panel2);padding:14px;border-radius:14px;display:flex;flex-direction:column;gap:8px;box-shadow: 0 1px 3px #3c6593a3;}
.sb-label{font-size:.85rem;color:var(--muted)}
select,input[type="text"],input[type="password"]{padding:10px;border-radius:12px;background:var(--border);color:var(--text);border:1px solid var(--border)}
.small{font-size:.85rem;color:var(--muted)}
.content{flex:1;padding:26px;min-height:0;overflow:visible}
h1{font-size:1.6rem;margin:0 0 18px;letter-spacing:-.5px}
.tabs{display:flex;gap:12px;margin-bottom:22px;position:relative}
.tab{padding:10px 18px;border-radius:14px;background:var(--panel2);cursor:pointer;color:var(--muted);font-weight:600;border:1px solid var(--border);transition:.22s;position:relative;z-index:2}
.tab.active{color:#fff;background:var(--accent);border-color:var(--accent);box-shadow:0 8px 30px rgba(0,122,255,0.24)}
#panel{opacity:0;transform:translateY(8px);transition:.35s;background:var(--panel);padding:28px;border-radius:18px;border:1px solid var(--border);box-shadow:0 12px 40px rgba(0,0,0,0.19);backdrop-filter: blur(5px);}
#panel.active{opacity:1;transform:translateY(0)}
.row{display:flex;gap:14px}
.upload-box{border:2px dashed var(--border);padding:18px 36px;border-radius:14px;text-align:center;background:var(--panel);transition:.25s;cursor:pointer;display:inline-block;width:100%}
.upload-box:hover{border-color:var(--accent);box-shadow:0 8px 30px rgba(0,122,255,0.12)}
.upload-hint{color:var(--muted);margin-top:8px}
.progress{height:10px;background:linear-gradient(90deg,rgba(255,255,255,0.04),rgba(255,255,255,0.02));border-radius:12px;overflow:hidden;margin-top:16px}
.progress > i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--accent),#00d1ff);transition:width .3s}
.spinner{width:46px;height:46px;border-radius:50%;border:4px solid rgba(255,255,255,0.08);border-top-color:var(--accent);animation:spin 1s linear infinite;margin:auto}
@keyframes spin {
to{transform:rotate(360deg)}
}
.btn{padding: 12px 20px;border-radius: 15px;font-weight: 700;background: linear-gradient(180deg,#1da1ff,#006bff);border: 0;color: #fff;cursor: pointer; font-size: 1rem;}
.btn:active{transform:scale(0.98)}
.modal-backdrop{position:fixed;inset:0;background:linear-gradient(rgba(2,6,23,0.6),rgba(2,6,23,0.6));display:none;align-items:center;justify-content:center;z-index:60}
.modal{width:min(920px,94%);background:var(--panel2);padding:22px;border-radius:14px;border:1px solid var(--border);box-shadow:0 30px 80px rgba(0,0,0,0.7)}
.modal h3{margin:0 0 10px}
.result-block{background:var(--panel);padding:12px;border-radius:10px;border:1px solid var(--border);font-family:monospace;font-size:.95rem;color:var(--text);overflow-y:auto;overflow-x:hidden;word-wrap:break-word;white-space:pre-wrap;backdrop-filter: blur(5px);box-shadow: 0 7px 16px rgba(0, 0, 0, 0.08);}
.result-block::-webkit-scrollbar{width:8px}
.result-block::-webkit-scrollbar-track{background:var(--panel2);border-radius:4px}
.result-block::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}
.result-block::-webkit-scrollbar-thumb:hover{background:var(--muted)}
.close-btn{cursor:pointer}
.toast{position:fixed;right:20px;bottom:20px;background:var(--accent);color:#fff;padding:12px 18px;border-radius:999px;box-shadow:0 8px 30px rgba(0,0,0,0.4);display:none}
@media (max-width:900px) {
.layout{flex-direction:column}
.sidebar{width:100%;order:1}
.content{order:1;padding:20px}
}
.large-header{position:relative;width:100%;background:#333;overflow:visible;background-size:100% 100%;background-position:center center;background-image:url(bg_dark.jpg);min-height:100vh;}
[data-theme="light"] .large-header{background-image:url(bg_light.jpg)}
#canvas-points{display:block;position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:0}