diff --git a/app.py b/app.py index d650922..8fb620b 100644 --- a/app.py +++ b/app.py @@ -135,6 +135,9 @@ def adventure_seite(inhalt, akzent="#f59e0b"): border:1px solid #334155; border-radius:8px; padding:6px 12px; } .adv-topbar .link:hover { background:#1e293b; } .adv-topbar .spacer { margin-left:auto; } + .adv-player { max-width:680px; margin:14px auto 0; padding:0 18px; + color:#cbd5e1; font-size:13px; } + .adv-player strong { color:#facc15; } .adv-wrap { max-width:680px; margin:44px auto; padding:0 18px; } .adv-card { background:#1e293b; border:1px solid #334155; border-radius:16px; padding:30px; box-shadow:0 10px 30px rgba(0,0,0,.35); } @@ -182,6 +185,68 @@ def adventure_seite(inhalt, akzent="#f59e0b"): .win-emoji { font-size:54px; text-align:center; margin-bottom:8px; } .muted { color:#94a3b8; font-size:14px; margin-top:20px; } .muted a { color:#93c5fd; } + + /* ── Inventar-Sidebar (U19) ── */ + .inv-panel { position:fixed; top:90px; left:18px; width:190px; z-index:40; + background:#111827; border:1px solid #334155; border-radius:14px; + padding:14px; box-shadow:0 10px 30px rgba(0,0,0,.4); } + .inv-title { font-size:13px; font-weight:800; letter-spacing:1px; + text-transform:uppercase; color:#facc15; margin-bottom:10px; } + .inv-items { display:flex; flex-direction:column; gap:10px; } + .inv-item { display:flex; align-items:center; gap:10px; cursor:grab; + background:#0f172a; border:1px solid #334155; border-radius:10px; + padding:9px 10px; transition:.12s; user-select:none; } + .inv-item:hover { border-color:#facc15; transform:translateY(-1px); } + .inv-item:active { cursor:grabbing; } + .inv-item.dragging { opacity:.4; } + .inv-ico { font-size:22px; line-height:1; } + .inv-lbl { font-size:12px; color:#e5e7eb; line-height:1.25; } + .inv-hint { margin-top:12px; font-size:11px; color:#64748b; line-height:1.4; } + /* ── Drop-Zone ── */ + .dropzone { border:2px dashed #64748b; border-radius:14px; padding:26px 18px; + text-align:center; color:#94a3b8; transition:.15s; + background:#0f172a; margin:6px 0 18px; } + .dropzone .dz-ico { font-size:38px; display:block; margin-bottom:8px; } + .dropzone.over { border-color:#22c55e; background:#0d2818; color:#bbf7d0; + transform:scale(1.02); } + .dropzone.wrong { border-color:#ef4444; background:#2a0d0d; + animation:dzshake .5s; } + @keyframes dzshake { 0%,100%{transform:translateX(0)} 25%{transform:translateX(-8px)} + 75%{transform:translateX(8px)} } + /* ── Scoreboard (U19) ── */ + .sb-wrap { margin-top:26px; } + .sb-box { background:#111827; border:1px solid #334155; border-radius:16px; + padding:20px 22px; margin-bottom:18px; } + .sb-box h3 { font-size:16px; color:#facc15; margin-bottom:12px; + display:flex; align-items:center; gap:8px; } + .sb-table { width:100%; border-collapse:collapse; } + .sb-table td { padding:8px 6px; border-bottom:1px solid #1f2a3a; font-size:15px; } + .sb-table tr:last-child td { border-bottom:none; } + .sb-rank { width:44px; font-weight:800; } + .sb-time { text-align:right; color:#67e8f9; font-variant-numeric:tabular-nums; + font-weight:700; white-space:nowrap; } + .sb-empty { color:#64748b; font-style:italic; } + .sb-stages { display:grid; grid-template-columns:repeat(auto-fill,minmax(200px,1fr)); + gap:12px; } + .sb-stage { background:#0f172a; border:1px solid #334155; border-radius:12px; + padding:12px 14px; } + .sb-stage h4 { font-size:13px; color:#93c5fd; margin-bottom:8px; } + .sb-stage ul { list-style:none; display:flex; flex-direction:column; gap:5px; } + .sb-stage li { font-size:13px; color:#cbd5e1; display:flex; gap:6px; + align-items:baseline; } + .sb-mini-rank { color:#64748b; font-weight:700; } + .sb-mini-time { margin-left:auto; color:#67e8f9; font-variant-numeric:tabular-nums; } + .name-form { display:flex; flex-wrap:wrap; gap:10px; margin-top:14px; } + .name-form input { background:#0f172a; color:#e5e7eb; border:1px solid #334155; + border-radius:10px; padding:12px 14px; font-size:16px; + flex:1; min-width:180px; font-family:inherit; } + .name-form input:focus { outline:none; border-color:#facc15; } + @media (max-width:1100px){ + .inv-panel { position:static; width:auto; margin:0 auto 18px; + max-width:680px; } + .inv-items { flex-direction:row; flex-wrap:wrap; } + .inv-hint { display:none; } + }
@@ -192,19 +257,293 @@ def adventure_seite(inhalt, akzent="#f59e0b"):