*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--leading-normal);color:var(--color-text);background:var(--color-background);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3,h4{font-family:var(--font-heading);line-height:var(--leading-tight);margin:0 0 .5em;color:var(--color-text);letter-spacing:-.01em}h1{font-size:var(--text-3xl);font-weight:var(--weight-bold)}h2{font-size:var(--text-2xl);font-weight:var(--weight-bold)}h3{font-size:var(--text-xl);font-weight:var(--weight-semibold)}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}code,kbd,pre,.mono{font-family:var(--font-mono)}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}img{max-width:100%}.container{width:100%;max-width:520px;margin:0 auto;padding:1.25rem 1rem 2rem}.container-wide{width:100%;max-width:1200px;margin:0 auto;padding:1.25rem}.stack>*+*{margin-top:1rem}.row{display:flex;gap:.75rem;align-items:center}.row-between{display:flex;gap:.75rem;align-items:center;justify-content:space-between;flex-wrap:wrap}.grow{flex:1}.muted{color:var(--color-text-muted, var(--color-textMuted))}.center{text-align:center}.card{background:var(--color-surface);border:1px solid var(--color-border, var(--color-surface-muted));border-radius:var(--radius-lg);padding:1.35rem;box-shadow:0 1px 2px #1018280a,0 8px 24px -16px #1018282e}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;font-family:var(--font-sans);font-size:var(--text-base);font-weight:var(--weight-semibold);border-radius:var(--radius-pill);padding:.72rem 1.25rem;border:1px solid transparent;cursor:pointer;transition:transform .05s ease,filter .15s ease,box-shadow .15s ease,opacity .15s ease;text-decoration:none;line-height:1.1}.btn:hover:not(:disabled){filter:brightness(.96);text-decoration:none}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-block{width:100%}.btn-primary{background:var(--color-primary);color:var(--color-primary-contrast, #fff);box-shadow:0 6px 16px -8px color-mix(in srgb,var(--color-primary) 70%,transparent)}.btn-secondary{background:var(--color-secondary);color:var(--color-secondary-contrast, #fff)}.btn-ghost{background:var(--color-surface);color:var(--color-text);border-color:var(--color-border, var(--color-surface-muted))}.btn-ghost:hover:not(:disabled){background:var(--color-surface-muted);filter:none}.btn-danger{background:var(--color-error);color:#fff}.btn-sm{padding:.45rem .85rem;font-size:var(--text-sm)}.field{display:flex;flex-direction:column;gap:.4rem;flex:1;min-width:0}.field label{font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-text)}.input,.select,.textarea{font-family:var(--font-sans);font-size:var(--text-base);color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border, var(--color-surface-muted));border-radius:var(--radius-md);padding:.7rem .85rem;width:100%;transition:border-color .15s ease,box-shadow .15s ease}.input::placeholder{color:var(--color-text-muted, var(--color-textMuted));opacity:.7}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--color-primary) 22%,transparent)}.toggle{display:inline-flex;align-items:center;gap:.6rem;cursor:pointer}.toggle input{position:absolute;opacity:0;width:0;height:0}.toggle-track{width:46px;height:27px;border-radius:var(--radius-pill);background:var(--color-border);position:relative;transition:background .15s ease;flex:none}.toggle-thumb{position:absolute;top:3px;left:3px;width:21px;height:21px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #00000040;transition:transform .15s ease}.toggle input:checked+.toggle-track{background:var(--color-primary)}.toggle input:checked+.toggle-track .toggle-thumb{transform:translate(19px)}.badge{display:inline-flex;align-items:center;gap:.35rem;font-size:var(--text-xs);font-weight:var(--weight-semibold);padding:.25rem .65rem;border-radius:var(--radius-pill);background:var(--color-surface-muted, var(--color-border));color:var(--color-text)}.badge-success{background:color-mix(in srgb,var(--color-success) 18%,transparent);color:var(--color-success)}.badge-error{background:color-mix(in srgb,var(--color-error) 18%,transparent);color:var(--color-error)}.badge-warning{background:color-mix(in srgb,var(--color-warning) 22%,transparent);color:var(--color-warning)}.badge-info{background:color-mix(in srgb,var(--color-info, var(--color-primary)) 16%,transparent);color:var(--color-info, var(--color-primary))}.table{width:100%;border-collapse:collapse}.table th,.table td{text-align:left;padding:.7rem .8rem;border-bottom:1px solid var(--color-border, var(--color-surface-muted));font-size:var(--text-sm);vertical-align:middle}.table th{color:var(--color-text-muted, var(--color-textMuted));font-weight:var(--weight-semibold);text-transform:uppercase;font-size:var(--text-xs);letter-spacing:.04em}.table tbody tr:last-child td{border-bottom:none}.table tr:hover td{background:var(--color-surface-muted, var(--color-background))}.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}.alert{border-radius:var(--radius-md);padding:.8rem 1rem;font-size:var(--text-sm);border:1px solid transparent}.alert-info{background:color-mix(in srgb,var(--color-info, var(--color-primary)) 10%,transparent);border-color:color-mix(in srgb,var(--color-info, var(--color-primary)) 40%,transparent);color:var(--color-text)}.alert-error{background:color-mix(in srgb,var(--color-error) 10%,transparent);border-color:color-mix(in srgb,var(--color-error) 45%,transparent)}.alert-success{background:color-mix(in srgb,var(--color-success) 10%,transparent);border-color:color-mix(in srgb,var(--color-success) 45%,transparent)}.alert-warning{background:color-mix(in srgb,var(--color-warning) 12%,transparent);border-color:color-mix(in srgb,var(--color-warning) 50%,transparent)}.guest-shell{min-height:100%;display:flex;flex-direction:column;max-width:560px;margin:0 auto;background:var(--color-surface);box-shadow:0 0 60px -30px #10182840}.guest-header{position:sticky;top:0;z-index:10;background:var(--color-surface);border-bottom:1px solid var(--color-border, var(--color-surface-muted));padding:.85rem 1.1rem;display:flex;align-items:center;justify-content:space-between}.guest-header img{height:30px;width:auto}.guest-nav{position:sticky;bottom:0;background:var(--color-surface);border-top:1px solid var(--color-border, var(--color-surface-muted));display:flex;justify-content:space-around;padding:.45rem 0;padding-bottom:calc(.45rem + env(safe-area-inset-bottom))}.guest-nav a{display:flex;flex-direction:column;align-items:center;gap:2px;font-size:var(--text-xs);color:var(--color-text-muted, var(--color-textMuted));padding:.3rem .6rem;border-radius:var(--radius-sm)}.guest-nav a.active{color:var(--color-primary);font-weight:var(--weight-semibold)}.guest-shell .container{max-width:100%}.auth-wrap{min-height:100%;display:flex;align-items:center;justify-content:center;padding:1.5rem 1rem;background:radial-gradient(900px 500px at 100% -10%,color-mix(in srgb,var(--color-primary) 12%,transparent),transparent),radial-gradient(700px 500px at -10% 110%,color-mix(in srgb,var(--color-secondary) 12%,transparent),transparent),var(--color-background)}.auth-card{width:100%;max-width:400px}.auth-logo{display:block;height:46px;width:auto;margin:0 auto 1.25rem}.app{min-height:100%;background:var(--color-background);padding:14px}.app-panel{background:var(--color-surface);border:1px solid var(--color-border, var(--color-surface-muted));border-radius:22px;box-shadow:0 1px 2px #1018280a,0 30px 60px -40px #1018284d;display:grid;grid-template-columns:256px 1fr;min-height:calc(100vh - 28px);overflow:hidden}.admin-sidebar{background:var(--color-surface);border-right:1px solid var(--color-border, var(--color-surface-muted));padding:1.2rem .9rem;display:flex;flex-direction:column;gap:.15rem}.sidebar-logo{height:30px;width:auto;object-fit:contain;align-self:flex-start;margin:.2rem .4rem 1.1rem}.nav-section{font-size:.68rem;font-weight:var(--weight-bold);letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-muted, var(--color-textMuted));margin:.9rem .6rem .35rem}.admin-sidebar nav{display:flex;flex-direction:column;gap:.15rem}.admin-sidebar nav a{display:flex;align-items:center;gap:.65rem;padding:.6rem .7rem;border-radius:var(--radius-md);color:var(--color-text-muted, var(--color-textMuted));font-size:var(--text-sm);font-weight:var(--weight-medium)}.admin-sidebar nav a:hover{background:var(--color-surface-muted);text-decoration:none;color:var(--color-text)}.admin-sidebar nav a.active{background:color-mix(in srgb,var(--color-primary) 12%,transparent);color:var(--color-primary);font-weight:var(--weight-semibold)}.nav-ico{flex:none}.sidebar-foot{margin-top:auto;padding-top:1rem;border-top:1px solid var(--color-border, var(--color-surface-muted));display:flex;flex-direction:column;gap:.6rem}.user-chip{display:flex;align-items:center;gap:.6rem;padding:.2rem .4rem}.avatar{flex:none;width:34px;height:34px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--color-primary) 16%,transparent);color:var(--color-primary);font-weight:var(--weight-bold);font-size:var(--text-sm)}.admin-content{display:flex;flex-direction:column;min-width:0}.topbar{position:sticky;top:0;z-index:15;display:flex;align-items:center;justify-content:space-between;padding:.7rem 1.5rem;background:color-mix(in srgb,var(--color-surface) 88%,transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-bottom:1px solid var(--color-border, var(--color-surface-muted))}.topbar-mark{height:26px;width:auto;opacity:.9}.admin-main{padding:1.6rem 1.5rem 2rem;overflow:auto}.sidebar-top{display:flex;align-items:center;justify-content:space-between}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:var(--radius-md);background:transparent;border:1px solid var(--color-border, var(--color-surface-muted));color:var(--color-text);cursor:pointer}.icon-btn:hover{background:var(--color-surface-muted)}.hamburger,.drawer-close,.sidebar-overlay{display:none}.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1rem}.kpi{background:var(--color-surface);border:1px solid var(--color-border, var(--color-surface-muted));border-radius:var(--radius-lg);padding:1.1rem 1.2rem;box-shadow:0 1px 2px #1018280a,0 8px 24px -18px #10182833}.kpi .kpi-label{font-size:var(--text-sm);color:var(--color-text-muted, var(--color-textMuted))}.kpi .kpi-value{font-family:var(--font-heading);font-size:var(--text-3xl);font-weight:var(--weight-bold);line-height:1.1;margin-top:.3rem}.kpi-primary{background:var(--color-primary);border-color:transparent;color:var(--color-primary-contrast, #fff);box-shadow:0 12px 30px -16px color-mix(in srgb,var(--color-primary) 80%,transparent)}.kpi-primary .kpi-label{color:color-mix(in srgb,var(--color-primary-contrast, #fff) 80%,transparent)}@media (max-width: 860px){.app{padding:0}.app-panel{grid-template-columns:1fr;border-radius:0;border:none;min-height:100vh;box-shadow:none}.admin-sidebar{position:fixed;top:0;left:0;z-index:60;width:270px;max-width:84vw;height:100%;transform:translate(-100%);transition:transform .22s ease;border-right:1px solid var(--color-border, var(--color-surface-muted));box-shadow:0 0 50px -10px #10182866;overflow-y:auto}.admin-sidebar.open{transform:translate(0)}.sidebar-overlay{display:block;position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#10182873}.drawer-close,.hamburger{display:inline-flex}.topbar{padding:.6rem 1rem}.topbar-mark{display:none}.admin-main{padding:1.1rem}}@media (max-width: 520px){h1{font-size:var(--text-2xl)}.card{padding:1.1rem;border-radius:var(--radius-md)}.row-between{gap:.5rem}.input,.select,.textarea{font-size:16px;padding:.8rem .85rem}.btn{padding:.8rem 1.2rem}.kpi .kpi-value{font-size:var(--text-2xl)}}.qr-box{background:#fff;padding:1rem;border-radius:var(--radius-md);display:inline-block;box-shadow:0 4px 16px -8px #1018284d}.passcode{font-family:var(--font-mono);font-size:var(--text-3xl);font-weight:var(--weight-bold);letter-spacing:.15em;color:var(--color-primary)}.offline-banner{background:color-mix(in srgb,var(--color-warning) 20%,transparent);color:var(--color-text);text-align:center;font-size:var(--text-sm);padding:.45rem}.spinner{width:22px;height:22px;border:3px solid color-mix(in srgb,var(--color-primary) 30%,transparent);border-top-color:var(--color-primary);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
