/* =========================================================
   HASHLAB STUDIO v2.0
   Developer Security Toolkit
========================================================= */

:root{

--bg:#0d1117;
--sidebar:#11161d;
--surface:#161b22;
--surface2:#1f2630;

--border:#2d333b;

--primary:#E4B63F;
--primary-hover:#F0C654;

--success:#22c55e;
--danger:#ef4444;
--info:#3b82f6;

--text:#f5f7fa;
--muted:#8b949e;

--radius:18px;
--radius-sm:12px;

--shadow:
0 10px 30px rgba(0,0,0,.35);

--sidebar-width:280px;
--topbar-height:72px;

}

/* ====================================== */

*{

margin:0;
padding:0;
box-sizing:border-box;

}

html{

scroll-behavior:smooth;

}

body{

background:var(--bg);

color:var(--text);

font-family:
Inter,
sans-serif;

overflow:hidden;

}

a{

text-decoration:none;

color:inherit;

}

button{

font-family:inherit;

cursor:pointer;

}

input,
textarea,
select{

font-family:inherit;

outline:none;

}

img{

display:block;

max-width:100%;

}

/* ====================================== */

.layout{

display:flex;

height:100vh;

width:100%;

}

/* ====================================== */

.sidebar{

width:var(--sidebar-width);

background:var(--sidebar);

border-right:1px solid var(--border);

display:flex;

flex-direction:column;

overflow-y:auto;

overflow-x:hidden;

}

/* ====================================== */

.brand{

padding:30px;

display:flex;

align-items:center;

gap:15px;

border-bottom:1px solid var(--border);

}

.brand-logo{

width:55px;

height:55px;

border-radius:15px;

background:linear-gradient(
135deg,
#E4B63F,
#D39C00
);

display:flex;

align-items:center;

justify-content:center;

font-size:30px;

font-weight:800;

color:#111;

}

.brand h1{

font-size:25px;

font-weight:800;

}

.brand span{

display:block;

margin-top:3px;

font-size:13px;

color:var(--muted);

}

/* ====================================== */

.menu-group{

padding:18px;

}

.menu-title{

font-size:11px;

letter-spacing:2px;

text-transform:uppercase;

color:#6e7681;

margin-bottom:12px;

padding-left:10px;

}

.menu-item{

display:flex;

align-items:center;

gap:14px;

padding:14px 16px;

border-radius:12px;

transition:.25s;

margin-bottom:6px;

font-size:15px;

}

.menu-item:hover{

background:var(--surface);

}

.menu-item.active{

background:var(--primary);

color:#111;

font-weight:700;

}

.sidebar-footer{

margin-top:auto;

padding:25px;

border-top:1px solid var(--border);

font-size:13px;

color:var(--muted);

line-height:1.7;

}

/* ====================================== */

.main{

flex:1;

display:flex;

flex-direction:column;

overflow:hidden;

}

/* ====================================== */

.topbar{

height:var(--topbar-height);

display:flex;

align-items:center;

justify-content:space-between;

padding:0 35px;

border-bottom:1px solid var(--border);

background:#11161d;

}

.top-title{

font-size:25px;

font-weight:700;

}

.top-subtitle{

font-size:13px;

color:var(--muted);

margin-top:3px;

}

.search-box{

width:340px;

height:46px;

padding:0 18px;

background:var(--surface);

border:1px solid var(--border);

border-radius:12px;

color:white;

transition:.2s;

}

.search-box:focus{

border-color:var(--primary);

box-shadow:

0 0 0 3px rgba(228,182,63,.15);

}

/* ====================================== */

.content{

flex:1;

overflow:auto;

padding:35px;

background:var(--bg);

}

/* =========================================================
   HERO
========================================================= */

.hero{

display:flex;

justify-content:space-between;

align-items:center;

gap:40px;

margin-bottom:40px;

}

.hero-left{

flex:1;

}

.hero-right{

width:360px;

}

.hero-badge{

display:inline-flex;

align-items:center;

gap:10px;

padding:8px 18px;

border-radius:50px;

background:rgba(228,182,63,.12);

color:var(--primary);

font-size:13px;

font-weight:600;

margin-bottom:18px;

}

.hero h1{

font-size:52px;

font-weight:800;

line-height:1.1;

margin-bottom:18px;

}

