/* RESQUE Drop Gate — erzeugt aus resque-dropgate-PROTOTYP.html */
:root{
    --bg:#0d0b10;
    --ink:#efe9e2;
    --rose:#b98d86;
    --rose-dark:#7d5c58;
    --dim:#8a8189;
    --go:#e8dfd4;
  }
  *{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
  html,body{height:100%}
  body{
    background:var(--bg);
    color:var(--ink);
    font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;
    display:flex;align-items:center;justify-content:center;
    overflow:hidden;
    touch-action:manipulation;
    user-select:none;-webkit-user-select:none;
  }
  /* ---------- STAGE ---------- */
  #stage{
    position:relative;
    width:min(100vw, calc(100vh * 0.5625));
    height:min(100vh, calc(100vw / 0.5625));
    max-width:520px;
    max-height:100vh;
    overflow:hidden;
    background:#14111a;
  }
  canvas{display:block;width:100%;height:100%;image-rendering:pixelated;image-rendering:crisp-edges}
  /* CRT / VHS Layer */
  #scan{
    position:absolute;inset:0;pointer-events:none;z-index:3;
    background:repeating-linear-gradient(to bottom,rgba(0,0,0,.11) 0 1px,rgba(0,0,0,0) 1px 3px);
    opacity:.75;
  }
  #vig{
    position:absolute;inset:0;pointer-events:none;z-index:4;
    background:radial-gradient(ellipse at 50% 45%,rgba(0,0,0,0) 55%,rgba(0,0,0,.42) 100%);
  }
  /* ---------- OVERLAYS ---------- */
  .ov{
    position:absolute;inset:0;z-index:6;
    display:none;flex-direction:column;align-items:center;justify-content:center;
    padding:26px 22px;text-align:center;
    background:linear-gradient(180deg,rgba(11,9,13,.70) 0%,rgba(11,9,13,.88) 45%,rgba(11,9,13,.95) 100%);
    backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);
  }
  .ov.on{display:flex;animation:fade .28s ease both}
  @keyframes fade{from{opacity:0}to{opacity:1}}
  .wordmark{
    position:absolute;top:22px;left:0;right:0;
    font-weight:900;letter-spacing:.34em;font-size:13px;
    color:var(--ink);opacity:.9;padding-left:.34em;
  }
  .big{
    font-family:"Arial Black","Helvetica Neue",Impact,sans-serif;
    font-weight:900;text-transform:uppercase;line-height:.92;
    letter-spacing:-.02em;
  }
  .h1{font-size:clamp(30px,9vw,46px)}
  .h2{font-size:clamp(21px,6.2vw,30px)}
  .sub{
    font-size:12px;line-height:1.65;color:var(--dim);
    margin-top:12px;max-width:30ch;letter-spacing:.03em;
  }
  .mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
  .spacer{
    position:absolute;bottom:20px;left:0;right:0;
    margin:0 auto;padding:0 24px;
  }
  .btn{
    display:inline-block;border:0;cursor:pointer;
    background:var(--go);color:#0d0b10;
    font-family:"Arial Black","Helvetica Neue",sans-serif;font-weight:900;
    text-transform:uppercase;letter-spacing:.1em;font-size:13px;
    padding:15px 26px;border-radius:2px;text-decoration:none;line-height:1.2;
    transition:transform .12s ease,opacity .12s ease;
    width:100%;max-width:300px;
  }
  .btn:active{transform:scale(.97)}
  .btn.ghost{background:transparent;color:var(--ink);border:1px solid rgba(239,233,226,.28)}
  .btn[disabled]{opacity:.45;cursor:default}
  input[type=email],input[type=text]{
    width:100%;max-width:300px;
    background:rgba(255,255,255,.05);
    border:1px solid rgba(239,233,226,.22);
    color:var(--ink);font-size:16px;
    padding:15px 14px;border-radius:2px;outline:none;
    text-align:center;letter-spacing:.04em;
    font-family:ui-monospace,SFMono-Regular,Menlo,monospace;
  }
  input[type=email]:focus,input[type=text]:focus{border-color:var(--rose)}
  input[type=email]::placeholder,input[type=text]::placeholder{color:#6b636c}
  .stack{display:flex;flex-direction:column;gap:10px;align-items:center;width:100%;margin-top:22px}
  .tag{
    display:inline-block;font-size:10px;letter-spacing:.28em;font-weight:800;
    text-transform:uppercase;color:var(--rose);
    border:1px solid var(--rose-dark);padding:6px 8px 6px 12px;border-radius:99px;margin-bottom:18px;
  }
  /* Sieges-Screen scrollt, weil dort jetzt die Drop-Infos stehen */
  .ov.scroll{
    justify-content:flex-start;overflow-y:auto;
    -webkit-overflow-scrolling:touch;
    padding:54px 22px 34px;
  }
  .winwrap{
    width:100%;max-width:340px;margin:auto 0;
    display:flex;flex-direction:column;align-items:center;
  }
  .panel{
    width:100%;text-align:left;
    border-top:1px solid rgba(239,233,226,.13);
    margin-top:26px;padding-top:18px;
  }
  .panel h3{
    font-size:10px;letter-spacing:.24em;text-transform:uppercase;
    color:var(--rose);font-weight:900;margin-bottom:13px;
  }
  .panel p{font-size:12px;line-height:1.7;color:var(--dim);letter-spacing:.02em}
  .plist{
    list-style:none;display:grid;
    grid-template-columns:1fr 1fr;
    grid-template-rows:repeat(3,auto);
    grid-auto-flow:column;
    gap:15px 14px;
  }
  .plist li b{display:block;font-size:13px;color:var(--ink);letter-spacing:.01em;font-weight:800}
  .plist li span{display:block;font-size:11px;color:var(--dim);margin-top:3px;line-height:1.5}
  .note{
    width:100%;margin-top:16px;padding:11px 13px;
    border:1px solid var(--rose-dark);border-radius:2px;
    font-size:11px;line-height:1.6;color:var(--rose);letter-spacing:.02em;text-align:left;
  }
  .lbform{display:flex;gap:8px;width:100%;margin-top:14px}
  .lbform input{flex:1;min-width:0}
  .lbform .btn{width:auto;flex:0 0 auto;padding:15px 18px}
  .board{list-style:none;width:100%;margin-top:16px;display:flex;flex-direction:column;gap:1px}
  .board li{
    display:grid;grid-template-columns:26px 1fr auto;align-items:center;gap:10px;
    padding:9px 10px;background:rgba(255,255,255,.03);
    font-size:12px;letter-spacing:.02em;
  }
  .board li .rank{
    font-family:ui-monospace,Menlo,monospace;font-size:10px;color:var(--dim);
  }
  .board li .nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink)}
  .board li .sc{font-family:ui-monospace,Menlo,monospace;font-weight:800;color:var(--ink)}
  @keyframes fieldFlash{
    0%,100%{border-color:rgba(239,233,226,.22);box-shadow:none}
    50%{border-color:var(--rose);box-shadow:0 0 0 3px rgba(185,141,134,.20)}
  }
  .flash{animation:fieldFlash .5s ease 2}
  .lbform input:disabled{opacity:.45;cursor:not-allowed}
  .board li.me{background:rgba(185,141,134,.16);border-left:2px solid var(--rose)}
  .board li.top .rank,.board li.top .sc{color:var(--rose)}
  .boardnote{font-size:10px;color:#5e5661;margin-top:12px;line-height:1.6;letter-spacing:.03em}
  .okbox{
    width:100%;display:none;flex-direction:column;align-items:center;gap:8px;
    margin-top:22px;padding:18px 14px;
    border:1px solid rgba(185,141,134,.45);border-radius:2px;
    background:rgba(185,141,134,.07);
  }
  .okbox.on{display:flex}
  .okbox .big{font-size:15px}
  .okbox p{font-size:11px;line-height:1.6;color:var(--dim);text-align:center}
  /* Platz-Pruefung nach dem Sieg */
  #checkSteps{
    list-style:none;width:100%;max-width:270px;
    display:flex;flex-direction:column;gap:15px;margin-top:30px;
  }
  #checkSteps li{
    display:flex;align-items:center;gap:12px;
    font-size:12px;letter-spacing:.07em;color:#5e5661;
    transition:color .35s ease;
  }
  #checkSteps li .dot{
    width:7px;height:7px;border-radius:50%;flex:0 0 auto;
    background:rgba(239,233,226,.16);
    transition:background .35s ease, box-shadow .35s ease;
  }
  #checkSteps li.on{color:var(--ink)}
  #checkSteps li.on .dot{
    background:var(--rose);box-shadow:0 0 0 4px rgba(185,141,134,.16);
  }
  .progress{
    width:100%;max-width:270px;height:2px;
    background:rgba(255,255,255,.10);margin-top:30px;overflow:hidden;
  }
  .progress i{display:block;height:100%;width:0;background:var(--rose)}

  #checkReveal{
    opacity:0;transform:translateY(8px);margin-top:28px;
    transition:opacity .45s ease, transform .45s ease;
  }
  #checkReveal.on{opacity:1;transform:none}
  .scorebox{
    display:flex;gap:26px;justify-content:center;margin-top:20px;
    font-family:ui-monospace,SFMono-Regular,Menlo,monospace;
  }
  .scorebox div{font-size:10px;letter-spacing:.2em;color:var(--dim);text-transform:uppercase}
  .scorebox b{display:block;font-size:26px;color:var(--ink);margin-top:5px;letter-spacing:0}
  .fine{font-size:10px;color:#5e5661;margin-top:16px;letter-spacing:.05em;line-height:1.6;max-width:32ch}
  .err{color:#d98080;font-size:11px;margin-top:8px;min-height:14px;letter-spacing:.04em}
  .ok{color:var(--rose)}
  a{color:var(--ink)}
  #startFigure{
    display:none;height:30%;width:auto;max-width:62%;
    object-fit:contain;object-position:bottom center;
    margin-bottom:16px;
    filter:drop-shadow(0 16px 24px rgba(0,0,0,.7));
    animation:bob 3.4s ease-in-out infinite;
  }
  @keyframes bob{
    0%,100%{transform:translateY(0) rotate(-1.6deg)}
    50%{transform:translateY(-9px) rotate(1.6deg)}
  }
  /* Gesperrter Knopf: matte Umrandung statt vollem Block */
  .btn.locked{
    background:transparent;
    color:rgba(239,233,226,.34);
    border:1px solid rgba(239,233,226,.16);
    cursor:default;
  }
  .btn.locked:active{transform:none}
  /* Knopf springt beim Freischalten an */
  @keyframes unlockPop{
    0%{transform:scale(.97);opacity:.5}
    60%{transform:scale(1.03)}
    100%{transform:scale(1);opacity:1}
  }
  .btn.justUnlocked{animation:unlockPop .38s ease both}

  /* Pfeil auf die Figur */
  #tapMe{
    display:none;flex-direction:column;align-items:center;gap:3px;
    color:var(--rose);margin:-4px 0 12px;
    animation:tapBounce 1.25s ease-in-out infinite;
  }
  #tapMe svg{display:block}
  #tapMe span{
    font-size:11px;font-weight:900;letter-spacing:.22em;text-transform:uppercase;
  }
  @keyframes tapBounce{
    0%,100%{transform:translateY(0)}
    50%{transform:translateY(-7px)}
  }
  /* Figur als Schaltflaeche */
  #startFigure{cursor:pointer}
  @keyframes nudgeShake{
    0%,100%{transform:translateX(0)}
    20%{transform:translateX(-7px)}
    40%{transform:translateX(6px)}
    60%{transform:translateX(-4px)}
    80%{transform:translateX(3px)}
  }
  #startFigure.nudge{animation:nudgeShake .42s ease both}
  .taphint{
    position:absolute;left:0;right:0;bottom:16%;z-index:5;text-align:center;
    font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:rgba(239,233,226,.55);
    animation:pulse 1.6s ease-in-out infinite;pointer-events:none;
  }
  @keyframes pulse{0%,100%{opacity:.35}50%{opacity:.9}}
  #mute{
    position:absolute;top:12px;right:12px;z-index:7;
    background:rgba(12,9,14,.45);border:1px solid rgba(239,233,226,.22);
    color:rgba(239,233,226,.85);border-radius:99px;
    font-size:10px;letter-spacing:.16em;cursor:pointer;
    padding:7px 11px;font-weight:800;text-transform:uppercase;
    font-family:ui-monospace,SFMono-Regular,Menlo,monospace;
  }
  #mute.off{
    color:rgba(239,233,226,.42);
    border-color:rgba(239,233,226,.12);
    text-decoration:line-through;
  }
