.boot-screen{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 75% 12%,#32101a 0,#0a1016 46%,#080d12 100%)}
.boot-card{width:min(520px,100%);padding:30px;border:1px solid var(--line);border-radius:16px;background:#121c27;box-shadow:var(--shadow)}
.boot-card h1{margin:10px 0}.boot-progress{height:4px;margin-top:22px;overflow:hidden;border-radius:99px;background:#263443}.boot-progress span{display:block;width:45%;height:100%;border-radius:inherit;background:var(--red);animation:boot-slide 1s ease-in-out infinite alternate}
body.app-loaded .boot-screen{display:none}body:not(.app-loaded) #app{visibility:hidden}
@keyframes boot-slide{from{transform:translateX(-15%)}to{transform:translateX(135%)}}
@media(prefers-reduced-motion:reduce){.boot-progress span{animation:none;width:100%}}
.sync-status{position:fixed;right:12px;bottom:12px;z-index:40;padding:6px 9px;border:1px solid var(--line);border-radius:99px;background:#111923e8;color:var(--muted);font-size:11px;box-shadow:var(--shadow)}
.sync-status.synced{color:var(--green)}.sync-status.saving{color:var(--yellow)}.sync-status.offline{color:#ff9fa9}
.sync-gate[hidden]{display:none}.sync-gate{position:fixed;inset:0;z-index:10000;display:grid;place-items:center;padding:22px;background:rgba(3,8,13,.94);backdrop-filter:blur(8px)}
.sync-gate-card{width:min(560px,100%);padding:30px;border:1px solid #536477;border-radius:18px;background:#121c27;box-shadow:0 26px 90px #000;text-align:center}.sync-gate-card h1{margin:10px 0 8px;font-size:clamp(28px,6vw,44px)}.sync-gate-card p{line-height:1.55}.sync-gate-note{margin:20px 0 0;color:var(--muted);font-size:12px}.sync-gate-actions{display:flex;justify-content:center;gap:10px;flex-wrap:wrap;margin-top:20px}.sync-gate-login{display:grid;width:min(360px,100%);gap:12px;text-align:left}.sync-gate-login label{display:grid;gap:6px}.sync-gate-login .small{min-height:18px;margin:0;color:#ff9fa9;text-align:center}
.sync-gate-spinner{width:38px;height:38px;margin:0 auto 18px;border:4px solid #334253;border-top-color:var(--red);border-radius:50%;animation:sync-spin .8s linear infinite}.sync-gate[data-mode="conflict"] .sync-gate-spinner{animation:none;border-color:#ff566c}.sync-gate[data-mode="conflict"] .sync-gate-card{border-color:#8d3542}
@keyframes sync-spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.sync-gate-spinner{animation:none;border-top-color:#ff566c}}
.mobile-menu-button{display:none}.nav-group-label{padding:13px 12px 4px;color:#6f8298;font-size:10px;font-weight:850;letter-spacing:.12em;text-transform:uppercase}.mobile-nav-backdrop{display:none}
.sidebar{height:100dvh;max-height:100dvh;align-self:start;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable}
.photo-source-actions{display:flex;gap:9px;flex-wrap:wrap;margin-top:10px}.photo-source{display:inline-flex;align-items:center;justify-content:center}.photo-source input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.room-required-toggle{display:inline-flex;align-items:center;gap:6px;color:var(--muted);font-size:12px;white-space:nowrap}.room-required-toggle input{width:18px;height:18px;accent-color:var(--red)}.modal textarea.field{width:100%;resize:vertical}
@media(max-width:900px){.shell{display:block}.main{padding-top:74px}.sidebar{position:fixed;z-index:55;left:0;top:0;width:min(310px,86vw);height:100dvh;padding:20px 14px;transform:translateX(-105%);transition:transform .2s ease;box-shadow:18px 0 48px #000b;overflow-y:auto}.sidebar.mobile-open{transform:translateX(0)}.sidebar .brand h1,.sidebar .brand .muted,.sidebar .nav span,.sidebar .user{display:block}.sidebar .nav button{text-align:left;width:100%}.sidebar .brand{padding-bottom:14px}.mobile-menu-button{display:flex;position:fixed;left:14px;top:14px;z-index:45;align-items:center;gap:8px;background:#1b2734;border:1px solid #405064;border-radius:9px;color:#fff;padding:10px 13px;font-weight:800;box-shadow:var(--shadow)}.mobile-nav-backdrop.show{display:block;position:fixed;inset:0;z-index:50;background:#000a}}
@media(max-width:520px){.photo-source-actions{display:grid;grid-template-columns:1fr}.photo-source{min-height:46px}}
