:root{
  --bg-1: #eef2ff;
  --bg-2: #f8fafc;
  --card: #ffffff;
  --muted: #64748b;
  --text: #0f172a;
  --primary: #4f46e5;
  --primary-600: #3730a3;
  --accent: #7c3aed;
  --border: rgba(15,23,42,0.06);
  --danger: #b91c1c;
  --success: #15803d;
  --glass: rgba(255,255,255,0.7);
}

*{box-sizing:border-box}

body{
  margin:0;
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial;
  background: linear-gradient(135deg,var(--bg-1),var(--bg-2));
  color:var(--text);
  padding:36px 20px;
}

.app{width:100%; max-width:1100px; margin:0 auto}

.header{display:flex;align-items:center;gap:16px;margin-bottom:20px}
.logo{
  width:64px;height:64px;border-radius:14px;
  background:linear-gradient(180deg,var(--primary),var(--primary-600));
  display:flex;align-items:center;justify-content:center;
  color:white;font-weight:800;font-size:18px;letter-spacing:0.6px;
  box-shadow:0 6px 20px rgba(79,70,229,0.18);
}

h1{font-size:20px;margin:0}
.subtitle{color:var(--muted);font-size:13px;margin-top:3px}

.card{
  background: linear-gradient(180deg,var(--glass), rgba(255,255,255,0.95));
  border-radius:18px;
  padding:24px;
  box-shadow: 0 20px 50px rgba(2,6,23,0.06), inset 0 1px 0 rgba(255,255,255,0.6);
  border: 1px solid var(--border);
}

.section{
  padding:16px;
  border-radius:12px;
  background: #ffffff;
  margin-bottom:16px;
  border:1px solid rgba(2,6,23,0.04);
}

label{display:block;font-weight:700;font-size:13px;margin-bottom:10px}

/* Pill-style labels for Key / IV and section labels */
.key-col label,
.iv-col label,
.section-label{
  display:inline-block;
  font-size:12px;
  font-weight:800;
  text-transform:uppercase;
  letter-spacing:0.6px;
  color:var(--primary-600);
  background:linear-gradient(180deg, rgba(79,70,229,0.06), rgba(124,58,237,0.04));
  padding:6px 10px;
  border-radius:999px;
  margin-bottom:8px;
}

/* Slightly dim the helper text under the inputs */
.muted{color:var(--muted);font-size:12px}


input[type="text"]{
  width:100%;
  padding:12px 14px;
  border-radius:10px;
  border:1px solid rgba(2,6,23,0.06);
  font-family:monospace;
  font-size:13px;
  background: #fbfdff;
  transition:box-shadow .15s,transform .08s;
}
input[type="text"]:focus{box-shadow:0 6px 18px rgba(79,70,229,0.08);outline:none;transform:translateY(-1px)}

.box{
  width:100%;
  min-height:160px;
  padding:12px 14px;
  border-radius:10px;
  border:1px solid rgba(2,6,23,0.06);
  background:#fbfdff;
  font-family:monospace;
  font-size:13px;
  white-space:pre-wrap;
  word-break:break-word;
  outline:none;
  transition:box-shadow .12s;
}
.box:focus{box-shadow:0 10px 30px rgba(2,6,23,0.04)}

.row{display:flex;gap:12px;flex-wrap:wrap}
.btns{display:flex;gap:12px;flex-wrap:wrap}

button{
  padding:10px 14px;
  border-radius:10px;
  border:1px solid rgba(2,6,23,0.06);
  background: linear-gradient(180deg, rgba(255,255,255,0.98), rgba(250,250,251,1));
  box-shadow: inset 0 1px 0 rgba(2,6,23,0.03);
  font-weight:700;
  cursor:pointer;
  min-width:120px;
  display:inline-flex;align-items:center;gap:8px;justify-content:center;
  transition:transform .08s, box-shadow .12s, background .12s, opacity .12s;
}
button:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 8px 20px rgba(2,6,23,0.06)}

.primary{background:linear-gradient(180deg,var(--primary),var(--accent));color:#fff;border-color:transparent}
.primary:hover{box-shadow:0 12px 30px rgba(79,70,229,0.18)}
.success{background:linear-gradient(180deg,#10b981,#059669);color:#fff;border-color:transparent}
.success:hover{box-shadow:0 12px 30px rgba(16,185,129,0.15)}
.danger{background:#fff6f6;color:var(--danger)}
.danger-strong{background:#7f1d1d;color:white}

.msg{margin-top:12px;font-weight:700;color:var(--success);display:none}
.error{margin-top:12px;font-weight:700;color:var(--danger);display:none}

.warning{font-size:13px;color:var(--danger);font-weight:700;margin-top:10px}

.iv-highlight{background:#eef2ff;color:var(--primary-600);font-weight:700;padding:4px 8px;border-radius:8px}

.key-col,.iv-col{ flex:1; min-width:0 }

footer{margin-top:28px;padding:18px 12px;text-align:center;font-size:12px;color:#64748b}

@media (max-width:720px){
  .row{flex-direction:column}
  .btns{flex-direction:column;width:100%}
  .btns button, input, .box{width:100%}
}
