*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background-color:#141414;background-image:radial-gradient(ellipse at 65% 5%,rgba(60,40,80,.18) 0%,transparent 55%),radial-gradient(ellipse at 10% 90%,rgba(20,50,40,.15) 0%,transparent 50%);color:#e8e8e8;min-height:100vh}body:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:9999;opacity:.045;background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='200' height='200'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.72' numOctaves='4' stitchTiles='stitch'/></filter><rect width='200' height='200' filter='url(%23n)'/></svg>");background-size:160px 160px}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center}.login-box{background:#1e1e1e;border:1px solid #333;border-radius:12px;padding:2rem;display:flex;flex-direction:column;gap:.75rem;width:100%;max-width:320px}.login-box h1{font-size:1.2rem;font-weight:700;letter-spacing:-.02em;text-align:center;margin-bottom:.25rem}.login-box input{padding:.5rem .75rem;border:1px solid #333;border-radius:6px;font-size:.9rem;background:#141414;color:#e8e8e8;font-family:inherit}.login-box input:focus{outline:none;border-color:#666}.login-box button{padding:.5rem .9rem;background:none;border:1px solid #666;border-radius:6px;color:#e8e8e8;font-size:.85rem;cursor:pointer;font-family:inherit;transition:color .15s,border-color .15s}.login-box button:hover:not(:disabled){border-color:#aaa}.login-box button:disabled{opacity:.4;cursor:default}.login-error{font-size:.8rem;color:#c07070;text-align:center}.app{max-width:1400px;margin:0 auto;padding:2rem 1.5rem 4rem}header{display:flex;align-items:center;justify-content:space-between;margin-bottom:2rem;flex-wrap:wrap;gap:1rem}header h1{font-size:1.2rem;font-weight:700;letter-spacing:-.02em}.filters{display:flex;gap:.4rem}select{padding:.35rem .9rem;background:none;border:1px solid #333;border-radius:6px;cursor:pointer;font-size:.85rem;color:#888;font-family:inherit;transition:color .15s,border-color .15s;-moz-appearance:none;appearance:none;-webkit-appearance:none}select:hover{color:#ccc;border-color:#666}select option{background:#1e1e1e;color:#e8e8e8}.drop-zone{border:1px solid #333;border-radius:12px;padding:1.1rem 1.5rem;text-align:center;cursor:pointer;margin-bottom:2rem;transition:border-color .15s,color .15s;color:#777;font-size:.85rem}.drop-zone:hover{border-color:#666;color:#bbb}.drop-zone.dragging{border-color:#999;color:#e8e8e8;background:#1e1e1e}.error{color:#c07070;margin-bottom:1rem;font-size:.85rem}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:3px}.card{position:relative;aspect-ratio:1;overflow:hidden;cursor:pointer;background:#1a1a1a;border-radius:6px}.card img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .2s}.card:hover img{transform:scale(1.03)}.badge{position:absolute;bottom:.4rem;left:.4rem;font-size:.65rem;font-weight:500;padding:.15rem .45rem;border-radius:4px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0000008c;color:#bbb}.badge.geplant{background:#155724cc;color:#70a870}.badge.verwendet{background:#00285acc;color:#70a8d8}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000eb;display:flex;align-items:center;justify-content:center;z-index:100}.modal{display:flex;max-width:1100px;width:95vw;max-height:92vh;background:#1e1e1e;border:1px solid #333;border-radius:12px;overflow:hidden;position:relative}.modal-close{position:absolute;top:.75rem;right:.75rem;background:none;border:1px solid #333;color:#888;width:2rem;height:2rem;border-radius:50%;cursor:pointer;font-size:.85rem;z-index:10;display:flex;align-items:center;justify-content:center;transition:color .15s,border-color .15s;font-family:inherit}.modal-close:hover{color:#e8e8e8;border-color:#888}.modal-nav{position:absolute;top:50%;left:0;right:260px;transform:translateY(-50%);display:flex;justify-content:space-between;padding:0 .75rem;pointer-events:none;z-index:10}.modal-nav button{pointer-events:all;background:none;border:1px solid #444;color:#888;width:2.5rem;height:2.5rem;border-radius:50%;cursor:pointer;font-size:1.2rem;display:flex;align-items:center;justify-content:center;font-family:inherit;transition:color .15s,border-color .15s}.modal-nav button:hover{color:#e8e8e8;border-color:#888}.modal-nav button:disabled{opacity:.2;cursor:default}.modal-image{flex:1;display:flex;align-items:center;justify-content:center;overflow:hidden;min-width:0;background:#0f0f0f}.modal-image img{max-width:100%;max-height:92vh;object-fit:contain;display:block}.modal-meta{width:260px;flex-shrink:0;padding:3rem 1.25rem 1.5rem;display:flex;flex-direction:column;gap:.4rem;border-left:1px solid #333;overflow-y:auto}.modal-filename{font-size:.78rem;color:#777;margin-bottom:.75rem;word-break:break-all}.modal-meta label{font-size:.75rem;font-weight:600;color:#777;margin-top:.75rem}.modal-meta select,.modal-meta input[type=date]{padding:.35rem .6rem;border:1px solid #333;border-radius:6px;font-size:.85rem;width:100%;background:#141414;color:#e8e8e8;font-family:inherit;transition:border-color .15s}.modal-meta select:hover,.modal-meta input[type=date]:hover{border-color:#666}.modal-meta select option{background:#1e1e1e}.delete{margin-top:auto;padding:.4rem .9rem;background:none;border:1px solid #333;color:#888;border-radius:6px;cursor:pointer;font-size:.85rem;font-family:inherit;transition:color .15s,border-color .15s}.delete:hover{border-color:#c07070;color:#c07070}@media (max-width: 600px){.app{padding:1rem .75rem 3rem}.grid{grid-template-columns:unset;grid-template-rows:repeat(2,44vw);grid-auto-flow:column;grid-auto-columns:44vw;overflow-x:auto;overflow-y:hidden;gap:2px;margin:0 -.75rem;padding:0 .75rem;scroll-snap-type:x mandatory}.card{aspect-ratio:unset;scroll-snap-align:start}.modal-backdrop{align-items:flex-end;background:#000000d9}.modal{flex-direction:column;width:100vw;max-width:100vw;max-height:95vh;border-radius:12px 12px 0 0;border-bottom:none}.modal-image{max-height:45vh;flex:none}.modal-image img{max-height:45vh}.modal-nav{right:0;top:22vh}.modal-meta{width:100%;border-left:none;border-top:1px solid #2a2a2a;padding:1rem 1rem 1.5rem;flex-direction:row;flex-wrap:wrap;gap:.5rem;overflow-y:auto;max-height:50vh}.modal-filename{width:100%;margin-bottom:0}.modal-meta label{width:100%;margin-top:.25rem}.modal-meta select,.modal-meta input[type=date]{flex:1;min-width:120px}.delete{width:100%;margin-top:.25rem;text-align:center}.modal-close{top:.5rem;right:.5rem}}
