@font-face{font-family:Satoshi;src:url(/fonts/satoshi-400.woff2) format("woff2");font-weight:400;font-display:swap;font-style:normal}@font-face{font-family:Satoshi;src:url(/fonts/satoshi-500.woff2) format("woff2");font-weight:500;font-display:swap;font-style:normal}@font-face{font-family:Satoshi;src:url(/fonts/satoshi-700.woff2) format("woff2");font-weight:700;font-display:swap;font-style:normal}@font-face{font-family:Satoshi;src:url(/fonts/satoshi-900.woff2) format("woff2");font-weight:900;font-display:swap;font-style:normal}:root{--bg: #0b0b0d;--bg-soft: #131316;--tile: #17171b;--tile-border: rgba(255, 255, 255, .08);--text: #f3f3f5;--muted: #8e8e96;--accent: #ff5b1a;--card: #f4f4f6;--card-text: #141416;--radius-tile: 10px;--radius-card: 20px;--header-h: 56px;--gap: 12px}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg);color:var(--text);min-height:100%}body{font-family:Satoshi,-apple-system,BlinkMacSystemFont,SF Pro Text,Inter,system-ui,sans-serif;-webkit-font-smoothing:antialiased}#app,#app-shell{min-height:100vh}.topbar{position:fixed;inset:0 0 auto;height:var(--header-h);z-index:40;display:flex;align-items:center;justify-content:space-between;padding:0 20px;background:linear-gradient(to bottom,rgba(11,11,13,.92),rgba(11,11,13,.55) 70%,transparent)}.brand{font-size:20px;font-weight:900;letter-spacing:-.02em;color:#fff;display:flex;align-items:center;gap:10px}.brand .dot{width:8px;height:8px;border-radius:50%;background:var(--accent);box-shadow:0 0 12px #ff5b1acc}.topbar .credit{font-size:13px;color:var(--muted);display:flex;align-items:center;gap:12px}.topbar .credit b{color:var(--text);font-weight:600}.avatar-chip{width:26px;height:26px;border-radius:50%;background:#26262e;display:grid;place-items:center;font-size:12px;font-weight:700;overflow:hidden}.avatar-chip img{width:100%;height:100%;object-fit:cover}.btn{font:inherit;cursor:pointer;border:1px solid var(--tile-border);background:#ffffff0f;color:var(--text);padding:7px 14px;border-radius:999px;font-size:13px;font-weight:600;display:inline-flex;align-items:center;gap:7px}.btn:hover{background:#ffffff1f}.btn.primary{background:#fff;color:#0b0b0d;border-color:#fff}.btn.primary:hover{background:#e4e4e7}.btn.accent{background:var(--accent);border-color:var(--accent);color:#0b0b0d}.btn:disabled{opacity:.45;cursor:default}.btn .ic{display:block}.filterbar{position:fixed;top:calc(var(--header-h) + 6px);left:50%;transform:translate(-50%);z-index:39;display:flex;align-items:center;gap:8px;background:#141418f0;border:1px solid var(--tile-border);border-radius:999px;padding:6px 8px 6px 14px;max-width:min(92vw,560px)}.filterbar .search-wrap{display:flex;align-items:center;gap:8px;color:var(--muted)}.filterbar input[type=search]{background:transparent;border:0;outline:0;color:var(--text);font:inherit;font-size:13px;width:150px}.filterbar select{background:#ffffff0f;color:var(--text);border:1px solid var(--tile-border);border-radius:999px;font:inherit;font-size:12px;padding:5px 8px;outline:0}.filterbar select option{background:#17171b}.room-dock-slot{display:flex;align-items:center;gap:6px}.room-pill{font-size:12px;font-weight:600;padding:5px 11px;border-radius:999px;background:#ffffff12;border:1px solid var(--tile-border);color:var(--text);white-space:nowrap}.room-pill.dim{color:var(--muted);font-weight:500}.room-select{font:inherit;font-size:12px;font-weight:600;padding:5px 26px 5px 11px;border-radius:999px;background:#ffffff12 url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'><path d='M1 3l4 4 4-4' fill='none' stroke='%23b9b9c2' stroke-width='1.5' stroke-linecap='round'/></svg>") no-repeat right 9px center;border:1px solid var(--tile-border);color:var(--text);cursor:pointer;appearance:none;-webkit-appearance:none;max-width:190px;text-overflow:ellipsis}.room-select:hover{background-color:#ffffff1f}.room-select option{background:#17171b;color:var(--text)}.icon-btn{width:28px;height:28px;border-radius:50%;cursor:pointer;display:grid;place-items:center;color:var(--text);background:#ffffff12;border:1px solid var(--tile-border);transition:background .18s ease,transform .18s cubic-bezier(.22,1,.36,1)}.icon-btn:hover{background:#ffffff24;transform:translateY(-1px)}.icon-btn:active{transform:scale(.92)}.icon-btn.off{color:var(--muted)}.filterbar{transition:opacity .28s cubic-bezier(.22,1,.36,1),transform .28s cubic-bezier(.22,1,.36,1)}.feed.ims-root{position:fixed;inset:0;padding:0;overflow:hidden;cursor:grab;touch-action:none;background:var(--bg);user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-touch-callout:none}.feed.ims-root,.feed.ims-root *{user-select:none!important;-webkit-user-select:none!important}.feed.ims-root img{-webkit-user-drag:none;user-drag:none;pointer-events:none}.feed.ims-root.dragging{cursor:grabbing}.ims-canvas{position:absolute;inset:0;width:100%;height:100%;display:block;opacity:0;transition:opacity .35s ease}.ims-canvas.is-ready{opacity:1}.ims-center{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none}.ims-center:empty{display:none}.ims-center .empty-state{pointer-events:auto;background:#0e0e11f0;border:1px solid var(--tile-border);border-radius:18px;padding:34px 40px}.ims-status{position:absolute;left:50%;bottom:26px;transform:translate(-50%);z-index:5;padding:0;pointer-events:none;display:none}.ims-status.show{display:block}.ims-status-pill{display:flex;align-items:center;gap:10px;background:#121216f0;border:1px solid var(--tile-border);border-radius:999px;padding:9px 18px;font-size:13px;color:var(--muted)}@media(max-width:640px){.filterbar input[type=search]{width:96px}}.feed-status{text-align:center;color:var(--muted);font-size:13px;padding:26px 0 8px}.feed-status .spin{width:22px;height:22px;margin:0 auto 10px;border-radius:50%;border:2px solid rgba(255,255,255,.15);border-top-color:#fff;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.empty-state{text-align:center;padding:12vh 20px;color:var(--muted)}.empty-state h2{color:var(--text);font-size:22px;margin:0 0 8px;letter-spacing:-.01em}.empty-state p{font-size:14px;margin:0 0 18px}.overlay{position:fixed;inset:0;z-index:60;background:#060608bd;backdrop-filter:blur(10px) saturate(120%);-webkit-backdrop-filter:blur(10px) saturate(120%);display:flex;align-items:center;justify-content:center;padding:24px;animation:fadein .18s ease}@keyframes fadein{0%{opacity:0}}.focus-card{display:flex;flex-direction:column;width:min(880px,94vw);height:min(86vh,860px);padding:18px 18px 12px;background:#111115db;border:1px solid rgba(255,255,255,.1);border-radius:var(--radius-card);backdrop-filter:blur(26px) saturate(140%);-webkit-backdrop-filter:blur(26px) saturate(140%);box-shadow:0 40px 120px #000000b8,inset 0 1px #ffffff0d;color:var(--text)}.focus-card.is-entering{animation:pop .22s cubic-bezier(.2,.9,.3,1.2)}@keyframes pop{0%{transform:scale(.97) translateY(6px);opacity:0}}.focus-head{display:flex;align-items:center;gap:12px}.focus-ava{width:40px;height:40px;flex-shrink:0;padding:0;cursor:pointer;border-radius:50%;border:1px solid rgba(255,255,255,.14);background:#ffffff0f;color:var(--text);display:grid;place-items:center;font-weight:800;font-size:15px}.focus-ava:hover{background:#ffffff21}.focus-who{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.focus-name{display:flex;align-items:baseline;gap:8px;background:transparent;border:0;padding:0;cursor:pointer;color:inherit;font:inherit;text-align:left}.focus-name-text{font-size:14px;font-weight:700}.focus-name:hover .focus-name-text{color:var(--accent)}.focus-time,.focus-room{font-size:12px;color:var(--muted)}.focus-x{width:32px;height:32px;flex-shrink:0;border-radius:50%;cursor:pointer;border:1px solid rgba(255,255,255,.12);background:#ffffff0d;color:var(--text);display:grid;place-items:center}.focus-x:hover{background:#ffffff24}.focus-stage{flex:1 1 auto;min-height:0;margin:14px 0 12px;display:flex}.focus-media{position:relative;flex:1;min-height:0;overflow:hidden;display:grid;place-items:center;background:#00000073;border:1px solid rgba(255,255,255,.06);border-radius:14px;padding:6px}.focus-media{position:relative}.focus-img{width:100%;height:100%;min-width:0;min-height:0;object-fit:contain;position:relative;z-index:1;display:block;border-radius:10px;cursor:zoom-in;opacity:0;transition:opacity .28s ease}.focus-img.loaded{opacity:1}.focus-thumb{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;border-radius:12px;z-index:0;filter:blur(18px) saturate(1.15);opacity:.85;transition:opacity .3s ease}.focus-thumb.gone{opacity:0}.focus-loading{position:absolute;inset:0;z-index:2;display:grid;place-items:center;pointer-events:none}.focus-spinner{width:20px;height:20px;border:2px solid rgba(255,255,255,.22);border-top-color:#fffc;border-radius:50%;animation:focus-spin .9s linear infinite}@keyframes focus-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.focus-spinner{animation:none;border-top-color:var(--accent)}}.focus-img-failed{color:var(--muted);font-size:13px;padding:48px 0}.focus-caption-row{display:flex;align-items:baseline;gap:12px;min-height:22px}.focus-cap{flex:1;margin:0;font-size:15px;line-height:1.45;letter-spacing:-.005em}.focus-cap.empty{color:var(--muted);font-style:italic}.focus-cap[title]:hover,.focus-cap.empty[title]:hover{color:var(--accent);cursor:text}.focus-meta{font-size:12px;color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums}.focus-actions{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin-top:14px;padding-top:12px;border-top:1px solid rgba(255,255,255,.07)}.focus-actions .spacer{flex:1}@media(max-width:560px){.focus-actions .spacer{display:none}}.focus-act{display:inline-flex;align-items:center;gap:7px;font:inherit;font-size:13px;font-weight:600;color:var(--text);background:transparent;border:1px solid transparent;border-radius:999px;padding:7px 12px;cursor:pointer;transition:background .15s ease,color .15s ease}.focus-act:hover{background:#ffffff14}.focus-act.on{color:var(--accent)}.focus-act.on .ic{fill:#ff5b1ae6}.focus-act.danger{color:#ffb4b4}.focus-act.danger:hover{background:#ff5a5a24}.focus-nav{display:flex;align-items:center;gap:12px;margin-top:10px}.focus-arrow{width:30px;height:30px;flex-shrink:0;border-radius:50%;cursor:pointer;border:1px solid rgba(255,255,255,.12);background:#ffffff0d;color:var(--text);display:grid;place-items:center}.focus-arrow:hover{background:#ffffff24}.focus-track{flex:1;height:3px;border-radius:999px;background:#ffffff1a;overflow:hidden}.focus-track i{display:block;height:100%;background:var(--accent);transition:width .2s ease}.focus-count{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}.focus-hint{margin:10px 2px 0;font-size:11px;color:#ffffff57;text-align:center}.focus-caption-row{min-height:44px}.focus-cap-edit{display:flex;flex-direction:column;gap:10px;width:100%;margin:0}.focus-cap-edit input,.focus-edit{width:100%;font:inherit;font-size:15px;color:var(--text);background:#ffffff0b;border:1px solid var(--tile-border);border-radius:12px;padding:11px 13px;outline:0;transition:background .15s ease,border-color .15s ease,box-shadow .15s ease}.focus-cap-edit input:focus-visible,.focus-edit:focus-visible{background:#ffffff12;border-color:var(--accent);box-shadow:0 0 0 3px #ff5b1a24}.focus-cap-edit .row{display:flex;justify-content:flex-end;gap:8px}.focus-cap-edit .btn.primary{background:var(--accent);border-color:var(--accent);color:#0b0b0d}.auth-wrap{min-height:100vh;display:grid;place-items:center;padding:24px}.auth-card{width:min(380px,94vw);background:var(--bg-soft);border:1px solid var(--tile-border);border-radius:18px;padding:30px 26px}.auth-card h1{margin:0 0 4px;font-size:24px;letter-spacing:-.02em;display:flex;align-items:center;gap:10px}.auth-card h1 .dot{width:9px;height:9px;border-radius:50%;background:var(--accent)}.auth-card p.sub{color:var(--muted);font-size:13px;margin:0 0 20px}.auth-card label{display:block;font-size:12px;color:var(--muted);margin:12px 0 6px}.auth-card input{width:100%;font:inherit;font-size:14px;color:var(--text);background:#0e0e11;border:1px solid var(--tile-border);border-radius:10px;padding:11px 12px;outline:0}.auth-card input:focus{border-color:var(--accent)}.auth-card .row{display:flex;gap:10px;margin-top:20px}.auth-card .row .btn{flex:1;justify-content:center;padding:11px}.auth-err{color:#ff8a8a;font-size:13px;min-height:20px;margin-top:12px}.modal-card{background:var(--bg-soft);border:1px solid var(--tile-border);border-radius:16px;padding:22px;width:min(440px,94vw)}.modal-card h3{margin:0 0 12px;font-size:17px}.modal-card input[type=file]{width:100%;font-size:13px;color:var(--muted)}.modal-card input[type=text]{width:100%;font:inherit;font-size:14px;color:var(--text);background:#0e0e11;border:1px solid var(--tile-border);border-radius:10px;padding:10px 12px;outline:0;margin-top:10px}.progress{height:6px;background:#ffffff14;border-radius:99px;margin-top:12px;overflow:hidden}.progress i{display:block;height:100%;width:0;background:var(--accent);transition:width .2s}#toasts{position:fixed;bottom:22px;left:50%;transform:translate(-50%);z-index:100;display:flex;flex-direction:column;gap:8px;align-items:center}.toast{background:#1d1d22;border:1px solid var(--tile-border);color:var(--text);font-size:13px;padding:10px 16px;border-radius:999px;animation:fadein .2s ease}.toast.err{border-color:#5f2b2b;color:#ffb4b4}.corner-link{position:fixed;right:18px;bottom:14px;z-index:30;font-size:12px;color:var(--muted)}#global-error{position:fixed;inset:0;z-index:200;display:none;place-items:center;background:#0009}#global-error.show{display:grid}.ims-zoom{position:absolute;left:18px;bottom:20px;z-index:6;display:flex;align-items:center;gap:4px;background:#121216f0;border:1px solid var(--tile-border);border-radius:999px;padding:4px}.ims-zoom-btn{width:30px;height:30px;border-radius:50%;border:0;cursor:pointer;background:transparent;color:var(--text);font-size:17px;line-height:1;display:grid;place-items:center;transition:background .18s ease,transform .18s cubic-bezier(.22,1,.36,1)}.ims-zoom-btn:hover{background:#ffffff1f}.ims-zoom-btn:active{transform:scale(.9)}.ims-zoom-label{min-width:48px;text-align:center;font-size:12px;font-weight:600;color:var(--muted);font-variant-numeric:tabular-nums}.me-chip{display:inline-flex;align-items:center;gap:8px;background:transparent;border:0;cursor:pointer;padding:3px 8px 3px 3px;border-radius:999px;color:inherit;font:inherit;transition:background .18s ease}.me-chip:hover{background:#ffffff14}.profile-card{width:min(460px,94vw)}.profile-loading{color:var(--muted);font-size:14px;padding:12px 2px}.profile-head{display:flex;align-items:center;gap:14px}.profile-ava{width:64px;height:64px;border-radius:50%;flex-shrink:0;background:#26262e;display:grid;place-items:center;overflow:hidden;font-weight:900;font-size:22px;color:var(--text)}.profile-ava img{width:100%;height:100%;object-fit:cover}.profile-id{flex:1;min-width:0}.profile-name{font-weight:700;font-size:18px}.profile-sub{color:var(--muted);font-size:13px;margin:2px 0 0}.profile-stats{display:flex;gap:10px;margin:18px 0 14px}.profile-stat{flex:1;background:#ffffff0a;border:1px solid var(--tile-border);border-radius:12px;padding:10px 12px;display:flex;flex-direction:column;gap:2px}.profile-stat b{font-size:18px;letter-spacing:-.01em}.profile-stat span{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.profile-rooms{display:flex;flex-direction:column;gap:6px;max-height:34vh;overflow:auto;margin-bottom:4px}.profile-room{display:flex;align-items:center;justify-content:space-between;gap:10px;background:#ffffff0a;border:1px solid var(--tile-border);border-radius:10px;padding:9px 12px;cursor:pointer;color:var(--text);font:inherit;font-size:14px;text-align:left}.profile-room:hover{background:#ffffff1a}.profile-room-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.profile-room-meta{color:var(--muted);font-size:12px;flex-shrink:0}.profile-empty{color:var(--muted);font-size:13px;margin:0 0 8px}.profile-actions{display:flex;gap:10px;margin-top:16px}.focus-ava,.focus-name{border:0;background:transparent;font:inherit;cursor:pointer;padding:0;color:inherit}.focus-ava{padding:0}.focus-ava:hover,.focus-name:hover{opacity:.72}.focus-name{text-align:left;font-weight:700;font-size:16px;display:block}.focus-cap{cursor:default}.focus-cap[title]{cursor:text}.share-card{width:min(460px,94vw)}.share-sub{color:var(--muted);font-size:13px;margin:0 0 14px;line-height:1.45}.share-url{width:100%;font:inherit;font-size:13px;color:var(--text);background:#0e0e11;border:1px solid var(--tile-border);border-radius:10px;padding:11px 12px;outline:0;user-select:all}.share-url:focus{border-color:var(--accent)}.share-actions{display:flex;gap:8px;margin-top:14px;flex-wrap:wrap}.btn.danger{border-color:#5f2b2b;color:#ffb4b4}.btn.danger:hover{background:#ff5a5a1f}.album-bar,.album-slot{display:flex;align-items:center;gap:6px}.album-select{font:inherit;font-size:12px;font-weight:600;padding:5px 26px 5px 11px;border-radius:999px;background:#ffffff12 url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'><path d='M1 3l4 4 4-4' fill='none' stroke='%23b9b9c2' stroke-width='1.5' stroke-linecap='round'/></svg>") no-repeat right 9px center;border:1px solid var(--tile-border);color:var(--text);cursor:pointer;appearance:none;-webkit-appearance:none;max-width:170px}.album-select:hover{background-color:#ffffff1f}.album-select option{background:#17171b;color:var(--text)}.album-manage{display:flex;align-items:center;gap:4px}.album-manage .icon-btn{width:24px;height:24px}.album-picker{display:flex;flex-direction:column;gap:6px;max-height:44vh;overflow:auto}.feed.ims-root.selecting{cursor:pointer}.select-bar{position:fixed;left:50%;bottom:22px;transform:translate(-50%) translateY(10px);z-index:45;display:none;align-items:center;gap:10px;background:#141418f5;border:1px solid var(--tile-border);border-radius:999px;padding:8px 10px 8px 16px;opacity:0;transition:opacity .2s ease,transform .2s cubic-bezier(.22,1,.36,1);max-width:min(94vw,720px)}.select-bar.show{display:flex;opacity:1;transform:translate(-50%)}.select-count{font-size:13px;font-weight:600;white-space:nowrap}.select-note{font-size:12px;color:var(--muted);white-space:nowrap}.select-bar .btn{padding:6px 12px;font-size:12px}.room-admin-slot{display:inline-flex;align-items:center;gap:4px}.room-admin-slot .icon-btn{width:26px;height:26px}.room-card{width:min(520px,94vw);max-height:92vh;overflow:auto}.room-form{display:flex;flex-direction:column;gap:6px;margin-top:14px}.room-label{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.room-input{width:100%;font:inherit;font-size:14px;color:var(--text);background:#0e0e11;border:1px solid var(--tile-border);border-radius:10px;padding:10px 12px;outline:0}.room-input.short{max-width:90px;text-align:center}.room-input:focus{border-color:var(--accent)}.room-access{display:flex;align-items:center;gap:10px;margin-top:14px}.room-chip{font-size:12px;color:var(--muted);border:1px solid var(--tile-border);border-radius:999px;padding:5px 11px}.room-section{margin:18px 0 8px;font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.member-list{display:flex;flex-direction:column;gap:6px;max-height:32vh;overflow:auto}.member-row{display:flex;align-items:center;gap:10px;background:#ffffff0a;border:1px solid var(--tile-border);border-radius:10px;padding:8px 10px}.member-name{background:transparent;border:0;color:var(--text);font:inherit;font-size:13px;font-weight:600;cursor:pointer;padding:2px 0;white-space:nowrap}.member-name:hover{color:var(--accent)}.member-perms{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-left:auto}.perm{display:inline-flex;align-items:center;gap:4px;font-size:11px;color:var(--muted);cursor:pointer}.perm input{accent-color:var(--accent);width:13px;height:13px}.perm-static,.perm-owner{font-size:10px;color:var(--muted);border:1px solid var(--tile-border);border-radius:999px;padding:2px 8px}.perm-owner{color:var(--accent);border-color:#ff5b1a66}body.has-selection #toasts{bottom:84px}.room-switch{display:flex;align-items:center}.room-btn{display:inline-flex;align-items:center;gap:8px;max-width:240px;background:#ffffff0f;border:1px solid var(--tile-border);color:var(--text);font:inherit;font-size:13px;font-weight:600;padding:6px 12px;border-radius:999px;cursor:pointer}.room-btn:hover{background:#ffffff21}.room-btn-icon{display:inline-flex;align-items:center;justify-content:center;font-size:14px;line-height:1}.room-btn-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rooms-card{width:min(480px,94vw)}.rooms-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.rooms-head h3{margin:0}.rooms-list{display:flex;flex-direction:column;gap:6px;max-height:44vh;overflow:auto}.rooms-row{display:flex;align-items:center;gap:12px;text-align:left;background:#ffffff0a;border:1px solid var(--tile-border);border-radius:12px;padding:10px 12px;cursor:pointer;color:var(--text);font:inherit}.rooms-row:hover{background:#ffffff1a}.rooms-row.active{border-color:#ff5b1a8c;background:#ff5b1a14}.rooms-icon{width:30px;height:30px;flex-shrink:0;border-radius:9px;display:grid;place-items:center;overflow:hidden;background:#ffffff0f;font-size:15px}.rooms-icon .ic,.room-btn-icon .ic,.profile-ava .ic{display:block}.rooms-meta{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.rooms-name{font-weight:600;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rooms-sub{font-size:12px;color:var(--muted)}.rooms-check{color:var(--accent);display:flex}.rooms-new{display:flex;align-items:center;gap:10px;margin-top:14px}.rooms-hint{font-size:12px;color:var(--muted)}.rooms-join{display:flex;gap:8px;margin-top:12px}.rooms-join .room-input{flex:1;font-size:12px}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.filterbar input[type=search]:focus-visible{outline:2px solid var(--accent);outline-offset:3px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}.ims-canvas{transition:none}}@media(pointer:coarse){.icon-btn,.ims-zoom-btn,.focus-arrow,.focus-x,.album-manage .icon-btn,.avatar-chip{width:44px;height:44px}.btn,.focus-act{min-height:44px;padding:11px 16px}.perm{padding:8px 6px}.perm input{width:20px;height:20px}.rooms-row{padding:12px}input[type=text],input[type=password],input[type=search],input[type=file],select,.share-url,.room-input,.auth-card input,.modal-card input[type=text]{font-size:16px}}:root{--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px)}.topbar{height:calc(var(--header-h) + var(--safe-top));padding-top:var(--safe-top)}.filterbar{top:calc(var(--header-h) + var(--safe-top) + 6px)}.ims-zoom{bottom:calc(20px + var(--safe-bottom))}.scroll-ctls{bottom:calc(52px + var(--safe-bottom))}#toasts{bottom:calc(22px + var(--safe-bottom))}#app,#app-shell,.auth-wrap{min-height:100vh;min-height:100dvh}@media(max-width:720px){.topbar{padding-left:12px;padding-right:12px;gap:8px}.topbar .credit{gap:8px;min-width:0}.topbar .credit b{display:none}.room-btn{max-width:42vw}.filterbar{gap:6px;padding:6px 8px;max-width:94vw;flex-wrap:wrap;justify-content:center}.rooms-card,.profile-card,.room-card,.share-card,.modal-card{width:94vw;max-height:86dvh;overflow:auto}.overlay{align-items:flex-start;overflow:auto;padding:calc(12px + var(--safe-top)) 12px calc(12px + var(--safe-bottom))}.select-bar{left:12px;right:12px;bottom:calc(12px + var(--safe-bottom));transform:translateY(10px);border-radius:16px;flex-wrap:wrap;justify-content:center}.select-bar.show{transform:none}.select-count{width:100%;text-align:center}body.has-selection #toasts{bottom:calc(150px + var(--safe-bottom))}}.profile-room.static{cursor:default}.profile-room.static:hover{background:#ffffff0a}.empty-actions{display:flex;gap:10px;justify-content:center;margin-top:18px}.field{display:block;margin-top:12px}.field-label{display:block;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:6px}.field-input{width:100%;font:inherit;font-size:14px;color:var(--text);background:#0e0e11;border:1px solid var(--tile-border);border-radius:10px;padding:11px 12px;outline:0}.field-input:focus{border-color:var(--accent)}.field-input.invalid{border-color:#b4553f}.field-hint{display:block;font-size:11px;color:var(--muted);margin-top:5px}.field-error{display:none;font-size:12px;color:#ffb4b4;margin:6px 0 0}.field-error.show{display:block}.form-actions-inline{display:flex;gap:8px;margin-top:10px}.room-password-form{margin-top:12px;padding:12px;border:1px solid var(--tile-border);border-radius:12px;background:#ffffff08}.gallery{padding-top:calc(var(--header-h) + var(--safe-top) + 8px);min-height:100vh}.gallery-roomtotal{font-size:12px;color:var(--muted);white-space:nowrap;margin-left:auto;padding-left:10px;align-self:center}.gallery-head{position:sticky;top:calc(var(--header-h) + var(--safe-top) + 8px);z-index:30;margin:0 16px 10px;background:#141418a8;backdrop-filter:blur(18px) saturate(150%);-webkit-backdrop-filter:blur(18px) saturate(150%);border:1px solid var(--tile-border);border-radius:18px;padding:8px 12px;display:flex;flex-direction:column;gap:8px;box-shadow:0 14px 40px #00000061}.gallery-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.gallery-searchwrap{display:flex;align-items:center;gap:8px;color:var(--muted);flex:1;min-width:220px}.gallery-search{border:0;background:transparent;padding:6px 0;font-size:14px}.gallery-search:focus{border:0}.gallery-select{font:inherit;font-size:13px;color:var(--text);background:#ffffff0f;border:1px solid var(--tile-border);border-radius:999px;padding:6px 10px;outline:0;cursor:pointer}.gallery-select option{background:#17171b;color:var(--text)}.gallery-count{font-size:12px;color:var(--muted);margin-left:auto;font-variant-numeric:tabular-nums}.gallery-chipsrow{display:flex;gap:6px;overflow-x:auto;padding-bottom:2px}.chip{font:inherit;font-size:12px;font-weight:600;white-space:nowrap;cursor:pointer;color:var(--text);background:#ffffff0d;border:1px solid var(--tile-border);border-radius:999px;padding:6px 12px;display:inline-flex;align-items:center;gap:6px}.chip:hover{background:#ffffff1f}.chip.on{background:#ff5b1a24;border-color:#ff5b1a80}.chip-n{font-size:11px;color:var(--muted)}.gallery-body{padding:12px}.gallery-row-tiles{display:flex;gap:6px;margin-bottom:6px}.gal-tile{position:relative;display:block;overflow:hidden;border-radius:var(--radius-tile);background:var(--tile);flex:none;text-decoration:none;color:inherit}.gal-tile img{width:100%;height:100%;object-fit:cover;display:block}.gal-tile:hover img{opacity:.86}.gal-no-preview{display:grid;width:100%;height:100%;place-items:center;padding:12px;color:var(--muted);font-size:12px;text-align:center}.gal-tile:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.gal-meta{position:absolute;inset:auto 0 0;padding:16px 8px 6px;display:flex;flex-direction:column;gap:2px;background:linear-gradient(to top,rgba(0,0,0,.72),transparent);opacity:0;transition:opacity .15s ease}.gal-tile:hover .gal-meta,.gal-tile:focus-visible .gal-meta{opacity:1}.gal-cap{font-size:12px;color:#fff;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gal-user{font-size:11px;color:#ffffffb8}.gallery-status{text-align:center;color:var(--muted);font-size:13px;padding:10px 0 26px}.gallery-status-message{display:inline-flex;align-items:center;justify-content:center;gap:8px}.gallery-status .spin{flex:none;width:15px;height:15px;border-radius:50%;border:2px solid rgba(255,255,255,.16);border-top-color:var(--accent);animation:spin .8s linear infinite}.gallery-sentinel{height:1px}.gallery-skeleton{display:flex;gap:6px;margin-bottom:6px}.gallery-skel-tile{height:190px;border-radius:var(--radius-tile);background:linear-gradient(90deg,#15151a,#1e1e25,#15151a);background-size:200% 100%;animation:skel 1.4s linear infinite}.skel-pill{height:30px;width:84px;border-radius:999px;background:linear-gradient(90deg,#ffffff0d,#ffffff1c,#ffffff0d);background-size:200% 100%;animation:skel 1.4s linear infinite}.skel-pill.wide{width:220px;flex:1}@keyframes skel{to{background-position:-200% 0}}@media(prefers-reduced-motion:reduce){.gallery-skel-tile,.gallery-status .spin{animation:none}.gallery-status .spin{border-top-color:var(--accent)}}.view-switch{display:inline-flex;background:#ffffff0f;border:1px solid var(--tile-border);border-radius:999px;padding:2px}.view-switch button{font:inherit;font-size:12px;font-weight:600;color:var(--muted);background:transparent;border:0;border-radius:999px;padding:5px 12px;cursor:pointer;display:inline-flex;align-items:center;gap:6px}.view-switch button.on{background:#ffffff24;color:var(--text)}