.hero p{

font-size:16px;

line-height:1.9;

color:var(--muted);

max-width:720px;

}

/* =========================================================
   STATS
========================================================= */

.stats{

display:grid;

grid-template-columns:repeat(4,1fr);

gap:22px;

margin:40px 0;

}

.stat{

background:var(--surface);

border:1px solid var(--border);

border-radius:18px;

padding:28px;

transition:.25s;

position:relative;

overflow:hidden;

}

.stat::before{

content:"";

position:absolute;

left:0;

top:0;

width:100%;

height:4px;

background:linear-gradient(
90deg,
#E4B63F,
#FFD76B
);

}

.stat:hover{

transform:translateY(-5px);

border-color:var(--primary);

box-shadow:var(--shadow);

}

.stat strong{

display:block;

font-size:34px;

font-weight:800;

margin-bottom:10px;

}

.stat span{

color:var(--muted);

font-size:14px;

}

/* =========================================================
   SECTION TITLE
========================================================= */

.section-title{

display:flex;

align-items:center;

justify-content:space-between;

margin:45px 0 25px;

}

.section-title h2{

font-size:28px;

font-weight:700;

}

.section-title p{

font-size:14px;

color:var(--muted);

}

/* =========================================================
   TOOL GRID
========================================================= */

.tool-grid{

display:grid;

grid-template-columns:

repeat(auto-fill,minmax(300px,1fr));

gap:22px;

}

.tool-card{

background:var(--surface);

border:1px solid var(--border);

border-radius:18px;

padding:28px;

transition:.25s;

position:relative;

overflow:hidden;

}

.tool-card:hover{

transform:translateY(-6px);

border-color:var(--primary);

box-shadow:var(--shadow);

}

.tool-card::after{

content:"OPEN";

position:absolute;

right:24px;

bottom:22px;

font-size:11px;

letter-spacing:2px;

font-weight:700;

color:var(--primary);

opacity:.8;

}

.tool-icon{

font-size:42px;

margin-bottom:22px;

}

.tool-card h3{

font-size:21px;

font-weight:700;

margin-bottom:12px;

}

.tool-card p{

line-height:1.8;

font-size:15px;

color:var(--muted);

}

/* =========================================================
   CARD
========================================================= */

.card{

background:var(--surface);

border:1px solid var(--border);

border-radius:18px;

padding:30px;

margin-bottom:25px;

}

/* =========================================================
   FORM
========================================================= */

.input,

textarea,

select{

width:100%;

background:#0f1318;

border:1px solid var(--border);

border-radius:14px;

padding:15px 18px;

font-size:15px;

color:white;

transition:.2s;

}

textarea{

resize:vertical;

min-height:160px;

font-family:"JetBrains Mono",monospace;

}

.input:focus,

textarea:focus,

select:focus{

border-color:var(--primary);

box-shadow:

0 0 0 4px rgba(228,182,63,.12);

}

/* =========================================================
   BUTTON
========================================================= */

.btn{

display:inline-flex;

align-items:center;

justify-content:center;

gap:10px;

padding:14px 26px;

border:none;

border-radius:14px;

background:var(--primary);

color:#111;

font-size:15px;

font-weight:700;

transition:.25s;

}

.btn:hover{

background:var(--primary-hover);

transform:translateY(-2px);

}

.btn-secondary{

background:var(--surface2);

color:white;

border:1px solid var(--border);

}

.btn-secondary:hover{

border-color:var(--primary);

}

/* =========================================================
   RESULT
========================================================= */

.result{

margin-top:25px;

background:#10151b;

border:1px solid var(--border);

border-radius:16px;

padding:22px;

}

.result pre{

font-family:"JetBrains Mono",monospace;

font-size:14px;

line-height:1.8;

white-space:pre-wrap;

word-break:break-all;

}

/* =========================================================
   TABLE
========================================================= */

.table{

width:100%;

border-collapse:collapse;

margin-top:20px;

background:var(--surface);

border-radius:16px;

overflow:hidden;

}

.table thead{

background:#10151b;

}

.table th{

padding:16px;

text-align:left;

font-size:13px;

text-transform:uppercase;

letter-spacing:1px;

color:var(--muted);

border-bottom:1px solid var(--border);

}

.table td{

padding:16px;

border-bottom:1px solid var(--border);

}

.table tr:last-child td{

border-bottom:none;

}

