*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:system-ui,sans-serif;background:#f5f2ea;color:#24211a}.app{display:flex;flex-direction:column;min-height:100vh;min-height:100dvh}.topbar{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;padding:.75rem 1.5rem;background:#1f1c16;color:#f5f2ea}.brand{font-weight:700;letter-spacing:.05em}.topbar-right{display:flex;align-items:center;gap:1rem}.topbar-right button{background:transparent;border:1px solid #f5f2ea;color:#f5f2ea;padding:.3rem .8rem;border-radius:4px;cursor:pointer}.page-center{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;padding:2rem}.auth-form{display:flex;flex-direction:column;gap:.75rem;width:min(320px,100%);background:#fff;padding:2rem;border-radius:8px;box-shadow:0 4px 20px #00000014}.auth-form label{display:flex;flex-direction:column;gap:.3rem;font-size:.9rem}.auth-form input{padding:.5rem;border:1px solid #ccc;border-radius:4px}.auth-form button,.button{padding:.6rem 1rem;background:#1f1c16;color:#fff;border:none;border-radius:4px;cursor:pointer;text-align:center;text-decoration:none;display:inline-block}.error{color:#b00020;font-size:.9rem}.success{color:#1b7a3d;font-size:.9rem}.password-form{display:flex;flex-direction:column;gap:.75rem;max-width:320px}.password-form label{display:flex;flex-direction:column;gap:.3rem;font-size:.9rem}.password-form input{padding:.5rem;border:1px solid #ccc;border-radius:4px}.password-form button{align-self:flex-start;padding:.5rem 1rem;background:#1f1c16;color:#fff;border:none;border-radius:4px;cursor:pointer}.dashboard{flex:1;padding:2rem;display:flex;flex-direction:column;gap:2rem;max-width:900px;margin:0 auto;width:100%}.panel{background:#fff;padding:1.5rem;border-radius:8px;box-shadow:0 2px 10px #0000000f}.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:1rem;margin-top:1rem}.photo-card{display:flex;flex-direction:column;gap:.4rem}.photo-card img{width:100%;height:100px;object-fit:cover;border-radius:4px}.gallery-page{position:relative;flex:1;min-height:0}.gallery-page canvas{display:block;width:100%;height:100%}.gallery-page:fullscreen{width:100%;height:100%;background:#000}.wall-editor{position:absolute;top:1rem;right:1rem;width:280px;max-width:calc(100vw - 2rem);max-height:calc(100vh - 2rem);overflow-y:auto;background:#fffffff7;border-radius:8px;padding:1rem;box-shadow:0 4px 20px #0003;display:flex;flex-direction:column;gap:1rem}.wall-editor-header{display:flex;justify-content:space-between;align-items:center}.wall-editor-field{display:flex;flex-direction:column;gap:.4rem;font-size:.9rem}.wall-editor-slot{display:flex;flex-direction:column;gap:.4rem;font-size:.9rem;padding-top:.75rem;border-top:1px solid #eee}.wall-editor-slot:first-of-type{padding-top:0;border-top:none}.wall-editor-slot-label{font-weight:600}.photo-picker{display:flex;gap:.4rem;overflow-x:auto;padding-bottom:.25rem}.photo-picker-thumb{flex:0 0 auto;width:48px;height:48px;border-radius:4px;border:2px solid transparent;padding:0;overflow:hidden;cursor:pointer;background:#eee}.photo-picker-thumb img{width:100%;height:100%;object-fit:cover;display:block}.photo-picker-thumb.active{border-color:#1f1c16}.photo-picker-none{display:flex;align-items:center;justify-content:center;font-size:1.2rem;color:#888}.layout-choices{display:flex;gap:.5rem}.layout-choices button{flex:1;padding:.4rem;border:1px solid #ccc;border-radius:4px;background:#fff;cursor:pointer}.layout-choices button.active{background:#1f1c16;color:#fff;border-color:#1f1c16}.room-size-choices{display:flex;gap:.75rem;margin-top:1rem}.admin-form{display:flex;flex-direction:column;gap:.6rem;max-width:340px;margin-top:.75rem}.admin-form label{display:flex;flex-direction:column;gap:.3rem;font-size:.9rem}.admin-form input{padding:.5rem;border:1px solid #ccc;border-radius:4px}.admin-form button[type=submit]{align-self:flex-start;padding:.5rem 1rem;background:#1f1c16;color:#fff;border:none;border-radius:4px;cursor:pointer}.admin-generate{align-self:flex-start;padding:.35rem .7rem;border:1px solid #ccc;border-radius:4px;background:#fff;cursor:pointer;font-size:.85rem}.admin-user-list{list-style:none;margin:1rem 0 0;padding:0;display:flex;flex-direction:column;gap:.4rem}.admin-user-list li{display:flex;align-items:center;justify-content:space-between;gap:.5rem;font-size:.9rem;padding:.35rem 0;border-top:1px solid #eee}.admin-role{flex:0 0 auto;padding:.15rem .5rem;border-radius:999px;font-size:.75rem;background:#eee}.admin-role-admin{background:#1f1c16;color:#fff}.admin-role-editor{background:#d8e8d8}.admin-role-visitor{background:#dce7ef}.room-list{list-style:none;margin:.75rem 0;padding:0;display:flex;flex-direction:column;gap:.5rem}.room-list-item{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.room-list-index{width:1.5rem;height:1.5rem;flex:0 0 auto;display:flex;align-items:center;justify-content:center;border-radius:3px;background:#1f1c16;color:#fff;font-size:.8rem}.room-list-item input{flex:1 1 8rem;min-width:0;padding:.4rem .5rem;border:1px solid #ccc;border-radius:4px}.room-list-item .layout-choices{flex:0 0 auto}.gallery-toolbar{position:absolute;top:1rem;left:1rem;z-index:2;display:flex;flex-wrap:wrap;gap:.5rem;max-width:calc(100% - 2rem)}.gallery-room-name{align-self:center;padding:.35rem .7rem;border-radius:4px;background:#ffffffd9;font-weight:600;font-size:.9rem}.minimap{position:absolute;bottom:1rem;left:1rem;z-index:2;display:flex;align-items:center;max-width:calc(100% - 2rem);overflow-x:auto;padding:.5rem .6rem;border-radius:8px;background:#ffffffd9;box-shadow:0 2px 12px #0003}.minimap-entry{display:flex;align-items:center}.minimap-link{width:12px;height:2px;background:#8a867c}.minimap-room{display:flex;align-items:center;justify-content:center;border:2px solid #8a867c;border-radius:3px;background:#fff;color:#24211a;font-size:.75rem;cursor:pointer;padding:0}.minimap-room.small{width:22px;height:22px}.minimap-room.large{width:30px;height:30px}.minimap-room.active{background:#2ec4c6;border-color:#1f1c16;font-weight:700}.photo-menu-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:3}.photo-menu{position:fixed;z-index:4;transform:translate(-50%,-100%);margin-top:-.75rem;max-width:90vw;background:#fffffff7;border-radius:8px;box-shadow:0 4px 20px #00000040;display:flex;flex-direction:column;overflow:hidden;min-width:160px}.lightbox-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10;background:#0a0a0ae6;display:flex;align-items:center;justify-content:center;padding:2rem}.lightbox-image{max-width:100%;max-height:100%;object-fit:contain;border-radius:4px}.lightbox-close{position:absolute;top:1rem;right:1rem;width:2.5rem;height:2.5rem;border-radius:50%;border:none;background:#ffffff26;color:#fff;font-size:1.2rem;cursor:pointer}@media (max-width: 480px){.page-center{padding:1rem}.auth-form{padding:1.25rem}.dashboard{padding:1rem;gap:1.25rem}.panel{padding:1rem}.room-size-choices{flex-direction:column}.wall-editor{left:1rem;right:1rem;width:auto}}.photo-menu button{padding:.6rem 1rem;border:none;background:#fff;text-align:left;cursor:pointer;font-size:.9rem}.photo-menu button:hover{background:#f0ede4}.photo-menu button+button{border-top:1px solid #eee}.invitation-create{display:flex;gap:.5rem;flex-wrap:wrap;margin:.75rem 0}.invitation-create input{flex:1 1 12rem;min-width:0;padding:.45rem .5rem;border:1px solid #ccc;border-radius:4px}.invitation-create button{padding:.45rem .9rem;border:none;border-radius:4px;background:#1f1c16;color:#fff;cursor:pointer}.invitation-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.75rem}.invitation-list li{border-top:1px solid #eee;padding-top:.6rem;display:flex;flex-direction:column;gap:.35rem}.invitation-line{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.invitation-line input{flex:1 1 12rem;min-width:0;padding:.35rem .5rem;border:1px solid #ddd;border-radius:4px;font-size:.8rem;background:#f7f5f0}.invitation-line button{padding:.35rem .7rem;border:1px solid #ccc;border-radius:4px;background:#fff;cursor:pointer;font-size:.85rem}.invitation-target{font-weight:600;font-size:.9rem}
