[hidden]{display:none!important}
*{box-sizing:border-box}
body{
  margin:0;
  background:#0f172a;
  color:#e5e7eb;
  font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
}
.container{
  max-width:1200px;
  margin:auto;
  padding:22px;
}
.topbar{
  display:flex;
  justify-content:space-between;
  gap:16px;
  align-items:center;
  margin-bottom:18px;
}
h1,h2,h3{margin:0 0 12px}
.subheading{font-size:17px;margin-top:18px}
.muted{color:#94a3b8;margin-top:0}
.small{font-size:13px}
.grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:18px;
}
.card{
  background:#020617;
  border:1px solid #1e293b;
  border-radius:16px;
  padding:18px;
  box-shadow:0 10px 35px rgba(0,0,0,.25);
  margin-bottom:18px;
}
label{
  display:block;
  margin:12px 0 6px;
  font-weight:650;
}
input,textarea{
  width:100%;
  padding:11px 12px;
  border-radius:10px;
  border:1px solid #334155;
  background:#0f172a;
  color:#e5e7eb;
  font-size:15px;
  outline:none;
}
textarea{min-height:130px;resize:vertical}
input:focus,textarea:focus{border-color:#38bdf8}
.keys{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:10px;
}
button,.logout,.button-link{
  border:none;
  border-radius:10px;
  padding:11px 14px;
  cursor:pointer;
  font-weight:700;
  text-decoration:none;
  display:inline-block;
}
button:disabled{
  opacity:.55;
  cursor:not-allowed;
}
.primary{background:#22c55e;color:#052e16}
.secondary{background:#334155;color:#e5e7eb}
.danger{background:#ef4444;color:#fff}
.logout{background:#1e293b;color:#e5e7eb}
.actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}
.status{margin-top:12px;color:#a7f3d0}
.alert{padding:11px 12px;border-radius:10px;margin:10px 0;line-height:1.45}
.alert.error{background:#7f1d1d;color:#fecaca}
.alert.success{background:#14532d;color:#bbf7d0}
.alert.info{background:rgba(59,130,246,.12);color:#bfdbfe;border:1px solid rgba(59,130,246,.25)}
.records{display:flex;flex-direction:column;gap:10px;margin-top:12px}
.record{
  border:1px solid #1e293b;
  border-radius:12px;
  padding:12px;
  background:#0f172a;
}
.record-title{font-weight:800;margin-bottom:4px}
.record-meta{font-size:12px;color:#94a3b8;margin-bottom:10px}
.record-actions{display:flex;gap:8px;flex-wrap:wrap}
.output-box{
  margin-top:10px;
  white-space:pre-wrap;
  word-break:break-word;
  background:#020617;
  border:1px solid #334155;
  border-radius:10px;
  padding:10px;
}

/* Modal */
.modal-backdrop{
  position:fixed;
  inset:0;
  background:rgba(2,6,23,.78);
  display:flex;
  align-items:center;
  justify-content:center;
  padding:18px;
  z-index:100;
}
.modal-card{
  width:min(760px, 100%);
  max-height:92vh;
  overflow:auto;
  background:#020617;
  border:1px solid #334155;
  border-radius:20px;
  padding:20px;
  box-shadow:0 30px 90px rgba(0,0,0,.55);
}
.modal-header{
  display:flex;
  justify-content:space-between;
  gap:14px;
  align-items:flex-start;
}
.icon-button{
  width:42px;
  height:42px;
  padding:0;
  border-radius:12px;
  background:#1e293b;
  color:#e5e7eb;
  font-size:28px;
  line-height:1;
}

/* Login screen */
.login-page{
  min-height:100vh;
  background:
    radial-gradient(circle at top left, rgba(34,197,94,.18), transparent 32%),
    radial-gradient(circle at bottom right, rgba(59,130,246,.18), transparent 34%),
    #020617;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:22px;
}
.login-shell{
  width:100%;
  max-width:1080px;
  display:grid;
  grid-template-columns:1.05fr .95fr;
  gap:22px;
  align-items:stretch;
}
.login-shell.single{
  max-width:540px;
  grid-template-columns:1fr;
}
.login-hero,
.login-card{
  border:1px solid rgba(148,163,184,.18);
  background:rgba(15,23,42,.72);
  backdrop-filter:blur(16px);
  border-radius:24px;
  box-shadow:0 24px 80px rgba(0,0,0,.42);
}
.login-hero{
  padding:34px;
  position:relative;
  overflow:hidden;
}
.login-hero:after{
  content:"";
  position:absolute;
  width:220px;
  height:220px;
  border-radius:999px;
  background:rgba(34,197,94,.12);
  right:-80px;
  top:-80px;
}
.brand-badge{
  display:inline-flex;
  padding:8px 12px;
  border-radius:999px;
  background:rgba(34,197,94,.14);
  border:1px solid rgba(34,197,94,.35);
  color:#bbf7d0;
  font-weight:800;
  letter-spacing:.04em;
  font-size:13px;
  margin-bottom:22px;
}
.login-hero h1{
  font-size:clamp(36px, 6vw, 64px);
  line-height:.95;
  letter-spacing:-.05em;
  margin-bottom:18px;
}
.login-hero p{
  color:#cbd5e1;
  font-size:17px;
  line-height:1.6;
  max-width:620px;
}
.security-list{
  display:grid;
  gap:12px;
  margin-top:28px;
}
.security-item{
  display:flex;
  gap:12px;
  align-items:flex-start;
  padding:14px;
  border-radius:16px;
  background:rgba(2,6,23,.58);
  border:1px solid rgba(148,163,184,.12);
}
.security-item span{
  width:38px;
  height:38px;
  display:grid;
  place-items:center;
  border-radius:12px;
  background:rgba(15,23,42,.9);
}
.security-item strong{display:block}
.security-item small{
  display:block;
  color:#94a3b8;
  margin-top:2px;
}
.login-card{
  padding:28px;
  display:flex;
  flex-direction:column;
  justify-content:center;
}
.login-card-header{
  display:flex;
  gap:14px;
  align-items:center;
  margin-bottom:18px;
}
.lock-icon{
  width:54px;
  height:54px;
  display:grid;
  place-items:center;
  border-radius:18px;
  background:linear-gradient(135deg,#22c55e,#16a34a);
  color:#052e16;
  font-size:26px;
  box-shadow:0 12px 28px rgba(34,197,94,.22);
}
.login-card h2{
  font-size:30px;
  margin-bottom:4px;
}
.login-card-header p{
  margin:0;
  color:#94a3b8;
}
.login-form label{
  margin-top:14px;
}
.password-wrap{
  position:relative;
}
.password-wrap input{
  padding-right:82px;
  height:52px;
}
.password-toggle{
  position:absolute;
  top:50%;
  right:7px;
  transform:translateY(-50%);
  padding:8px 10px;
  border-radius:8px;
  background:#1e293b;
  color:#e5e7eb;
}
.caps-warning{
  margin-top:8px;
  color:#fcd34d;
  font-size:14px;
}
.login-submit{
  width:100%;
  margin-top:16px;
  height:52px;
  background:linear-gradient(135deg,#22c55e,#16a34a);
  color:#052e16;
  font-size:16px;
  box-shadow:0 14px 32px rgba(34,197,94,.2);
}
.login-submit:hover,
.primary:hover{
  filter:brightness(1.05);
}
.login-note{
  margin-top:18px;
  padding:14px;
  border-radius:14px;
  background:rgba(59,130,246,.12);
  border:1px solid rgba(59,130,246,.25);
  color:#bfdbfe;
  font-size:14px;
  line-height:1.5;
}
.form-row-between{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:12px;
  margin-top:12px;
  font-size:14px;
}
.form-row-between a,
.login-card a{
  color:#93c5fd;
  text-decoration:none;
}
.form-row-between a:hover,
.login-card a:hover{
  text-decoration:underline;
}

@media(max-width:900px){
  .login-page{align-items:flex-start}
  .login-shell{grid-template-columns:1fr}
  .login-hero{padding:26px}
  .login-card{padding:22px}
}
@media(max-width:800px){
  .grid{grid-template-columns:1fr}
  .keys{grid-template-columns:1fr}
  .topbar{align-items:flex-start;flex-direction:column}
}
@media(max-width:520px){
  .container{padding:12px}
  .login-page{padding:12px}
  .login-hero,
  .login-card,
  .modal-card{border-radius:18px}
  .security-item{padding:12px}
  .login-card-header{align-items:flex-start}
}
.narrow-page{max-width:760px}.top-actions{display:flex;gap:8px;flex-wrap:wrap}.secret-box{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;background:#0f172a;border:1px solid #334155;border-radius:10px;padding:14px;word-break:break-all;font-size:18px;letter-spacing:.06em}


/* 2FA QR setup */
.twofa-layout{
  display:grid;
  grid-template-columns:300px 1fr;
  gap:18px;
  align-items:start;
  margin:16px 0;
}
.qr-box{
  background:#fff;
  border-radius:18px;
  padding:18px;
  display:flex;
  justify-content:center;
  align-items:center;
  border:1px solid #334155;
}
.qr-box img{
  display:block;
  width:260px;
  height:260px;
}
.steps{
  margin:0;
  padding-left:22px;
  color:#cbd5e1;
  line-height:1.8;
}
.details-box{
  margin:12px 0;
}
.details-box summary{
  cursor:pointer;
  color:#93c5fd;
  margin-bottom:8px;
}
@media(max-width:720px){
  .twofa-layout{
    grid-template-columns:1fr;
  }
  .qr-box{
    max-width:320px;
  }
}


/* Small modal for create 2FA confirmation */
.modal-card-small{
  width:min(520px, 100%);
}


/* Small modal for create 2FA confirmation */
.modal-card-small{
  width:min(520px, 100%);
}

/* Modern segmented OTP inputs */
.otp-inputs{
  display:flex;
  gap:12px;
  flex-wrap:nowrap;
  align-items:center;
  justify-content:flex-start;
  margin-top:8px;
}
.otp-digit{
  width:62px;
  height:72px;
  border-radius:16px;
  border:1px solid #334155;
  background:linear-gradient(180deg, rgba(15,23,42,.95), rgba(6,14,30,.98));
  color:#f8fafc;
  text-align:center;
  font-size:30px;
  font-weight:800;
  letter-spacing:0;
  outline:none;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.03);
  transition:border-color .18s ease, transform .18s ease, box-shadow .18s ease, background .18s ease;
  caret-color:transparent;
}
.otp-digit:hover{
  border-color:#475569;
}
.otp-digit:focus{
  border-color:#60a5fa;
  box-shadow:0 0 0 4px rgba(96,165,250,.15), 0 12px 28px rgba(2,132,199,.16);
  transform:translateY(-1px);
}
.otp-digit.is-filled{
  border-color:#22c55e;
  background:linear-gradient(180deg, rgba(10,20,36,.98), rgba(8,24,20,.98));
  box-shadow:0 0 0 1px rgba(34,197,94,.15);
}
.otp-helper{
  margin:8px 0 4px;
  color:#94a3b8;
  font-size:13px;
}
@media(max-width:700px){
  .otp-inputs{
    gap:8px;
  }
  .otp-digit{
    width:48px;
    height:58px;
    border-radius:12px;
    font-size:24px;
  }
}
@media(max-width:420px){
  .otp-inputs{
    gap:6px;
  }
  .otp-digit{
    width:42px;
    height:54px;
    font-size:22px;
  }
}

/* UI refresh v2 */
body{
  background:
    radial-gradient(circle at top left, rgba(34,197,94,.08), transparent 30%),
    radial-gradient(circle at bottom right, rgba(59,130,246,.08), transparent 30%),
    #0f172a;
}
.app-header{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:18px;
  padding:18px;
  border:1px solid rgba(148,163,184,.14);
  border-radius:22px;
  background:rgba(2,6,23,.55);
  box-shadow:0 16px 45px rgba(0,0,0,.24);
  margin-bottom:18px;
}
.brand-area{
  display:flex;
  gap:14px;
  align-items:center;
}
.brand-icon{
  width:54px;
  height:54px;
  display:grid;
  place-items:center;
  border-radius:18px;
  background:linear-gradient(135deg,#22c55e,#16a34a);
  color:#052e16;
  font-size:26px;
  box-shadow:0 14px 32px rgba(34,197,94,.16);
}
.brand-area h1{
  margin-bottom:4px;
  letter-spacing:-.03em;
}
.dashboard-grid{
  display:grid;
  grid-template-columns:minmax(0, .95fr) minmax(360px, .75fr);
  gap:18px;
}
.section-title{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:12px;
  margin-bottom:12px;
}
.compact-button{
  padding:9px 12px;
}
.card{
  border-color:rgba(148,163,184,.13);
  background:rgba(2,6,23,.78);
}
.main-card,
.records-card{
  min-height:420px;
}
input,textarea{
  border-color:#263449;
  background:#101827;
}
input::placeholder,
textarea::placeholder{
  color:#64748b;
}
button,.button-link{
  transition:transform .16s ease, filter .16s ease, background .16s ease, border-color .16s ease;
}
button:hover,.button-link:hover{
  transform:translateY(-1px);
}
.primary{
  box-shadow:0 12px 26px rgba(34,197,94,.14);
}
.account-menu{
  position:relative;
  flex-shrink:0;
}
.account-menu details{
  position:relative;
}
.account-menu summary{
  list-style:none;
  display:flex;
  align-items:center;
  gap:9px;
  cursor:pointer;
  border:1px solid #263449;
  background:#111827;
  border-radius:999px;
  padding:8px 12px 8px 8px;
  user-select:none;
}
.account-menu summary::-webkit-details-marker{
  display:none;
}
.account-avatar{
  width:34px;
  height:34px;
  display:grid;
  place-items:center;
  border-radius:999px;
  background:#22c55e;
  color:#052e16;
  font-weight:900;
}
.account-name{
  color:#e5e7eb;
  font-weight:700;
  max-width:180px;
  overflow:hidden;
  white-space:nowrap;
  text-overflow:ellipsis;
}
.account-dropdown{
  position:absolute;
  right:0;
  top:calc(100% + 8px);
  width:190px;
  background:#020617;
  border:1px solid #263449;
  border-radius:14px;
  padding:7px;
  box-shadow:0 18px 45px rgba(0,0,0,.35);
  z-index:30;
}
.account-dropdown a{
  display:block;
  padding:10px 12px;
  border-radius:10px;
  color:#e5e7eb;
  text-decoration:none;
  font-weight:700;
}
.account-dropdown a:hover{
  background:#111827;
}
.temporary-message{
  border-color:rgba(34,197,94,.35);
  color:#bbf7d0;
}
.login-hero{
  display:flex;
  flex-direction:column;
  justify-content:center;
}
.login-hero h1{
  margin-top:0;
}
.login-card{
  border-color:rgba(148,163,184,.14);
}
@media(max-width:950px){
  .dashboard-grid{
    grid-template-columns:1fr;
  }
  .app-header{
    align-items:flex-start;
    flex-direction:column;
  }
  .account-menu{
    width:100%;
  }
  .account-menu summary{
    width:100%;
    justify-content:space-between;
  }
  .account-dropdown{
    left:0;
    right:auto;
    width:100%;
  }
}
@media(max-width:520px){
  .brand-area{
    align-items:flex-start;
  }
  .brand-icon{
    width:46px;
    height:46px;
    border-radius:15px;
    font-size:22px;
  }
  .section-title{
    flex-direction:column;
  }
}


/* Icon button refresh and disappearing copy toast */
button,
.button-link,
.logout,
.account-dropdown a{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
}
.btn-icon{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:1.25em;
  min-width:1.25em;
  line-height:1;
}
.account-chevron{
  color:#94a3b8;
  font-size:13px;
  margin-left:2px;
}
.account-menu summary:hover{
  border-color:#3b82f6;
  background:#0f172a;
}
.account-dropdown a{
  justify-content:flex-start;
}
.record-actions button{
  min-height:36px;
}
.output-box.temporary-message{
  display:block;
  margin-top:10px;
  border-color:rgba(34,197,94,.38);
  background:rgba(20,83,45,.22);
  color:#bbf7d0;
  animation:fadeInToast .18s ease-out;
}
@keyframes fadeInToast{
  from{opacity:0;transform:translateY(-3px)}
  to{opacity:1;transform:translateY(0)}
}
.password-toggle{
  min-width:84px;
  gap:5px;
}
.login-submit{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:8px;
}
.compact-button{
  white-space:nowrap;
}
@media(max-width:560px){
  .record-actions{
    display:grid;
    grid-template-columns:1fr;
  }
  .record-actions button{
    width:100%;
  }
}


/* Spacing and action layout fixes */
.actions{
  margin-top:18px;
  gap:12px;
  align-items:center;
}
.status{
  display:block;
  width:100%;
  margin-top:14px;
}
.inline-status{
  display:block;
  width:max-content;
  max-width:100%;
  margin-top:0;
  margin-bottom:0;
}
.form-actions{
  display:flex;
  gap:12px;
  align-items:center;
  margin-top:18px;
  margin-bottom:18px;
}
.login-form .form-actions{
  margin-top:16px;
}
.danger-zone{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:18px;
  margin-top:22px;
  padding:16px;
  border:1px solid rgba(239,68,68,.28);
  border-radius:16px;
  background:rgba(127,29,29,.13);
}
.danger-zone p{
  margin:4px 0 0;
}
.danger-zone form{
  margin:0;
  flex-shrink:0;
}
.card form + form{
  margin-top:16px;
}
.card form{
  margin-bottom:0;
}
button,
.button-link,
.logout{
  min-height:42px;
}
button.primary,
button.secondary,
button.danger{
  padding-inline:16px;
}
.status .alert.error,
.status .alert.success,
.status .alert.info{
  margin-top:0;
}
#saveStatus{
  min-height:0;
}
#saveStatus .inline-status{
  margin-top:2px;
}
#create2faStatus .inline-status{
  margin-top:8px;
}
.secret-box{
  margin-bottom:12px;
}
.details-box{
  margin:14px 0 18px;
}
.login-form button[type="submit"]{
  margin-top:0;
}
@media(max-width:650px){
  .danger-zone{
    align-items:stretch;
    flex-direction:column;
  }
  .danger-zone form,
  .danger-zone button{
    width:100%;
  }
  .form-actions{
    flex-direction:column;
    align-items:stretch;
  }
  .form-actions button{
    width:100%;
  }
}
