/* ===== ADMINER – gleicher Look wie style.css ===== */ /* ── RESET & BASE ─────────────────────────────── */ *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } :root { --bg: #0f0f13; --surface: #1a1a24; --surface-hover: #22222f; --border: rgba(255,255,255,0.07); --text: #e8e8f0; --text-muted: #8888a8; --radius: 16px; --transition: 0.25s ease; --accent: #6366f1; --wrap-max: 900px; } html { scroll-behavior: smooth; overflow-x: hidden; } body { background-color: var(--bg); color: var(--text); font-family: 'Segoe UI', system-ui, -apple-system, sans-serif; min-height: 100vh; display: flex; flex-direction: column; align-items: center; padding: 2rem 1rem 4rem; position: relative; overflow-x: hidden; overflow-y: auto; } /* ── BACKGROUND ───────────────────────────────── */ @keyframes bgShift { 0% { opacity:1; transform:scale(1) translate(0,0); } 33% { opacity:.85; transform:scale(1.15) translate(2%,3%); } 66% { opacity:.9; transform:scale(1.08) translate(-3%,-2%); } 100% { opacity:1; transform:scale(1) translate(0,0); } } .background-blur { position:fixed; inset:-25%; z-index:-1; pointer-events:none; background: radial-gradient(ellipse 60% 40% at 20% 10%, rgba(99,102,241,.18), transparent), radial-gradient(ellipse 50% 40% at 80% 80%, rgba(14,165,233,.13), transparent), radial-gradient(ellipse 40% 30% at 60% 40%, rgba(168,85,247,.08), transparent); animation: bgShift 12s ease-in-out infinite; } #particle-canvas { position:fixed; inset:0; z-index:-1; pointer-events:none; opacity:.55; } /* ── ORBS ─────────────────────────────────────── */ .orb { position:fixed; border-radius:50%; pointer-events:none; z-index:-1; filter:blur(70px); opacity:0; animation:orbFloat var(--dur,18s) ease-in-out infinite var(--delay,0s); } .orb-1 { width:320px;height:320px; background:radial-gradient(circle,rgba(99,102,241,.25),transparent 70%); top:-80px;left:-80px; --dur:20s;--delay:0s; } .orb-2 { width:260px;height:260px; background:radial-gradient(circle,rgba(14,165,233,.2), transparent 70%); bottom:5%;right:-60px; --dur:17s;--delay:-6s; } .orb-3 { width:200px;height:200px; background:radial-gradient(circle,rgba(168,85,247,.18),transparent 70%); top:45%;left:-40px; --dur:23s;--delay:-11s;} .orb-4 { width:180px;height:180px; background:radial-gradient(circle,rgba(236,72,153,.15), transparent 70%); top:20%;right:-30px; --dur:19s;--delay:-4s; } @keyframes orbFloat { 0% {opacity:0; transform:translate(0,0) scale(1); } 10% {opacity:1;} 50% {opacity:1; transform:translate(20px,25px) scale(1.08); } 90% {opacity:1;} 100%{opacity:0; transform:translate(0,0) scale(1); } } /* Grid lines */ body::before { content:''; position:fixed; inset:0; z-index:-1; pointer-events:none; background-image: linear-gradient(rgba(255,255,255,.025) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.025) 1px, transparent 1px); background-size:60px 60px; mask-image:radial-gradient(ellipse 80% 80% at 50% 50%, black 30%, transparent 100%); -webkit-mask-image:radial-gradient(ellipse 80% 80% at 50% 50%, black 30%, transparent 100%); } /* ── LAYOUT ───────────────────────────────────── */ .wrap { width: 100%; max-width: var(--wrap-max); } /* Full width nur für die Tabellen-Ansicht */ .wrap.wrap--wide { max-width: 1400px; } .wrap.wrap--full { max-width: 100%; } /* ── ANIMATIONS ───────────────────────────────── */ @keyframes fadeDown { from { opacity:0; transform:translateY(-20px); } to { opacity:1; transform:translateY(0); } } @keyframes fadeUp { from { opacity:0; transform:translateY(24px); } to { opacity:1; transform:translateY(0); } } @keyframes shimmerText { from { background-position:0% center; } to { background-position:200% center; } } /* ── HEADER ───────────────────────────────────── */ .admin-header { text-align:center; margin-bottom: 2.5rem; margin-top: 1.5rem; animation: fadeDown .7s ease both; } @keyframes avatarPulse { 0%,100% { box-shadow:0 0 0 4px rgba(99,102,241,.2),0 0 20px rgba(99,102,241,.1); } 50% { box-shadow:0 0 0 8px rgba(99,102,241,.12),0 0 40px rgba(99,102,241,.2); } } .admin-avatar { width:72px; height:72px; border-radius:50%; background:linear-gradient(135deg,#6366f1,#0ea5e9); display:flex; align-items:center; justify-content:center; font-size:1.6rem; font-weight:700; margin:0 auto 1rem; animation:avatarPulse 3s ease-in-out infinite; transition:transform .3s ease; cursor:default; user-select:none; } .admin-avatar:hover { transform:scale(1.08) rotate(6deg); } .admin-title { font-size: clamp(1.5rem,3.5vw,2.2rem); font-weight:700; background:linear-gradient(90deg,#e8e8f0 0%,#6366f1 40%,#0ea5e9 60%,#e8e8f0 100%); background-size:200% auto; -webkit-background-clip:text; -webkit-text-fill-color:transparent; background-clip:text; letter-spacing:-.5px; animation:shimmerText 5s linear infinite; } .admin-subtitle { color:var(--text-muted); margin-top:.4rem; font-size:.95rem; animation: fadeDown .9s ease .3s both; } /* ── PILL / TAG ───────────────────────────────── */ .pill { display:inline-block; font-size:.72rem; font-weight:600; text-transform:uppercase; letter-spacing:1px; color:var(--text-muted); background:rgba(255,255,255,.06); border:1px solid var(--border); padding:3px 10px; border-radius:999px; vertical-align:middle; margin-left:8px; } /* ── CARD ─────────────────────────────────────── */ .card { background:var(--surface); border:1px solid var(--border); border-radius:var(--radius); padding:1.4rem 1.6rem; position:relative; overflow:hidden; animation: fadeUp .5s ease both; } .card::before { content:''; position:absolute; inset:0; border-radius:var(--radius); opacity:0; transition:opacity var(--transition); background:linear-gradient(135deg,rgba(99,102,241,.07),transparent 60%); pointer-events:none; } .card:hover::before { opacity:1; } /* ── GRID LAYOUT ──────────────────────────────── */ .admin-grid { display:grid; grid-template-columns:240px 1fr; gap:16px; align-items:start; } @media(max-width:700px){ .admin-grid{ grid-template-columns:1fr; } } /* ── TYPOGRAPHY ───────────────────────────────── */ h2 { font-size:1rem; font-weight:700; color:var(--text-muted); text-transform:uppercase; letter-spacing:1.2px; margin-bottom:.75rem; padding-bottom:.5rem; border-bottom:1px solid var(--border); } h3 { font-size:.95rem; font-weight:600; color:var(--text-muted); text-transform:uppercase; letter-spacing:1px; margin-bottom:.6rem; } a { color:#93c5fd; text-decoration:none; } a:hover { text-decoration:underline; } .muted { color:var(--text-muted); font-size:.88rem; } code { font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace; font-size:.85em; background:rgba(255,255,255,.06); border:1px solid var(--border); padding:1px 5px; border-radius:5px; } hr { border:0; border-top:1px solid var(--border); margin:1.2rem 0; } /* ── FORM ─────────────────────────────────────── */ label { display:block; font-size:.82rem; font-weight:600; color:var(--text-muted); text-transform:uppercase; letter-spacing:.8px; margin-bottom:.35rem; } input, textarea, select { width:100%; padding:10px 14px; border-radius:12px; background:rgba(255,255,255,.04); border:1px solid var(--border); color:var(--text); font-family:inherit; font-size:.95rem; outline:none; transition:border-color var(--transition), box-shadow var(--transition); } input:focus, textarea:focus, select:focus { border-color:rgba(99,102,241,.7); box-shadow:0 0 0 3px rgba(99,102,241,.15); } textarea { font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace; resize:vertical; } /* ── SELECT DROPDOWN ──────────────────────────── */ select { appearance:none; -webkit-appearance:none; padding-right:2.6rem; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%238888a8' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-position:right 12px center; background-size:16px 16px; cursor:pointer; } select:focus { background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23a5b4fc' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E"); } select option { background:var(--surface); color:var(--text); padding:8px 12px; } select option:checked { background:rgba(99,102,241,.25); color:#a5b4fc; } /* ── NUMBER INPUT (Port) ──────────────────────── */ input[type=number] { appearance:textfield; -moz-appearance:textfield; } input[type=number]::-webkit-inner-spin-button, input[type=number]::-webkit-outer-spin-button { -webkit-appearance:none; appearance:none; margin:0; } .field-port { position:relative; } .field-port input[type=number] { padding-right:2.8rem; } .field-port__spinners { position:absolute; right:8px; top:50%; transform:translateY(-50%); display:flex; flex-direction:column; gap:2px; } .field-port__spinners button { width:22px; height:22px; display:flex; align-items:center; justify-content:center; background:rgba(255,255,255,.07); border:1px solid var(--border); border-radius:6px; color:var(--text-muted); cursor:pointer; font-size:.7rem; line-height:1; padding:0; transition:background var(--transition), color var(--transition), border-color var(--transition); } .field-port__spinners button:hover { background:rgba(99,102,241,.2); border-color:rgba(99,102,241,.4); color:#a5b4fc; } .field { margin-bottom:1rem; } /* ── BUTTONS ──────────────────────────────────── */ .btn { display:inline-flex; align-items:center; justify-content:center; gap:6px; padding:10px 18px; border-radius:var(--radius); border:1px solid rgba(255,255,255,.12); cursor:pointer; font-size:.9rem; font-weight:600; letter-spacing:.2px; background:linear-gradient(135deg,rgba(99,102,241,.9),rgba(14,165,233,.65)); color:#fff; text-decoration:none; transition:transform var(--transition), filter var(--transition), box-shadow var(--transition); box-shadow:0 4px 18px rgba(99,102,241,.25); white-space:nowrap; } .btn:hover { filter:brightness(1.1); transform:translateY(-1px); text-decoration:none; } .btn:active { transform:translateY(1px); } .btn-sm { padding:7px 12px; font-size:.82rem; border-radius:10px; } .btn-ghost { background:rgba(255,255,255,.06); border:1px solid var(--border); box-shadow:none; } .btn-ghost:hover { background:rgba(255,255,255,.1); filter:none; } /* ── TABS ─────────────────────────────────────── */ .tabs { display:flex; gap:6px; margin-bottom:1.4rem; } .tab { padding:8px 18px; border-radius:10px; font-size:.88rem; font-weight:600; border:1px solid var(--border); background:rgba(255,255,255,.04); color:var(--text-muted); text-decoration:none; transition:background var(--transition), color var(--transition), border-color var(--transition); cursor:pointer; } .tab:hover { background:rgba(255,255,255,.08); color:var(--text); text-decoration:none; } .tab.active { background:rgba(99,102,241,.18); border-color:rgba(99,102,241,.4); color:#a5b4fc; } /* ── NOTICE / ALERTS ──────────────────────────── */ .notice { padding:10px 14px; border-radius:12px; font-size:.88rem; border:1px solid var(--border); margin-bottom:1rem; } .notice-ok { background:rgba(34,197,94,.1); border-color:rgba(34,197,94,.25); color:#86efac; } .notice-err { background:rgba(239,68,68,.09); border-color:rgba(239,68,68,.25); color:#fca5a5; } /* ── NAV LIST (Tabellenliste) ─────────────────── */ .nav-list { list-style:none; } .nav-list li { margin:3px 0; } .nav-list a { display:block; padding:8px 12px; border-radius:12px; color:var(--text-muted); font-size:.88rem; border:1px solid transparent; transition:background var(--transition), color var(--transition), border-color var(--transition); } .nav-list a:hover { background:var(--surface-hover); color:var(--text); text-decoration:none; } .nav-list a.active { background:rgba(99,102,241,.12); border-color:rgba(99,102,241,.25); color:#a5b4fc; } /* ── TABLE ────────────────────────────────────── */ .table-scroll { width:100%; max-width:100%; overflow-x:auto; overflow-y:hidden; -webkit-overflow-scrolling:touch; border-radius:12px; } /* dezente Scrollbar (Chromium/Edge) */ .table-scroll::-webkit-scrollbar { height:10px; } .table-scroll::-webkit-scrollbar-track { background:rgba(255,255,255,.03); border-radius:999px; } .table-scroll::-webkit-scrollbar-thumb { background:rgba(255,255,255,.12); border-radius:999px; } .table-scroll::-webkit-scrollbar-thumb:hover { background:rgba(99,102,241,.25); } .db-table { width:100%; min-width:max-content; border-collapse:collapse; font-size:.85rem; overflow:hidden; } .db-table thead th { padding:9px 10px; text-align:left; font-size:.75rem; font-weight:700; text-transform:uppercase; letter-spacing:.8px; color:var(--text-muted); background:rgba(255,255,255,.03); border-bottom:1px solid var(--border); } .db-table tbody td { padding:9px 10px; border-bottom:1px solid var(--border); vertical-align:top; font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace; font-size:.82rem; color:var(--text); word-break:break-word; max-width:280px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; } .db-table tbody tr:hover td { background:rgba(255,255,255,.025); } .db-table tbody tr:last-child td { border-bottom:none; } .null-val { color:var(--text-muted); font-style:italic; font-size:.8rem; } /* ── PAGINATION ───────────────────────────────── */ .pagination { display:flex; gap:8px; margin-top:12px; align-items:center; } /* ── TOP BAR ──────────────────────────────────── */ .top-bar { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:1.4rem; flex-wrap:wrap; } .top-bar-left { display:flex; align-items:center; gap:10px; } .top-bar-actions { display:flex; gap:8px; flex-wrap:wrap; } /* ── LOGIN CARD CENTERED ──────────────────────── */ .login-wrap { width:100%; max-width:420px; margin:0 auto; animation: fadeUp .5s ease both; } /* ── BACK LINK ────────────────────────────────── */ .back-link { display:inline-flex; align-items:center; gap:5px; color:var(--text-muted); font-size:.85rem; margin-bottom:1.2rem; } .back-link:hover { color:var(--text); text-decoration:none; } @media(max-width:480px) { body { padding:1.2rem .75rem 3rem; } .admin-grid { grid-template-columns:1fr; } }