*,:before,:after{box-sizing:border-box}html,body,#root{height:100%;margin:0}html{-webkit-text-size-adjust:100%}body{color:#1a1d23;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#f3f5f9;font-family:Plus Jakarta Sans,Segoe UI,sans-serif;overflow-x:hidden}button,input,select{font:inherit}img,svg{max-width:100%}:root{--text-on-dark:#fff;--field-bg:#eef2f8;--field-text:#1a1d23;--field-placeholder:#8a93a3;--btn-bg:#0d6efd;--btn-bg-hover:#0b5ed7;--btn-bg-active:#0a58ca;--icon:#5c6575;--gap:1.1rem;--radius:8px;--form-width:min(22rem, 88vw)}.page{background-image:linear-gradient(#060c168c,#060c169e),url(https://images.unsplash.com/photo-1519501025264-65ba15a82390?auto=format&fit=crop&w=1920&q=80);background-position:50%;background-repeat:no-repeat;background-size:cover;place-items:center;min-height:100%;padding:1.5rem;display:grid}.login-form{width:var(--form-width);align-items:stretch;gap:var(--gap);flex-direction:column;display:flex}.login-title{text-align:center;letter-spacing:.01em;color:var(--text-on-dark);margin:0 0 .35rem;font-size:clamp(1.75rem,4vw,2.15rem);font-weight:700}.field{border-radius:var(--radius);background:var(--field-bg);width:100%;height:3rem;color:var(--field-text);border:none;outline:none;padding:0 .95rem;font-size:.95rem;font-weight:500;transition:box-shadow .16s}.field::placeholder{color:var(--field-placeholder)}.field:focus{box-shadow:0 0 0 2px #0d6efd73}.password-wrap{position:relative}.password-wrap .field{padding-right:2.75rem}.toggle-visibility{width:2rem;height:2rem;color:var(--icon);cursor:pointer;background:0 0;border:none;border-radius:6px;place-items:center;padding:0;display:grid;position:absolute;top:50%;right:.65rem;transform:translateY(-50%)}.toggle-visibility:hover{color:var(--field-text)}.toggle-visibility:focus-visible{outline-offset:1px;outline:2px solid #0d6efd8c}.login-error{color:#ffd2d6;text-align:center;margin:-.2rem 0 0;font-size:.88rem}.login-btn{border-radius:var(--radius);background:var(--btn-bg);width:100%;height:3rem;color:var(--text-on-dark);cursor:pointer;border:none;font-size:1.05rem;font-weight:600;transition:background-color .16s,transform .12s}.login-btn:hover:not(:disabled){background:var(--btn-bg-hover)}.login-btn:active:not(:disabled){background:var(--btn-bg-active);transform:translateY(1px)}.login-btn:disabled{opacity:.7;cursor:wait}.login-btn:focus-visible{outline-offset:2px;outline:2px solid #fff}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.app-shell{color:#1a1d23;background:#f3f5f9;grid-template-columns:240px 1fr;min-height:100%;display:grid}.sidebar{color:#fff;background:#0f1b2d;flex-direction:column;padding:1.25rem .9rem;display:flex}.sidebar-brand{letter-spacing:.02em;padding:.35rem .75rem 1.5rem;font-size:1.2rem;font-weight:700}.sidebar-nav{flex-direction:column;gap:.35rem;display:flex}.sidebar-link{color:#ffffffc7;border-radius:8px;padding:.75rem .9rem;font-size:.95rem;font-weight:600;text-decoration:none;transition:background-color .14s,color .14s;display:block}.sidebar-link:hover{color:#fff;background:#ffffff14}.sidebar-link.is-active{color:#fff;background:#0d6efd}.app-main{flex-direction:column;min-width:0;display:flex}.navbar{background:#fff;border-bottom:1px solid #e3e8f0;justify-content:space-between;align-items:center;gap:1rem;min-height:64px;padding:0 1.5rem;display:flex}.navbar-title{color:#1a1d23;margin:0;font-size:1.05rem;font-weight:700}.navbar-right{align-items:center;gap:.85rem;display:flex}.navbar-user{color:#5c6575;font-size:.85rem}.navbar-logout{color:#1a1d23;cursor:pointer;background:#fff;border:1px solid #d5dbe6;border-radius:8px;height:2.25rem;padding:0 .9rem;font-size:.85rem;font-weight:600}.navbar-logout:hover{background:#f3f5f9}.content{flex:1;min-width:0;padding:1.5rem}@media (width<=860px){.app-shell{grid-template-columns:1fr}.sidebar{flex-direction:column;align-items:stretch;gap:.65rem;padding:.85rem .9rem}.sidebar-brand{padding:.15rem .35rem .25rem}.sidebar-nav{flex-flow:wrap;gap:.35rem}.sidebar-link{text-align:center;flex:auto;padding:.65rem .7rem;font-size:.88rem}.navbar{min-height:56px;padding:0 1rem}.navbar-title{font-size:.98rem}.navbar-user{display:none}.content{padding:1rem}}@media (width<=480px){.sidebar-link{flex:calc(50% - .35rem)}.content{padding:.75rem}}.user-shell{--ud-bg:#f4f8fb;--ud-ink:#1c2430;--ud-muted:#8b97a8;--ud-mint:#3ecf9a;--ud-mint-deep:#2bb883;--ud-sky:#9fd8f0;--ud-card:#ffffffe0;--ud-shadow:0 14px 28px #7896b424;--ud-shadow-soft:0 8px 18px #7896b41f;--ud-pad-x:clamp(.5rem, 1.2vw, .85rem);isolation:isolate;background:radial-gradient(ellipse 80% 50% at 10% -10%, #d9f5ff 0%, transparent 55%), radial-gradient(ellipse 70% 45% at 95% 5%, #d8f8ea 0%, transparent 50%), linear-gradient(180deg, #f7fbff 0%, var(--ud-bg) 45%, #eef6f8 100%);min-height:100%;color:var(--ud-ink);flex-direction:column;font-family:Plus Jakarta Sans,Segoe UI,sans-serif;display:flex;position:relative;overflow-x:hidden}.user-blob{z-index:-1;filter:blur(8px);pointer-events:none;border-radius:50%;position:absolute}.user-blob-a{background:radial-gradient(circle,#9fd8f080,#0000 70%);width:16rem;height:16rem;top:-5rem;right:-3rem}.user-blob-b{background:radial-gradient(circle,#3ecf9a33,#0000 70%);width:18rem;height:18rem;top:40%;left:-6rem}.user-blob-c{background:radial-gradient(circle,#bae6fd66,#0000 70%);width:18rem;height:18rem;bottom:-6rem;right:8%}.user-navbar{min-height:3.5rem;padding:.65rem var(--ud-pad-x);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#fff9;border-bottom:1px solid #ffffffbf;flex-shrink:0;justify-content:space-between;align-items:center;gap:.75rem;display:flex}.user-brand{letter-spacing:.14em;color:var(--ud-ink);font-size:1.05rem;font-weight:700}.user-navbar-right{align-items:center;gap:.65rem;min-width:0;display:flex}.user-navbar-email{text-overflow:ellipsis;white-space:nowrap;max-width:11rem;color:var(--ud-muted);font-size:.78rem;font-weight:500;overflow:hidden}.user-logout{height:2.2rem;color:var(--ud-ink);box-shadow:var(--ud-shadow-soft);cursor:pointer;background:#fff;border:none;border-radius:999px;padding:0 .95rem;font-size:.82rem;font-weight:600;transition:transform .16s,box-shadow .16s}.user-logout:hover{transform:translateY(-1px);box-shadow:0 10px 18px #7896b42e}.user-logout:active{transform:translateY(1px);box-shadow:inset 0 2px 6px #7896b42e}.user-content{width:100%;padding:.65rem var(--ud-pad-x) 1rem;flex-direction:column;flex:1;display:flex;position:relative}@media (width<=480px){.user-navbar-email{display:none}}@media (width>=768px){.user-navbar{min-height:3.75rem;padding:.75rem var(--ud-pad-x)}.user-brand{font-size:1.12rem}.user-content{padding:.75rem var(--ud-pad-x) 1.25rem}}.logs-page{flex-direction:column;gap:1.1rem;display:flex}.logs-header{flex-direction:column;gap:.25rem;display:flex}.logs-title{color:#1a1d23;margin:0;font-size:1.35rem;font-weight:700}.logs-subtitle{color:#5c6575;margin:0;font-size:.9rem}.logs-table-wrap{background:#fff;border:1px solid #e3e8f0;border-radius:10px;overflow-x:auto}.logs-table{border-collapse:collapse;width:100%;min-width:640px}.logs-table th,.logs-table td{text-align:left;padding:.9rem 1rem;font-size:.92rem}.logs-table thead{background:#f7f9fc}.logs-table th{color:#3d4656;border-bottom:1px solid #e3e8f0;font-weight:700}.logs-table td{color:#1a1d23;border-bottom:1px solid #eef2f7}.logs-table tbody tr:last-child td{border-bottom:none}.logs-table tbody tr:hover{background:#f8fafc}.logs-empty{text-align:center;color:#5c6575;padding:1.5rem 1rem!important}.action-badge{border-radius:999px;justify-content:center;align-items:center;min-width:4.75rem;padding:.25rem .55rem;font-size:.8rem;font-weight:700;display:inline-flex}.action-badge.is-open{color:#157347;background:#e8f7ee}.action-badge.is-close{color:#b02a37;background:#fdebec}.page-panel{background:#fff;border:1px solid #e3e8f0;border-radius:12px;flex-direction:column;gap:1.1rem;width:100%;min-height:calc(100vh - 64px - 3rem);padding:1.25rem 1.5rem 1.5rem;display:flex}.page-header{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.page-title{color:#1a1d23;margin:0;font-size:1.35rem;font-weight:700}.assign-btn,.save-btn{color:#fff;cursor:pointer;background:#0d6efd;border:none;border-radius:8px;height:2.35rem;padding:0 1rem;font-size:.9rem;font-weight:600}.assign-btn:hover,.save-btn:hover:not(:disabled){background:#0b5ed7}.save-btn:disabled{opacity:.55;cursor:not-allowed}.close-btn{color:#3d4656;cursor:pointer;background:#f3f5f9;border:none;border-radius:8px;width:2.1rem;height:2.1rem;font-size:1.35rem;line-height:1}.close-btn:hover{background:#e8edf5}.access-error{color:#b02a37;margin:0;font-size:.92rem}.access-table-wrap{border:1px solid #e3e8f0;border-radius:10px;flex:1;overflow:auto}.access-table{border-collapse:collapse;width:100%}.access-table th,.access-table td{text-align:left;padding:.9rem 1rem;font-size:.92rem}.access-table thead{background:#f7f9fc;position:sticky;top:0}.access-table th{color:#3d4656;border-bottom:1px solid #e3e8f0;font-weight:700}.access-table td{color:#1a1d23;border-bottom:1px solid #eef2f7}.access-table tbody tr:last-child td{border-bottom:none}.access-table tbody tr:hover{background:#f8fafc}.access-empty{text-align:center;color:#5c6575;padding:2rem 1rem!important}.assign-form{flex-direction:column;flex:1;gap:.55rem;max-width:36rem;display:flex}.assign-label{color:#3d4656;margin-top:.35rem;font-size:.9rem;font-weight:600}.assign-select{color:#1a1d23;cursor:pointer;background:#eef2f8;border:1px solid #d5dbe6;border-radius:8px;outline:none;width:100%;height:2.75rem;padding:0 .85rem;font-size:.92rem;font-weight:500}.assign-select:focus{border-color:#0d6efd;box-shadow:0 0 0 2px #0d6efd40}.members-fieldset{border:none;min-width:0;margin:.5rem 0 0;padding:0}.members-fieldset .assign-label{margin-bottom:.45rem;padding:0}.members-list{background:#f8fafc;border:1px solid #e3e8f0;border-radius:10px;flex-direction:column;gap:.35rem;max-height:min(22rem,45vh);padding:.75rem;display:flex;overflow:auto}.member-option{cursor:pointer;color:#1a1d23;background:#fff;border:1px solid #e3e8f0;border-radius:8px;align-items:center;gap:.65rem;padding:.55rem .65rem;font-size:.92rem;display:flex}.member-option:hover{background:#eef2f8}.member-option input{accent-color:#0d6efd;cursor:pointer;width:1.05rem;height:1.05rem}.members-empty{color:#5c6575;margin:0;padding:.85rem .65rem;font-size:.9rem;line-height:1.45}.time-fieldset{background:#f8fafc;border:1px solid #e3e8f0;border-radius:10px;margin:.75rem 0 0;padding:.85rem 1rem}.time-fieldset .assign-label{margin-top:0;margin-bottom:.25rem;padding:0}.assign-hint{color:#5c6575;margin:0 0 .75rem;font-size:.85rem;line-height:1.4}.time-row{grid-template-columns:1fr 1fr;gap:.75rem;display:grid}.time-field{color:#3d4656;flex-direction:column;gap:.35rem;font-size:.85rem;font-weight:600;display:flex}.assign-time{color:#1a1d23;background:#fff;border:1px solid #d5dbe6;border-radius:8px;outline:none;width:100%;height:2.75rem;padding:0 .75rem;font-size:.92rem}.assign-time:focus{border-color:#0d6efd;box-shadow:0 0 0 2px #0d6efd40}.save-btn{width:100%;max-width:16rem;height:2.75rem;margin-top:auto;font-size:.98rem}.admin-page{flex-direction:column;gap:1.25rem;width:100%;display:flex}.admin-title{color:#1a1d23;margin:0;font-size:1.45rem;font-weight:700}.admin-error{color:#b02a37;margin:0;font-size:.92rem}.admin-panel{background:#fff;border:1px solid #e3e8f0;border-radius:12px;flex-direction:column;gap:.85rem;padding:1.25rem 1.5rem 1.4rem;display:flex}.admin-panel-head{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.admin-panel-title{color:#1a1d23;margin:0;font-size:1.15rem;font-weight:700}.admin-add-btn{color:#fff;cursor:pointer;background:#0d6efd;border:none;border-radius:8px;height:2.25rem;padding:0 1rem;font-size:.9rem;font-weight:600}.admin-add-btn:hover{background:#0b5ed7}.admin-inline-form{background:#f8fafc;border:1px solid #e3e8f0;border-radius:10px;flex-wrap:wrap;gap:.6rem;padding:.75rem;display:flex}.admin-user-form .admin-input{min-width:12rem}.admin-input{color:#1a1d23;background:#fff;border:1px solid #d5dbe6;border-radius:8px;outline:none;flex:1;min-width:10rem;height:2.5rem;padding:0 .85rem;font-size:.92rem}.admin-input:focus{border-color:#0d6efd;box-shadow:0 0 0 2px #0d6efd40}.admin-input-inline{flex:1;height:2.25rem}.admin-list{flex-direction:column;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.admin-row{background:#f8fafc;border:1px solid #e3e8f0;border-radius:10px;justify-content:space-between;align-items:center;gap:.75rem;padding:.75rem .9rem;display:flex}.admin-row-name{color:#1a1d23;font-size:.95rem;font-weight:600}.admin-user-info{flex-direction:column;gap:.15rem;display:flex}.admin-row-sub{color:#5c6575;font-size:.82rem}.admin-row-actions{gap:.5rem;display:flex}.admin-edit-btn{color:#0d6efd;cursor:pointer;background:#fff;border:1px solid #d5dbe6;border-radius:8px;height:2rem;padding:0 .9rem;font-size:.85rem;font-weight:600}.admin-edit-btn:hover{background:#eef2f8}.admin-save-btn{color:#fff;cursor:pointer;background:#0d6efd;border:none;border-radius:8px;height:2.25rem;padding:0 1rem;font-size:.88rem;font-weight:600}.admin-save-btn:hover:not(:disabled){background:#0b5ed7}.admin-save-btn:disabled{opacity:.55;cursor:not-allowed}.admin-ghost-btn{color:#3d4656;cursor:pointer;background:#fff;border:1px solid #d5dbe6;border-radius:8px;height:2.25rem;padding:0 .9rem;font-size:.88rem;font-weight:600}.admin-ghost-btn:hover{background:#eef2f8}.admin-more-btn{color:#0d6efd;cursor:pointer;background:0 0;border:none;align-self:flex-start;padding:.2rem 0;font-size:.88rem;font-weight:600}.admin-more-btn:hover{text-decoration:underline}.admin-empty{color:#5c6575;padding:.85rem .9rem;font-size:.9rem}.admin-credentials{color:#1a4731;background:#eafaf0;border:1px solid #b7e3c7;border-radius:10px;flex-direction:column;gap:.25rem;padding:.85rem 1rem;font-size:.9rem;display:flex}.user-dashboard{--ud-ink:#1c2430;--ud-muted:#8b97a8;--ud-mint:#3ecf9a;--ud-mint-deep:#2bb883;--ud-sky:#7ec8e8;--ud-card:#fff;--ud-shadow:0 10px 28px #7882a029;flex-direction:column;flex:1;align-items:stretch;gap:.75rem;width:100%;max-width:100%;min-height:0;margin:0;animation:.42s both ud-fade-up;display:flex}@keyframes ud-fade-up{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.ud-hero{text-align:left;background:var(--ud-card);width:100%;box-shadow:var(--ud-shadow);border-radius:1.65rem;flex-direction:column;flex-shrink:0;gap:.45rem;padding:1.35rem 1.25rem 1.5rem;display:flex}.ud-kicker{letter-spacing:.1em;text-transform:uppercase;color:var(--ud-mint-deep);margin:0;font-size:.72rem;font-weight:700}.user-welcome{letter-spacing:-.03em;color:var(--ud-ink);word-break:break-word;margin:0;font-size:clamp(1.65rem,4.5vw,2.5rem);font-weight:700;line-height:1.12}.user-welcome span{background:linear-gradient(120deg, var(--ud-mint-deep), var(--ud-sky));color:#0000;-webkit-background-clip:text;background-clip:text}.user-subtitle{color:var(--ud-muted);margin:.15rem 0 0;font-size:clamp(.9rem,2vw,1.05rem);font-weight:500;line-height:1.45}.user-error,.user-success{box-shadow:var(--ud-shadow);border-radius:16px;margin:0;padding:.75rem .95rem;font-size:.88rem;font-weight:600}.user-error{color:#b02a37;background:#fffffff2;border:1px solid #b02a371f}.user-success{color:#146c43;background:#3ecf9a1f;border:1px solid #3ecf9a47}.user-doors{grid-template-columns:1fr;gap:.65rem;width:100%;display:grid}.user-door-card{background:var(--ud-card);width:100%;min-height:4.85rem;box-shadow:var(--ud-shadow);border:none;border-radius:1.65rem;flex-direction:column;justify-content:center;padding:.75rem 1rem .85rem;transition:transform .16s,box-shadow .16s;animation:.48s both ud-fade-up;display:flex;position:relative}.user-door-card:nth-child(2){animation-delay:40ms}.user-door-card:nth-child(3){animation-delay:80ms}.user-door-card:hover{transform:translateY(-1px);box-shadow:0 14px 30px #7882a033}.ud-card-main{align-items:center;gap:.75rem;width:100%;min-width:0;display:flex}.ud-door-icon{color:#fff;background:linear-gradient(145deg, var(--ud-mint), #6ad6ef);border-radius:50%;flex-shrink:0;place-items:center;width:2.5rem;height:2.5rem;display:grid;box-shadow:0 6px 12px #3ecf9a4d}.ud-card-body{flex-direction:column;flex:1;gap:.1rem;min-width:0;display:flex}.user-door-name{letter-spacing:-.01em;color:var(--ud-ink);white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:clamp(.95rem,2vw,1.1rem);font-weight:700;overflow:hidden}.ud-status-text{color:var(--ud-muted);margin:0;font-size:.78rem;font-weight:500}.user-door-card.is-open .ud-status-text{color:var(--ud-mint-deep)}.ud-access-hours{color:#5c6575;margin:.35rem 0 0;font-size:.72rem;font-weight:600}.user-door-card.is-restricted{opacity:.82}.user-door-card.is-restricted .ud-access-hours{color:#b02a37}.user-door-actions{flex-shrink:0;align-items:center;gap:.45rem;display:flex}.door-open-btn,.door-close-btn{cursor:pointer;-webkit-tap-highlight-color:transparent;border:none;border-radius:999px;height:2.2rem;padding:0 .9rem;font-size:.82rem;font-weight:700;transition:transform .14s,box-shadow .14s}.door-open-btn{color:#fff;background:linear-gradient(145deg, var(--ud-mint), var(--ud-mint-deep));box-shadow:0 6px 12px #3ecf9a47}.door-close-btn{color:var(--ud-ink);background:#f3f5f8}.door-open-btn:hover:not(:disabled),.door-close-btn:hover:not(:disabled){transform:translateY(-1px)}.door-open-btn:disabled,.door-close-btn:disabled{opacity:.55;cursor:not-allowed;transform:none}.ud-home-bar{background:#d7dce6;border-radius:999px;width:2.4rem;height:.22rem;margin:.45rem auto 0;display:block}.user-empty{text-align:center;background:var(--ud-card);min-height:5rem;box-shadow:var(--ud-shadow);color:var(--ud-muted);border-radius:1.65rem;place-items:center;margin:0;padding:1.35rem 1.1rem;font-size:.92rem;font-weight:500;line-height:1.45;display:grid}@media (width>=640px){.ud-hero{border-radius:1.85rem;padding:1.6rem 1.5rem 1.75rem}.user-door-card{border-radius:1.85rem;min-height:5.1rem;padding:.85rem 1.15rem .95rem}.door-open-btn,.door-close-btn{height:2.35rem;padding:0 1.05rem;font-size:.85rem}}@media (width>=768px){.user-dashboard{gap:.85rem}.ud-hero{border-radius:2rem;padding:2rem 1.75rem 2.15rem}.user-doors{grid-template-columns:repeat(auto-fit,minmax(0,1fr));gap:.65rem}.user-door-card{min-width:0;min-height:5.35rem}}@media (width>=1100px){.ud-hero{padding:2.25rem 2rem 2.4rem}.user-doors{gap:.75rem}}@media (width<=380px){.ud-card-main{flex-wrap:wrap}.user-door-actions{justify-content:flex-end;width:100%;padding-left:3.25rem}}
