*,:after,:before{box-sizing:border-box;margin:0;padding:0}body,html{height:100%;background:#050505;overscroll-behavior:none}body{font-family:system-ui,sans-serif;-webkit-font-smoothing:antialiased}.grid-stage{position:fixed;inset:0;overflow:hidden;cursor:-webkit-grab;cursor:grab;touch-action:none;background:#050505}.grid-stage:active{cursor:-webkit-grabbing;cursor:grabbing}.grid-stage canvas{position:absolute;inset:0;width:100%;height:100%;display:block}.pan-track{position:absolute;inset:0;overflow:auto;scrollbar-width:none;touch-action:none;cursor:inherit}.pan-track::-webkit-scrollbar{display:none}.grid-controls{position:fixed;right:1.25rem;bottom:1.25rem;z-index:8;display:flex;gap:.5rem}.grid-controls button{width:2.5rem;height:2.5rem;display:grid;place-items:center;background:rgba(20,20,20,.7);border:1px solid #2b2b2b;border-radius:.6rem;color:#9a9a9a;cursor:pointer;transition:color .2s,border-color .2s,opacity .3s;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);opacity:.55}.grid-controls button:hover{color:#f4f3ee;border-color:#4a4a4a;opacity:1}.grid-controls svg{width:1rem;height:1rem;fill:currentColor}.grid-stage:not([data-fullscreen="1"]) .ic-exit,.grid-stage:not([data-mode=saver]) .ic-grid,.grid-stage[data-fullscreen="1"] .ic-enter,.grid-stage[data-mode=saver] .ic-saver{display:none}.photo-modal{position:fixed;inset:0;z-index:10;display:flex;align-items:center;justify-content:center;background:rgba(5,5,5,.94);cursor:zoom-out}.photo-modal[hidden]{display:none}.photo-modal img{max-width:94vw;max-height:94vh;border-radius:.75rem;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-user-drag:none;box-shadow:0 20px 80px rgba(0,0,0,.6)}.grid-fade{position:fixed;inset:0;z-index:5;background:#050505;pointer-events:none}.login{min-height:100dvh;display:grid;place-items:center;background:#050505;padding:2rem}.login-form{display:flex;gap:.5rem;animation:login-in .9s cubic-bezier(.22,1,.36,1) both}@keyframes login-in{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}.login-form input{background:#141414;border:1px solid #2b2b2b;color:#f4f3ee;border-radius:.6rem;padding:.85rem 1.1rem;font:inherit;font-size:1rem;width:min(60vw,230px);outline:none;text-align:center;letter-spacing:.08em;transition:border-color .2s}.login-form input:focus{border-color:#4a4a4a}.login-form.is-error input{border-color:#d92b3f}.login-form button{background:#1c1c1c;border:1px solid #2b2b2b;color:#f4f3ee;border-radius:.6rem;padding:.85rem 1.2rem;font:inherit;font-size:1rem;cursor:pointer;transition:background .2s,border-color .2s}.login-form button:hover{background:#262626;border-color:#4a4a4a}