/* Existing theme tokens, radii and glass density apply from the first flight frame. */
.app .media-modal{border-radius:var(--ui-radius);width:min(620px,100%);max-height:calc(var(--app-height,100dvh) - 24px);overflow:auto;overscroll-behavior:contain;padding:28px 20px 18px;box-shadow:0 18px 60px #0003;backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px)}
.media-backdrop{z-index:230}.media-modal h2{font-size:21px;margin:0 34px 18px 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.media-input{position:absolute;width:1px;height:1px;opacity:0;overflow:hidden;clip-path:inset(50%);pointer-events:none}.attachment-options{display:grid;grid-template-columns:1fr 1fr;gap:10px}.attachment-options>button{display:flex;align-items:center;gap:12px;min-height:90px;padding:14px;text-align:left;background:color-mix(in srgb,var(--surface) 60%,transparent);border:1px solid var(--line);border-radius:var(--ui-radius)}.attachment-options svg{color:var(--accent)}.attachment-options span{font-weight:600}.attachment-options small{display:block;font-size:11px;color:var(--muted);font-weight:400;margin-top:5px}.media-footer{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:14px}.media-footer button{display:flex;align-items:center;justify-content:center;gap:8px}.media-footer .primary-button{padding:13px 18px}.preview-stage{height:min(36dvh,300px);position:relative;border-radius:var(--ui-radius);overflow:hidden;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--surface) 30%,transparent)}.preview-stage img,.preview-stage video{max-width:100%;max-height:100%;object-fit:contain}.preview-pan{width:100%;height:100%;overflow:auto;display:flex;align-items:center;justify-content:center;touch-action:pan-x pan-y}.preview-pan img{transition:transform .3s cubic-bezier(.16,1,.3,1);transform-origin:center}.preview-nav{position:absolute;bottom:6px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:12px;background:color-mix(in srgb,var(--panel) var(--window-opacity),transparent);border:1px solid var(--line);border-radius:var(--ui-radius);backdrop-filter:blur(12px);padding:2px 8px;font-size:11px}.media-empty,.preview-document,.preview-audio{display:flex;flex-direction:column;align-items:center;gap:12px;padding:20px;max-width:100%;overflow-wrap:anywhere}.preview-audio audio{max-width:100%}.preview-reel{display:grid;grid-template-columns:repeat(auto-fill,minmax(65px,1fr));gap:7px;max-height:180px;overflow:auto;margin:12px 0;padding:3px}.preview-tile{height:70px;position:relative;border:2px solid transparent;border-radius:var(--ui-radius);touch-action:none;overflow:hidden;cursor:grab;transition:box-shadow .2s,border-color .2s}.preview-tile.active{border-color:var(--accent)}.preview-tile.dragging{box-shadow:0 6px 14px #0003;z-index:2;cursor:grabbing}.preview-tile img{width:100%;height:100%;object-fit:cover}.tile-number{position:absolute;bottom:3px;left:5px;background:#0008;color:white;padding:1px 5px;border-radius:6px;font-size:10px}.tile-remove{position:absolute;top:3px;right:3px;width:21px;height:21px;background:#0008;color:#fff;border-radius:50%;display:grid;place-items:center}.preview-add{height:70px;border:1px dashed var(--line);border-radius:var(--ui-radius);color:var(--accent)}.media-file-icon{display:grid;place-items:center;height:100%;background:var(--accent-faint)}.preview-order{display:flex;align-items:center;gap:5px;color:var(--muted);min-height:30px}.preview-order>small{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.media-caption{width:100%;resize:vertical;min-height:62px;border:1px solid var(--line);border-radius:var(--ui-radius);background:color-mix(in srgb,var(--surface) 40%,transparent);padding:12px;font:inherit;color:var(--text);font-size:max(16px,var(--message-font))}.message-media{display:grid;gap:8px;margin-top:8px;min-width:0}.message:has(.message-media){max-width:min(88%,440px)}.media-collage{display:grid;grid-template-columns:1fr 1fr;gap:3px;overflow:hidden;border-radius:var(--ui-radius);width:100%;min-width:160px}.media-collage.count-1{grid-template-columns:1fr}.media-collage.count-3 .media-tile:first-child{grid-row:span 2}.media-collage.count-5 .media-tile:first-child{grid-column:span 2}.media-collage.count-6{grid-template-columns:repeat(3,1fr)}.media-tile{position:relative;display:block;padding:0;overflow:hidden;width:100%;min-height:75px;max-height:280px;background:color-mix(in srgb,var(--surface) 35%,transparent);border-radius:0!important}.media-collage:not(.count-1) .media-tile{aspect-ratio:auto!important;height:140px}.media-collage.count-3 .media-tile:first-child{height:283px}.media-collage.count-1 .media-tile{max-height:420px}.media-tile img{width:100%;height:100%;display:block;object-fit:contain;background:color-mix(in srgb,var(--surface) 35%,transparent)}.media-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:8px;color:var(--muted);font-size:10px}.media-video-tag,.media-load-tag{position:absolute;display:flex;align-items:center;gap:4px;border-radius:var(--ui-radius);background:#0008;color:white;padding:5px;font-size:11px;backdrop-filter:blur(8px)}.media-video-tag{left:5px;bottom:5px}.media-load-tag{right:5px;top:5px}.document-message,.audio-message{display:flex;align-items:center;gap:9px;border:1px solid var(--line);padding:10px;background:color-mix(in srgb,var(--surface) 22%,transparent);border-radius:var(--ui-radius);max-width:100%;min-width:180px}.document-message>span:nth-child(2),.audio-detail{min-width:0;flex:1}.document-message strong,.audio-detail strong{display:block;overflow:hidden;text-overflow:ellipsis;font-size:12px;white-space:nowrap;max-width:240px}.document-message small,.audio-detail small{display:block;color:var(--muted);font-size:10px;margin-top:4px}.document-icon{color:var(--accent);text-align:center;flex-shrink:0}.audio-play{width:38px;height:38px;flex-shrink:0;border-radius:50%;background:var(--accent);color:var(--accent-text);display:grid;place-items:center}.audio-detail input{width:100%;padding:0;accent-color:var(--accent)}.voice-wave{height:32px;display:flex;align-items:center;gap:2px;width:100%;padding:0;margin-top:5px}.voice-wave i{flex:1;min-width:1px;background:var(--muted);opacity:.45;border-radius:2px}.voice-wave i.played{background:var(--accent);opacity:1}.round-player{position:relative;width:min(240px,65vw);aspect-ratio:1;border-radius:50%!important;overflow:hidden;align-self:start;padding:0;color:var(--accent)}.round-player video{width:100%;height:100%;object-fit:cover;display:block}.round-player>svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.round-play-icon{position:absolute!important;left:calc(50% - 12px)!important;top:calc(50% - 12px)!important;width:24px!important;height:24px!important;color:white}.round-player>span{position:absolute;bottom:12px;left:50%;transform:translateX(-50%);color:#fff;font-size:11px;background:#0007;border-radius:8px;padding:3px 6px}.round-media{width:min(280px,50dvh);height:min(280px,50dvh);object-fit:cover;border-radius:50%!important}.record-controls{display:flex;align-items:center;position:relative}.record-mode{position:absolute;right:0;top:-22px;width:23px!important;height:22px!important;color:var(--accent);background:color-mix(in srgb,var(--panel) var(--composer-opacity),transparent);border-radius:50%}.record-button{touch-action:none}.recording-stage{display:flex;flex-direction:column;align-items:center;gap:16px;min-height:120px}.recording-time{font-size:25px;font-variant-numeric:tabular-nums;color:var(--accent)}.recording-stage small{color:var(--muted)}.recording-wave{height:90px;display:flex;align-items:center;gap:3px;width:100%;justify-content:center}.recording-wave i{width:4px;border-radius:4px;background:var(--accent);transition:height .1s}.camera-live{width:100%;max-height:50dvh;object-fit:contain;border-radius:var(--ui-radius)}.pending-media{margin:10px 0 10px auto;min-width:180px}.pending-files{display:grid;gap:7px}.pending-files>div{display:flex;gap:8px;align-items:center;font-size:11px}.pending-files img,.pending-files .media-file-icon{width:42px;height:42px;object-fit:cover;border-radius:var(--ui-radius)}.pending-files small{display:block;color:var(--muted)}.pending-progress{display:flex;align-items:center;gap:8px;font-size:10px;margin-top:10px}.pending-progress progress{flex:1;height:4px;accent-color:var(--accent);width:80px}.pending-actions{display:flex;gap:12px;margin-top:8px;font-size:11px}.pending-actions button{display:flex;align-items:center;gap:4px;color:var(--accent)}.media-error{font-size:11px;color:#d77768}.app.app .media-viewer{width:100%;height:100%;max-width:none;max-height:none;border-radius:var(--ui-radius);background:color-mix(in srgb,#090a0b var(--window-opacity),transparent)!important;color:#fff;display:flex;flex-direction:column;overflow:hidden;padding:18px;backdrop-filter:blur(24px)}.media-backdrop:has(.media-viewer){padding:0}.viewer-stage{flex:1;position:relative;display:flex;align-items:center;justify-content:center;overflow:hidden;touch-action:none;min-height:0}.viewer-stage img,.viewer-stage video{max-width:100%;max-height:100%;object-fit:contain}.viewer-stage img{transition:transform .15s ease-out;user-select:none;-webkit-user-drag:none}.viewer-controls{display:flex;align-items:center;gap:7px;flex-shrink:0;padding-top:10px}.viewer-controls span{font-size:11px;margin-right:auto;white-space:nowrap}.viewer-controls .icon-button{color:white}.viewer-load{position:absolute;bottom:20px;display:flex;gap:8px;background:#0007;padding:8px;border-radius:var(--ui-radius)}.viewer-error{position:absolute;display:flex;flex-direction:column;gap:12px;padding:20px;background:#0009;border-radius:var(--ui-radius);max-width:90%}.media-network-tabs{display:flex;gap:8px;margin-bottom:14px}.media-network-tabs>button{flex:1;display:flex;align-items:center;gap:6px;justify-content:center;padding:12px;border:1px solid var(--line);border-radius:var(--ui-radius)}.media-network-tabs .active{background:var(--accent-faint);color:var(--accent)}.media-setting-limit{display:flex;align-items:center;gap:8px;font-size:12px;margin:12px 0}.media-setting-limit input{width:75px}.media-setting-limit select{min-width:0;width:100%;padding:8px}.media-cache-settings{padding-top:16px;margin-top:16px;border-top:1px solid var(--line);display:grid;gap:10px}.media-cache-settings h3{font-size:16px}.media-cache-settings label{font-size:12px}.media-cache-settings input{display:block;width:100%;padding:0;margin-top:12px;accent-color:var(--accent)}.media-cache-settings small{color:var(--muted);font-size:11px}.global-player,.recording-mini,.media-notice{position:fixed;z-index:240;left:50%;transform:translateX(-50%);width:min(460px,calc(100% - 24px));border:1px solid var(--line);border-radius:var(--ui-radius);background:color-mix(in srgb,var(--panel) var(--window-opacity),transparent);backdrop-filter:blur(18px);box-shadow:0 5px 20px #0002;display:flex;align-items:center;gap:6px;padding:6px}.global-player{top:max(8px,env(safe-area-inset-top));}.global-player span{flex:1;min-width:0}.global-player strong{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:12px}.global-player small{color:var(--muted);font-size:10px}.media-notice{bottom:90px;font-size:12px;z-index:310;padding:12px}.media-notice span{flex:1;min-width:0}.recording-mini{bottom:90px;justify-content:center;color:var(--accent)}
@media(max-width:600px){.media-modal{padding:24px 14px 14px}.media-modal h2{font-size:18px}.attachment-options>button{padding:10px;min-height:82px;gap:8px}.attachment-options span{font-size:12px}.viewer-controls{gap:1px;flex-wrap:wrap}.viewer-controls .icon-button{width:31px}.media-preview .preview-stage{height:32dvh}.media-collage:not(.count-1) .media-tile{height:110px}.media-collage.count-3 .media-tile:first-child{height:223px}.app .composer .attachment-button{width:28px;flex-shrink:0}.app .composer>.record-controls{flex-shrink:0}.message:has(.message-media){padding:10px;max-width:92%}}
@media(orientation:landscape) and (max-height:600px){.media-preview{width:min(900px,100%)!important;display:grid;grid-template-columns:1.4fr 1fr;gap:10px}.media-preview h2{grid-column:1/-1;margin-bottom:0}.media-preview .preview-stage{grid-row:2/5;height:58dvh}.media-preview .preview-reel{margin:0;max-height:115px}.media-preview .media-footer{grid-column:2;margin:0}.media-preview .media-caption{min-height:50px}.media-preview .preview-order{grid-column:2}.media-modal{max-height:calc(100dvh - 12px);padding:18px 14px}.media-viewer h2{font-size:15px;margin-bottom:6px}.viewer-controls{padding:0}.recording-stage .round-media{height:40dvh;width:40dvh}.recording-stage{gap:5px}.recording-stage .recording-time{font-size:18px}}

.virtual-history{display:flex;flex-direction:column;gap:9px;min-width:0}.history-spacer{flex-shrink:0;pointer-events:none}.history-more{margin:8px auto;font-size:12px}.media-tile{touch-action:pan-y}.app.app.app .media-collage .media-tile{border-radius:0!important}.app.app.app .round-player,.app.app.app .round-media{border-radius:50%!important}

.preview-pan{touch-action:none;position:relative;overflow:hidden}.preview-pan img{transition:transform .12s ease-out;max-width:100%;max-height:100%;user-select:none}.preview-zoom{position:absolute;top:8px;right:8px;background:color-mix(in srgb,var(--panel) var(--window-opacity),transparent);border-radius:var(--ui-radius)}.viewer-stage video{touch-action:auto}
/* Override older modal form rules while retaining shared colour and radius tokens. */
.app.app .media-backdrop{z-index:230}
.app.app .media-modal{backdrop-filter:blur(18px)!important;-webkit-backdrop-filter:blur(18px)!important;animation:none!important}
.app.app .media-settings .media-setting-limit{display:flex!important;align-items:center;justify-content:flex-start;gap:8px;margin:12px 0!important;padding:0;grid-template-columns:none;flex-wrap:nowrap}
.app.app .media-setting-limit input[type=number]{width:76px!important;min-width:0;flex:0 0 76px;padding:8px 10px!important;font-size:14px}
.app.app .media-setting-limit select{width:auto!important;flex:1;min-width:0;font-size:12px}
.app.app .media-cache-settings label{display:block!important}
.app.app .media-preview .media-caption{width:100%;padding:12px!important}
/* The player never covers back/search/profile controls or a dialog's close button. */
.app.chat-open .global-player{top:calc(env(safe-area-inset-top) + 78px)}
.app.chat-open:has(.global-player) .conversation>.messages{padding-top:62px!important}
.app:not(.chat-open):has(.global-player)>.sidebar{padding-top:58px!important}
.app:has(.modal-backdrop) .global-player{z-index:135}
@media(orientation:landscape) and (max-height:600px){.app.chat-open .global-player{top:56px}.app.chat-open:has(.global-player) .conversation>.messages{padding-top:58px!important}}

.app.app.app .media-settings .media-setting-limit{display:flex!important;flex-direction:row!important;align-items:center!important;justify-content:flex-start!important;gap:8px!important}.app.app.app .media-setting-limit input[type=number]{height:36px!important;min-height:0!important;max-height:36px!important;min-width:0!important;width:76px!important;flex:0 0 76px!important;padding:7px 10px!important;margin:0!important;line-height:20px!important}.app.app.app .media-setting-limit select{height:36px!important;min-height:0!important;padding:7px 10px!important}
/* Hold-to-send recording. Its camera surface never inherits rectangular window styling. */
.app.app.app .record-controls{display:flex;gap:7px;align-items:center;flex-shrink:0;position:relative;isolation:isolate}
.app.app.app .record-mode{position:static;width:34px!important;height:40px!important;min-width:34px;padding:0;background:none;border:none;border-radius:50%!important;color:var(--muted);opacity:.8}
.app.app.app .record-controls.is-recording .record-mode{visibility:hidden}
.app.app.app .record-button{position:relative;width:44px;height:44px;flex-shrink:0;border-radius:50%!important;touch-action:none;-webkit-user-select:none;user-select:none;overflow:visible;transition:width .25s,height .25s,background .2s}
.app.app.app .record-button.record-send{width:56px;height:56px;animation:record-send-arrive .32s cubic-bezier(.2,.8,.2,1);background:var(--accent);color:var(--accent-text)}
.record-lock-guide{position:absolute;right:3px;bottom:62px;width:38px;height:85px;border-radius:22px;display:flex;flex-direction:column;align-items:center;justify-content:space-around;color:var(--accent);background:color-mix(in srgb,var(--panel) 70%,transparent);backdrop-filter:blur(10px);pointer-events:none;transform:translateY(calc(var(--lock-progress,0)*-6px))}
.record-lock-guide>svg:first-child{transform:scale(calc(1 + var(--lock-progress,0)*.3));opacity:calc(.5 + var(--lock-progress,0)*.5)}.record-lock-guide i{width:5px;height:5px;border-radius:50%;background:currentColor;opacity:.7;transform:translateY(calc(var(--lock-progress,0)*-45px))}
.record-send-grains{position:absolute;inset:0;pointer-events:none}.record-send-grains i{position:absolute;left:50%;top:50%;width:3px;height:3px;border-radius:50%;background:var(--accent);animation:record-grain .4s ease-out both;transform:rotate(var(--grain-angle)) translateY(23px)}
.app.app.app .recording-overlay{position:fixed;z-index:228;padding:0;border:0;background:none;box-shadow:none;backdrop-filter:none;pointer-events:none;overflow:visible;color:var(--accent);touch-action:none}
.app.app.app .recording-orb,.record-round-flight,.app.app.app .pending-round-orb{position:relative;width:100%;aspect-ratio:1;border-radius:50%!important;clip-path:circle(50% at 50% 50%)!important;overflow:hidden!important;isolation:isolate;contain:paint;background:#191919;box-shadow:none}
.app.app.app .recording-orb>video,.record-round-flight>img,.app.app.app .pending-round-orb>video,.app.app.app .pending-round-orb>img{display:block;width:100%!important;height:100%!important;object-fit:cover!important;border-radius:50%!important;clip-path:circle(50% at 50% 50%);margin:0;padding:0;max-width:none;max-height:none}
.app.app.app .recording-orb .front-camera{transform:scaleX(-1)}
.recording-orb>.spin{position:absolute;top:calc(50% - 14px);left:calc(50% - 14px)}.recording-border{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;color:#fff7}
.recording-timer{display:flex;gap:6px;align-items:center;justify-content:center;height:26px;width:max-content;min-width:57px;margin:7px auto 0;padding:3px 9px;border-radius:16px;font-size:12px;font-variant-numeric:tabular-nums;background:color-mix(in srgb,var(--panel) 78%,transparent);color:var(--text)}.recording-timer>i{width:6px;height:6px;border-radius:50%;background:#ee6559;animation:record-dot 1.2s ease-in-out infinite}
.app.app.app .record-camera-switch,.app.app.app .record-cancel{position:absolute;bottom:3px;display:grid;place-items:center;width:46px;height:46px;padding:0;border-radius:50%!important;border:1px solid var(--line);background:color-mix(in srgb,var(--panel) 90%,transparent);color:var(--text);backdrop-filter:blur(8px);pointer-events:auto;touch-action:manipulation}
.record-camera-switch{right:-4px}.record-cancel{left:-4px}.recording-overlay.voice-recording{padding:15px!important;border-radius:24px;background:color-mix(in srgb,var(--panel) 86%,transparent)!important}.voice-recording .recording-wave{height:65px}.voice-recording .record-cancel{bottom:-7px}
.app.app.app .message.message-round{width:min(240px,65vw);min-width:0;max-width:min(240px,65vw);padding:0!important;border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important;backdrop-filter:none!important;filter:none;isolation:auto}
.app.app.app .message.message-round::before,.app.app.app .message.message-round::after,.message-round>.message-glass,.message-round>.message-author,.message-round>.message-body,.message-round>.message-foot{display:none!important}
.app.app.app .message-round>.message-media{margin:0;gap:0;background:none}.app.app.app .message-round .round-player{width:100%;height:auto;aspect-ratio:1;background:none;border:0;border-radius:50%!important;clip-path:circle(50% at 50% 50%);isolation:isolate;contain:paint;padding:0}
.app.app.app .round-player video{border-radius:50%!important;clip-path:circle(50% at 50% 50%)}.round-player>span{background:#0005}
.app.app.app .pending-round{margin-top:10px;margin-left:auto}.pending-round .pending-progress{position:absolute;left:50%;bottom:12px;transform:translateX(-50%);width:max-content;max-width:85%;padding:4px 8px;background:#0008;color:#fff;border-radius:12px}.pending-round .pending-progress progress{width:55px;flex:none}.pending-round .pending-actions{position:absolute;top:10px;right:12px;margin:0}.pending-round .pending-actions button{border-radius:50%;background:#0008;color:white;min-width:28px;min-height:28px;justify-content:center;padding:5px}.pending-round .media-error{padding:8px 0}.record-round-flight{position:fixed;z-index:300;pointer-events:none;transform-origin:top left}
@keyframes record-send-arrive{from{transform:scale(.65) rotate(-18deg);opacity:.4}to{transform:scale(1) rotate(0);opacity:1}}@keyframes record-grain{from{opacity:1;transform:rotate(var(--grain-angle)) translateY(12px)}to{opacity:0;transform:rotate(var(--grain-angle)) translateY(42px)}}@keyframes record-dot{50%{opacity:.35}}
@media(prefers-reduced-motion:reduce){.record-send-grains{display:none}.app.app.app .record-button.record-send,.recording-timer>i{animation:none}}