.table tbody tr{

transition:.2s;

}

.table tbody tr:hover{

background:rgba(255,255,255,.03);

}

/* =========================================================
   BADGE
========================================================= */

.badge{

display:inline-flex;

align-items:center;

padding:6px 12px;

border-radius:50px;

font-size:12px;

font-weight:700;

}

.badge-success{

background:rgba(34,197,94,.15);

color:#22c55e;

}

.badge-danger{

background:rgba(239,68,68,.15);

color:#ef4444;

}

.badge-info{

background:rgba(59,130,246,.15);

color:#3b82f6;

}

.badge-warning{

background:rgba(228,182,63,.15);

color:#E4B63F;

}

/* =========================================================
   ALERT
========================================================= */

.alert{

padding:18px;

border-radius:14px;

margin:20px 0;

border:1px solid transparent;

}

.alert-success{

background:rgba(34,197,94,.08);

border-color:#22c55e;

}

.alert-danger{

background:rgba(239,68,68,.08);

border-color:#ef4444;

}

.alert-info{

background:rgba(59,130,246,.08);

border-color:#3b82f6;

}

/* =========================================================
   LOADING
========================================================= */

.loading{

display:flex;

flex-direction:column;

align-items:center;

justify-content:center;

padding:60px;

}

.spinner{

width:46px;

height:46px;

border:4px solid rgba(255,255,255,.08);

border-top:4px solid var(--primary);

border-radius:50%;

animation:spin .9s linear infinite;

margin-bottom:15px;

}

@keyframes spin{

to{

transform:rotate(360deg);

}

}

/* =========================================================
   MODAL
========================================================= */

.modal{

position:fixed;

left:0;

top:0;

width:100%;

height:100%;

display:none;

align-items:center;

justify-content:center;

background:rgba(0,0,0,.65);

backdrop-filter:blur(4px);

z-index:9999;

}

.modal.show{

display:flex;

}

.modal-box{

width:90%;

max-width:700px;

background:var(--surface);

border:1px solid var(--border);

border-radius:20px;

padding:30px;

box-shadow:var(--shadow);

}

/* =========================================================
   TOAST
========================================================= */

.toast{

position:fixed;

right:25px;

bottom:25px;

padding:16px 20px;

border-radius:14px;

background:#111;

border:1px solid var(--border);

display:none;

z-index:99999;

box-shadow:var(--shadow);

}

.toast.show{

display:block;

animation:toast .35s ease;

}

@keyframes toast{

from{

opacity:0;

transform:translateY(20px);

}

to{

opacity:1;

transform:none;

}

}

/* =========================================================
   SCROLLBAR
========================================================= */

::-webkit-scrollbar{

width:10px;

height:10px;

}

::-webkit-scrollbar-track{

background:transparent;

}

::-webkit-scrollbar-thumb{

background:#333b45;

border-radius:30px;

}

::-webkit-scrollbar-thumb:hover{

background:#555;

}

/* =========================================================
   UTILITIES
========================================================= */

.text-center{

text-align:center;

}

.mt-1{margin-top:10px;}
.mt-2{margin-top:20px;}
.mt-3{margin-top:30px;}
.mt-4{margin-top:40px;}

.mb-1{margin-bottom:10px;}
.mb-2{margin-bottom:20px;}
.mb-3{margin-bottom:30px;}
.mb-4{margin-bottom:40px;}

.d-flex{

display:flex;

}

.align-center{

align-items:center;

}

.justify-between{

justify-content:space-between;

}

.gap{

gap:20px;

}

/* =========================================================
   RESPONSIVE
========================================================= */

@media(max-width:1200px){

.stats{

grid-template-columns:repeat(2,1fr);

}

}

@media(max-width:900px){

.sidebar{

position:fixed;

left:-280px;

top:0;

bottom:0;

transition:.3s;

z-index:1000;

}

.sidebar.open{

left:0;

}

.hero{

flex-direction:column;

align-items:flex-start;

}

.hero-right{

width:100%;

}

.tool-grid{

grid-template-columns:1fr;

}

.topbar{

padding:0 20px;

}

.search-box{

width:180px;

}

.content{

padding:20px;

}

}

@media(max-width:600px){

.stats{

grid-template-columns:1fr;

}

.hero h1{

font-size:34px;

}

.top-title{

font-size:20px;

}

.search-box{

display:none;

}

}

