:root{color-scheme:light dark;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;--app-height: 100dvh;--app-top: 0px;--paper: oklch(97.2% .006 255);--paper-pure: oklch(99.4% .004 255);--surface: oklch(94.8% .008 255);--surface-raised: oklch(99.2% .004 255);--ink: oklch(24% .012 255);--ink-muted: oklch(43% .014 255);--ink-faint: oklch(48% .012 255);--line: oklch(82% .012 255 / .68);--line-strong: oklch(56% .016 255);--accent: oklch(60.5% .216 255);--accent-hover: oklch(55% .216 255);--accent-soft: oklch(92.5% .042 255);--incoming: oklch(91.8% .009 255 / .94);--outgoing: oklch(60.5% .216 255);--on-accent: oklch(99% .004 255);--danger: oklch(48% .15 28);--danger-soft: oklch(94% .03 28);--focus: oklch(60.5% .216 255);--glass: oklch(99% .008 255 / .7);--glass-strong: oklch(99% .006 255 / .84);--glass-control: oklch(96% .009 255 / .72);--glass-border: oklch(100% .004 255 / .78);--glass-shadow: 0 10px 34px oklch(28% .03 255 / .12), inset 0 1px 0 oklch(100% 0 0 / .82), inset 0 -1px 0 oklch(64% .02 255 / .12);--shadow: 0 20px 60px oklch(25% .025 255 / .17);--safe-bottom: env(safe-area-inset-bottom, 0px)}@media(prefers-color-scheme:dark){:root{--paper: oklch(20.5% .012 255);--paper-pure: oklch(23.5% .012 255);--surface: oklch(28.5% .014 255);--surface-raised: oklch(27% .014 255);--ink: oklch(94% .009 255);--ink-muted: oklch(74% .014 255);--ink-faint: oklch(67% .012 255);--line: oklch(48% .018 255 / .52);--line-strong: oklch(66% .02 255);--accent: oklch(70% .17 250);--accent-hover: oklch(75% .16 250);--accent-soft: oklch(34% .052 250);--incoming: oklch(32% .016 255 / .96);--outgoing: oklch(56% .18 250);--on-accent: oklch(98% .006 255);--danger: oklch(72% .14 28);--danger-soft: oklch(31% .04 28);--focus: oklch(74% .16 250);--glass: oklch(31% .018 255 / .66);--glass-strong: oklch(29% .016 255 / .84);--glass-control: oklch(35% .018 255 / .7);--glass-border: oklch(88% .012 255 / .2);--glass-shadow: 0 12px 38px oklch(8% .02 255 / .42), inset 0 1px 0 oklch(100% 0 0 / .16), inset 0 -1px 0 oklch(4% .02 255 / .28);--shadow: 0 24px 64px oklch(5% .02 255 / .54)}}*{box-sizing:border-box}html,body,#app{width:100%;height:100%;margin:0}html{overflow:hidden;touch-action:pan-x pan-y}body{min-height:100%;background:var(--paper);color:var(--ink);overflow:hidden;overscroll-behavior:none}#app{position:fixed;top:var(--app-top);right:0;left:0;height:var(--app-height);overflow:hidden auto;overscroll-behavior:none}.app-mode #app{overflow:hidden auto}.app-mode #app:has(.chat-shell),.app-mode #app:has(.gallery-shell),.app-mode #app:has(.image-detail){overflow:hidden}button,input,textarea{font:inherit}button,summary,label,input,textarea{-webkit-tap-highlight-color:transparent}button{color:inherit;touch-action:manipulation}button:focus-visible,summary:focus-visible,input:focus-visible,textarea:focus-visible,label:has(input:focus-visible),label:has(textarea:focus-visible){outline:3px solid color-mix(in oklch,var(--focus) 74%,transparent);outline-offset:3px}button:disabled{cursor:wait;opacity:.58}[hidden]{display:none!important}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.cover-mode{background:var(--paper-pure)}.cover{position:absolute;inset:0;background:var(--paper-pure)}.cover-trigger{position:fixed;right:max(4px,env(safe-area-inset-right));bottom:max(4px,env(safe-area-inset-bottom));width:64px;height:64px;padding:0;border:0;border-radius:24px;background:transparent;touch-action:none;user-select:none}.cover-trigger:after{content:"";position:absolute;right:20px;bottom:20px;width:6px;height:6px;border-radius:50%;background:var(--ink);opacity:0;transform:scale(.5);transition:opacity .18s ease-out,transform 1s cubic-bezier(.16,1,.3,1)}.cover-trigger.is-holding:after{opacity:.16;transform:scale(1.5)}.gateway{width:min(100% - 40px,420px);min-height:100%;margin:0 auto;padding:max(72px,12vh) 0 calc(48px + var(--safe-bottom));display:flex;flex-direction:column}.gateway-gesture{justify-content:center;padding-top:max(20px,env(safe-area-inset-top));padding-bottom:max(20px,var(--safe-bottom))}.gesture-host{width:100%;display:grid;justify-items:center}.gateway-gesture .gateway-heading{text-align:center}.gateway-gesture .gateway-heading h1{font-size:1.65rem;line-height:1.15}.gateway-gesture .gateway-heading>p:last-child{margin:8px auto 0;font-size:.875rem;line-height:1.45}.gateway-mark{width:48px;height:48px;display:grid;place-items:center;margin-bottom:36px;border-radius:16px;background:var(--accent-soft);color:var(--accent)}.gateway-mark svg,.peer-avatar svg,.icon-button svg,.image-picker svg,.send-button svg,.menu-panel svg,.image-preview button svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.eyebrow{margin:0 0 10px;color:var(--accent);font-size:.75rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase}.gateway-heading h1,.pairing-header h1,.fatal-screen h1{margin:0;font-size:2rem;line-height:1.12;letter-spacing:-.035em}.gateway-heading>p:last-child{max-width:36ch;margin:14px 0 0;color:var(--ink-muted);font-size:.95rem;line-height:1.65}.gateway-form{display:grid;gap:18px;margin-top:42px}.gateway-form label,.invite-link{display:grid;gap:9px;color:var(--ink-muted);font-size:.82rem;font-weight:650}.gateway-form input,.gateway-form textarea,.invite-link input{width:100%;min-height:50px;padding:13px 14px;border:1px solid var(--line-strong);border-radius:14px;background:var(--glass-control);color:var(--ink);font-weight:450;resize:vertical;box-shadow:inset 0 1px 0 var(--glass-border);-webkit-backdrop-filter:blur(18px) saturate(160%);backdrop-filter:blur(18px) saturate(160%)}.gateway-form input:hover,.gateway-form textarea:hover{border-color:color-mix(in oklch,var(--line-strong) 65%,var(--accent))}.gateway-form input[aria-invalid=true],.gateway-form textarea[aria-invalid=true]{border-color:var(--danger)}.field-hint,.privacy-note,.menu-footnote{margin:-8px 0 0;color:var(--ink-faint);font-size:.76rem;font-weight:450;line-height:1.55}.form-error{min-height:1.2em;margin:-5px 0;color:var(--danger);font-size:.82rem;line-height:1.45}.primary-button{min-height:50px;padding:0 20px;border:0;border-radius:14px;background:var(--accent);color:var(--paper-pure);font-weight:700;cursor:pointer;box-shadow:inset 0 1px #ffffff47,0 5px 16px color-mix(in oklch,var(--accent) 24%,transparent);transition:background .18s ease-out,transform .18s cubic-bezier(.16,1,.3,1),box-shadow .18s ease-out}.primary-button:hover{background:var(--accent-hover)}.primary-button:active{transform:scale(.985)}.secondary-button{min-height:50px;padding:0 20px;border:1px solid var(--glass-border);border-radius:14px;background:var(--glass-control);color:var(--ink);font-weight:700;cursor:pointer;box-shadow:var(--glass-shadow);-webkit-backdrop-filter:blur(20px) saturate(170%);backdrop-filter:blur(20px) saturate(170%)}.secondary-button:hover{border-color:var(--accent);background:var(--accent-soft)}.file-button{display:grid;place-items:center;text-align:center}.file-button input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.corrupt-vault-panel{display:grid;gap:12px;margin-top:34px}.corrupt-vault-panel .form-error{margin:0}.privacy-note{max-width:44ch;margin-top:auto;padding-top:52px}.gateway-secondary{display:flex;justify-content:center;margin-top:18px}.pending-join-panel{display:grid;gap:12px;margin-top:40px}.gesture-block{display:grid;gap:12px;margin-top:30px}.gateway-gesture .gesture-block{gap:8px;margin-top:20px}.gesture-instruction{min-height:2.9em;margin:0;color:var(--ink-muted);font-size:.82rem;line-height:1.45;text-align:center}.gesture-count{min-height:1.3em;margin:0;color:var(--ink-faint);font-size:.72rem;text-align:center}.gesture-pad{position:relative;width:min(78vw,300px);aspect-ratio:1;justify-self:center;display:grid;grid-template-columns:repeat(3,1fr);touch-action:none;user-select:none;margin-inline:auto}.gateway-gesture .gesture-pad{width:min(68vw,260px,calc(100dvh - 300px))}.gesture-trace{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}.gesture-trace polyline,.gesture-trace line{fill:none;stroke:var(--accent);stroke-width:5;stroke-linecap:round;stroke-linejoin:round;opacity:.66}.gesture-point{position:relative;z-index:1;width:72px;height:72px;place-self:center;display:grid;place-items:center;padding:0;border:0;border-radius:50%;background:transparent;cursor:crosshair}.gateway-gesture .gesture-point{width:64px;height:64px}.gesture-point span{width:20px;height:20px;border:2px solid var(--line-strong);border-radius:50%;background:color-mix(in oklch,var(--paper-pure) 88%,transparent);box-shadow:inset 0 1px 0 var(--glass-border),0 2px 8px #1f2a3814;transition:transform .18s cubic-bezier(.16,1,.3,1),background .18s ease-out,border-color .18s ease-out}.gesture-point.is-active span{border-color:var(--accent);background:var(--accent);transform:scale(1.28)}.gesture-actions{display:flex;justify-content:center;gap:8px}.gesture-actions button{min-height:44px;padding:0 12px;border:0;background:transparent;color:var(--ink-muted);font-size:.78rem;font-weight:650;cursor:pointer}.credential-step{width:min(100%,300px);justify-self:center;display:grid;gap:6px;padding-top:8px}.gateway-gesture .form-error{min-height:2.4em;margin:0;text-align:center}.text-button{min-height:44px;padding:8px 12px;border:0;background:transparent;color:var(--ink-muted);font-weight:600;cursor:pointer}.text-button:hover{color:var(--ink)}.gateway-back{align-self:center;margin-top:14px}.choice-stack{display:grid;margin-top:40px;border-top:1px solid var(--line)}.choice-row{min-height:82px;padding:15px 2px;display:flex;align-items:center;justify-content:space-between;gap:20px;border:0;border-bottom:1px solid var(--line);background:transparent;text-align:left;cursor:pointer}.choice-row:hover strong{color:var(--accent)}.choice-row span:first-child{display:grid;gap:5px}.choice-row strong{font-size:.96rem;transition:color .18s ease-out}.choice-row small{color:var(--ink-muted);font-size:.78rem;line-height:1.45}.file-choice input,.image-picker input,.gallery-upload-button input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.pairing-screen{width:min(100%,720px);min-height:100%;margin:0 auto;padding:max(30px,env(safe-area-inset-top)) 28px calc(30px + var(--safe-bottom));display:grid;grid-template-rows:auto 1fr auto}.pairing-header,.subpage-header{display:flex;align-items:center;justify-content:space-between;gap:18px}.pairing-header h1{font-size:1.7rem}.pairing-body{width:min(100%,420px);margin:auto;display:grid;justify-items:stretch;gap:22px}#invite-qr{justify-self:center;width:248px;height:248px;padding:12px;border:1px solid var(--line);border-radius:20px;background:var(--surface)}.pairing-instruction{max-width:44ch;margin:0 auto;color:var(--ink-muted);font-size:.9rem;line-height:1.65;text-align:center}.invite-link input{color:var(--ink-muted);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.73rem}.connection-line{display:flex;align-items:center;justify-content:center;gap:8px;margin:0;color:var(--ink-muted);font-size:.78rem}.status-dot{width:7px;height:7px;border-radius:50%;background:var(--ink-faint)}.status-dot[data-state=connected]{background:var(--accent)}.pairing-footer{max-width:54ch;padding-top:24px;color:var(--ink-faint);font-size:.74rem;line-height:1.55}.icon-button,.more-menu summary,.image-picker{position:relative;width:44px;height:44px;flex:0 0 44px;display:grid;place-items:center;padding:0;border:0;border-radius:50%;border:1px solid transparent;background:transparent;color:var(--ink-muted);cursor:pointer;list-style:none;transition:color .18s ease-out,background .18s ease-out,border-color .18s ease-out,transform .18s cubic-bezier(.16,1,.3,1)}.icon-button:hover,.more-menu summary:hover,.image-picker:hover{border-color:var(--glass-border);background:var(--glass-control);color:var(--ink);box-shadow:inset 0 1px 0 var(--glass-border)}.icon-button:active,.more-menu summary:active,.image-picker:active{transform:scale(.94)}.icon-button:disabled,.image-picker.is-disabled{cursor:not-allowed;opacity:.5}.chat-shell{width:min(100%,880px);height:100%;margin:0 auto;display:grid;grid-template-rows:auto auto auto minmax(0,1fr) auto;overflow:hidden;background:radial-gradient(circle at 14% 10%,color-mix(in oklch,var(--accent-soft) 62%,transparent),transparent 34%),var(--paper-pure);border-inline:1px solid var(--line);isolation:isolate}.system-notices:empty{display:none}.recovery-reminder,.upload-reminder{min-height:58px;padding:9px 14px;display:flex;align-items:center;justify-content:space-between;gap:14px;border-bottom:1px solid color-mix(in oklch,var(--accent) 18%,var(--line));background:color-mix(in oklch,var(--accent-soft) 82%,var(--paper-pure))}.recovery-reminder>div,.upload-reminder>div{display:grid;gap:2px}.recovery-reminder strong,.upload-reminder strong{font-size:.76rem}.recovery-reminder span,.upload-reminder span{color:var(--ink-muted);font-size:.7rem;line-height:1.35}.recovery-reminder button{min-width:82px;min-height:44px;padding:0 12px;border:1px solid var(--accent);border-radius:14px;background:var(--glass-strong);color:var(--accent);font-size:.74rem;font-weight:700;cursor:pointer}.chat-header{min-height:70px;padding:max(10px,env(safe-area-inset-top)) 16px 10px;display:flex;align-items:center;justify-content:space-between;gap:20px;border-bottom:1px solid var(--glass-border);background:var(--glass-strong);box-shadow:0 8px 26px #1a222e14,inset 0 -1px color-mix(in oklch,var(--line) 50%,transparent);-webkit-backdrop-filter:blur(30px) saturate(185%);backdrop-filter:blur(30px) saturate(185%);z-index:5}.peer-summary{min-width:0;display:flex;align-items:center;gap:11px}.peer-avatar{width:38px;height:38px;flex:0 0 38px;display:grid;place-items:center;border-radius:50%;border:1px solid color-mix(in oklch,var(--accent) 20%,var(--glass-border));background:color-mix(in oklch,var(--accent-soft) 76%,var(--glass));color:var(--accent);font-size:.84rem;font-weight:750;box-shadow:inset 0 1px 0 var(--glass-border),0 4px 14px color-mix(in oklch,var(--accent) 10%,transparent)}.peer-avatar svg{width:18px;height:18px}.peer-summary h1,.subpage-header h1{margin:0;font-size:.98rem;line-height:1.3}.peer-summary p,.subpage-header p{margin:3px 0 0;color:var(--ink-muted);font-size:.7rem}.peer-summary p[data-state=connected]{color:var(--accent)}.header-actions{display:flex;align-items:center;gap:2px}.badge{position:absolute;top:4px;right:2px;min-width:17px;height:17px;padding:0 4px;display:grid;place-items:center;border:2px solid var(--paper-pure);border-radius:9px;background:var(--accent);color:var(--paper-pure);font-size:.58rem;font-weight:750}.more-menu{position:relative;z-index:12}.more-menu[open]>summary{border-color:var(--glass-border);background:var(--glass-control);color:var(--ink);box-shadow:inset 0 1px 0 var(--glass-border)}.more-menu summary::-webkit-details-marker{display:none}.menu-panel{position:absolute;top:50px;right:0;width:min(280px,calc(100vw - 28px));padding:10px;border:1px solid var(--glass-border);border-radius:22px;background:var(--glass-strong);box-shadow:var(--shadow),inset 0 1px 0 var(--glass-border);-webkit-backdrop-filter:blur(34px) saturate(190%);backdrop-filter:blur(34px) saturate(190%);transform-origin:top right;animation:glass-menu-in .18s cubic-bezier(.16,1,.3,1)}@keyframes glass-menu-in{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.menu-title{margin:5px 8px 8px;color:var(--ink-faint);font-size:.68rem;font-weight:700;letter-spacing:.08em}.safety-label{margin:8px 8px 4px;color:var(--ink-muted);font-size:.7rem;font-weight:650}.safety-code{display:block;margin:0 8px 10px;color:var(--accent);font-size:.68rem;font-weight:700;letter-spacing:.04em;overflow-wrap:anywhere}.menu-panel button{width:100%;min-height:44px;padding:0 9px;display:flex;align-items:center;gap:11px;border:0;border-radius:12px;background:transparent;text-align:left;font-size:.82rem;font-weight:600;cursor:pointer}.menu-panel button:hover{background:var(--glass-control)}.menu-panel svg{width:18px;height:18px}.menu-footnote{margin:10px 8px 5px}.notice{margin:8px 14px 0;padding:10px 12px;border:1px solid var(--line);border-radius:14px;background:var(--glass-strong);color:var(--ink-muted);font-size:.78rem;line-height:1.45;z-index:4;box-shadow:inset 0 1px 0 var(--glass-border),0 8px 24px #19202914;-webkit-backdrop-filter:blur(24px) saturate(170%);backdrop-filter:blur(24px) saturate(170%)}.notice[data-tone=error]{border-color:color-mix(in oklch,var(--danger) 25%,var(--line));background:var(--danger-soft);color:var(--danger)}.message-list{min-height:0;padding:28px clamp(14px,4vw,44px) 20px;display:flex;flex-direction:column;gap:8px;overflow-y:auto;overscroll-behavior-y:contain;-webkit-overflow-scrolling:touch;touch-action:pan-y;scrollbar-width:none;scroll-behavior:smooth;overflow-anchor:none}.message-list::-webkit-scrollbar{display:none}.message-list[data-history-loading=true]:before{content:"正在载入更早消息…";flex:0 0 30px;display:grid;place-items:center;color:var(--ink-faint);font-size:.72rem;font-weight:600}.empty-conversation{width:min(100%,360px);margin:auto;padding:48px 24px;text-align:center}.empty-conversation p,.gallery-empty p{margin:0 0 8px;font-weight:700}.empty-conversation span,.gallery-empty span{color:var(--ink-muted);font-size:.82rem;line-height:1.55}.message{width:min(76%,560px);display:grid;gap:4px}.message.outgoing{align-self:flex-end;justify-items:end}.message.incoming{align-self:flex-start;justify-items:start}.message-bubble{max-width:100%;padding:10px 14px;border:1px solid color-mix(in oklch,var(--line) 50%,transparent);border-radius:19px;background:var(--incoming);overflow:hidden;box-shadow:0 2px 8px #1b222b0b,inset 0 1px color-mix(in oklch,var(--glass-border) 58%,transparent)}.outgoing .message-bubble{border-color:color-mix(in oklch,var(--accent) 72%,var(--glass-border));border-bottom-right-radius:7px;background:var(--outgoing);color:var(--on-accent);box-shadow:0 3px 12px color-mix(in oklch,var(--accent) 17%,transparent),inset 0 1px #fff3}.incoming .message-bubble{border-bottom-left-radius:7px}.message-bubble>p{margin:0;white-space:pre-wrap;overflow-wrap:anywhere;font-size:.94rem;line-height:1.5}.message-meta{margin:0 5px;color:var(--ink-faint);font-size:.64rem}.message-retry{min-width:44px;min-height:44px;margin:-14px -9px;padding:0 9px;border:0;background:transparent;color:var(--danger);font-size:inherit;font-weight:700;cursor:pointer}.message.is-pending{opacity:.7}.message.is-failed .message-meta{color:var(--danger)}.message-bubble.image-bubble{width:min(360px,100%);padding:4px;background:var(--incoming);color:var(--ink)}.image-preview{min-width:180px;min-height:128px;display:grid;place-items:center;overflow:hidden;border-radius:13px;background:var(--surface)}.image-preview img{display:block;width:100%;max-height:420px;object-fit:contain}.image-preview button{width:100%;min-height:128px;display:grid;place-items:center;align-content:center;gap:7px;border:0;background:transparent;color:var(--ink-muted);cursor:pointer}.image-preview button span{font-size:.78rem;font-weight:650}.image-preview button small{color:var(--ink-faint);font-size:.66rem}.composer{position:relative;min-height:72px;padding:10px 14px calc(10px + var(--safe-bottom));display:flex;align-items:flex-end;gap:9px;border-top:1px solid var(--glass-border);background:var(--glass-strong);box-shadow:0 -10px 30px #1a222e14,inset 0 1px color-mix(in oklch,var(--glass-border) 84%,transparent);-webkit-backdrop-filter:blur(30px) saturate(185%);backdrop-filter:blur(30px) saturate(185%);z-index:6}.composer-field{flex:1;display:flex;align-items:center;border:1px solid color-mix(in oklch,var(--line-strong) 58%,var(--glass-border));border-radius:23px;background:var(--glass-control);box-shadow:inset 0 1px 0 var(--glass-border),0 3px 12px #19202912;transition:border-color .18s ease-out,background .18s ease-out,box-shadow .18s ease-out;-webkit-backdrop-filter:blur(18px) saturate(170%);backdrop-filter:blur(18px) saturate(170%)}.composer-field:has(textarea:focus),.composer-field:has(textarea:focus-visible){outline:none;border-color:color-mix(in oklch,var(--ink-muted) 70%,var(--glass-border));background:var(--glass-strong);box-shadow:inset 0 1px 0 var(--glass-border),0 3px 14px #1920291a}.composer textarea{width:100%;min-height:42px;max-height:128px;padding:10px 14px;border:0;background:transparent;color:var(--ink);line-height:1.42;resize:none;appearance:none;-webkit-appearance:none;outline:2px solid transparent;outline-offset:-2px;caret-color:var(--accent)}.composer textarea:focus,.composer textarea:focus-visible{outline:2px solid transparent;outline-offset:-2px}.composer textarea::placeholder{color:var(--ink-faint)}.send-button{width:44px;height:44px;flex:0 0 44px;display:grid;place-items:center;padding:0;border:0;border-radius:50%;background:var(--accent);color:var(--on-accent);cursor:pointer;box-shadow:inset 0 1px #ffffff57,0 5px 15px color-mix(in oklch,var(--accent) 24%,transparent);transition:background .18s ease-out,transform .18s cubic-bezier(.16,1,.3,1),box-shadow .18s ease-out}.send-button:hover{background:var(--accent-hover)}.send-button:active{transform:scale(.92)}.upload-progress{position:absolute;inset:auto 14px calc(100% + 8px) 14px;height:34px;overflow:hidden;border:1px solid var(--line);border-radius:14px;background:var(--glass-strong);box-shadow:var(--glass-shadow);-webkit-backdrop-filter:blur(22px) saturate(180%);backdrop-filter:blur(22px) saturate(180%)}.upload-progress span{position:absolute;inset:0;background:var(--accent-soft);transform:scaleX(0);transform-origin:left;transition:transform .18s ease-out}.upload-progress output{position:relative;height:100%;display:grid;place-items:center;color:var(--accent);font-size:.7rem;font-weight:700}.gallery-shell,.image-detail{width:min(100%,960px);height:100%;min-height:0;margin:0 auto;background:var(--paper-pure);border-inline:1px solid var(--line)}.gallery-shell{position:relative;display:grid;grid-template-rows:auto minmax(0,1fr);overflow:hidden}.subpage-header{min-height:72px;padding:max(12px,env(safe-area-inset-top)) 16px 12px;justify-content:flex-start;border-bottom:1px solid var(--glass-border);background:var(--glass-strong);box-shadow:0 8px 26px #1a222e14;-webkit-backdrop-filter:blur(30px) saturate(185%);backdrop-filter:blur(30px) saturate(185%);z-index:5}.gallery-header{display:grid;grid-template-columns:44px minmax(0,1fr) 44px}.gallery-header>div{min-width:0}.gallery-upload-button.is-disabled{opacity:.45;cursor:not-allowed}.gallery-upload-progress,.gallery-notice{position:absolute;inset:82px 16px auto;z-index:4;margin:0}.gallery-upload-progress{height:36px}.gallery-shell.is-uploading .gallery-grid{opacity:.62}.gallery-grid{min-height:0;padding:3px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:auto;align-content:start;gap:3px;overflow-y:auto;overscroll-behavior-y:contain;-webkit-overflow-scrolling:touch;touch-action:pan-y}.gallery-tile{position:relative;aspect-ratio:1;min-height:0;padding:0;overflow:hidden;border:0;background:var(--surface);cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;isolation:isolate}.gallery-tile:after{content:"";position:absolute;inset:0;border:1px solid color-mix(in oklch,var(--glass-border) 52%,transparent);pointer-events:none;z-index:2}.gallery-tile>svg{width:32px;height:32px;margin:0 auto 6px;color:var(--ink-faint)}.gallery-tile img{width:100%;height:100%;display:block;object-fit:cover;position:absolute;inset:0}.gallery-tile time{position:absolute;right:7px;bottom:7px;padding:3px 6px;border-radius:7px;background:#000000ad;color:var(--paper-pure);font-size:.61rem;z-index:3;-webkit-backdrop-filter:blur(12px) saturate(150%);backdrop-filter:blur(12px) saturate(150%)}.tile-loading{color:var(--ink-faint);font-size:.68rem}.gallery-empty{grid-column:1 / -1;margin:25vh auto 0;text-align:center}.detail-header{display:grid;grid-template-columns:44px 1fr 44px}.detail-header>div{min-width:0;text-align:center}.detail-header h1{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.detail-stage{height:calc(100% - 72px);display:grid;place-items:center;overflow:auto;background:#181b1f;color:#d3d1cb}.detail-stage>p{padding:24px;font-size:.8rem}.detail-stage img{max-width:100%;max-height:100%;object-fit:contain}.fatal-screen{width:min(100% - 40px,440px);min-height:100%;margin:0 auto;display:flex;flex-direction:column;justify-content:center}.recovery-code-sheet{position:absolute;inset:0;z-index:40;padding:20px;display:grid;place-items:center;background:#0c12194d;-webkit-backdrop-filter:blur(16px) saturate(120%);backdrop-filter:blur(16px) saturate(120%)}.recovery-code-panel{width:min(100%,440px);max-height:calc(100% - 24px);padding:26px;overflow:auto;border:1px solid var(--glass-border);border-radius:28px;background:var(--glass-strong);box-shadow:var(--shadow),inset 0 1px 0 var(--glass-border);-webkit-backdrop-filter:blur(38px) saturate(190%);backdrop-filter:blur(38px) saturate(190%);animation:glass-sheet-in .22s cubic-bezier(.16,1,.3,1)}@keyframes glass-sheet-in{0%{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.recovery-code-panel h2{margin:0;font-size:1.35rem;line-height:1.2;letter-spacing:-.025em}.recovery-code-panel>p:not(.eyebrow){margin:12px 0 18px;color:var(--ink-muted);font-size:.88rem;line-height:1.55}.recovery-code-panel>code{display:block;padding:15px;border:1px solid var(--line);border-radius:14px;background:var(--surface);color:var(--ink);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.82rem;line-height:1.55;overflow-wrap:anywhere;user-select:all}.recovery-code-actions{margin-top:20px;display:grid;grid-template-columns:1fr 1fr;gap:10px}.fatal-screen>p:not(.eyebrow){margin:18px 0 32px;color:var(--ink-muted);line-height:1.6}@media(max-width:600px){.chat-shell,.gallery-shell,.image-detail{border-inline:0}.message{width:min(86%,520px)}.message-list{padding-inline:12px}.gallery-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-height:640px){.gateway-gesture{padding-top:max(12px,env(safe-area-inset-top));padding-bottom:max(12px,var(--safe-bottom))}.gateway-gesture .gesture-block{margin-top:12px}.gateway-gesture .gesture-pad{width:min(58vw,210px,calc(100dvh - 280px))}.gateway-gesture .gesture-point{width:52px;height:52px}}@media(min-width:900px){.gallery-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media(prefers-contrast:more){:root{--line: oklch(72% .018 92);--line-strong: oklch(58% .025 105);--ink-muted: oklch(38% .018 151)}}
