/* Base reset. On claude.ai the host page supplied these; self-hosted we need
   them ourselves — without the [hidden] rule, a hidden overlay keeps its own
   display value and quietly swallows every click behind it. */
[hidden]{display:none!important}
img{max-width:100%}

/* ============================================================================
   Sign in. The first screen of an app, so it gets the app's own furniture:
   a large title, grouped fields and one filled button.
   ========================================================================== */
.gate{
  position:fixed;
  inset:0;
  z-index:100;
  background:var(--bg);
  overflow-y:auto;
  padding:calc(env(safe-area-inset-top,0px) + 24px) 0 calc(env(safe-area-inset-bottom,0px) + 32px);
  display:flex;
  align-items:center;
  justify-content:center;
}
.gate-card{
  width:100%;
  max-width:var(--col);
  margin:0 auto;
}
.gate-card h1{
  margin:0 var(--gutter) 6px;
  font-size:34px;
  line-height:41px;
  font-weight:700;
  letter-spacing:.37px;
}
.gate-sub{
  margin:0 var(--gutter) 26px;
  font-size:15px;
  line-height:20px;
  letter-spacing:-.24px;
  color:var(--label-2);
}
.gate-fields{
  background:var(--cell);
  border-radius:var(--r-group);
  overflow:hidden;
  margin:0 var(--gutter) 18px;
}
.gate-field{
  display:flex;
  align-items:center;
  padding-left:var(--gutter);
  position:relative;
}
/* inset to the label, the way a grouped form separates its rows */
.gate-field + .gate-field::before{
  content:"";
  position:absolute;
  top:0;
  left:var(--gutter);
  right:0;
  height:.5px;
  background:var(--sep);
}
.gate-field label{
  font-size:17px;
  letter-spacing:-.41px;
  width:96px;
  flex:none;
}
.gate-field input{
  flex:1;
  min-width:0;
  border:0;
  background:transparent;
  font-size:17px;
  letter-spacing:-.41px;
  padding:12px var(--gutter) 12px 0;
}
.gate-field input:focus{outline:none}
.gate-field input::placeholder{color:var(--label-3)}

.gate-actions{margin:0 var(--gutter) 14px}
.gate-actions .btn{width:100%}
.gate-busy{
  display:block;
  text-align:center;
  font-size:13px;
  letter-spacing:-.08px;
  color:var(--label-2);
  min-height:18px;
  margin-top:10px;
}
.gate-error{
  margin:0 var(--gutter) 16px;
  padding:12px 14px;
  border-radius:var(--r-group);
  background:var(--cell);
  color:var(--red);
  font-size:13px;
  line-height:18px;
  letter-spacing:-.08px;
}
.gate-alt{
  margin:22px var(--gutter) 0;
  text-align:center;
  font-size:15px;
  letter-spacing:-.24px;
  color:var(--label-2);
}
.gate-foot{
  margin:28px var(--gutter) 0;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  font-size:13px;
  letter-spacing:-.08px;
}
.gate-foot a{color:var(--label-2);text-decoration:none}
.gate-foot span{color:var(--label-3)}

.gate-or{
  display:flex;
  align-items:center;
  gap:12px;
  margin:26px var(--gutter) 20px;
  color:var(--label-2);
  font-size:13px;
  letter-spacing:-.08px;
}
.gate-or::before,.gate-or::after{content:"";flex:1;height:.5px;background:var(--sep)}
.gate-card code{
  font-family:var(--sf-mono);
  font-size:15px;
  background:var(--fill);
  padding:1px 6px;
  border-radius:5px;
}
