@font-face{font-family:"Space Mono";src:url(/assets/fonts/SpaceMono-Regular.ttf) format("truetype");font-weight:400;font-display:swap}
@font-face{font-family:"Space Mono";src:url(/assets/fonts/SpaceMono-Bold.ttf) format("truetype");font-weight:700;font-display:swap}
*{box-sizing:border-box}
[hidden]{display:none !important}
html,body{margin:0;background:#050505;color:#e8e8e8}
html{min-height:100%}
body{
  min-height:100svh;
  overflow-x:hidden;
  font-family:"Space Mono",ui-monospace,monospace;
  -webkit-font-smoothing:antialiased;
  -webkit-text-size-adjust:100%;
}
button,input,select,textarea{font-family:inherit;touch-action:manipulation}
button,a{ -webkit-tap-highlight-color:transparent}
:focus-visible{outline:1px solid rgba(255,255,255,.6);outline-offset:2px}
a{color:#fff}

.bgphoto{position:fixed;inset:0;z-index:0;background:#000 url(/assets/bg.jpg) center/cover no-repeat;filter:saturate(.85) brightness(.9)}
.shade{position:fixed;inset:0;z-index:1;background:radial-gradient(ellipse at center,rgba(0,0,0,.18) 0%,rgba(0,0,0,.72) 100%);pointer-events:none}
.grain{position:fixed;inset:-50%;z-index:2;pointer-events:none;opacity:.13;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  animation:grain .9s steps(4) infinite}
@keyframes grain{0%{transform:translate(0,0)}25%{transform:translate(-3%,2%)}50%{transform:translate(2%,-3%)}75%{transform:translate(-2%,-1%)}}

.gate{
  position:relative;z-index:3;min-height:100svh;display:grid;place-items:center;
  padding:calc(24px + env(safe-area-inset-top)) 18px calc(24px + env(safe-area-inset-bottom));
}
.panel{
  width:100%;max-width:380px;padding:28px 20px 20px;text-align:center;
  background:rgba(10,10,10,.42);border:1px solid rgba(255,255,255,.1);border-radius:14px;
  -webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);
}
.panel h1,.glow{
  margin:0;color:#fff;font-size:32px;font-weight:700;letter-spacing:-.03em;line-height:1.1;
  text-shadow:0 0 12px rgba(255,255,255,.65),0 0 2px #fff;
}
.kicker{margin:0 0 8px;color:#9a9a9a;font-size:12px;letter-spacing:.14em}
.sub{margin:10px 0 0;color:#b5b5b5;font-size:13px;line-height:1.45}
form{margin-top:18px;text-align:left}
label{display:block;margin:12px 0 6px;color:#9a9a9a;font-size:11px}
input,select,textarea{
  width:100%;border:1px solid rgba(255,255,255,.1);border-radius:10px;
  background:rgba(0,0,0,.4);color:#f3f3f3;font-size:16px;line-height:1.35;
  padding:12px;outline:none;
}
textarea{resize:vertical;min-height:96px}
input::placeholder,textarea::placeholder{color:#6f6f6f}
select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,#aaa 50%),linear-gradient(135deg,#aaa 50%,transparent 50%);background-position:calc(100% - 16px) 55%,calc(100% - 11px) 55%;background-size:5px 5px,5px 5px;background-repeat:no-repeat}
.prefix{
  display:flex;align-items:center;gap:2px;margin-top:16px;
  background:rgba(0,0,0,.45);border:1px solid rgba(255,255,255,.1);border-radius:10px;padding:0 12px;
}
.prefix span{color:#8d8d8d;font-size:13px;white-space:nowrap}
.prefix input{border:0;background:transparent;padding:14px 0;min-width:0}
.btn{
  display:block;width:100%;margin-top:14px;border:0;border-radius:10px;
  background:#f2f2f2;color:#111;font-weight:700;font-size:14px;
  padding:14px 16px;min-height:48px;text-align:center;text-decoration:none;cursor:pointer;
}
.btn:disabled{opacity:.55}
.quietline{margin:14px 0 0;text-align:center;color:#9a9a9a;font-size:12px}
.quietline a{color:#eee}
.msg{min-height:1.2em;margin:10px 0 0;color:#e7a3a3;font-size:12px;text-align:center}
.msg.ok{color:#b7d7be}

.top{
  position:relative;z-index:4;display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:calc(12px + env(safe-area-inset-top)) 16px 8px;
}
.mark{color:#fff;text-decoration:none;font-weight:700;font-size:18px;text-shadow:0 0 10px rgba(255,255,255,.45)}
.top-actions{display:flex;align-items:center;gap:14px}
.top-actions a,.textbtn{
  color:#ddd;background:none;border:0;padding:8px 0;font-size:12px;cursor:pointer;text-decoration:none;
}
.who{margin:0;padding:0 16px 8px;position:relative;z-index:4;color:#8d8d8d;font-size:11px}
.who a{color:#eee;text-decoration:none}

.layout{position:relative;z-index:3;padding:4px 14px 140px;display:flex;flex-direction:column;gap:16px}
input,select,textarea,button,.textbtn,.srow{scroll-margin-bottom:120px}
.top-actions a{max-width:46vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.stage{
  border-radius:16px;overflow:hidden;border:1px solid rgba(255,255,255,.1);background:#050505;
}
.editor,.passbox{
  background:rgba(8,8,8,.55);border:1px solid rgba(255,255,255,.08);border-radius:14px;padding:8px 14px 16px;
}
.hint{margin:6px 0 0;color:#7f7f7f;font-size:11px;line-height:1.4}
.choices{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}
.choices label{
  margin:0;color:#ddd;font-size:12px;border:1px solid rgba(255,255,255,.12);border-radius:999px;
  padding:8px 10px;display:flex;align-items:center;gap:6px;
}
.choices input{width:auto;accent-color:#fff}
.accentrow{display:flex;gap:8px;align-items:center}
.accentrow input[type="color"]{width:52px;height:46px;padding:4px;flex:none}
.check{display:flex;align-items:center;gap:8px;margin-top:8px;color:#ddd;font-size:13px}
.check input{width:auto}
.badges{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}
.badge{
  width:44px;height:44px;border-radius:10px;border:1px solid rgba(255,255,255,.12);
  background:rgba(0,0,0,.35);display:grid;place-items:center;padding:0;cursor:pointer;
}
.badge svg{width:18px;height:18px}
.badge.on{border-color:rgba(255,255,255,.7);background:rgba(255,255,255,.08)}
.srow{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;margin-top:8px}
.srow select,.srow .surl{grid-column:1 / -1}
.srow .slabel{grid-column:1}
.add{margin-top:10px}
.savebar{
  position:fixed;left:0;right:0;bottom:0;z-index:5;
  display:flex;gap:10px;align-items:center;
  padding:10px 14px calc(10px + env(safe-area-inset-bottom));
  background:rgba(5,5,5,.92);border-top:1px solid rgba(255,255,255,.08);
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
}
.savebar .btn{margin:0;flex:1}
.savebar .state{min-width:72px;font-size:11px;color:#9a9a9a}
.savebar .state.bad{color:#e7a3a3}
.savebar .state.ok{color:#b7d7be}
input:-webkit-autofill{ -webkit-text-fill-color:#eee;caret-color:#eee;transition:background-color 9999s ease-out}

@media (min-width:960px){
  .layout{
    display:grid;grid-template-columns:minmax(320px,420px) minmax(0,520px);
    gap:28px;align-items:start;justify-content:center;max-width:1040px;margin:0 auto;padding-top:8px;
  }
  .stage{position:sticky;top:16px}
  .passbox{grid-column:2}
}
@media (prefers-reduced-motion:reduce){.grain{animation:none}}