input[type=file]{

width:100%;

padding:18px;

background:#11161d;

border:1px dashed var(--border);

border-radius:14px;

color:#fff;

cursor:pointer;

transition:.25s;

}

input[type=file]:hover{

border-color:var(--primary);

background:#171d26;

}

/* ==========================================
   HASHLAB COMPONENTS
========================================== */

.card{
    background:#181818;
    border:1px solid #2f2f2f;
    border-radius:14px;
    padding:22px;
    margin-bottom:20px;
}

.card h2{
    margin:0 0 18px;
    color:#fff;
    font-size:22px;
    font-weight:700;
}

.input,
select,
textarea{
    width:100%;
    background:#101010;
    color:#fff;
    border:1px solid #333;
    border-radius:10px;
    padding:12px 14px;
    font-size:15px;
    transition:.2s;
    box-sizing:border-box;
}

.input:focus,
select:focus,
textarea:focus{
    outline:none;
    border-color:#ffb300;
    box-shadow:0 0 0 3px rgba(255,179,0,.15);
}

textarea{
    resize:vertical;
    min-height:150px;
    font-family:Consolas, monospace;
}

.btn{
    display:inline-block;
    padding:12px 24px;
    border:none;
    border-radius:10px;
    background:#ffb300;
    color:#111;
    font-weight:700;
    cursor:pointer;
    transition:.2s;
}

.btn:hover{
    background:#ffc533;
    transform:translateY(-1px);
}

.table{
    width:100%;
    border-collapse:collapse;
}

.table td{
    border-bottom:1px solid #2d2d2d;
    padding:12px;
    vertical-align:top;
}

.table tr:last-child td{
    border-bottom:none;
}

.alert{
    padding:15px;
    border-radius:10px;
    margin:20px 0;
}

.alert-danger{
    background:#4d1616;
    border:1px solid #bb3d3d;
    color:#ffdede;
}

.alert-info{
    background:#10253f;
    border:1px solid #235eaa;
    color:#d9ecff;
}

.alert-success{
    background:#14351b;
    border:1px solid #2d8f45;
    color:#dfffe5;
}

.mt-2{
    margin-top:12px;
}

.mt-3{
    margin-top:20px;
}

.mb-3{
    margin-bottom:20px;
}

.og-preview{
    display:flex;
    gap:20px;
    align-items:flex-start;
    flex-wrap:wrap;
}

.og-preview img{
    width:230px;
    max-width:100%;
    border-radius:12px;
    border:1px solid #333;
    object-fit:cover;
}

.og-preview h3{
    margin:0 0 10px;
    color:#fff;
}

.og-preview p{
    color:#bbb;
    line-height:1.6;
}

.og-preview small{
    color:#888;
}

.api-tabs{
    display:flex;
    gap:10px;
    margin:20px 0;
    flex-wrap:wrap;
}

.api-tab{
    background:#222;
    color:#ddd;
    padding:10px 18px;
    border-radius:8px;
    cursor:pointer;
    transition:.2s;
}

.api-tab.active{
    background:#ffb300;
    color:#111;
}

.api-response{
    background:#111;
    border:1px solid #333;
    border-radius:10px;
    padding:18px;
    overflow:auto;
    font-family:Consolas, monospace;
    white-space:pre-wrap;
}

.status-badge{
    display:inline-block;
    padding:4px 10px;
    border-radius:20px;
    font-size:12px;
    font-weight:bold;
}

.status-success{
    background:#198754;
    color:#fff;
}

.status-warning{
    background:#ffc107;
    color:#111;
}

.status-error{
    background:#dc3545;
    color:#fff;
}

.content{
    display:block !important;
    overflow:auto !important;
    min-height:calc(100vh - 80px) !important;
    padding:20px !important;
}

.card{
    display:block !important;
    visibility:visible !important;
    opacity:1 !important;
}

main.content{
    display:block !important;
}

.btn-copy{

width:40px;
height:40px;

display:flex;
align-items:center;
justify-content:center;

background:#2a313c;

border:none;

border-radius:10px;

color:#fff;

cursor:pointer;

transition:.25s;

}

.btn-copy:hover{

background:#E4B63F;

color:#111;

}

.table code{

font-family:"JetBrains Mono",monospace;

font-size:14px;

word-break:break-all;

}