:root{color-scheme:dark;--bg:#080808;--ink:#eae6df;--muted:#807a72;--line:rgba(255,255,255,.06);--accent:#7c6ef0;--danger:#e05555;--pointer-x:50%;--pointer-y:42%;font-family:"Inter Tight","Neue Haas Grotesk Display Pro",ui-sans-serif,system-ui,-apple-system,sans-serif}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}[hidden]{display:none!important}html,body{width:100%;min-height:100%;margin:0}html{touch-action:manipulation;overscroll-behavior:none;-webkit-text-size-adjust:100%;text-size-adjust:100%}body{overflow:hidden;color:var(--ink);background:var(--bg);transition:background 1.8s ease,color 1.2s ease;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}body,button,a,canvas{touch-action:manipulation}button,textarea,input{font:inherit}textarea,input{user-select:text;-webkit-user-select:text;-webkit-touch-callout:default}button{border:0;color:inherit;cursor:pointer}img,video,canvas{-webkit-user-drag:none;user-select:none}button:focus-visible,textarea:focus-visible,input:focus-visible{outline:2px solid rgba(124,110,240,.5);outline-offset:3px}.composer textarea:focus-visible{outline:0}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.ambient{position:fixed;inset:0;overflow:hidden;pointer-events:none;background:radial-gradient(circle 38vw at var(--pointer-x) var(--pointer-y),rgba(160,148,130,.03),transparent 72%),radial-gradient(ellipse 56% 68% at 50% 40%,rgba(14,14,14,.96),rgba(10,10,10,.5) 52%,transparent 78%),linear-gradient(145deg,#0c0c0c,#080808);transform-origin:50% 44%;animation:daylight-breathe 12s ease-in-out infinite}
.ambient::before{content:"";position:absolute;inset:0;background-image:radial-gradient(1.5px 1.5px at 12% 20%,rgba(255,255,255,.2) 0%,transparent 100%),radial-gradient(1px 1px at 38% 58%,rgba(255,255,255,.12) 0%,transparent 100%),radial-gradient(1.5px 1.5px at 65% 15%,rgba(255,255,255,.16) 0%,transparent 100%),radial-gradient(1px 1px at 82% 45%,rgba(255,255,255,.1) 0%,transparent 100%),radial-gradient(1.5px 1.5px at 28% 78%,rgba(255,255,255,.14) 0%,transparent 100%),radial-gradient(1px 1px at 55% 35%,rgba(255,255,255,.08) 0%,transparent 100%),radial-gradient(1.5px 1.5px at 6% 62%,rgba(255,255,255,.1) 0%,transparent 100%),radial-gradient(1px 1px at 90% 85%,rgba(255,255,255,.06) 0%,transparent 100%),radial-gradient(1px 1px at 48% 92%,rgba(255,255,255,.08) 0%,transparent 100%),radial-gradient(1px 1px at 75% 72%,rgba(255,255,255,.1) 0%,transparent 100%),radial-gradient(1.5px 1.5px at 18% 42%,rgba(255,255,255,.08) 0%,transparent 100%),radial-gradient(1px 1px at 95% 30%,rgba(255,255,255,.06) 0%,transparent 100%);animation:particle-drift 30s ease-in-out infinite;pointer-events:none}
@keyframes particle-drift{0%{transform:translateY(0) translateX(0)}20%{transform:translateY(-8px) translateX(5px)}40%{transform:translateY(-3px) translateX(-4px)}60%{transform:translateY(-12px) translateX(2px)}80%{transform:translateY(-5px) translateX(-3px)}100%{transform:translateY(0) translateX(0)}}
.ambient:after{position:absolute;inset:0;content:"";opacity:.07;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.65' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.3'/%3E%3C/svg%3E");mix-blend-mode:soft-light}
.ambient i{display:none}
.bg-text-layer{position:absolute;z-index:1;inset:0;overflow:hidden;pointer-events:none;padding:0 3vw}
.bg-text-item{position:absolute;left:50%;width:max-content;max-width:min(1920px,94vw);max-height:5em;transform:translateX(-50%);color:rgba(230,224,212,.15);font-family:"Inter Tight",ui-sans-serif,system-ui,sans-serif;font-size:clamp(48px,10vw,140px);font-weight:400;letter-spacing:.01em;line-height:.95;text-align:center;white-space:normal;overflow-wrap:break-word;word-break:break-word;-webkit-mask-image:linear-gradient(to bottom,#000 0%,#000 55%,transparent 100%);mask-image:linear-gradient(to bottom,#000 0%,#000 55%,transparent 100%);filter:blur(6px);text-shadow:0 0 46px rgba(210,200,185,.13),0 0 96px rgba(200,190,170,.06);will-change:opacity,filter;transition:opacity 6s cubic-bezier(.4,0,.2,1),filter 6s cubic-bezier(.4,0,.2,1)}
.bg-text-item.is-visible{opacity:1;filter:blur(6px)}
.bg-text-item.is-fading{opacity:0;filter:blur(24px)}
.bg-text-item.is-entering{opacity:0;filter:blur(28px)}
.bg-text-item.is-cjk{line-height:1.15;max-height:5.75em}
.bg-text-item.is-permanent.is-visible{animation:bg-breathe 8s ease-in-out infinite}
@keyframes bg-breathe{0%,100%{opacity:.7}50%{opacity:1}}
@media(prefers-reduced-motion:reduce){.bg-text-item{transition:none}}
@keyframes daylight-breathe{0%,100%{opacity:.92;transform:scale(1)}50%{opacity:1;transform:scale(1.018)}}
.app-shell{position:relative;display:grid;grid-template-rows:auto 1fr auto;width:100vw;height:100dvh}
.topbar{z-index:20;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:28px;padding:20px clamp(22px,4vw,62px) 15px}
.brand{color:#c0b8ae;font-size:14px;font-weight:600;letter-spacing:-.01em;text-decoration:none;white-space:nowrap}
.brand em{color:var(--accent);font-style:normal}
.place-title{min-width:0;margin:0;color:#6b6560;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nav{display:flex;gap:22px;align-items:center}
.nav button{padding:8px 0;color:#7a756e;background:none;font-size:12px}
.nav button:hover{color:#c0b8ae}
.nav .settings-trigger{display:grid;width:30px;height:30px;padding:0;place-items:center;border-radius:50%;transition:color .2s,background .2s,transform .2s}
.nav .settings-trigger:hover{background:rgba(160,148,130,.06);transform:rotate(8deg)}
.settings-trigger svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.45;stroke-linecap:round;stroke-linejoin:round}
.memory-space{position:relative;min-height:0;contain:layout paint style}
.cluster-wrap{position:relative;width:100%;height:100%;min-height:530px;margin:auto;contain:layout paint}
.memory-webgl-canvas{position:absolute;z-index:3;top:45%;left:50%;display:block;width:min(920px,82vw);height:min(660px,70vh);background:transparent;outline:0;filter:none;transform:translate(-50%,-50%);touch-action:manipulation;contain:strict;backdrop-filter:blur(3px) saturate(0.8);-webkit-backdrop-filter:blur(3px) saturate(0.8)}
.memory-webgl-canvas.is-settling{animation:memory-field-settle 1.35s cubic-bezier(.2,.72,.2,1) both}
@keyframes memory-field-settle{from{opacity:.18;transform:translate(-50%,-47%) scale(.965)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}
.empty-copy{position:absolute;z-index:5;left:50%;bottom:14%;width:min(440px,82vw);text-align:center;transform:translateX(-50%)}
.empty-copy h1{margin:0 0 10px;color:#b0a89e;font-family:"Inter Tight",ui-serif,serif;font-size:22px;font-weight:500;letter-spacing:-.02em;line-height:.95}
.empty-copy p{margin:0;color:#7a756e;font-size:13px;line-height:1.7}
.empty-copy.is-profile-missing h1,
.empty-copy.is-profile-missing>p{display:none}
.empty-copy.is-profile-missing .empty-cta{margin-top:0}
.empty-cta{margin-top:18px;padding:9px 20px;color:#b0a89e;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.08);border-radius:999px;font-size:12px;cursor:pointer;transition:all .3s ease;backdrop-filter:blur(12px);animation:empty-cta-breathe 3.6s ease-in-out infinite}
.empty-profile-toast{position:static!important;z-index:auto!important;opacity:1!important;transform:none!important;margin-top:18px;display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center;width:min(400px,85%);margin-inline:auto;padding:10px 11px;color:#b0a89e;border:1px solid rgba(255,255,255,.08);border-radius:16px;box-shadow:0 14px 40px rgba(0,0,0,.25),0 0 0 1px rgba(255,255,255,.04),inset 0 1px 0 rgba(255,255,255,.06);backdrop-filter:blur(18px);animation:empty-profile-toast-in .5s ease both;text-align:left}
.empty-profile-toast p{min-width:0;margin:0}
.empty-profile-toast strong,.empty-profile-toast small{display:block;text-align:left}
.empty-profile-toast strong{font-size:11px}
.empty-profile-toast small{margin-top:2px;color:#6a645c;font-size:10px;line-height:1.5;text-align:left}
.empty-profile-toast button{padding:7px 14px;color:#8a847c;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.06);border-radius:999px;font-size:10px;cursor:pointer;transition:color .2s,background .2s;backdrop-filter:blur(12px)}
.empty-profile-toast button:hover{color:#b0a89e;background:rgba(255,255,255,.07)}
@keyframes empty-profile-toast-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.empty-cta:hover{color:#d0ccc6;background:rgba(255,255,255,.07);transform:translateY(-1px);box-shadow:0 6px 20px rgba(0,0,0,.2)}
@keyframes empty-cta-breathe{0%,100%{opacity:.7;box-shadow:0 0 0 0 rgba(124,110,240,0)}50%{opacity:1;box-shadow:0 0 24px 2px rgba(124,110,240,.08)}}
.revisit{position:absolute;z-index:20;left:50%;bottom:4%;padding:8px 16px;color:#8a847c;background:rgba(255,255,255,.05);border-radius:999px;border:1px solid rgba(255,255,255,.08);box-shadow:0 10px 30px rgba(0,0,0,.2);font-size:12px;backdrop-filter:blur(12px);transform:translateX(-50%)}
.revisit:hover{color:#c0b8ae;background:rgba(255,255,255,.08)}
.composer{position:relative;z-index:20;width:min(680px,calc(100% - 32px));margin:0 auto max(32px,env(safe-area-inset-bottom));padding:8px 10px;transition:box-shadow .3s}
.composer:focus-within{box-shadow:none}
.compose-row{display:flex;gap:7px;align-items:flex-end}
.compose-tools{display:flex;gap:2px}
.icon-tool{display:grid;flex:0 0 42px;width:42px;height:48px;padding:0;place-items:center;color:#7a756e;background:none;border-radius:50%}
.icon-tool:hover,.icon-tool.active{color:var(--accent);background:rgba(160,148,130,.08)}
.icon-tool svg,.keep-button svg{width:19px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.composer textarea{flex:1;min-width:0;max-height:120px;min-height:48px;padding:12px 8px;resize:none;color:#e0dcd7;background:none;border:0;line-height:1.55}
.composer textarea::placeholder{color:#5a5650}
.keep-button{display:grid;flex:0 0 48px;width:48px;height:48px;padding:0;place-items:center;color:#1a1a2e;background:linear-gradient(135deg,#7c6ef0,#5b4fd0);border-radius:50%;box-shadow:0 8px 22px rgba(124,110,240,.25)}
.keep-button:disabled{opacity:.35}
.record-state,.pending-image{display:flex;align-items:center;gap:9px;margin:0 8px 6px;padding:5px;color:#7a756e;font-size:12px}
.record-state output{margin-left:auto}
.record-dot{width:7px;height:7px;background:#e05555;border-radius:50%;box-shadow:0 0 0 5px rgba(224,85,85,.12);animation:pulse 1.3s infinite}
@keyframes pulse{50%{opacity:.35}100%{opacity:1}}
.pending-image img,.pending-image video{width:44px;height:44px;object-fit:cover;border-radius:9px}
.pending-image span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pending-image button{margin-left:auto;color:var(--muted);background:none;font-size:20px}
.whisper{position:fixed;z-index:50;left:50%;bottom:125px;max-width:calc(100vw - 24px);padding:8px 13px;color:#b0a89e;background:rgba(22,20,18,.92);border:1px solid rgba(255,255,255,.06);border-radius:999px;box-shadow:0 8px 28px rgba(0,0,0,.3);font-size:12px;line-height:1.45;text-align:center;opacity:0;pointer-events:none;transform:translate(-50%,8px);transition:opacity .25s,transform .35s cubic-bezier(.2,.72,.2,1)}
.whisper.show{opacity:1;transform:translate(-50%,0)}
.whisper.is-anchored{top:var(--whisper-y);bottom:auto;left:var(--whisper-x);width:max-content;max-width:min(250px,calc(100vw - 24px));transform:translate(-50%,-5px)}
.whisper.is-anchored:before{position:absolute;top:-4px;left:50%;width:9px;height:9px;content:"";background:inherit;transform:translateX(-50%) rotate(45deg)}
.whisper.is-anchored.show{transform:translate(-50%,0)}
.whisper.is-anchored.is-above{transform:translate(-50%,calc(-100% + 5px))}
.whisper.is-anchored.is-above:before{top:auto;bottom:-4px}
.whisper.is-anchored.is-above.show{transform:translate(-50%,-100%)}
.overlay{position:fixed;z-index:170;inset:0}
.overlay-backdrop{position:absolute;inset:0;width:100%;height:100%;background:transparent}
.overlay-backdrop{font-size:0}
.focus-card:focus,.drawer:focus,.confirm-card:focus{outline:0}
.close-button,.drawer-close{position:static;width:auto;height:34px;padding:0 14px;color:#8a847c;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.06);border-radius:999px;font-size:12px;font-weight:600;backdrop-filter:blur(12px)}
.close-button:hover,.drawer-close:hover{color:#c0b8ae;background:rgba(255,255,255,.08)}
#focusOverlay,#panelOverlay{display:block;pointer-events:none}
#focusOverlay .overlay-backdrop,#panelOverlay .overlay-backdrop{display:block;pointer-events:auto}
#focusOverlay .focus-card{position:absolute;inset:0 22px 0;margin:auto;width:min(520px,calc(100% - 44px));max-height:calc(100dvh - 120px);padding:0;overflow:auto;color:#e0dcd7;background:rgba(20,20,30,.92);border:1px solid rgba(255,255,255,.08);border-radius:22px;box-shadow:0 14px 42px rgba(0,0,0,.3);backdrop-filter:blur(18px) saturate(108%);pointer-events:auto}
.focus-head{position:sticky;z-index:3;top:0;display:flex;align-items:center;justify-content:space-between;min-height:52px;padding:9px 13px;background:rgba(20,20,30,.85);border-bottom:1px solid rgba(255,255,255,.05);backdrop-filter:blur(14px)}
.focus-head .eyebrow{margin:0;color:#7a756e;font-size:12px;letter-spacing:.06em}
.focus-media{display:block;width:calc(100% - 20px);max-height:38dvh;margin:10px;object-fit:contain;background:#0a0a12;border-radius:16px}
.focus-body{padding:3px 18px 16px}
.focus-text{margin:12px 0;color:#b0a89e;font-family:ui-serif,serif;font-size:17px;line-height:1.75;white-space:pre-wrap}
.focus-meta{color:#6b6560;font-size:12px}
.focus-actions{position:absolute;z-index:4;bottom:16px;left:50%;display:flex;align-items:center;gap:6px;padding:8px 12px;background:rgba(13,13,18,.7);backdrop-filter:blur(12px) saturate(110%);border:1px solid rgba(255,255,255,.06);border-radius:14px;box-shadow:0 8px 24px rgba(0,0,0,.25);opacity:0;transform:translateX(-50%) translateY(6px);transition:opacity .3s ease,transform .3s ease;pointer-events:none}
.focus-card:hover .focus-actions{opacity:1;transform:translateX(-50%) translateY(0);pointer-events:auto}
.focus-media{position:relative}
.focus-actions .text-button{min-height:36px;min-width:36px;padding:0;display:grid;place-items:center;width:36px;height:36px;color:#a09a92;background:rgba(255,255,255,.04);border-radius:10px;font-size:0;line-height:1;text-align:center}
.focus-actions .text-button svg{width:16px;height:16px;flex-shrink:0}
.focus-actions .text-button:hover{color:#d0ccc6;background:rgba(255,255,255,.1);transform:translateY(-1px)}
.focus-actions .text-button:active{transform:translateY(0) scale(.92);transition-duration:.1s}
.focus-actions .text-button.danger{margin-left:0;color:#c06060}
.focus-actions .text-button.danger:hover{color:#e06868;background:rgba(224,85,85,.1)}
.focus-actions .text-button[title]::after{font-size:10px;color:#8a847c;font-family:ui-monospace,monospace}
.text-button{min-height:36px;padding:8px 15px;color:#8a847c;background:none;border-radius:999px}
.text-button:hover{color:#c0b8ae;background:rgba(255,255,255,.05)}
.text-button.danger{margin-left:auto;color:#e05555;background:rgba(224,85,85,.06);border:1px solid rgba(224,85,85,.1)}
.focus-editor{width:calc(100% - 32px);margin:16px;padding:14px 16px;resize:vertical;color:#d0ccc7;background:#15151e;border:1px solid rgba(255,255,255,.08);border-radius:14px;line-height:1.7}
audio{width:calc(100% - 32px);margin:16px}
#panelOverlay .drawer{position:absolute;top:70px;right:18px;width:min(390px,calc(100% - 36px));max-height:calc(100dvh - 180px);padding:0 20px 20px;overflow:auto;color:#e0dcd7;background:rgba(20,20,30,.92);border:1px solid rgba(255,255,255,.08);border-radius:20px;box-shadow:0 14px 42px rgba(0,0,0,.3);backdrop-filter:blur(18px) saturate(108%);pointer-events:auto}
.drawer-head{position:sticky;z-index:4;top:0;display:flex;align-items:center;justify-content:space-between;min-height:62px;background:rgba(15,15,22,.95)}
.drawer h2{margin:0;font-size:18px;font-weight:600;letter-spacing:-.01em;line-height:1.2}
.filters{position:sticky;z-index:3;top:54px;display:flex;gap:4px;margin:0 0 12px;padding:4px;background:rgba(255,255,255,.03);border-radius:12px}
.filters button{flex:1;padding:8px 6px;color:#7a756e;background:none;border-radius:9px;font-size:11px}
.filters button.active{color:#e0dcd7;background:rgba(255,255,255,.06);box-shadow:0 2px 9px rgba(0,0,0,.15)}
.memory-group h3{margin:20px 4px 7px;color:#6b6560;font-size:11px}
.memory-row{display:grid;grid-template-columns:32px 1fr auto;gap:10px;align-items:center;width:100%;min-height:54px;margin:2px 0;padding:8px;text-align:left;background:none;border-radius:13px}
.memory-row:hover{background:rgba(255,255,255,.03)}
.memory-row .type{display:grid;width:30px;height:30px;place-items:center;color:#7a756e;background:rgba(255,255,255,.04);border-radius:50%;font-size:11px}
.memory-row .preview{min-width:0;overflow:hidden;color:#b0a89e;font-size:13px;text-overflow:ellipsis;white-space:nowrap}
.memory-row time{color:#5a5650;font-size:11px}
.setting-section{padding:14px 2px;border-bottom:1px solid rgba(255,255,255,.06)}
.setting-section label{display:grid;gap:9px;color:#8a847c;font-size:13px}
.setting-section input{width:100%}
.setting-section input[type="text"]{padding:11px 0;color:#e0dcd7;background:none;border:0;border-bottom:1px solid rgba(255,255,255,.1)}
.setting-label{margin:0 0 12px;color:#8a847c;font-size:13px}
.profile-edit{display:flex;gap:12px;align-items:center;margin-top:14px}
.profile-thumb{width:52px;height:52px;object-fit:cover;background:radial-gradient(circle at 38% 32%,rgba(140,130,180,.12),rgba(80,72,120,.06) 55%,rgba(30,28,48,.15));border:1px solid rgba(180,170,210,.12);border-radius:50%;box-shadow:inset 0 2px 8px rgba(140,130,180,.06),0 0 12px rgba(160,148,130,.04)}
.profile-thumb[src]{background:none;border:none;box-shadow:none}
.plain-button{min-height:38px;padding:9px 16px;color:#8a847c;background:rgba(255,255,255,.04);border-radius:999px;border:1px solid rgba(255,255,255,.06)}
.plain-button:hover{background:rgba(255,255,255,.07)}
.plain-button.danger{color:#e05555;background:rgba(224,85,85,.06);border-color:rgba(224,85,85,.12)}
.button-row{display:flex;gap:10px}
.setting-section .button-row .plain-button{flex:1}
.danger-zone{border:0}
.privacy{margin:18px 2px 0;color:#5a5650;font-size:13px;line-height:1.65}
.toggle-row{display:flex;align-items:center;justify-content:space-between}
.switch{width:45px;height:25px;padding:3px;background:rgba(255,255,255,.1);border-radius:20px}
.switch:after{display:block;width:19px;height:19px;content:"";background:#e0dcd7;border-radius:50%;transition:.2s}
.switch.on{background:var(--accent)}
.switch.on:after{transform:translateX(20px)}
.step-count,.eyebrow{color:#6b6560;font-size:11px;letter-spacing:.12em}
#confirmOverlay{display:block;background:rgba(0,0,0,.12);backdrop-filter:blur(2px)}
.confirm-card{position:absolute;bottom:22px;left:50%;width:min(440px,calc(100% - 28px));padding:18px 20px;color:#e0dcd7;background:rgba(20,20,30,.95);border:1px solid rgba(255,255,255,.08);border-radius:18px;box-shadow:0 12px 36px rgba(0,0,0,.3);transform:translateX(-50%)}
.confirm-card .eyebrow{display:none}
.confirm-card h2{margin:0 0 5px;font-size:17px;font-weight:600;letter-spacing:-.01em}
.confirm-card p{margin:0;font-size:13px;color:#7a756e;line-height:1.7}
.confirm-card .button-row{justify-content:flex-end;margin-top:14px}
.confirm-card .button-row button{min-width:76px;padding:9px 14px;color:#8a847c;background:rgba(255,255,255,.04);border-radius:999px}
.confirm-card .button-row .danger{color:#fff;background:#d1857b;border-radius:999px}
.text-editor-head{display:flex;align-items:center;justify-content:space-between;min-height:52px;padding:9px 11px 7px 17px;color:#7a756e;font-size:12px}
.inline-memory-editor{display:block;width:100%;height:148px;max-height:38dvh;padding:12px 18px 8px;resize:none;color:#d0ccc7;background:transparent;border:0;outline:0;font-family:ui-serif,serif;font-size:18px;line-height:1.75}
.text-editor-foot{display:flex;align-items:center;justify-content:space-between;min-height:48px;padding:7px 11px 9px 17px;border-top:1px solid rgba(255,255,255,.06)}
.inline-save-state{color:#7a756e;font-size:10px}
.text-editor-head>div{min-width:0}
.text-memory-time{display:block;margin-top:3px;color:#5a5650;font-size:9px;letter-spacing:0;white-space:nowrap}
.inline-memory-editor{min-height:108px;flex:0 1 170px}
.text-editor-actions{display:flex;align-items:center;gap:3px}
.composer.has-attachment{border-radius:30px}
.pending-image{min-height:50px;margin:0 5px 3px;padding:4px 7px 8px;border-bottom:1px solid rgba(255,255,255,.06)}
.pending-image img,.pending-image video{flex:0 0 44px;width:44px;height:44px;object-fit:cover;border:2px solid rgba(255,255,255,.14);border-radius:50%;box-shadow:0 5px 14px rgba(0,0,0,.2)}
.pending-image span{color:#7a756e;font-size:11px}
.pending-image button{display:grid;flex:0 0 30px;width:30px;height:30px;padding:0;place-items:center;border-radius:50%;font-size:17px}
.pending-image button:hover{background:rgba(160,148,130,.08)}
.focus-actions{flex-wrap:wrap}
.drawer-head>div p{margin:3px 0 0;color:#7a756e;font-size:10px;font-weight:400}
.mix-presets{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 14px}
.mix-presets button{padding:7px 10px;color:#7a756e;background:rgba(255,255,255,.03);border-radius:999px;font-size:10px;transition:background .2s,transform .2s}
.mix-presets button:hover{background:rgba(255,255,255,.06);transform:translateY(-1px)}
.storage-notice{position:fixed;z-index:140;top:72px;left:50%;display:grid;grid-template-columns:30px 1fr auto;gap:10px;align-items:center;width:min(560px,calc(100% - 32px));padding:10px 11px;color:#b0a89e;background:rgba(20,20,30,.94);border:1px solid rgba(255,255,255,.06);border-radius:16px;box-shadow:0 14px 40px rgba(0,0,0,.2);opacity:0;backdrop-filter:blur(18px);transform:translate(-50%,-8px);transition:opacity .24s,transform .32s cubic-bezier(.2,.82,.22,1)}
.storage-notice.show{opacity:1;transform:translate(-50%,0)}
body.overlay-active .storage-notice:not(.empty-profile-toast){opacity:0;transform:translate(-50%,-10px);pointer-events:none}
.storage-notice>.notice-icon{display:grid;width:30px;height:30px;place-items:center;color:rgba(207,195,171,.72);background:rgba(207,195,171,.08);border:1px solid rgba(207,195,171,.1);border-radius:50%}
.storage-notice>.notice-icon svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.storage-notice p{min-width:0;margin:0}
.storage-notice strong,.storage-notice small{display:block}
.storage-notice strong{font-size:11px}
.storage-notice small{margin-top:3px;color:#6c655c;font-size:10.5px;line-height:1.48}
.storage-notice button{padding:7px 14px;color:#8a847c;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.06);border-radius:999px;font-size:10px;backdrop-filter:blur(12px)}
.storage-error{display:grid;width:100vw;height:100dvh;padding:24px;place-items:center;color:#b0a89e;background:radial-gradient(circle at 50% 40%,#15151e,#0a0a12)}
.storage-error>div{width:min(520px,100%);padding:28px;background:rgba(20,20,30,.72);border-radius:24px;box-shadow:0 18px 50px rgba(0,0,0,.2)}
.storage-error p{color:#7a756e;font-size:11px}
.storage-error h1{margin:8px 0 12px;font-family:"Inter Tight",ui-serif,serif;font-size:24px;font-weight:600;letter-spacing:-.02em;line-height:.95}
.storage-error span{color:#8a847c;font-size:12px;line-height:1.8}
.overlay{opacity:0;visibility:hidden;transition:opacity .24s ease,visibility 0s linear .3s}
.overlay.is-open{opacity:1;visibility:visible;transition-delay:0s}
.overlay.is-closing{opacity:0;visibility:visible}
.focus-card,.drawer,.confirm-card{will-change:transform,opacity}
#focusOverlay .focus-card{opacity:0;transform:translateY(10px) scale(.975);transition:opacity .22s ease,transform .32s cubic-bezier(.2,.82,.22,1)}
#focusOverlay.is-open .focus-card{opacity:1;transform:none}
#focusOverlay.is-closing .focus-card{opacity:0;transform:translateY(6px) scale(.985);transition-duration:.2s}
#focusOverlay .text-editor-card{display:flex;flex-direction:column;max-height:min(560px,calc(100dvh - 24px))}
#panelOverlay .drawer{opacity:0;transform:translateX(18px) scale(.985);transform-origin:100% 18%;transition:opacity .22s ease,transform .34s cubic-bezier(.2,.82,.22,1)}
#panelOverlay.is-open .drawer{opacity:1;transform:translateX(0) scale(1)}
#panelOverlay.is-closing .drawer{opacity:0;transform:translateX(10px) scale(.99);transition-duration:.2s}
.confirm-card{opacity:0;transform:translate(-50%,16px) scale(.98);transition:opacity .2s ease,transform .3s cubic-bezier(.2,.82,.22,1)}
#confirmOverlay.is-open .confirm-card{opacity:1;transform:translate(-50%,0) scale(1)}
#confirmOverlay.is-closing .confirm-card{opacity:0;transform:translate(-50%,8px) scale(.99);transition-duration:.18s}
@media(max-width:720px){.topbar{grid-template-columns:auto 1fr auto;gap:10px;padding:15px 18px}.place-title{min-width:0}.nav{gap:14px}.cluster-wrap{min-height:390px}.memory-webgl-canvas{top:46%;width:100vw;height:54vh}.composer{width:calc(100% - 20px);min-height:62px;margin-bottom:max(12px,env(safe-area-inset-bottom));padding:7px 8px}.compose-action{flex:0 0 48px;width:48px;height:48px}.compose-action svg{width:22px;height:22px}.composer textarea{min-height:48px;font-size:16px}.revisit{bottom:94px}#focusOverlay .focus-card{right:8px;top:70px;bottom:auto;left:8px;width:auto;max-height:calc(100dvh - 140px)}#panelOverlay .drawer{top:70px;right:8px;bottom:auto;left:8px;width:auto;max-height:calc(100dvh - 140px)}.confirm-card{bottom:12px}.inline-memory-editor{height:132px;font-size:17px}}
@media(max-width:720px){#focusOverlay .focus-card{transform:translateY(-10px) scale(.985)}#focusOverlay.is-open .focus-card{transform:none}#focusOverlay.is-closing .focus-card{transform:translateY(-6px) scale(.99)}}
@media(max-height:670px){.topbar{padding-top:12px;padding-bottom:8px}.cluster-wrap{min-height:330px}.composer{margin-bottom:8px}.empty-copy h1{font-size:17px;margin-bottom:6px}.empty-copy p{font-size:11px;line-height:1.5}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
/* Low, layered cloud banks: large soft forms move at unrelated speeds. */
@keyframes cloud-bank-a{0%{opacity:.04;transform:translate3d(-7vw,2vh,0) scale(1)}48%{opacity:.13}100%{opacity:.07;transform:translate3d(12vw,-1vh,0) scale(1.055)}}
@keyframes cloud-bank-b{0%{opacity:.035;transform:translate3d(9vw,1vh,0) scale(1.08)}55%{opacity:.11}100%{opacity:.055;transform:translate3d(-11vw,-2vh,0) scale(1)}}
@keyframes cloud-bank-c{0%{opacity:.025;transform:translate3d(-4vw,0,0) scale(.96)}50%{opacity:.08}100%{opacity:.035;transform:translate3d(8vw,-1vh,0) scale(1.04)}}
.ambient i{position:absolute;display:block;bottom:-14vh;left:-28vw;width:156vw;height:58vh;pointer-events:none;background:radial-gradient(ellipse 19% 38% at 9% 76%,rgba(160,148,130,.08) 0 36%,transparent 70%),radial-gradient(ellipse 24% 48% at 27% 72%,rgba(9,137,216,.08) 0 38%,transparent 72%),radial-gradient(ellipse 20% 37% at 47% 78%,rgba(196,155,120,.05) 0 39%,transparent 72%),radial-gradient(ellipse 28% 52% at 68% 73%,rgba(160,148,130,.06) 0 36%,transparent 73%),radial-gradient(ellipse 22% 41% at 88% 78%,rgba(255,255,255,.04) 0 36%,transparent 72%),linear-gradient(to top,rgba(255,255,255,.08),transparent 75%);filter:blur(22px) saturate(.72);mask-image:linear-gradient(to bottom,transparent 0,#000 24%,#000 78%,transparent 100%);will-change:transform,opacity;animation:cloud-bank-a 128s ease-in-out infinite alternate}
.ambient i:nth-child(2){bottom:-4vh;left:-35vw;width:170vw;height:46vh;background-size:82% 92%;filter:blur(31px) saturate(.64);animation:cloud-bank-b 167s ease-in-out infinite alternate}
.ambient i:nth-child(3){bottom:10vh;left:-22vw;width:145vw;height:34vh;filter:blur(38px) saturate(.58);animation:cloud-bank-c 204s ease-in-out infinite alternate}
/* The cloud field fills the lower half and remains clearly legible. */
@keyframes cloud-bank-a{0%{opacity:.1;transform:translate3d(-7vw,2vh,0) scale(1)}48%{opacity:.24}100%{opacity:.13;transform:translate3d(12vw,-1vh,0) scale(1.055)}}
@keyframes cloud-bank-b{0%{opacity:.08;transform:translate3d(9vw,1vh,0) scale(1.08)}55%{opacity:.2}100%{opacity:.11;transform:translate3d(-11vw,-2vh,0) scale(1)}}
@keyframes cloud-bank-c{0%{opacity:.06;transform:translate3d(-4vw,0,0) scale(.96)}50%{opacity:.14}100%{opacity:.09;transform:translate3d(8vw,-1vh,0) scale(1.04)}}
.ambient i{opacity:.15;background:radial-gradient(ellipse 19% 38% at 9% 76%,rgba(160,148,130,.1) 0 36%,transparent 70%),radial-gradient(ellipse 24% 48% at 27% 72%,rgba(9,137,216,.1) 0 38%,transparent 72%),radial-gradient(ellipse 20% 37% at 47% 78%,rgba(196,155,120,.06) 0 39%,transparent 72%),radial-gradient(ellipse 28% 52% at 68% 73%,rgba(160,148,130,.08) 0 36%,transparent 73%),radial-gradient(ellipse 22% 41% at 88% 78%,rgba(255,255,255,.06) 0 36%,transparent 72%),linear-gradient(to top,rgba(255,255,255,.1),transparent 75%);filter:blur(22px) saturate(.72)}
.ambient i:nth-child(2){background:radial-gradient(ellipse 24% 48% at 27% 72%,rgba(9,137,216,.08) 0 38%,transparent 72%),radial-gradient(ellipse 28% 56% at 50% 74%,rgba(196,155,120,.05) 0 40%,transparent 74%),radial-gradient(ellipse 20% 42% at 72% 76%,rgba(160,148,130,.06) 0 39%,transparent 73%),radial-gradient(ellipse 26% 50% at 90% 78%,rgba(255,255,255,.05) 0 36%,transparent 72%)}
.ambient i:nth-child(3){background:radial-gradient(ellipse 26% 48% at 7% 72%,rgba(160,148,130,.06) 0 38%,transparent 74%),radial-gradient(ellipse 34% 62% at 38% 75%,rgba(9,137,216,.06) 0 38%,transparent 75%),radial-gradient(ellipse 27% 50% at 70% 72%,rgba(196,155,120,.04) 0 39%,transparent 73%),radial-gradient(ellipse 24% 46% at 96% 76%,rgba(255,255,255,.04) 0 38%,transparent 74%)}
@media(max-width:720px){.ambient i{filter:blur(8px) saturate(.64)}.ambient i:nth-child(2){filter:blur(16px) saturate(.56)}}
.privacy{font-size:13px}
.drawer-head>div p{font-size:11px}
.text-memory-time{font-size:10px}
/* Refined depth, composer states and tactile feedback. */
@keyframes day-cloud-drift{0%{opacity:.32;transform:translate3d(-8vw,2vh,0) scale(.96)}48%{opacity:.55}100%{opacity:.38;transform:translate3d(13vw,-2vh,0) scale(1.08)}}
@keyframes record-wave{0%,100%{transform:scaleY(.34);opacity:.48}50%{transform:scaleY(1);opacity:1}}
@keyframes composer-send{0%,100%{box-shadow:0 18px 55px rgba(0,0,0,.3),inset 0 1px 0 rgba(255,255,255,.06),0 0 0 1px rgba(255,255,255,.06)}48%{box-shadow:0 18px 58px rgba(0,0,0,.35),inset 0 1px 0 rgba(255,255,255,.08),0 0 0 4px rgba(160,148,130,.1)}}
.ambient:before{position:absolute;bottom:10vh;left:-22vw;width:138vw;height:48vh;content:"";pointer-events:none;background:radial-gradient(ellipse 28% 52% at 10% 70%,rgba(160,148,130,.05) 0 42%,transparent 72%),radial-gradient(ellipse 32% 62% at 42% 72%,rgba(9,137,216,.04) 0 40%,transparent 74%),radial-gradient(ellipse 29% 54% at 74% 68%,rgba(196,155,120,.03) 0 41%,transparent 73%),linear-gradient(to top,rgba(255,255,255,.03),transparent 76%);filter:blur(28px) saturate(.58);animation:day-cloud-drift 96s ease-in-out infinite alternate}
.composer{background:none;box-shadow:none;transition:box-shadow .3s ease}
.composer.has-attachment{background:rgba(255,255,255,.04);border-radius:20px;border:1px solid rgba(255,255,255,.07);box-shadow:0 12px 40px rgba(0,0,0,.25)}
.composer.is-sending{animation:composer-send .92s ease}
.compose-row{min-height:50px;align-items:center}
.compose-tools,.keep-button{align-self:center}
.composer textarea{align-self:center;overflow-y:auto;scrollbar-width:thin;scrollbar-color:rgba(160,148,130,.15) transparent}
.composer textarea::-webkit-scrollbar{width:4px}
.composer textarea::-webkit-scrollbar-thumb{background:rgba(160,148,130,.15);border-radius:99px}
@media(pointer:coarse){.focus-card:hover .focus-actions,.focus-card .focus-actions{opacity:1;transform:translateX(-50%) translateY(0);pointer-events:auto}}
.composer.has-attachment{border-radius:26px}
.keep-button{background:linear-gradient(145deg,#7c6ef0,#5b4fd0);box-shadow:0 8px 22px rgba(124,110,240,.25),inset 0 1px 0 rgba(255,255,255,.12);transition:transform .2s ease,box-shadow .2s ease,opacity .2s}
.keep-button:not(:disabled):hover{transform:translateY(-1px) scale(1.025);box-shadow:0 11px 25px rgba(124,110,240,.3),inset 0 1px 0 rgba(255,255,255,.15)}
.composer.is-recording{width:min(720px,calc(100% - 32px));padding:12px 14px;border-radius:26px;background:rgba(255,255,255,.06);box-shadow:0 20px 60px rgba(0,0,0,.3),inset 0 1px 0 rgba(255,255,255,.08),0 0 0 1px rgba(160,148,130,.1)}
.composer.is-recording .compose-row,.composer.is-recording .pending-image{display:none}
.record-state{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;margin:0;padding:0}
.record-live{display:grid;grid-template-columns:12px 58px minmax(0,1fr) auto;gap:11px;align-items:center;min-width:0}
.record-live>span:nth-child(3){display:grid;min-width:0}
.record-live strong{color:#b0a89e;font-size:12px}
.record-live small{margin-top:2px;color:#7a756e;font-size:10px}
.record-state output{min-width:48px;margin:0;color:rgba(124,110,240,.7);font-family:ui-monospace,monospace;font-size:14px;font-variant-numeric:tabular-nums}
.record-wave{display:flex;height:28px;gap:4px;align-items:center;justify-content:center}
.record-wave i{width:3px;height:24px;background:linear-gradient(rgba(124,110,240,.6),rgba(9,137,216,.4));border-radius:99px;animation:record-wave 1s ease-in-out infinite}
.record-wave i:nth-child(2){animation-delay:-.42s}
.record-wave i:nth-child(3){animation-delay:-.72s}
.record-wave i:nth-child(4){animation-delay:-.2s}
.record-wave i:nth-child(5){animation-delay:-.58s}
.record-actions{display:flex;gap:7px}
.record-actions button{height:40px;padding:0 16px;border-radius:999px;font-size:11px}
.record-cancel{color:#7a756e;background:rgba(255,255,255,.04)}
.record-finish{color:#fff;background:linear-gradient(145deg,#7c6ef0,#5b4fd0);box-shadow:0 8px 20px rgba(124,110,240,.2)}
.memory-flight{position:fixed;z-index:180;width:28px;height:28px;border:1px solid rgba(124,110,240,.32);border-radius:50%;pointer-events:none;background:radial-gradient(circle at 35% 30%,rgba(255,255,255,.1),rgba(124,110,240,.3) 56%,rgba(124,110,240,.1));box-shadow:0 0 0 8px rgba(124,110,240,.06),0 8px 26px rgba(0,0,0,.2)}
.memory-flight.is-text{background:radial-gradient(circle at 35% 30%,rgba(207,195,171,.22),rgba(207,195,171,.28) 58%,rgba(207,195,171,.08));border-color:rgba(207,195,171,.34);box-shadow:0 0 0 8px rgba(207,195,171,.06),0 8px 26px rgba(0,0,0,.22)}
.memory-flight.is-voice{background:radial-gradient(circle at 35% 30%,rgba(9,137,216,.15),rgba(9,137,216,.3) 60%,rgba(9,137,216,.1));border-color:rgba(9,137,216,.3)}
.memory-flight.is-image,.memory-flight.is-video{background:radial-gradient(circle at 35% 30%,rgba(255,255,255,.05),rgba(255,255,255,.1) 58%,rgba(255,255,255,.03))}
.memory-row .type svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.memory-row .type.is-image{color:#7a756e;background:rgba(160,148,130,.08)}
.memory-row .type.is-video{color:#7a756e;background:rgba(9,137,216,.08)}
.memory-row .type.is-voice{color:#7a756e;background:rgba(196,155,120,.1)}
.memory-row .type.is-text{color:#7a756e;background:rgba(255,255,255,.06)}
.filters button{display:grid;min-height:42px;place-items:center}
.filters button svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.55;stroke-linecap:round;stroke-linejoin:round;transition:transform .2s ease}
.filters button:hover svg{transform:translateY(-1px)}
.filters button.active svg{transform:scale(1.06)}
.pending-image img,.pending-image video,.focus-media,.profile-thumb{object-fit:contain!important;opacity:1!important;filter:none!important;mix-blend-mode:normal!important}
.pending-image img,.pending-image video{background:rgba(255,255,255,.03)}
@keyframes memory-field-settle{from{transform:translate(-50%,-47%) scale(.965)}to{transform:translate(-50%,-50%) scale(1)}}
.media-save-status{position:fixed;z-index:190;right:22px;bottom:24px;display:flex;gap:11px;align-items:center;min-width:238px;padding:12px 15px;color:#b0a89e;background:rgba(20,20,30,.96);border:1px solid rgba(255,255,255,.06);border-radius:17px;box-shadow:0 16px 42px rgba(0,0,0,.3);opacity:0;backdrop-filter:blur(18px);transform:translateY(10px) scale(.97);transition:opacity .24s ease,transform .34s cubic-bezier(.2,.78,.22,1)}
.media-save-status.show{opacity:1;transform:none}
.media-save-status p{margin:0}
.media-save-status strong,.media-save-status small{display:block}
.media-save-status strong{font-size:12px;font-weight:600;letter-spacing:-.01em}
.media-save-status small{margin-top:3px;color:#5a5650;font-size:10px}
.media-save-orbit{position:relative;width:30px;height:30px;border:1px solid rgba(124,110,240,.17);border-radius:50%;animation:media-orbit 2.4s linear infinite}
.media-save-orbit i{position:absolute;width:5px;height:5px;background:rgba(124,110,240,.5);border-radius:50%;box-shadow:0 0 8px rgba(124,110,240,.22)}
.media-save-orbit i:nth-child(1){top:1px;left:12px}
.media-save-orbit i:nth-child(2){right:2px;bottom:5px}
.media-save-orbit i:nth-child(3){bottom:4px;left:3px}
@keyframes media-orbit{to{transform:rotate(360deg)}}
@media(max-width:720px){.media-save-status{right:10px;bottom:92px;left:10px;min-width:0}}
.composer.is-saving .compose-row,.composer.is-saving .pending-image{pointer-events:none}
.composer.is-saving .compose-row,.composer.is-saving .pending-image{opacity:.58;transition:opacity .25s ease}
.pending-image{width:100%;max-width:100%;overflow:hidden}
.pending-image span{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pending-image img,.pending-image video,.pending-image button{flex-shrink:0}
.pending-media-list{display:flex;width:100%;gap:8px;padding:1px 1px 4px;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none}
.pending-media-list::-webkit-scrollbar{display:none}
.pending-media-item{position:relative;display:grid;grid-template-columns:38px minmax(0,1fr) 22px;flex:0 0 142px;gap:7px;align-items:center;min-width:0;margin:0;padding:5px 5px 5px 6px;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.06);border-radius:14px}
.pending-media-item img,.pending-media-item video{grid-column:1;width:38px;height:38px;background:#0a0a12;border:0;border-radius:10px;box-shadow:none}
.pending-media-item figcaption{min-width:0;overflow:hidden;color:#7a756e;font-size:10px;text-overflow:ellipsis;white-space:nowrap}
.pending-media-item button{display:grid;width:22px;height:22px;padding:0;place-items:center;color:#7a756e;background:transparent;border-radius:50%;font-size:15px}
.pending-media-item button:hover{color:#b0a89e;background:rgba(255,255,255,.05)}
.pending-media-kind{position:absolute;top:16px;left:18px;width:auto!important;color:#fff!important;font-size:9px;line-height:1;text-shadow:0 1px 4px rgba(0,0,0,.48);transform:translate(-50%,-50%)}
@media(max-width:720px){.pending-media-item{flex-basis:124px}}
.composer.is-recording{background:rgba(255,255,255,.06)}
.record-live strong{color:#b0a89e}
.record-live small{color:#7a756e}
.record-state output{color:rgba(124,110,240,.7)}
.record-cancel{color:#7a756e;background:rgba(255,255,255,.04)}
@media(max-width:720px){.composer,.composer.is-recording{width:calc(100% - 20px);border-radius:24px}.record-state{grid-template-columns:1fr}.record-live{grid-template-columns:10px 44px minmax(0,1fr) auto}.record-live small{display:none}.record-actions{justify-content:flex-end}.record-actions button{height:36px}.memory-flight{width:24px;height:24px}}
/* A softly lit studio field gives the glass memory bubbles depth without turning the app somber. */
.ambient{background:radial-gradient(circle 38vw at var(--pointer-x) var(--pointer-y),rgba(160,148,130,.06),transparent 72%),radial-gradient(ellipse 56% 68% at 50% 40%,rgba(18,18,28,.96),rgba(13,13,18,.5) 52%,transparent 78%),radial-gradient(circle at 13% 22%,rgba(9,137,216,.06),transparent 33%),radial-gradient(circle at 88% 72%,rgba(196,155,120,.04),transparent 32%),linear-gradient(145deg,#0f0f18,#0a0a12);animation:studio-field-breathe 16s ease-in-out infinite}
.ambient:before{right:-14vw;bottom:-17vh;left:-14vw;width:auto;height:62vh;background:radial-gradient(ellipse 23% 42% at 14% 69%,rgba(160,148,130,.05) 0 36%,transparent 72%),radial-gradient(ellipse 28% 52% at 43% 72%,rgba(9,137,216,.04) 0 37%,transparent 74%),radial-gradient(ellipse 22% 40% at 75% 66%,rgba(196,155,120,.03) 0 35%,transparent 72%),linear-gradient(to top,rgba(255,255,255,.03),transparent 74%);filter:blur(42px) saturate(.62);animation:studio-haze-drift 68s ease-in-out infinite alternate}
.ambient:after{opacity:.04;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.84' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.34'/%3E%3C/svg%3E");mix-blend-mode:soft-light}
.memory-space:after{position:absolute;z-index:1;inset:4% 12% 9%;content:"";pointer-events:none;background:radial-gradient(ellipse at 50% 48%,rgba(160,148,130,.04),transparent 62%);filter:blur(22px)}
@keyframes studio-field-breathe{0%,100%{filter:brightness(.98);transform:scale(1)}50%{filter:brightness(1.025);transform:scale(1.012)}}
@keyframes studio-haze-drift{0%{transform:translate3d(-3vw,1vh,0) scale(.98)}100%{transform:translate3d(5vw,-2vh,0) scale(1.05)}}
@media(prefers-reduced-motion:reduce){.ambient,.ambient:before{animation:none}}
input[type="range"]{accent-color:#a09482}
/* ── Glassmorphism 3D depth, breathing/living feel, premium micro-interactions ── */

/* Dawn theme: warm amber transition between night and day */
body[data-time-theme="dawn"] .ambient{background:radial-gradient(circle 38vw at var(--pointer-x) var(--pointer-y),rgba(180,140,90,.06),transparent 72%),radial-gradient(ellipse 56% 68% at 50% 40%,rgba(20,16,10,.96),rgba(16,12,8,.5) 52%,transparent 78%),radial-gradient(circle at 20% 18%,rgba(196,155,80,.06),transparent 33%),linear-gradient(145deg,#12100a,#0a0a12)}
body[data-time-theme="dawn"]{--ink:#e8dfd0;--muted:#8a7e6e}

/* 1. Enhanced particle field — more stars with varied sizes and twinkle */
.ambient::before{background-image:radial-gradient(1px 1px at 8% 12%,rgba(255,255,255,.18) 0%,transparent 100%),radial-gradient(1.2px 1.2px at 22% 38%,rgba(160,148,130,.12) 0%,transparent 100%),radial-gradient(0.8px 0.8px at 35% 72%,rgba(255,255,255,.12) 0%,transparent 100%),radial-gradient(1px 1px at 48% 18%,rgba(9,137,216,.1) 0%,transparent 100%),radial-gradient(1.5px 1.5px at 55% 55%,rgba(255,255,255,.16) 0%,transparent 100%),radial-gradient(0.8px 0.8px at 65% 85%,rgba(196,155,120,.1) 0%,transparent 100%),radial-gradient(1px 1px at 78% 28%,rgba(255,255,255,.1) 0%,transparent 100%),radial-gradient(1.3px 1.3px at 88% 62%,rgba(160,148,130,.09) 0%,transparent 100%),radial-gradient(0.6px 0.6px at 5% 92%,rgba(255,255,255,.08) 0%,transparent 100%),radial-gradient(1px 1px at 42% 45%,rgba(9,137,216,.08) 0%,transparent 100%),radial-gradient(0.7px 0.7px at 95% 15%,rgba(255,255,255,.1) 0%,transparent 100%),radial-gradient(1.1px 1.1px at 72% 8%,rgba(196,155,120,.08) 0%,transparent 100%)}

/* 2. Twinkle animation for stars */
@keyframes twinkle{0%,100%{opacity:1}50%{opacity:.3}}
.ambient::before{animation:particle-drift 25s linear infinite,twinkle 4s ease-in-out infinite alternate}

/* 3. Topbar glassmorphism enhancement */
.topbar{background:rgba(13,13,18,.6);backdrop-filter:blur(16px) saturate(120%);border-bottom:1px solid rgba(255,255,255,.04);position:relative}
.topbar::after{content:"";position:absolute;bottom:-1px;left:10%;right:10%;height:1px;background:linear-gradient(90deg,transparent,rgba(160,148,130,.12),transparent)}

/* 4. Brand text glow effect */
.brand em{text-shadow:0 0 12px rgba(160,148,130,.25)}

/* 5. Nav buttons enhanced hover */
.nav button{position:relative;transition:color .25s ease,background .25s ease,transform .2s ease}
.nav button>span:first-child{transition:opacity .3s ease}
.nav button:hover{color:#d0c8c0;text-shadow:0 0 8px rgba(255,255,255,.08)}
.nav button:active{transform:scale(.96)}

/* 6. Settings gear enhanced */
.nav .settings-trigger{transition:color .25s,background .25s,transform .4s cubic-bezier(.2,.82,.22,1)}
.nav .settings-trigger:hover{background:rgba(160,148,130,.08);transform:rotate(25deg) scale(1.05);box-shadow:0 0 16px rgba(160,148,130,.1)}

/* 7. Composer enhanced glass effect */
.composer{position:relative;overflow:hidden}
.composer::before{content:"";position:absolute;inset:0;border-radius:inherit;background:linear-gradient(135deg,rgba(160,148,130,.05) 0%,transparent 40%,transparent 60%,rgba(9,137,216,.04) 100%);pointer-events:none;opacity:0;transition:opacity .4s ease}
.composer:focus-within::before{opacity:1}

/* 8. Keep button enhanced */
.keep-button{transition:transform .25s cubic-bezier(.2,.82,.22,1),box-shadow .25s ease,opacity .2s}
.keep-button:not(:disabled):hover{transform:translateY(-2px) scale(1.06);box-shadow:0 12px 30px rgba(124,110,240,.35),0 0 20px rgba(124,110,240,.1),inset 0 1px 0 rgba(255,255,255,.15)}
.keep-button:not(:disabled):active{transform:translateY(0) scale(.97);box-shadow:0 4px 12px rgba(124,110,240,.2);transition-duration:.1s}

/* 9. Icon tools enhanced */
.icon-tool{transition:color .2s,background .2s,transform .2s ease}
.icon-tool:hover{transform:scale(1.08)}
.icon-tool:active{transform:scale(.92)}

/* 10. Focus card glassmorphism enhancement */
#focusOverlay .focus-card{background:rgba(18,18,28,.92);border:1px solid rgba(255,255,255,.1);box-shadow:0 14px 42px rgba(0,0,0,.35),0 0 0 1px rgba(255,255,255,.04),inset 0 1px 0 rgba(255,255,255,.06),0 0 80px -20px rgba(160,148,130,.06)}

/* 11. Drawer glassmorphism enhancement */
#panelOverlay .drawer{background:rgba(18,18,28,.92);border:1px solid rgba(255,255,255,.1);box-shadow:0 14px 42px rgba(0,0,0,.35),0 0 0 1px rgba(255,255,255,.04),inset 0 1px 0 rgba(255,255,255,.06),0 0 60px -15px rgba(160,148,130,.05)}

/* 12. Memory row hover enhancement */
.memory-row{transition:background .2s,transform .2s ease,box-shadow .2s}
.memory-row:hover{background:rgba(160,148,130,.04);transform:translateX(2px);box-shadow:0 2px 12px rgba(0,0,0,.15)}

/* 13. Filter buttons enhanced */
.filters button{transition:all .25s cubic-bezier(.2,.82,.22,1)}
.filters button.active{background:rgba(160,148,130,.08);box-shadow:0 2px 12px rgba(160,148,130,.1),inset 0 1px 0 rgba(255,255,255,.06)}
.filters button:hover:not(.active){background:rgba(255,255,255,.05);transform:translateY(-1px)}

/* 14. Setup card glassmorphism enhancement */

/* 15. Confirm card glassmorphism */
.confirm-card{background:rgba(20,20,30,.96);border:1px solid rgba(255,255,255,.1);box-shadow:0 12px 36px rgba(0,0,0,.35),0 0 0 1px rgba(255,255,255,.04),inset 0 1px 0 rgba(255,255,255,.06)}

/* 16. Storage notice glassmorphism */
.storage-notice{background:rgba(18,18,28,.96);border:1px solid rgba(255,255,255,.08);box-shadow:0 14px 40px rgba(0,0,0,.25),0 0 0 1px rgba(255,255,255,.04),inset 0 1px 0 rgba(255,255,255,.06)}

/* 17. Text input field enhanced */
.composer textarea{transition:color .2s}
.composer textarea::placeholder{transition:color .3s}
.composer:focus-within textarea::placeholder{color:#4a4640}

/* 18. Whisper tooltip enhanced */
.whisper{background:rgba(22,20,18,.94);border:1px solid rgba(255,255,255,.08);box-shadow:0 8px 28px rgba(0,0,0,.3),0 0 20px -5px rgba(160,148,130,.06)}

/* 19. Revisit button enhanced */
.revisit{transition:all .25s ease}
.revisit:hover{color:#c0b8ae;background:rgba(160,148,130,.06);border-color:rgba(160,148,130,.12);box-shadow:0 10px 30px rgba(0,0,0,.25),0 0 16px rgba(160,148,130,.04);transform:translateX(-50%) translateY(-1px)}
.revisit:active{transform:translateX(-50%) scale(.97);transition-duration:.1s}

/* 20. Empty copy text refined */
.empty-copy h1{letter-spacing:.02em;background:linear-gradient(135deg,#b0a89e,#8a847c);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}

/* 22. Plain button enhanced */
.plain-button{transition:all .2s ease}
.plain-button:hover{background:rgba(255,255,255,.06);transform:translateY(-1px)}
.plain-button:active{transform:translateY(0) scale(.97);transition-duration:.1s}

/* 23. Toggle switch enhanced */
.switch{transition:background .3s ease;box-shadow:inset 0 2px 4px rgba(0,0,0,.2)}
.switch:after{box-shadow:0 2px 4px rgba(0,0,0,.2),0 0 8px rgba(255,255,255,.05)}
.switch.on{box-shadow:inset 0 2px 4px rgba(0,0,0,.2),0 0 12px rgba(160,148,130,.12)}

/* 24. Canvas area subtle glow */
.memory-space::after{background:radial-gradient(ellipse at 50% 48%,rgba(160,148,130,.04),transparent 62%);animation:studio-glow-breathe 8s ease-in-out infinite alternate}
@keyframes studio-glow-breathe{0%{opacity:.5}100%{opacity:.85}}

/* 25. Setup action button enhanced */

/* 26. Text editor enhancements */
.focus-editor{transition:border-color .2s,box-shadow .2s}
.focus-editor:focus{border-color:rgba(160,148,130,.15);box-shadow:0 0 0 3px rgba(160,148,130,.05);outline:0}

/* 27. Scrollbar styling for panels */
.drawer,.focus-card{scrollbar-width:thin;scrollbar-color:rgba(160,148,130,.12) transparent}
.drawer::-webkit-scrollbar,.focus-card::-webkit-scrollbar{width:4px}
.drawer::-webkit-scrollbar-thumb,.focus-card::-webkit-scrollbar-thumb{background:rgba(160,148,130,.12);border-radius:99px}

/* 28. Media save status enhanced */
.media-save-status{background:rgba(18,18,28,.96);border:1px solid rgba(255,255,255,.08);box-shadow:0 16px 42px rgba(0,0,0,.3),0 0 30px -8px rgba(160,148,130,.06)}

/* 29. Selection color */
::selection{background:rgba(160,148,130,.2);color:#e0dcd7}
/* ─── Composer: two independent action buttons ─── */
.composer{width:min(640px,calc(100% - 32px))}
.compose-row{gap:10px;justify-content:center}
.compose-action{display:flex;align-items:center;gap:6px;height:44px;padding:0 18px;color:#9a958e;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.07);border-radius:22px;font-size:13px;font-weight:500;letter-spacing:.02em;cursor:pointer;transition:all .2s ease}
.compose-action:hover{color:#eae6df;background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.12)}
.compose-action:active{transform:scale(.96)}
.compose-action svg{width:18px;height:18px;opacity:.7;fill:none;stroke:currentColor;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round}
.compose-action:hover svg{opacity:1}
.compose-action span{white-space:nowrap}
.composer textarea{min-height:40px;padding:10px 6px;color:#9a958e;font-size:13px;width:100%}
.composer textarea::placeholder{color:#4a4640;font-size:12px}
.keep-button{flex:0 0 44px;width:44px;height:44px}
.keep-button svg{width:17px}
@media(max-width:720px){.composer{width:calc(100% - 20px)}.compose-action{height:40px;padding:0 14px;font-size:12px;gap:5px;border-radius:20px}.compose-action svg{width:16px;height:16px}}
.pending-media-icon{display:grid;flex:0 0 44px;width:44px;height:44px;place-items:center;font-size:20px;color:#a09482;background:rgba(160,148,130,.08);border:2px solid rgba(160,148,130,.12);border-radius:50%;animation:pending-audio-pulse 2s ease-in-out infinite}
@keyframes pending-audio-pulse{0%,100%{box-shadow:0 0 0 0 rgba(160,148,130,0)}50%{box-shadow:0 0 10px 2px rgba(160,148,130,.1)}}
.hero-text{transition:opacity 1.5s ease,transform 1.5s ease}
.hero-text.fading{opacity:0;transform:translateY(-12px)}

/* Quiet memorial pass: lower contrast, deeper black, softer controls. */
:root{
  --bg:#050505;
  --ink:#e8e3da;
  --muted:#8c857a;
  --soft:#b8b0a4;
  --line:rgba(232,227,218,.075);
  --accent:#9a8f78;
  --accent-2:#7f9992;
  --danger:#c86b62;
}
body{background:#050505;color:var(--ink)}
.bg-glow{display:none}
.ambient{
  background:
    radial-gradient(circle 30vw at var(--pointer-x) var(--pointer-y),rgba(180,170,145,.055),transparent 72%),
    radial-gradient(ellipse 56% 68% at 50% 42%,rgba(18,17,16,.82),rgba(7,7,7,.68) 52%,transparent 78%),
    linear-gradient(145deg,#070707,#030303);
  animation:quiet-field-breathe 18s ease-in-out infinite;
}
.ambient:before{
  inset:0;
  width:auto;
  height:auto;
  background-image:
    radial-gradient(1px 1px at 12% 22%,rgba(255,255,255,.13) 0,transparent 100%),
    radial-gradient(.8px .8px at 38% 58%,rgba(255,255,255,.08) 0,transparent 100%),
    radial-gradient(1px 1px at 66% 18%,rgba(174,164,137,.12) 0,transparent 100%),
    radial-gradient(.8px .8px at 82% 46%,rgba(127,153,146,.08) 0,transparent 100%),
    radial-gradient(1px 1px at 26% 78%,rgba(255,255,255,.08) 0,transparent 100%),
    radial-gradient(.8px .8px at 92% 84%,rgba(255,255,255,.055) 0,transparent 100%);
  filter:none;
  opacity:.5;
  animation:particle-drift 42s ease-in-out infinite;
}
.ambient:after{opacity:.075;mix-blend-mode:soft-light}
.ambient i{
  opacity:.12;
  background:
    radial-gradient(ellipse 28% 48% at 17% 75%,rgba(154,143,120,.07) 0 38%,transparent 74%),
    radial-gradient(ellipse 34% 56% at 50% 78%,rgba(127,153,146,.045) 0 40%,transparent 76%),
    radial-gradient(ellipse 26% 45% at 84% 74%,rgba(180,166,135,.05) 0 38%,transparent 74%),
    linear-gradient(to top,rgba(255,255,255,.025),transparent 78%);
  filter:blur(34px) saturate(.58);
}
.ambient i:nth-child(2),.ambient i:nth-child(3){
  background:
    radial-gradient(ellipse 28% 48% at 18% 76%,rgba(154,143,120,.052) 0 38%,transparent 74%),
    radial-gradient(ellipse 34% 58% at 52% 78%,rgba(127,153,146,.038) 0 40%,transparent 76%),
    radial-gradient(ellipse 28% 48% at 86% 74%,rgba(180,166,135,.042) 0 38%,transparent 74%);
  filter:blur(36px) saturate(.54);
}
.memory-space:after{background:radial-gradient(ellipse at 50% 48%,rgba(154,143,120,.05),transparent 64%);animation:none}
@keyframes quiet-field-breathe{0%,100%{filter:brightness(.96);transform:scale(1)}50%{filter:brightness(1.015);transform:scale(1.006)}}

.topbar{
  padding-top:18px;
  background:linear-gradient(to bottom,rgba(5,5,5,.72),rgba(5,5,5,.28),transparent);
  border-bottom:0;
  backdrop-filter:none;
}
.topbar:after{background:linear-gradient(90deg,transparent,rgba(232,227,218,.09),transparent)}
.brand{color:#d5cec2;font-weight:500;letter-spacing:-.01em}
.brand em{color:#8f877b;text-shadow:none}
.place-title{color:#706a61}
.nav{gap:18px}
.nav button{color:#898176;font-weight:500}
.nav button:hover{color:#d5cec2;text-shadow:none;transform:none}
.nav .settings-trigger{width:32px;height:32px;color:#948b80;background:rgba(255,255,255,.025);border:1px solid rgba(255,255,255,.055)}
.nav .settings-trigger:hover{color:#d8d1c7;background:rgba(255,255,255,.06);box-shadow:none;transform:none}
.settings-trigger svg{width:16px;height:16px;stroke-width:1.65}

.memory-webgl-canvas{top:47%;width:min(980px,86vw);height:min(690px,72vh)}
.empty-copy{bottom:13%}
.empty-copy h1{
  color:#bfb6aa;
  background:none;
  -webkit-text-fill-color:currentColor;
  font-size:19px;
  letter-spacing:0;
}
.empty-copy p{color:#797267}
.revisit{
  color:#9a9287;
  background:rgba(255,255,255,.028);
  border-color:rgba(255,255,255,.065);
  box-shadow:0 12px 34px rgba(0,0,0,.28);
}
.revisit:hover{color:#d5cec2;background:rgba(255,255,255,.055);border-color:rgba(255,255,255,.1);box-shadow:0 12px 34px rgba(0,0,0,.32);transform:translateX(-50%) translateY(-1px)}

.composer{width:min(620px,calc(100% - 32px));padding:8px}
.composer:before{display:none}
.compose-row{gap:8px;min-height:48px}
.compose-action{
  height:42px;
  padding:0 15px;
  color:#aaa196;
  background:rgba(255,255,255,.028);
  border-color:rgba(255,255,255,.07);
  border-radius:999px;
  font-size:12px;
  letter-spacing:0;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.035);
}
.compose-action:hover,.compose-action.active{color:#e1dbd1;background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.1);transform:none}
.compose-action svg{opacity:.82;stroke-width:1.7}
.compose-action.active svg{opacity:1}
.composer.has-attachment,.composer.is-recording{
  background:rgba(12,12,12,.7);
  border:1px solid rgba(255,255,255,.075);
  box-shadow:0 18px 55px rgba(0,0,0,.36),inset 0 1px 0 rgba(255,255,255,.045);
  backdrop-filter:blur(18px) saturate(106%);
}
.composer textarea{color:#d9d2c7}
.composer textarea::placeholder{color:#5f5951}
.keep-button,.record-finish{
  color:#10100f;
  background:linear-gradient(145deg,#cfc3ab,#91866f);
  box-shadow:0 10px 26px rgba(0,0,0,.25),inset 0 1px 0 rgba(255,255,255,.28);
}
.keep-button:not(:disabled):hover{transform:translateY(-1px) scale(1.02);box-shadow:0 13px 28px rgba(0,0,0,.3),inset 0 1px 0 rgba(255,255,255,.34)}
.record-state output{color:#aaa196}
.record-wave i{background:linear-gradient(rgba(207,195,171,.64),rgba(127,153,146,.46))}

#focusOverlay .focus-card,#panelOverlay .drawer,.confirm-card,.storage-notice,.media-save-status{
  background:rgba(12,12,12,.86);
  border-color:rgba(255,255,255,.08);
  box-shadow:0 18px 58px rgba(0,0,0,.48),inset 0 1px 0 rgba(255,255,255,.04);
  backdrop-filter:blur(22px) saturate(105%);
}
.focus-head,.drawer-head{background:rgba(12,12,12,.94)}
.focus-head .eyebrow,.step-count,.eyebrow,.drawer-head>div p,.privacy,.focus-meta{color:#777065}
.focus-text{color:#c9c0b4}
.close-button,.drawer-close,.plain-button,.text-button{
  color:#a49b90;
  background:rgba(255,255,255,.028);
  border:1px solid rgba(255,255,255,.055);
}
.close-button:hover,.drawer-close:hover,.plain-button:hover,.text-button:hover{color:#ded7cd;background:rgba(255,255,255,.06);transform:none}
.text-button.danger,.plain-button.danger{color:#d1857b}
.confirm-card .button-row .danger{background:#b9665e;color:#fff;border-radius:999px}
.filters{background:rgba(255,255,255,.025)}
.filters button{color:#8e867b}
.filters button.active{color:#ded7cd;background:rgba(255,255,255,.07);box-shadow:none}
.memory-row:hover{background:rgba(255,255,255,.038);box-shadow:none;transform:none}
.memory-row .type{background:rgba(255,255,255,.045);color:#9a9287}

input[type="range"]{accent-color:#a69a82}
.switch.on{background:#9a8f78;box-shadow:inset 0 2px 4px rgba(0,0,0,.24)}
.media-save-orbit{border-color:rgba(207,195,171,.18)}
.media-save-orbit i{background:rgba(207,195,171,.58);box-shadow:0 0 8px rgba(207,195,171,.18)}
.pending-media-icon{color:#c7baa1;background:rgba(207,195,171,.08);border-color:rgba(207,195,171,.12)}
button:focus-visible,textarea:focus-visible,input:focus-visible{outline-color:rgba(207,195,171,.46)}
::selection{background:rgba(207,195,171,.26);color:#f0ebe3}

@media(max-width:720px){
  .memory-webgl-canvas{top:46%;width:100vw;height:57vh}
  .topbar{padding-top:14px}
  .compose-row{justify-content:stretch;align-items:center;gap:8px}
  .compose-action{
    flex:0 0 44px;
    justify-content:center;
    width:44px;
    height:44px;
    padding:0;
    border-radius:999px;
  }
  .compose-action span{display:none}
  .compose-action svg{width:18px;height:18px}
  .composer textarea{
    flex:1 1 auto;
    min-width:0;
    height:40px;
    min-height:40px;
    padding:9px 2px 8px 4px;
    line-height:1.45;
    font-size:13px;
  }
  .composer textarea::placeholder{font-size:13px}
  .keep-button{flex:0 0 42px;width:42px;height:42px}
  .ambient:before{opacity:.38}
}

/* Bubble-led interaction polish: glassy panels, physical pop, and animated memory tabs. */
@keyframes bubble-pop-in{0%{opacity:0;filter:blur(7px);transform:translateY(18px) scale(.88,.82)}56%{opacity:1;filter:blur(0);transform:translateY(-3px) scale(1.026,.982)}78%{transform:translateY(1px) scale(.994,1.008)}100%{opacity:1;transform:translateY(0) scale(1)}}
@keyframes bubble-pop-out{0%{opacity:1;transform:translateY(0) scale(1)}36%{opacity:1;transform:translateY(-3px) scale(1.018,.982)}100%{opacity:0;filter:blur(7px);transform:translateY(12px) scale(.9,.86)}}
@keyframes bubble-panel-in{0%{opacity:0;filter:blur(6px);transform:translate3d(28px,0,0) scale(.965,.985)}56%{opacity:1;filter:blur(0);transform:translate3d(-3px,0,0) scale(1.006,.998)}82%{transform:translate3d(1px,0,0) scale(.999,1.001)}100%{opacity:1;transform:translate3d(0,0,0) scale(1)}}
@keyframes bubble-panel-out{0%{opacity:1;filter:blur(0);transform:translate3d(0,0,0) scale(1)}30%{opacity:1;transform:translate3d(-3px,0,0) scale(1.005,.998)}64%{opacity:.96;filter:blur(.3px);transform:translate3d(2px,0,0) scale(.999,1)}100%{opacity:0;filter:blur(6px);transform:translate3d(34px,0,0) scale(.965,.985)}}
@keyframes bubble-center-in{0%{opacity:0;filter:blur(8px);transform:translateY(18px) scale(.88,.82)}56%{opacity:1;filter:blur(0);transform:translateY(-3px) scale(1.026,.982)}78%{transform:translateY(1px) scale(.994,1.008)}100%{opacity:1;transform:none scale(1)}}
@keyframes bubble-center-out{0%{opacity:1;transform:none scale(1)}36%{opacity:1;transform:translateY(-3px) scale(1.018,.982)}100%{opacity:0;filter:blur(7px);transform:translateY(12px) scale(.9,.86)}}
@keyframes bubble-confirm-in{0%{opacity:0;filter:blur(8px);transform:translate(-50%,18px) scale(.9,.84)}56%{opacity:1;filter:blur(0);transform:translate(-50%,-3px) scale(1.024,.984)}78%{transform:translate(-50%,1px) scale(.994,1.008)}100%{opacity:1;transform:translate(-50%,0) scale(1)}}
@keyframes bubble-confirm-out{0%{opacity:1;transform:translate(-50%,0) scale(1)}36%{opacity:1;transform:translate(-50%,-3px) scale(1.016,.984)}100%{opacity:0;filter:blur(7px);transform:translate(-50%,12px) scale(.92,.88)}}

@keyframes memory-tab-content-in{0%{opacity:0;transform:translateY(9px) scale(.985)}100%{opacity:1;transform:none}}

#focusOverlay .focus-card,#panelOverlay .drawer,.confirm-card{
  background:
    radial-gradient(circle at 22% 10%,rgba(255,255,255,.13),transparent 34%),
    radial-gradient(circle at 84% 92%,rgba(127,153,146,.08),transparent 36%),
    rgba(12,12,12,.74);
  border-color:rgba(255,255,255,.11);
  box-shadow:0 20px 64px rgba(0,0,0,.5),inset 0 1px 0 rgba(255,255,255,.08),inset 0 -18px 44px rgba(255,255,255,.018);
  backdrop-filter:blur(30px) saturate(122%);
}
#focusOverlay .focus-card:before,#panelOverlay .drawer:before,.confirm-card:before{display:none}
#focusOverlay .focus-card,#panelOverlay .drawer,.confirm-card{position:absolute}
#panelOverlay.is-closing{opacity:1;visibility:visible}
#panelOverlay .drawer .drawer-head{
  margin:0 -20px;
  padding:0 20px;
  border-radius:20px 20px 0 0;
  background:linear-gradient(rgba(12,12,12,.96) 0%,rgba(12,12,12,.78) 68%,rgba(12,12,12,0));
}

#focusOverlay .focus-card{opacity:0;transform-origin:72% 86%;transition:none}
#focusOverlay.is-open .focus-card{animation:bubble-pop-in .48s cubic-bezier(.18,.86,.26,1) both}
#focusOverlay.is-closing .focus-card{animation:bubble-pop-out .36s cubic-bezier(.34,0,.24,1) both}
#panelOverlay .drawer{opacity:0;transform-origin:100% 0;transition:none}
#panelOverlay.is-open .drawer{animation:bubble-panel-in .46s cubic-bezier(.2,.74,.22,1) both}
#panelOverlay.is-closing .drawer{animation:bubble-panel-out .44s cubic-bezier(.28,.02,.24,1) both}
.confirm-card{opacity:0;transform-origin:50% 100%;transition:none}
#confirmOverlay.is-open .confirm-card{animation:bubble-confirm-in .46s cubic-bezier(.18,.86,.26,1) both}
#confirmOverlay.is-closing .confirm-card{animation:bubble-confirm-out .34s cubic-bezier(.34,0,.24,1) both}
#focusOverlay .text-editor-card{transform-origin:50% 50%}
#focusOverlay.is-open .text-editor-card{animation:bubble-center-in .48s cubic-bezier(.18,.86,.26,1) both}
#focusOverlay.is-closing .text-editor-card{animation:bubble-center-out .34s cubic-bezier(.34,0,.24,1) both}

#panelOverlay .drawer[data-panel="settings"]{font-size:12px}
#panelOverlay .drawer[data-panel="settings"] .setting-section label,
#panelOverlay .drawer[data-panel="settings"] .setting-label,
#panelOverlay .drawer[data-panel="settings"] .privacy{font-size:12px}
#panelOverlay .drawer[data-panel="settings"] .plain-button,
#panelOverlay .drawer[data-panel="settings"] .drawer-close{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:42px;
  padding:0 15px;
  border-radius:999px;
  font-size:12px;
  font-weight:500;
  letter-spacing:0;
}
#panelOverlay .drawer[data-panel="settings"] .button-row{gap:8px}
#panelOverlay .drawer[data-panel="settings"] .profile-edit{gap:10px}
#panelOverlay .drawer[data-panel="settings"] .storage-section{
  padding-top:17px;
  padding-bottom:18px;
}
#panelOverlay .drawer[data-panel="settings"] .setting-title-row{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  margin-bottom:12px;
}
#panelOverlay .drawer[data-panel="settings"] .setting-title-row .setting-label{margin:0}
#panelOverlay .drawer[data-panel="settings"] .storage-copy{
  max-width:300px;
  margin:0;
  color:#8c857a;
  font-size:12px;
  line-height:1.65;
}
#panelOverlay .drawer[data-panel="settings"] .settings-sound-section .button-row,
#panelOverlay .drawer[data-panel="settings"] .export-recency{
  margin-top:12px;
}
#panelOverlay .drawer[data-panel="settings"] .storage-actions{
  margin-top:18px;
  padding-top:14px;
  border-top:1px solid rgba(255,255,255,.055);
}


.memory-list{animation:memory-tab-content-in .28s cubic-bezier(.2,.72,.22,1) both}
.memory-list .memory-row{animation:memory-tab-content-in .28s cubic-bezier(.2,.72,.22,1) both}
.memory-list .memory-row:nth-child(2){animation-delay:25ms}
.memory-list .memory-row:nth-child(3){animation-delay:45ms}
.memory-list .memory-row:nth-child(4){animation-delay:65ms}

@media(prefers-reduced-motion:reduce){
  #focusOverlay.is-open .focus-card,#focusOverlay.is-closing .focus-card,#panelOverlay.is-open .drawer,#panelOverlay.is-closing .drawer,#confirmOverlay.is-open .confirm-card,#confirmOverlay.is-closing .confirm-card,.memory-list,.memory-list .memory-row{animation:none}
  .mix-presets:before{animation:none;transition:none}
}

/* Quiet spatial depth: a faint memory field around the main bubble. */
@keyframes memory-field-lift{0%,100%{opacity:.76;transform:translate3d(-1.4vw,.8vh,0) scale(1)}50%{opacity:.98;transform:translate3d(1vw,-.7vh,0) scale(1.014)}}
@keyframes memory-rings-breathe{0%,100%{opacity:.24;transform:translate(-50%,-50%) scale(.985)}50%{opacity:.42;transform:translate(-50%,-50%) scale(1.025)}}
@keyframes memory-dust-drift{0%{transform:translate3d(0,0,0)}50%{transform:translate3d(-10px,7px,0)}100%{transform:translate3d(8px,-8px,0)}}

.ambient{
  background:
    radial-gradient(ellipse 48vw 36vh at 50% 48%,rgba(188,176,148,.105),transparent 62%),
    radial-gradient(ellipse 35vw 28vh at 43% 50%,rgba(127,153,146,.055),transparent 66%),
    radial-gradient(circle 26vw at var(--pointer-x) var(--pointer-y),rgba(207,195,171,.052),transparent 70%),
    radial-gradient(ellipse 70% 72% at 50% 42%,rgba(18,17,16,.78),rgba(7,7,7,.66) 54%,transparent 82%),
    linear-gradient(145deg,#070707,#030303);
  animation:quiet-field-breathe 18s ease-in-out infinite;
}
.ambient:before{
  background-image:
    radial-gradient(.9px .9px at 12% 21%,rgba(255,255,255,.13) 0,transparent 100%),
    radial-gradient(.7px .7px at 23% 64%,rgba(207,195,171,.08) 0,transparent 100%),
    radial-gradient(1px 1px at 36% 38%,rgba(255,255,255,.09) 0,transparent 100%),
    radial-gradient(.8px .8px at 49% 72%,rgba(127,153,146,.075) 0,transparent 100%),
    radial-gradient(1px 1px at 61% 29%,rgba(207,195,171,.1) 0,transparent 100%),
    radial-gradient(.7px .7px at 73% 58%,rgba(255,255,255,.07) 0,transparent 100%),
    radial-gradient(.9px .9px at 86% 36%,rgba(207,195,171,.085) 0,transparent 100%),
    radial-gradient(.7px .7px at 91% 82%,rgba(127,153,146,.07) 0,transparent 100%);
  opacity:.48;
  animation:memory-dust-drift 54s ease-in-out infinite alternate;
}
.ambient:after{
  opacity:.095;
  background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.58' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.28'/%3E%3C/svg%3E");
}
.memory-space:before{
  position:absolute;
  z-index:2;
  top:47%;
  left:50%;
  width:min(680px,72vw);
  aspect-ratio:1;
  content:"";
  pointer-events:none;
  border-radius:50%;
  background:
    radial-gradient(circle,transparent 0 34%,rgba(207,195,171,.052) 34.4%,transparent 35.2%),
    radial-gradient(circle,transparent 0 51%,rgba(127,153,146,.038) 51.4%,transparent 52.2%),
    radial-gradient(circle,transparent 0 68%,rgba(207,195,171,.033) 68.4%,transparent 69.2%);
  filter:blur(.25px);
  transform:translate(-50%,-50%);
  animation:memory-rings-breathe 13s ease-in-out infinite;
}
.memory-space:after{
  inset:11% 11% 13%;
  background:
    radial-gradient(ellipse at 50% 48%,rgba(207,195,171,.09),transparent 52%),
    radial-gradient(ellipse at 49% 50%,rgba(127,153,146,.038),transparent 66%);
  filter:blur(30px);
  animation:memory-field-lift 16s ease-in-out infinite;
}

@media(max-width:720px){
  .memory-space:before{top:47%;width:88vw}
  .memory-space:after{inset:16% 2% 18%;filter:blur(22px)}
}

/* Typography pass: local/system fonts only, keeping the app private and fast. */
:root{
  --font-sans:"Inter Tight","Neue Haas Grotesk Display Pro",ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"SF Pro Text",sans-serif;
  --font-serif:Georgia,"Iowan Old Style","New York",ui-serif,serif;
}
body,button,textarea,input{
  font-family:var(--font-sans);
  font-feature-settings:"kern" 1,"liga" 1;
  text-rendering:geometricPrecision;
}
.brand{
  color:#d8d0c4;
  font-family:var(--font-sans);
  font-size:14px;
  font-weight:600;
  letter-spacing:-.01em;
}
.brand em{
  color:#8f877b;
  text-shadow:none;
}
.focus-text,.inline-memory-editor{font-family:var(--font-serif)}

#panelOverlay .drawer[data-panel="sound"]{max-height:calc(100dvh - 96px)}
#panelOverlay .drawer[data-panel="sound"] .sound-preset-row .mix-presets{
  display:flex;
  flex:1;
  gap:0;
  overflow:hidden;
  isolation:isolate;
}
#panelOverlay .drawer[data-panel="sound"] .mix-presets:before{
  display:block;
  position:absolute;
  z-index:0;
  top:4px;
  bottom:4px;
  left:4px;
  width:calc((100% - 24px) / 3);
  content:"";
  border-radius:9px;
  background:rgba(255,255,255,.075);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.055),0 5px 18px rgba(0,0,0,.14);
  transform:translateX(calc(var(--preset-index,0) * (100% + 4px)));
  transition:transform .34s cubic-bezier(.2,.82,.22,1),background .24s ease;
  opacity:0;
}
#panelOverlay .drawer[data-panel="sound"] .sound-preset-row:before{
  display:none;
}
#panelOverlay .drawer[data-panel="sound"] .mix-presets.has-active:before{opacity:1}
#panelOverlay .drawer[data-panel="sound"] .sound-clear-button{
  display:grid;
  width:32px;
  height:32px;
  min-width:32px;
  min-height:32px;
  padding:0;
  flex:none;
  place-items:center;
  color:#8e867b;
  background:rgba(255,255,255,.035);
  border:1px solid rgba(255,255,255,.055);
  border-radius:50%;
  transition:color .22s ease,background .22s ease,transform .22s cubic-bezier(.2,.82,.22,1);
}
#panelOverlay .drawer[data-panel="sound"] .sound-clear-button:hover,
#panelOverlay .drawer[data-panel="sound"] .sound-clear-button[aria-pressed="true"]{
  color:#ded7cd;
  background:rgba(255,255,255,.075);
}
#panelOverlay .drawer[data-panel="sound"] .sound-clear-button:active{
  transform:scale(.94);
}
#panelOverlay .drawer[data-panel="sound"] .sound-clear-button svg{
  width:16px;
  height:16px;
  fill:none;
  stroke:currentColor;
  stroke-width:1.6;
  stroke-linecap:round;
  stroke-linejoin:round;
}
#panelOverlay .drawer[data-panel="sound"] .mix-presets.has-active:before{opacity:1}
#panelOverlay .drawer[data-panel="sound"] .mix-presets button:hover{
  color:#c4bbb0;
  background:transparent;
  transform:translateY(-1px);
}
#panelOverlay .drawer[data-panel="sound"] .mix-presets button.active{
  color:#ded7cd;
  background:transparent;
}
#panelOverlay .drawer[data-panel="sound"] .mix-presets .preset-icon{
  flex:0 0 15px;
  width:15px;
  height:15px;
  fill:none;
  stroke:currentColor;
  stroke-width:1.75;
  stroke-linecap:round;
  stroke-linejoin:round;
  opacity:.86;
}
#panelOverlay .drawer[data-panel="sound"] .mix-presets button span{
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
}

/* Button audit: keep dialog actions aligned with the bottom media buttons. */
.plain-button,.drawer-close,.close-button,.confirm-card .button-row button,.record-actions button{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:42px;
  padding:0 16px;
  border-radius:999px;
  font-size:12px;
  font-weight:500;
  letter-spacing:0;
  line-height:1;
}
.confirm-card .button-row{
  align-items:center;
  justify-content:flex-end;
  gap:10px;
  margin-top:22px;
}
.confirm-card .button-row button{
  min-width:112px;
  color:#aaa196;
  background:rgba(255,255,255,.04);
  border:1px solid rgba(255,255,255,.07);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.035);
}
.confirm-card .button-row button:hover{
  color:#e1dbd1;
  background:rgba(255,255,255,.07);
}
.confirm-card .button-row .danger{
  color:#fff;
  background:#b9665e;
  border-color:rgba(255,255,255,.08);
  border-radius:999px;
}
.confirm-card .button-row .danger:hover{background:#c7736b}
#panelOverlay .drawer[data-panel="settings"] .plain-button,
#panelOverlay .drawer[data-panel="settings"] .drawer-close{
  min-height:42px;
  padding:0 16px;
  border-radius:999px;
}

/* Live ambience affordance in the top navigation. */
.nav button[data-open="sound"]{
  display:inline-flex;
  align-items:center;
  gap:7px;
}
.nav-sound-indicator{
  display:none;
  align-items:end;
  gap:2px;
  height:13px;
  color:#c7baa1;
}
.nav-sound-indicator i{
  width:2px;
  height:5px;
  background:currentColor;
  border-radius:999px;
  opacity:.72;
  animation:nav-sound-level .86s ease-in-out infinite;
}
.nav-sound-indicator i:nth-child(2){animation-delay:.14s}
.nav-sound-indicator i:nth-child(3){animation-delay:.28s}
.nav button[data-open="sound"].is-playing{
  color:#d8d0c4;
}
.nav button[data-open="sound"].is-playing .nav-sound-indicator{
  display:inline-flex;
}
@keyframes nav-sound-level{
  0%,100%{height:4px;opacity:.46}
  48%{height:13px;opacity:1}
}

/* Memory detail panels now share the right drawer placement and motion. */
#focusOverlay .focus-card:not(.text-editor-card){
  top:70px;
  right:18px;
  bottom:auto;
  left:auto;
  width:min(390px,calc(100% - 36px));
  max-height:calc(100dvh - 180px);
  padding:0 20px 20px;
  overflow:auto;
  border-radius:20px;
  transform-origin:100% 0;
}
#focusOverlay .focus-card:not(.text-editor-card) .focus-head{
  min-height:62px;
  margin:0 -20px;
  padding:0 20px;
  border-radius:20px 20px 0 0;
  background:linear-gradient(rgba(12,12,12,.96) 0%,rgba(12,12,12,.78) 68%,rgba(12,12,12,0));
}
#focusOverlay .focus-card:not(.text-editor-card) .focus-head .eyebrow{
  letter-spacing:0;
}
#focusOverlay .focus-card:not(.text-editor-card) .focus-media{
  width:100%;
  max-height:50dvh;
  margin:10px auto;
  border-radius:14px;
  background:#050505;
}
#focusOverlay .focus-card:not(.text-editor-card) audio{
  width:100%;
  margin:4px 0 14px;
}
#focusOverlay .focus-card:not(.text-editor-card) .focus-body{
  padding:0;
}
#focusOverlay .focus-card:not(.text-editor-card) .focus-actions{
  position:static;
  display:flex;
  flex-wrap:wrap;
  justify-content:flex-start;
  gap:8px;
  margin-top:14px;
  padding:0;
  opacity:1;
  pointer-events:auto;
  background:transparent;
  border:0;
  box-shadow:none;
  backdrop-filter:none;
  transform:none;
}
#focusOverlay .focus-card:not(.text-editor-card):hover .focus-actions{
  transform:none;
}
.focus-action-button{
  display:inline-flex!important;
  align-items:center;
  gap:7px;
  width:auto!important;
  min-width:0!important;
  min-height:38px!important;
  padding:0 12px!important;
  border-radius:999px!important;
  font-size:12px!important;
  line-height:1!important;
}
.focus-action-button svg{
  width:15px!important;
  height:15px!important;
  fill:none;
  stroke:currentColor;
  stroke-width:1.9;
  stroke-linecap:round;
  stroke-linejoin:round;
}
.focus-action-button span{
  white-space:nowrap;
}
.focus-action-button.download-button:before{
  content:none;
}
.focus-action-button.download-button{
  color:#aaa196;
  background:rgba(255,255,255,.028);
  border:1px solid rgba(255,255,255,.07);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.035);
}
.focus-action-button.download-button:hover{
  color:#e1dbd1;
  background:rgba(255,255,255,.06);
  border-color:rgba(255,255,255,.1);
}
.focus-action-button.danger{
  margin-left:0;
}
.focus-action-button.is-icon-only{
  width:42px!important;
  min-width:42px!important;
  padding:0!important;
  justify-content:center;
  gap:0;
}
#focusOverlay.is-open .focus-card:not(.text-editor-card){
  animation:bubble-panel-in .46s cubic-bezier(.2,.74,.22,1) both;
}
#focusOverlay.is-closing .focus-card:not(.text-editor-card){
  animation:bubble-panel-out .44s cubic-bezier(.28,.02,.24,1) both;
}
@media(max-width:720px){
  #focusOverlay .focus-card:not(.text-editor-card){
    top:70px;
    right:8px;
    bottom:auto;
    left:8px;
    width:auto;
    max-height:calc(100dvh - 140px);
  }
  #focusOverlay .focus-card:not(.text-editor-card) .focus-media{
    max-height:34dvh;
  }
}

.bubble-expression{
  position:absolute;
  z-index:15;
  display:grid;
  min-width:34px;
  height:26px;
  padding:0 8px;
  place-items:center;
  color:#e9e0d3;
  background:rgba(18,18,24,.58);
  border:1px solid rgba(255,255,255,.12);
  border-radius:999px;
  box-shadow:0 10px 24px rgba(0,0,0,.26),inset 0 1px 0 rgba(255,255,255,.08);
  font-size:13px;
  font-weight:700;
  line-height:1;
  pointer-events:none;
  transform:translate(-50%,-50%) scale(.72);
  animation:bubble-expression-pop 2.4s cubic-bezier(.18,.76,.2,1) both;
}
@keyframes bubble-expression-pop{
  0%{opacity:0;filter:blur(2px);transform:translate(-50%,-50%) scale(.62)}
  16%{opacity:1;filter:blur(0);transform:translate(-50%,-50%) scale(1.04)}
  72%{opacity:.92}
  100%{opacity:0;filter:blur(3px);transform:translate(calc(-50% + var(--bubble-expression-x)),calc(-50% + var(--bubble-expression-y))) scale(.78)}
}
@media(prefers-reduced-motion:reduce){
  .bubble-expression{display:none}
}

/* Memory count badge: +1 animation on the All memories button. */
.memory-count-badge{
  position:absolute;
  top:-4px;
  right:-6px;
  min-width:18px;
  height:18px;
  padding:0 5px;
  display:grid;
  place-items:center;
  color:#c0b8ae;
  background:rgba(160,148,130,.18);
  border:1px solid rgba(160,148,130,.2);
  border-radius:999px;
  font-size:10px;
  font-weight:600;
  font-family:ui-monospace,monospace;
  pointer-events:none;
  opacity:0;
  transform:scale(.6) translateY(2px);
}
.memory-count-badge.is-active{
  animation:memory-count-pop 1.8s cubic-bezier(.2,.72,.2,1) both;
}
@keyframes memory-count-pop{
  0%{opacity:0;transform:scale(.6) translateY(2px)}
  18%{opacity:1;transform:scale(1.15) translateY(-1px)}
  36%{opacity:1;transform:scale(1) translateY(0)}
  72%{opacity:1;transform:scale(1) translateY(0)}
  100%{opacity:0;transform:scale(.85) translateY(-6px)}
}

/* ── Text/voice absorb flight animation ── */
.memory-absorb-flight{
  position:fixed;
  z-index:180;
  width:22px;
  height:22px;
  border-radius:50%;
  pointer-events:none;
}
.memory-absorb-flight.is-text{
  background:radial-gradient(circle at 40% 35%,rgba(207,195,171,.35),rgba(207,195,171,.15) 60%,transparent);
  border:1px solid rgba(207,195,171,.2);
  box-shadow:0 0 12px rgba(207,195,171,.15),0 0 0 6px rgba(207,195,171,.06);
}
.memory-absorb-flight.is-voice{
  background:radial-gradient(circle at 40% 35%,rgba(9,137,216,.3),rgba(9,137,216,.12) 60%,transparent);
  border:1px solid rgba(9,137,216,.2);
  box-shadow:0 0 12px rgba(9,137,216,.15),0 0 0 6px rgba(9,137,216,.06);
}

/* ── Bubble action bar (appears on long-press reveal) ── */
.bubble-actions{
  position:fixed;
  pointer-events:none;
  z-index:10;
  opacity:0;
  transition:opacity .4s cubic-bezier(.4,0,.2,1),transform .4s cubic-bezier(.4,0,.2,1);
}
.bubble-actions.is-visible{
  opacity:1;
  pointer-events:auto;
}
.trash-zone{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:8px;
  width:72px;
  padding:20px 8px;
  border-radius:20px 0 0 20px;
  background:rgba(42,38,34,.5);
  backdrop-filter:blur(16px);
  -webkit-backdrop-filter:blur(16px);
  border:1px solid rgba(230,224,212,.06);
  border-right:none;
  cursor:pointer;
  transition:background .3s,transform .3s;
}
.trash-zone:hover{
  background:rgba(224,85,85,.14);
}
.trash-zone:hover .trash-icon{
  background:rgba(224,85,85,.2);
  color:#e05555;
  transform:scale(1.15);
  box-shadow:0 0 20px rgba(224,85,85,.15);
}
.trash-icon{
  width:40px;
  height:40px;
  display:flex;
  align-items:center;
  justify-content:center;
  border-radius:50%;
  background:rgba(224,85,85,.08);
  color:#e05555;
  transition:background .3s,color .3s,transform .3s,box-shadow .3s;
}
.trash-zone.is-near{
  background:rgba(224,85,85,.14);
}
.trash-zone.is-near .trash-icon{
  background:rgba(224,85,85,.2);
  color:#e05555;
  transform:scale(1.15);
  box-shadow:0 0 20px rgba(224,85,85,.15);
}

/* Dissolve effect when deleting a memory bubble */
.memory-webgl-canvas.is-dissolving{
  filter:blur(8px) brightness(1.1);
  opacity:.6;
  transition:filter .6s cubic-bezier(.4,0,.2,1),opacity .6s cubic-bezier(.4,0,.2,1);
}
.memory-webgl-canvas:not(.is-dissolving){
  filter:blur(0) brightness(1);
  opacity:1;
  transition:filter .4s cubic-bezier(.4,0,.2,1),opacity .4s cubic-bezier(.4,0,.2,1);
}

/* ── Persistent ambient voice wave lines ── */
.ambient-wave-lines{
  position:absolute;
  bottom:0;
  left:0;
  width:100%;
  height:120px;
  pointer-events:none;
  z-index:2;
  overflow:hidden;
  opacity:0;
  transition:opacity 2s ease;
}
.ambient-wave-lines.is-active{
  opacity:1;
  transition:opacity .3s ease;
}
.ambient-wave-lines.is-active:not(.is-pulsing){
  transition:opacity 2s ease;
}
.ambient-wave-lines.is-pulsing{
  opacity:1.8;
  transition:opacity .3s ease;
}
.ambient-wave-lines svg{
  position:absolute;
  bottom:0;
  left:5%;
  width:90%;
  height:100%;
  -webkit-mask-image:linear-gradient(to right,transparent 0%,#000 18%,#000 82%,transparent 100%);
  mask-image:linear-gradient(to right,transparent 0%,#000 18%,#000 82%,transparent 100%);
}
.ambient-wave-lines svg path{
  fill:none;
  stroke-linecap:round;
}
.ambient-wave-lines svg path:nth-child(1){filter:blur(0px)}
.ambient-wave-lines svg path:nth-child(2){filter:blur(0.8px)}
.ambient-wave-lines svg path:nth-child(3){filter:blur(1.6px)}
.ambient-wave-lines svg path:nth-child(4){filter:blur(2.8px)}
}



/* Final polish pass: tighter controls, safer text wrapping, and less visual crowding. */
#panelOverlay .drawer[data-panel="sound"] .mix-presets .preset-clear .preset-icon{
  display:none;
}
#panelOverlay .drawer[data-panel="sound"] .mix-presets button span{
  flex:0 1 auto;
  min-width:0;
  white-space:nowrap;
}
.inline-memory-editor{
  overflow-y:auto;
  scrollbar-width:thin;
  scrollbar-color:rgba(160,148,130,.12) transparent;
}
.inline-memory-editor::-webkit-scrollbar{width:4px}
.inline-memory-editor::-webkit-scrollbar-thumb{background:rgba(160,148,130,.12);border-radius:99px}
.text-editor-foot{
  gap:12px;
}
.text-editor-actions{
  flex-shrink:0;
}
.composer textarea{
  text-overflow:ellipsis;
}
@media(max-width:720px){
  .topbar{
    align-items:start;
  }
  .nav{
    gap:10px;
  }
  .nav button[data-open="sound"]{
    display:none;
  }
  #focusOverlay .text-editor-card{
    max-height:calc(100dvh - 112px);
  }
  .text-editor-head{
    align-items:flex-start;
    gap:12px;
  }
  .text-memory-time{
    white-space:normal;
    line-height:1.45;
  }
  .text-editor-foot{
    align-items:flex-start;
  }
  .inline-save-state{
    line-height:1.5;
  }
  .composer textarea{
    text-overflow:clip;
  }
}

/* Unified controls and spatial glass-surface motion. */
:root{
  --control-height:34px;
  --control-font-size:12px;
  --control-padding-x:16px;
  --control-radius:999px;
  --control-line-height:1;
}
.revisit,
.close-button,
.drawer-close,
.plain-button,
.text-button,
.focus-action-button,
.compose-action,
.confirm-card .button-row button,
.record-actions button,
.mix-presets button,
#panelOverlay .drawer[data-panel="sound"] .mix-presets button{
  min-height:var(--control-height)!important;
  height:var(--control-height);
  padding-top:0!important;
  padding-bottom:0!important;
  padding-left:var(--control-padding-x)!important;
  padding-right:var(--control-padding-x)!important;
  border-radius:var(--control-radius)!important;
  font-size:var(--control-font-size)!important;
  line-height:var(--control-line-height)!important;
  letter-spacing:0!important;
}
.settings-trigger,
.nav button:not(.settings-trigger),
.focus-action-button.is-icon-only,
.pending-media-item button{
  width:var(--control-height)!important;
  height:var(--control-height)!important;
  min-width:var(--control-height)!important;
  min-height:var(--control-height)!important;
  padding:0!important;
  border-radius:var(--control-radius)!important;
  font-size:var(--control-font-size)!important;
}
.nav button:not(.settings-trigger){
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:auto!important;
  padding:0!important;
  font-size:var(--control-font-size)!important;
  line-height:var(--control-line-height)!important;
}
.keep-button{
  flex-basis:var(--control-height);
  width:var(--control-height);
  height:var(--control-height);
  min-height:var(--control-height);
}
.compose-action svg,
.focus-action-button svg{
  width:15px!important;
  height:15px!important;
}
.filters button{
  padding-left:6px!important;
  padding-right:6px!important;
}
#panelOverlay .drawer[data-panel="settings"] .plain-button,
#panelOverlay .drawer[data-panel="settings"] .drawer-close,
#panelOverlay .drawer[data-panel="sound"] .mix-presets button,
.record-actions button,
.confirm-card .button-row button,
.storage-notice button{
  min-height:var(--control-height)!important;
  height:var(--control-height)!important;
  padding-top:0!important;
  padding-bottom:0!important;
  padding-left:var(--control-padding-x)!important;
  padding-right:var(--control-padding-x)!important;
  font-size:var(--control-font-size)!important;
  line-height:var(--control-line-height)!important;
}
.memory-row .preview{
  font-size:var(--control-font-size);
}

@keyframes surface-bloom-in{
  0%{
    opacity:0;
    filter:blur(18px) saturate(.78);
    border-radius:34px;
    transform:
      translate3d(var(--surface-drift-x,18px),var(--surface-drift-y,10px),0)
      perspective(900px)
      rotateX(var(--surface-tilt-x,-5deg))
      rotateY(var(--surface-tilt-y,7deg))
      scale3d(.62,.54,1);
  }
  42%{
    opacity:1;
    filter:blur(0) saturate(1.12);
    transform:
      translate3d(calc(var(--surface-drift-x,18px) * -.12),calc(var(--surface-drift-y,10px) * -.16),0)
      perspective(900px)
      rotateX(calc(var(--surface-tilt-x,-5deg) * -.18))
      rotateY(calc(var(--surface-tilt-y,7deg) * -.14))
      scale3d(1.035,1.025,1);
  }
  66%{
    transform:
      translate3d(0,-2px,0)
      perspective(900px)
      rotateX(.8deg)
      rotateY(-.6deg)
      scale3d(.992,1.006,1);
  }
  100%{
    opacity:1;
    filter:blur(0) saturate(1);
    border-radius:20px;
    transform:translate3d(0,0,0) perspective(900px) rotateX(0) rotateY(0) scale3d(1,1,1);
  }
}
@keyframes surface-bloom-out{
  0%{
    opacity:1;
    filter:blur(0) saturate(1);
    border-radius:20px;
    transform:translate3d(0,0,0) perspective(900px) rotateX(0) rotateY(0) scale3d(1,1,1);
  }
  36%{
    opacity:.98;
    transform:
      translate3d(calc(var(--surface-drift-x,18px) * -.08),calc(var(--surface-drift-y,10px) * -.08),0)
      perspective(900px)
      rotateX(calc(var(--surface-tilt-x,-5deg) * .16))
      rotateY(calc(var(--surface-tilt-y,7deg) * .14))
      scale3d(1.014,.992,1);
  }
  100%{
    opacity:0;
    filter:blur(18px) saturate(.78);
    border-radius:34px;
    transform:
      translate3d(var(--surface-drift-x,18px),var(--surface-drift-y,10px),0)
      perspective(900px)
      rotateX(var(--surface-tilt-x,-5deg))
      rotateY(var(--surface-tilt-y,7deg))
      scale3d(.62,.54,1);
  }
}
@keyframes confirm-surface-in{
  0%{opacity:0;filter:blur(14px);transform:translate(-50%,var(--surface-drift-y,18px)) perspective(900px) rotateX(8deg) scale3d(.74,.62,1)}
  54%{opacity:1;filter:blur(0);transform:translate(-50%,-4px) perspective(900px) rotateX(-1.5deg) scale3d(1.035,1.018,1)}
  100%{opacity:1;transform:translate(-50%,0) perspective(900px) rotateX(0) scale3d(1,1,1)}
}
@keyframes confirm-surface-out{
  0%{opacity:1;transform:translate(-50%,0) perspective(900px) rotateX(0) scale3d(1,1,1)}
  100%{opacity:0;filter:blur(14px);transform:translate(-50%,var(--surface-drift-y,18px)) perspective(900px) rotateX(8deg) scale3d(.74,.62,1)}
}
#focusOverlay .focus-card,
#panelOverlay .drawer{
  transform-origin:var(--surface-origin-x,50%) var(--surface-origin-y,50%)!important;
  transform-style:preserve-3d;
  backface-visibility:hidden;
}
#focusOverlay.is-open .focus-card,
#focusOverlay.is-open .text-editor-card,
#focusOverlay.is-open .focus-card:not(.text-editor-card),
#panelOverlay.is-open .drawer{
  animation:surface-bloom-in .62s cubic-bezier(.16,.86,.2,1) both!important;
}
#focusOverlay.is-closing .focus-card,
#focusOverlay.is-closing .text-editor-card,
#focusOverlay.is-closing .focus-card:not(.text-editor-card),
#panelOverlay.is-closing .drawer{
  animation:surface-bloom-out .42s cubic-bezier(.28,.02,.18,1) both!important;
}
#confirmOverlay.is-open .confirm-card{
  animation:confirm-surface-in .54s cubic-bezier(.16,.86,.2,1) both!important;
}
#confirmOverlay.is-closing .confirm-card{
  animation:confirm-surface-out .34s cubic-bezier(.28,.02,.18,1) both!important;
}
#focusOverlay .focus-card,
#panelOverlay .drawer,
.confirm-card{
  box-shadow:
    0 24px 76px rgba(0,0,0,.52),
    inset 0 1px 0 rgba(255,255,255,.1),
    inset 0 -22px 48px rgba(255,255,255,.018),
    0 0 0 1px rgba(255,255,255,.055);
}
@media(max-width:720px){
  :root{
    --control-height:34px;
    --control-font-size:12px;
    --control-padding-x:14px;
  }
  .compose-action{
    flex:0 0 var(--control-height);
    width:var(--control-height);
    padding:0!important;
  }
  .keep-button{
    flex:0 0 var(--control-height);
  }
  #focusOverlay .focus-card,
  #panelOverlay .drawer{
    transform-origin:var(--surface-origin-x,50%) var(--surface-origin-y,18px)!important;
  }
}
@media(prefers-reduced-motion:reduce){
  #focusOverlay.is-open .focus-card,
  #focusOverlay.is-closing .focus-card,
  #panelOverlay.is-open .drawer,
  #panelOverlay.is-closing .drawer,
  #confirmOverlay.is-open .confirm-card,
  #confirmOverlay.is-closing .confirm-card{
    animation:none!important;
  }
}

/* Final interaction polish: darker stage, consistent actions, media-respecting detail panels. */
.ambient{
  background:
    radial-gradient(ellipse 48vw 36vh at 50% 48%,rgba(188,176,148,.078),transparent 62%),
    radial-gradient(ellipse 35vw 28vh at 43% 50%,rgba(127,153,146,.04),transparent 66%),
    radial-gradient(circle 28vw at var(--pointer-x) var(--pointer-y),rgba(207,195,171,.044),transparent 70%),
    radial-gradient(ellipse 70% 72% at 50% 42%,rgba(16,15,14,.8),rgba(6,6,6,.68) 54%,transparent 82%),
    linear-gradient(145deg,#060606,#030303)!important;
}
.ambient:before{opacity:.5}
.ambient:after{opacity:.075}
.memory-space:before{
  background:
    radial-gradient(circle,transparent 0 34%,rgba(207,195,171,.046) 34.4%,transparent 35.2%),
    radial-gradient(circle,transparent 0 51%,rgba(127,153,146,.032) 51.4%,transparent 52.2%),
    radial-gradient(circle,transparent 0 68%,rgba(207,195,171,.028) 68.4%,transparent 69.2%)!important;
}
.memory-space:after{
  background:
    radial-gradient(ellipse at 50% 48%,rgba(207,195,171,.074),transparent 53%),
    radial-gradient(ellipse at 49% 50%,rgba(127,153,146,.032),transparent 67%)!important;
  filter:blur(31px);
}
.revisit,
.confirm-card .button-row button{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  height:var(--control-height)!important;
  min-height:var(--control-height)!important;
  padding:0 var(--control-padding-x)!important;
  border-radius:var(--control-radius)!important;
  font-size:var(--control-font-size)!important;
  font-weight:500!important;
  line-height:var(--control-line-height)!important;
  letter-spacing:0!important;
  white-space:nowrap;
}
.confirm-card .button-row{
  align-items:center;
  gap:10px;
}
.confirm-card .button-row button{
  width:auto!important;
  min-width:0!important;
  flex:0 0 auto;
}
#focusOverlay .focus-card:not(.text-editor-card) > .focus-media{
  display:block;
  width:auto!important;
  height:auto!important;
  max-width:100%!important;
  max-height:min(62dvh,620px)!important;
  margin:10px auto 16px!important;
  object-fit:contain!important;
  background:#050505;
}
#focusOverlay .focus-card:not(.text-editor-card) > video.focus-media{
  width:auto!important;
  max-width:100%!important;
}
@media(min-width:601px) and (max-width:900px){
  #focusOverlay .focus-card,
  #focusOverlay .focus-card:not(.text-editor-card),
  #panelOverlay .drawer{
    top:70px!important;
    right:18px!important;
    bottom:auto!important;
    left:auto!important;
    width:min(430px,calc(100% - 36px))!important;
    max-height:calc(100dvh - 156px)!important;
    border-radius:20px!important;
  }
}

/* Text memory editor should feel like plain writing, not a focused form field. */
#focusOverlay .text-editor-card .text-editor-head,
#focusOverlay .text-editor-card .text-editor-foot,
#focusOverlay .text-editor-card .inline-memory-editor,
#focusOverlay .text-editor-card .inline-memory-editor:focus,
#focusOverlay .text-editor-card .inline-memory-editor:focus-visible{
  border:0!important;
  outline:0!important;
  box-shadow:none!important;
}
#focusOverlay .text-editor-card .inline-memory-editor{
  appearance:none;
  -webkit-appearance:none;
  background:transparent!important;
}

/* Confirm delete uses the exact same danger treatment as detail-panel delete actions. */
.confirm-card .button-row .danger{
  color:#d1857b!important;
  background:rgba(255,255,255,.028)!important;
  border:1px solid rgba(255,255,255,.055)!important;
  box-shadow:none!important;
}
.confirm-card .button-row .danger:hover{
  color:#ef8a82!important;
  background:rgba(224,85,85,.1)!important;
  border-color:rgba(255,255,255,.055)!important;
}

/* Main bubble photo cropper: focused, tactile, and consistent with the panel language. */
.crop-card{
  position:absolute;
  top:50%;
  left:50%;
  width:min(420px,calc(100% - 28px));
  max-height:calc(100dvh - 34px);
  padding:0 18px 18px;
  overflow:auto;
  color:#e0dcd7;
  background:
    radial-gradient(circle at 24% 10%,rgba(255,255,255,.1),transparent 34%),
    rgba(12,12,12,.86);
  border:1px solid rgba(255,255,255,.11);
  border-radius:20px;
  box-shadow:0 24px 76px rgba(0,0,0,.52),inset 0 1px 0 rgba(255,255,255,.08),0 0 0 1px rgba(255,255,255,.055);
  backdrop-filter:blur(30px) saturate(118%);
  transform:translate(-50%,-50%);
}
.crop-card:focus{outline:0}
.crop-head{
  position:sticky;
  z-index:2;
  top:0;
  display:flex;
  align-items:center;
  justify-content:space-between;
  min-height:64px;
  margin:0 -18px 14px;
  padding:0 18px;
  background:linear-gradient(rgba(12,12,12,.96) 0%,rgba(12,12,12,.78) 68%,rgba(12,12,12,0));
  border-radius:20px 20px 0 0;
}
.crop-head h2{
  margin:2px 0 0;
  color:#d7d0c6;
  font-size:15px;
  font-weight:600;
}
.crop-stage{
  position:relative;
  width:min(340px,calc(100vw - 72px));
  aspect-ratio:1;
  margin:0 auto 16px;
  overflow:hidden;
  background:#050505;
  border:1px solid rgba(255,255,255,.07);
  border-radius:18px;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.045),0 18px 44px rgba(0,0,0,.28);
  touch-action:none;
  cursor:grab;
}
.crop-stage.is-dragging{cursor:grabbing}
.crop-stage img{
  position:absolute;
  top:50%;
  left:50%;
  max-width:none;
  user-select:none;
  pointer-events:none;
  transform-origin:50% 50%;
}
.crop-orbit{
  position:absolute;
  inset:9%;
  pointer-events:none;
  border:1px solid rgba(207,195,171,.22);
  border-radius:50%;
  box-shadow:0 0 0 999px rgba(0,0,0,.18),inset 0 0 34px rgba(207,195,171,.035);
}
.crop-control{
  display:grid;
  grid-template-columns:auto minmax(0,1fr);
  gap:12px;
  align-items:center;
  margin:0 2px 16px;
  color:#8f877c;
  font-size:12px;
}
.crop-control input{
  width:100%;
  accent-color:#a09482;
}
.crop-actions{
  justify-content:flex-end;
  gap:10px;
}
.crop-actions .plain-button{
  height:var(--control-height)!important;
  min-height:var(--control-height)!important;
  padding:0 var(--control-padding-x)!important;
  font-size:var(--control-font-size)!important;
}
#profileCropOverlay.is-open .crop-card{
  animation:surface-bloom-in .52s cubic-bezier(.16,.86,.2,1) both;
}
#profileCropOverlay.is-closing .crop-card{
  animation:surface-bloom-out .34s cubic-bezier(.28,.02,.18,1) both;
}
@media(max-width:600px){
  .crop-card{
    top:70px;
    right:8px;
    bottom:auto;
    left:8px;
    width:auto;
    max-height:calc(100dvh - 112px);
    transform:none;
  }
  .crop-stage{
    width:min(320px,calc(100vw - 58px));
  }
}

/* The revisit action is unavailable until enough visual media exists. */
.revisit[hidden]{
  display:none!important;
}

/* Main bubble cropper is a second layer of the settings drawer, not a full-page sheet. */
#profileCropOverlay{
  z-index:171;
}
#profileCropOverlay .overlay-backdrop{
  background:transparent;
}
#profileCropOverlay .crop-card{
  top:70px!important;
  right:18px!important;
  bottom:auto!important;
  left:auto!important;
  width:min(390px,calc(100% - 36px))!important;
  max-height:calc(100dvh - 180px)!important;
  padding:0 18px 18px!important;
  transform:none!important;
}
#profileCropOverlay.is-open .crop-card{
  animation:surface-bloom-in .48s cubic-bezier(.16,.86,.2,1) both!important;
}
#profileCropOverlay.is-closing .crop-card{
  animation:surface-bloom-out .34s cubic-bezier(.28,.02,.18,1) both!important;
}
#profileCropOverlay .crop-stage{
  width:min(320px,100%)!important;
}
@media(min-width:601px) and (max-width:900px){
  #profileCropOverlay .crop-card{
    top:70px!important;
    right:18px!important;
    left:auto!important;
    width:min(430px,calc(100% - 36px))!important;
    max-height:calc(100dvh - 156px)!important;
  }
}
@media(max-width:600px){
  #profileCropOverlay .crop-card{
    top:70px!important;
    right:8px!important;
    left:8px!important;
    width:auto!important;
    max-height:calc(100dvh - 140px)!important;
    transform:none!important;
  }
  #profileCropOverlay .crop-stage{
    width:min(320px,100%)!important;
  }
}

/* Default save feedback floats above the scene and should not read as a button. */
.whisper:not(.is-anchored){
  top:max(78px,calc(env(safe-area-inset-top) + 62px))!important;
  bottom:auto!important;
  padding:6px 12px!important;
  color:rgba(198,190,179,.82)!important;
  background:rgba(8,8,8,.18)!important;
  border:0!important;
  border-radius:14px!important;
  box-shadow:none!important;
  text-shadow:0 0 18px rgba(207,195,171,.12);
  backdrop-filter:blur(8px) saturate(106%);
  transform:translate(-50%,-8px)!important;
}
.whisper.show:not(.is-anchored){
  transform:translate(-50%,0)!important;
}

/* Every operation layer should gently mute and soften the world behind it. */
.overlay{
  isolation:isolate;
  background:transparent!important;
  backdrop-filter:none!important;
  -webkit-backdrop-filter:none!important;
}
.overlay .overlay-backdrop{
  display:block;
  pointer-events:auto;
  background:
    radial-gradient(ellipse 62% 48% at 50% 44%,rgba(0,0,0,.16),rgba(0,0,0,.24) 58%,rgba(0,0,0,.3) 100%)!important;
  opacity:0;
  backdrop-filter:blur(6px) saturate(.92);
  -webkit-backdrop-filter:blur(6px) saturate(.92);
  transition:opacity .58s cubic-bezier(.22,.72,.18,1);
  will-change:opacity;
}
.overlay.is-open .overlay-backdrop{
  opacity:1;
}
.overlay.is-closing .overlay-backdrop{
  opacity:0;
}
.overlay [role="dialog"],
.overlay [role="alertdialog"]{
  z-index:1;
}
#profileCropOverlay .overlay-backdrop{
  background:
    radial-gradient(ellipse 64% 50% at 50% 43%,rgba(0,0,0,.13),rgba(0,0,0,.2) 60%,rgba(0,0,0,.26) 100%)!important;
}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
  .overlay .overlay-backdrop{
    background:
      radial-gradient(ellipse 62% 48% at 50% 44%,rgba(0,0,0,.2),rgba(0,0,0,.3) 58%,rgba(0,0,0,.38) 100%)!important;
  }
}

/* Mobile comfort pass: slightly larger touch targets and text without changing density. */
@media(max-width:720px){
  :root{
    --control-height:36px;
    --control-font-size:13px;
    --control-padding-x:15px;
  }
  .topbar{
    padding-top:16px;
    gap:12px;
  }
  .brand{
    font-size:15px;
  }
  .place-title{
    font-size:13px;
  }
  .nav{
    gap:12px;
  }
  .nav button:not(.settings-trigger){
    min-height:36px!important;
    font-size:13px!important;
  }
  .settings-trigger{
    width:36px!important;
    height:36px!important;
    min-width:36px!important;
    min-height:36px!important;
  }
  .settings-trigger svg{
    width:17px!important;
    height:17px!important;
  }
  .compose-row{
    min-height:56px;
    gap:9px;
  }
  .compose-action{
    flex:0 0 44px!important;
    width:44px!important;
    height:44px!important;
    min-width:44px!important;
    min-height:44px!important;
  }
  .keep-button{
    flex:0 0 40px!important;
    width:40px!important;
    height:40px!important;
    min-width:40px!important;
    min-height:40px!important;
  }
  .compose-action svg,
  .keep-button svg{
    width:18px!important;
    height:18px!important;
  }
  .composer textarea{
    height:42px;
    min-height:42px;
    padding:10px 3px 9px 5px;
    font-size:14px;
    line-height:1.48;
  }
  .composer textarea::placeholder{
    font-size:14px;
  }
  .drawer h2{
    font-size:19px;
  }
  .focus-head .eyebrow,
  .drawer-head>div p,
  .step-count,
  .eyebrow{
    font-size:12px;
  }
  .focus-text{
    font-size:18px;
  }
  .focus-meta,
  .memory-row time,
  .privacy,
  .setting-section label,
  .setting-label{
    font-size:13px!important;
  }
  .memory-row{
    min-height:58px;
    padding:9px;
  }
  .memory-row .type{
    width:32px;
    height:32px;
    font-size:12px;
  }
  .memory-row .preview{
    font-size:13px;
  }
  #panelOverlay .drawer[data-panel="sound"] .mix-presets button{
    padding-left:6px!important;
    padding-right:6px!important;
  }
  #panelOverlay .drawer[data-panel="sound"] .mix-presets button span{
    overflow:visible;
    text-overflow:clip;
  }
  #panelOverlay .drawer[data-panel="sound"] .sound-clear-button{
    width:36px;
    height:36px;
    min-width:36px;
    min-height:36px;
  }
  #panelOverlay .drawer[data-panel="sound"] .sound-clear-button svg{
    width:17px;
    height:17px;
  }
  .filters button,
  .plain-button,
  .drawer-close,
  .close-button,
  .focus-action-button,
  .confirm-card .button-row button,
  .record-actions button,
  .storage-notice button{
    min-height:36px!important;
    height:36px!important;
    font-size:13px!important;
  }
  .focus-action-button.is-icon-only,
  .pending-media-item button{
    width:40px!important;
    height:40px!important;
    min-width:40px!important;
    min-height:40px!important;
  }
  .pending-media-item{
    grid-template-columns:40px minmax(0,1fr) 28px;
    flex-basis:132px;
  }
  .pending-media-item img,
  .pending-media-item video{
    width:40px;
    height:40px;
  }
  .pending-media-item figcaption{
    font-size:11px;
  }
  .storage-notice strong{
    font-size:12px;
  }
  .storage-notice small{
    font-size:11px;
  }
  .whisper:not(.is-anchored){
    font-size:13px!important;
    padding:7px 13px!important;
  }
}

/* Requested polish: clearer grain, unified sound tabs, and a compact profile toast. */
.ambient:after{
  opacity:.13;
  background-size:180px 180px;
}
#panelOverlay .drawer[data-panel="sound"] .sound-preset-bar{
  position:sticky;
  z-index:3;
  top:54px;
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:8px;
  align-items:center;
  margin:0 0 12px;
}
#panelOverlay .drawer[data-panel="sound"] .sound-presets{
  position:relative;
  top:auto;
  display:flex;
  gap:4px;
  min-width:0;
  margin:0;
  padding:4px;
  background:rgba(255,255,255,.025);
  border-radius:12px;
  overflow:hidden;
  isolation:isolate;
}
#panelOverlay .drawer[data-panel="sound"] .sound-presets:before{
  width:calc((100% - 16px) / 3);
  opacity:0;
}
#panelOverlay .drawer[data-panel="sound"] .sound-presets.has-active:before{
  opacity:1;
}
#panelOverlay .drawer[data-panel="sound"] .sound-presets button{
  position:relative;
  z-index:1;
  flex:1 1 0;
  min-width:0;
  justify-content:center;
  color:#8e867b;
  background:transparent!important;
  box-shadow:none!important;
}
#panelOverlay .drawer[data-panel="sound"] .sound-presets button.active{
  color:#ded7cd;
}
#panelOverlay .drawer[data-panel="sound"] .sound-presets button span{
  display:block;
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
#panelOverlay .drawer[data-panel="sound"] .sound-clear-button{
  align-self:center;
}
.storage-notice.empty-profile-toast{
  position:static!important;
  left:auto!important;
  top:auto!important;
  display:grid;
  grid-template-columns:minmax(0,1fr) auto!important;
  gap:14px;
  align-items:center;
  width:min(440px,100%)!important;
  min-height:0;
  margin:18px auto 0!important;
  padding:12px 12px 12px 14px;
  color:#bcb4aa;
  background:rgba(18,18,24,.82);
  border:1px solid rgba(255,255,255,.075);
  border-radius:18px;
  box-shadow:0 14px 38px rgba(0,0,0,.22),inset 0 1px 0 rgba(255,255,255,.045);
  text-align:left;
  opacity:1!important;
  transform:none!important;
}
.storage-notice.empty-profile-toast p{
  min-width:0;
  margin:0;
  overflow-wrap:normal;
  word-break:normal;
  writing-mode:horizontal-tb;
}
.storage-notice.empty-profile-toast strong,
.storage-notice.empty-profile-toast small{
  display:block;
  text-align:left;
  writing-mode:horizontal-tb;
}
.storage-notice.empty-profile-toast strong{
  font-size:12px;
  line-height:1.35;
}
.storage-notice.empty-profile-toast small{
  margin-top:3px;
  color:#756e65;
  font-size:11px;
  line-height:1.45;
}
.storage-notice.empty-profile-toast button{
  justify-self:end;
  white-space:nowrap;
}
@media(max-width:520px){
  .storage-notice.empty-profile-toast{
    grid-template-columns:1fr!important;
    width:min(360px,100%)!important;
    gap:10px;
    text-align:center;
  }
  .storage-notice.empty-profile-toast strong,
  .storage-notice.empty-profile-toast small{
    text-align:center;
  }
  .storage-notice.empty-profile-toast button{
    justify-self:center;
  }
}

/* Larger screens: increase blur so background text stays subtle at bigger font sizes */
@media(min-width:1200px){
  .bg-text-item{filter:blur(6px)}
  .bg-text-item.is-visible{filter:blur(6px)}
  .bg-text-item.is-fading{filter:blur(24px)}
  .bg-text-item.is-entering{filter:blur(28px)}
}

/* Immersive memory reveal: content appears as part of the background. */
@media(max-width:720px){
.bg-text-item{
  color:rgba(235,229,218,.3);
  font-weight:400;
  letter-spacing:.01em;
  filter:blur(3.5px);
  text-shadow:0 0 30px rgba(220,210,195,.16),0 0 74px rgba(200,190,170,.07);
}
.bg-text-item.is-visible{
  filter:blur(3.5px);
}
.bg-text-item.is-fading{
  filter:blur(14px);
}
.bg-text-item.is-entering{
  filter:blur(16px);
}
}
.memory-row{
  grid-template-columns:minmax(0,1fr) 34px;
  gap:6px;
  min-height:54px;
  padding:4px;
}
.memory-row-main{
  display:grid;
  grid-template-columns:32px minmax(0,1fr) auto;
  gap:10px;
  align-items:center;
  width:100%;
  min-height:46px;
  padding:4px;
  color:inherit;
  text-align:left;
  background:none;
  border-radius:10px;
}
.memory-row-main:hover,
.memory-row-manage:hover{
  background:rgba(255,255,255,.04);
}
.memory-row-manage{
  display:grid;
  width:34px;
  height:34px;
  place-items:center;
  align-self:center;
  color:#7a756e;
  background:rgba(255,255,255,.025);
  border:1px solid rgba(255,255,255,.045);
  border-radius:10px;
}
.memory-row-manage svg{
  width:15px;
  height:15px;
  fill:none;
  stroke:currentColor;
  stroke-width:1.6;
  stroke-linecap:round;
  stroke-linejoin:round;
}

/* During direct bubble interaction, keep GPU headroom for the WebGL field. */
body.is-bubble-interacting .ambient,
body.is-bubble-interacting .ambient::before,
body.is-bubble-interacting .ambient::after,
body.is-bubble-interacting .memory-space::after,
body.is-bubble-interacting .bg-text-item{
  animation-play-state:paused!important;
}
@media(max-width:720px){
  body.is-bubble-interacting .ambient,
  body.is-bubble-interacting .ambient::before{
    filter:none!important;
  }
  body.is-bubble-interacting .ambient i{
    animation-play-state:paused!important;
  }
}

/* ═══════════════════════════════════════════════════════════════════════════
   Visual clarity pass — deeper space, brighter focus, cleaner empty state
   ═══════════════════════════════════════════════════════════════════════════ */

/* 1. Background: lift the dead-black with a subtle cool-warm radial that
      creates a "spotlight" glow behind the bubble cluster, adding depth
      so the scene reads as a space rather than a flat surface. */
.ambient{
  background:
    radial-gradient(circle 28vw at var(--pointer-x) var(--pointer-y),rgba(180,170,145,.07),transparent 68%),
    radial-gradient(ellipse 52vw 40vh at 50% 46%,rgba(195,188,165,.13),transparent 62%),
    radial-gradient(ellipse 36vw 28vh at 43% 50%,rgba(127,153,146,.065),transparent 66%),
    radial-gradient(ellipse 70% 72% at 50% 42%,rgba(12,11,10,.85),rgba(4,4,6,.7) 54%,transparent 82%),
    linear-gradient(145deg,#050508,#020204);
}

/* 2. Center glow behind canvas — visible soft halo so bubbles float
      in light rather than sitting on dead black. */
.memory-space::after{
  inset:9% 9% 12%;
  background:
    radial-gradient(ellipse at 50% 47%,rgba(210,200,175,.08),transparent 48%),
    radial-gradient(ellipse at 49% 50%,rgba(127,153,146,.03),transparent 60%);
  filter:blur(28px);
  animation:memory-field-lift 16s ease-in-out infinite;
}

/* 3. Memory rings: slightly more visible so they contribute to the
      "living space" feel around the cluster. */
.memory-space::before{
  filter:blur(.3px);
}
@keyframes memory-rings-breathe{0%,100%{opacity:.32;transform:translate(-50%,-50%) scale(.985)}50%{opacity:.52;transform:translate(-50%,-50%) scale(1.028)}}

/* 4. Breathing animation — slightly larger swing so it's perceptible. */
@keyframes quiet-field-breathe{0%,100%{filter:brightness(.95);transform:scale(1)}50%{filter:brightness(1.025);transform:scale(1.014)}}

/* 5. Empty-state hero text: brighter, heavier — the visual anchor. */
.empty-copy h1{
  color:#ddd6ca;
  font-size:20px;
  font-weight:600;
  letter-spacing:-.01em;
}
.empty-copy p{
  color:#8a8378;
  font-size:13px;
}
.empty-cta{
  color:#c0b8ae;
  background:rgba(255,255,255,.055);
  border-color:rgba(255,255,255,.1);
}

/* 6. Empty state: fade peripheral UI so the hero text and canvas get all the attention. */
body:not([data-has-memories]) .composer{opacity:.35;transition:opacity .6s ease}
body:not([data-has-memories]) .composer:hover{opacity:.7}
body:not([data-has-memories]) .revisit{opacity:.18}
/* Once memories exist, bring everything back. */
body[data-has-memories] .composer{opacity:1;transition:opacity .8s ease}
body[data-has-memories] .revisit{opacity:1;transition:opacity .8s ease}

/* Bottom actions: main bubble setup stays tactile; revisit recedes into text. */
.empty-cta,
.revisit{
  color:#b0a89e;
  font-size:12px;
  font-weight:400;
  letter-spacing:0;
  line-height:normal;
}
.revisit{
  padding:4px 10px;
  background:transparent;
  border:0;
  box-shadow:none;
  backdrop-filter:none;
  opacity:1;
  text-shadow:0 0 18px rgba(255,255,255,.08);
  animation:revisit-text-breathe 3.6s ease-in-out infinite;
  transition:opacity .24s ease,color .24s ease,transform .24s ease;
}
.revisit:hover{
  color:#c0b8ae;
  background:transparent;
  border-color:transparent;
  box-shadow:none;
  opacity:1;
  transform:translateX(-50%) translateY(-1px);
}
.revisit:active{transform:translateX(-50%) scale(.98)}
@keyframes revisit-text-breathe{0%,100%{opacity:.7}50%{opacity:1}}
body[data-action-stack] .empty-copy.is-profile-missing{
  bottom:calc(4% + 48px);
  z-index:21;
}
body[data-action-stack] .revisit{
  bottom:2%;
}
body[data-action-stack] .revisit:hover{transform:translateX(-50%) translateY(-1px)}
@media(max-width:720px){
  body[data-action-stack] .revisit{
    bottom:76px;
  }
  body[data-action-stack] .empty-copy.is-profile-missing{
    bottom:118px;
  }
}

/* 7. Subtle cool tint in ambient background — breaks the all-warm
      monotone and adds "transparency" / air to the scene. */
.ambient i{
  opacity:.18;
  background:
    radial-gradient(ellipse 28% 48% at 17% 75%,rgba(154,143,120,.08) 0 38%,transparent 74%),
    radial-gradient(ellipse 34% 56% at 50% 78%,rgba(120,140,165,.055) 0 40%,transparent 76%),
    radial-gradient(ellipse 26% 45% at 84% 74%,rgba(180,166,135,.06) 0 38%,transparent 74%),
    linear-gradient(to top,rgba(255,255,255,.03),transparent 78%);
  filter:blur(32px) saturate(.62);
}

/* 8. Ambient before (star-field): slightly brighter so the background
      isn't a void — gives the scene a "night sky" quality. */
.ambient:before{
  opacity:.55;
  animation:memory-dust-drift 54s ease-in-out infinite alternate;
}

/* 9. Ambient noise texture: a touch more visible for depth. */
.ambient:after{
  opacity:.11;
}

/* 10. Topbar: slightly more transparent to not create a "band"
       across the top — let the space breathe into the header. */
.topbar{
  background:linear-gradient(to bottom,rgba(5,5,8,.55),rgba(5,5,8,.18),transparent);
}

@media(max-width:720px){
  .ambient:before{opacity:.42}
  .memory-space::after{filter:blur(22px)}
}

/* Final composition tuning: lift the memory field, lower the quiet actions. */
.memory-webgl-canvas{
  top:43.5%;
}
body[data-action-stack] .revisit{
  bottom:1%;
}
body[data-action-stack] .empty-copy.is-profile-missing{
  bottom:calc(2.5% + 42px);
}
@media(max-width:720px){
  .memory-webgl-canvas{
    top:42.5%;
  }
  body[data-action-stack] .revisit{
    bottom:66px;
  }
  body[data-action-stack] .empty-copy.is-profile-missing{
    bottom:104px;
  }
}

/* English typography final pass: tight UI, warmer long-form memory text. */
.empty-copy h1,
.storage-error h1{
  font-family:var(--font-sans);
  font-size:20px;
  font-weight:600;
  line-height:1.05;
  letter-spacing:-.01em;
}
.empty-copy p,
.privacy,
.storage-copy{
  letter-spacing:0;
}
.focus-text,
.inline-memory-editor{
  font-family:var(--font-serif);
  font-weight:400;
  letter-spacing:0;
}
.compose-action,
.empty-cta,
.revisit,
.plain-button,
.drawer-close,
.close-button{
  font-family:var(--font-sans);
  letter-spacing:0;
}
