*{box-sizing:border-box;margin:0;padding:0}html,body{min-height:100%}body{background:radial-gradient(circle at 50% 0,#cebdff1f,#0000 34%),#0e0e10;justify-content:center;min-height:100dvh;font-family:system-ui,-apple-system,Noto Sans TC,sans-serif;display:flex}#root{background:#131315;width:min(100vw,430px);min-height:100dvh;position:relative;overflow:hidden;box-shadow:0 0 0 1px #ffffff0f,0 24px 80px #00000080}@media (width<=430px){#root{width:100vw;box-shadow:none}}.modal-overlay{background:var(--skin-overlay,#13131599);-webkit-backdrop-filter:blur(4px);z-index:1000;width:min(100vw,430px);padding:20px 20px calc(96px + env(safe-area-inset-bottom)) 20px;justify-content:center;align-items:center;display:flex;position:fixed;top:0;bottom:0;left:50%;transform:translate(-50%)}.modal-panel{background:var(--skin-panel,#ffffff1f);-webkit-backdrop-filter:blur(28px)saturate(120%);border:1.5px solid var(--skin-border,#ffffff9e);box-shadow:0 8px 32px var(--skin-glow,color-mix(in srgb, var(--color-accent,#cebdff) 15%, transparent));width:100%;max-width:420px;max-height:calc(100dvh - 116px - env(safe-area-inset-bottom));color:var(--skin-ink,var(--color-text,#e4e2e4));font-family:var(--font-body,"Plus Jakarta Sans", sans-serif);border-radius:24px;padding:24px;overflow-y:auto}.glass-card{background:var(--skin-glass,#ffe4de38);-webkit-backdrop-filter:blur(28px)saturate(120%);border:1.5px solid var(--skin-border,#ffffff9e);box-shadow:0 8px 32px color-mix(in srgb, var(--color-accent,#cebdff) 8%, transparent);border-radius:20px;padding:16px}.pill-tag{color:var(--color-text,#e4e2e4);font-family:var(--font-body,"Plus Jakarta Sans", sans-serif);letter-spacing:.03em;cursor:pointer;background:#ffffff14;border:1px solid #ffffff1a;border-radius:9999px;align-items:center;gap:6px;padding:6px 16px;font-size:12px;font-weight:600;transition:background .2s,border-color .2s;display:inline-flex}.pill-tag:hover{background:#ffffff29}.pill-tag.active{background:color-mix(in srgb, var(--color-accent,#cebdff) 25%, transparent);border-color:color-mix(in srgb, var(--color-accent,#cebdff) 40%, transparent);color:var(--color-text,#e4e2e4)}@keyframes floatY{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}.modal-close-btn{width:36px;height:36px;color:var(--color-text,#e4e2e4);cursor:pointer;background:#ffffff14;border:1px solid #ffffff1a;border-radius:9999px;justify-content:center;align-items:center;display:flex;position:absolute;top:16px;right:16px}.modal-close-btn:hover{background:#ffffff29}.mode-selector-panel{flex-direction:column;gap:16px;display:flex;position:relative}.mode-selector-title{font-family:var(--font-display,"Playfair Display", serif);color:var(--color-text,#e4e2e4);margin-right:32px;font-size:24px;font-style:italic;font-weight:600}.mode-selector-subtitle{font-family:var(--font-body,"Plus Jakarta Sans", sans-serif);opacity:.75;font-size:14px}.mode-card{flex-direction:column;gap:8px;display:flex}.mode-card-icon{width:44px;height:44px;color:var(--color-accent,#cebdff);background:#ffffff14;border-radius:14px;justify-content:center;align-items:center;display:flex}.mode-card h3{font-family:var(--font-display,"Playfair Display", serif);font-size:18px;font-weight:600}.mode-card p{font-family:var(--font-body,"Plus Jakarta Sans", sans-serif);opacity:.8;font-size:14px;line-height:1.5}.mode-card-btn{border:1px solid color-mix(in srgb, var(--color-accent,#cebdff) 40%, transparent);background:color-mix(in srgb, var(--color-accent,#cebdff) 18%, transparent);color:var(--color-text,#e4e2e4);font-family:var(--font-body,"Plus Jakarta Sans", sans-serif);cursor:pointer;border-radius:9999px;align-self:flex-start;margin-top:4px;padding:10px 20px;font-weight:600}.mode-card-btn:hover{background:color-mix(in srgb, var(--color-accent,#cebdff) 28%, transparent)}.memory-box-panel{background:radial-gradient(circle at 18% 14%, var(--skin-glow,#ffffff1f), transparent 28%), var(--skin-panel,linear-gradient(160deg, #30223ef5, #12101cfa));border-radius:0;flex-direction:column;gap:16px;max-width:none;min-height:100dvh;max-height:100dvh;padding:84px 22px 120px;display:flex;position:relative}.memory-overlay{align-items:stretch;padding:0}.memory-box-header{justify-content:space-between;gap:18px;display:flex}.memory-box-header p:last-child{max-width:300px;color:var(--skin-muted,currentColor);margin-top:8px;font-size:13px;line-height:1.55}.memory-kicker{color:var(--color-accent,#cebdff);letter-spacing:.16em;text-transform:uppercase;font-size:11px}.memory-box-title{font-family:var(--font-display,"Playfair Display", serif);margin-right:0;font-size:34px;font-style:italic;font-weight:600;line-height:1.08}.memory-search-bar{background:var(--skin-glass,#ffffff1a);border-radius:9999px;align-items:center;gap:10px;padding:10px 18px;display:flex}.memory-search-bar input{color:var(--color-text,#e4e2e4);font-family:var(--font-body,"Plus Jakarta Sans", sans-serif);background:0 0;border:none;outline:none;width:100%}.memory-filter-pills{scrollbar-width:none;gap:8px;padding-bottom:4px;display:flex;overflow-x:auto}.memory-add-row{flex-direction:column;gap:8px;padding:12px;display:flex}.memory-composer{background:var(--skin-glass,#ffffff1a)}.memory-add-row input{color:var(--color-text,#e4e2e4);font-family:var(--font-body,"Plus Jakarta Sans", sans-serif);background:#ffffff0f;border:none;border-radius:12px;outline:none;padding:8px 12px}.memory-composer-row{justify-content:space-between;align-items:center;gap:8px;display:flex}.memory-image-attach{color:var(--skin-muted,#fff4f0b8);cursor:pointer;align-items:center;gap:6px;font-size:12px;display:flex;position:relative}.memory-image-attach input{opacity:0;width:1px;height:1px;position:absolute;inset:0;overflow:hidden}.memory-image-attach-name{text-overflow:ellipsis;white-space:nowrap;max-width:120px;overflow:hidden}.memory-add-row button,.memory-composer-row button{white-space:nowrap;border:1.5px solid color-mix(in srgb, var(--color-accent,#cebdff) 55%, transparent);background:color-mix(in srgb, var(--color-accent,#cebdff) 24%, transparent);color:var(--color-text,#e4e2e4);cursor:pointer;border-radius:9999px;padding:8px 16px;font-weight:600}.memory-list{grid-template-columns:1fr;gap:12px;padding-bottom:12px;list-style:none;display:grid;overflow-y:auto}.memory-item{background:radial-gradient(circle at 100% 0%, var(--skin-glow,transparent), transparent 40%), var(--skin-glass,linear-gradient(135deg, #ffffff24, #ffffff0f));border-radius:24px;flex-direction:column;gap:10px;padding:18px;display:flex;position:relative;box-shadow:inset 0 1px #ffffff1f,0 16px 40px #0000002e}.memory-item.pinned{border-color:color-mix(in srgb, var(--color-accent,#cebdff) 40%, transparent);background:radial-gradient(circle at 90% 0%, color-mix(in srgb, var(--color-accent,#cebdff) 22%, transparent), transparent 42%), linear-gradient(135deg, #ffffff2e, #ffffff14)}.memory-pin-badge{color:var(--color-accent,#cebdff);position:absolute;top:12px;right:12px}.memory-content{font-family:var(--font-body,"Plus Jakarta Sans", sans-serif);opacity:.9;line-height:1.55}.memory-quote{font-family:var(--font-display,"Playfair Display", serif);font-size:18px;font-style:italic;line-height:1.5}.memory-item-actions{align-items:center;gap:8px;display:flex}.memory-item-actions button{width:32px;height:32px;color:var(--color-text,#e4e2e4);cursor:pointer;background:#ffffff14;border:1px solid #ffffff1a;border-radius:9999px;justify-content:center;align-items:center;display:flex}.memory-type-pill{margin-right:auto}.memory-item-image{object-fit:cover;border-radius:16px;width:100%;max-height:160px;display:block}.memory-meta{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.memory-date{color:var(--skin-muted,#fff4f0b8);font-size:11px}.memory-tag-pill{padding:4px 10px;font-size:10px}.memory-item-editing{gap:8px}.memory-item-editing input{border:1px solid var(--skin-border,#fff6);color:var(--color-text,#e4e2e4);background:#ffffff14;border-radius:12px;outline:none;padding:8px 12px}.memory-empty-state{text-align:center;color:var(--skin-muted,#fff4f0b8);padding:32px 16px;font-size:13px;line-height:1.6;list-style:none}.settings-panel{background:radial-gradient(circle at 85% 10%, var(--skin-glow,#ffe4d26b), transparent 30%), radial-gradient(circle at 12% 78%, var(--skin-glass,#ffcedf47), transparent 28%), var(--skin-panel,linear-gradient(180deg, #fff7f0, #f7e9df 54%, #eadacf));max-width:none;min-height:100dvh;max-height:100dvh;color:var(--skin-ink,#372b29);border-radius:0;flex-direction:column;gap:22px;padding:84px 22px 120px;display:flex;position:relative;overflow-y:auto}.settings-overlay{align-items:stretch;padding:0}.settings-hero{color:var(--skin-ink,#372b29);justify-content:space-between;gap:18px;display:flex}.settings-hero p:last-child{max-width:300px;color:var(--skin-muted,#372b29a8);margin-top:8px;font-size:13px;line-height:1.55}.settings-kicker{color:var(--color-accent,#9f6e60);letter-spacing:.16em;text-transform:uppercase;font-size:11px}.settings-title{font-family:var(--font-display,"Playfair Display", serif);color:var(--skin-ink,#372b29);margin-right:0;font-size:36px;font-style:italic;font-weight:600;line-height:1.08}.settings-section{flex-direction:column;gap:12px;display:flex}.settings-section-header{color:var(--color-accent,#9f6e60);align-items:center;gap:10px;display:flex}.settings-section-header .material-symbols-outlined{background:var(--skin-glass,#ffffff8a);width:36px;height:36px;box-shadow:0 8px 22px var(--skin-glow,#9f6e6029);border-radius:9999px;justify-content:center;align-items:center;display:inline-flex}.settings-section-header h3{font-family:var(--font-display,"Playfair Display", serif);color:var(--skin-ink,#372b29);letter-spacing:.02em;font-size:16px;font-weight:600}.settings-section-body{flex-direction:column;gap:12px;display:flex}.settings-section-body,.settings-list,.settings-privacy-btn{background:var(--skin-glass,#ffffff7a);border-color:var(--skin-border,#ffffff94);box-shadow:0 18px 48px var(--skin-glow,#9f6e601f)}.settings-input{background:color-mix(in srgb, var(--skin-glass,#ffffff8f) 80%, transparent);border:1px solid var(--skin-border,#9f6e6024);color:var(--skin-ink,#372b29);font-family:var(--font-body,"Plus Jakarta Sans", sans-serif);border-radius:14px;outline:none;padding:10px 14px}.settings-input:focus{border-color:#9f6e6080}.settings-save-btn{border:1px solid var(--skin-border,#9f6e6033);background:linear-gradient(135deg, var(--color-primary,#a56f61), var(--color-accent,#d6a494));color:var(--skin-ink,#fffaf6);font-family:var(--font-body,"Plus Jakarta Sans", sans-serif);cursor:pointer;border-radius:9999px;align-self:flex-start;padding:10px 22px;font-weight:600}.settings-save-btn:disabled{opacity:.5;cursor:not-allowed}.setup-steps{color:var(--skin-ink,#372b29);flex-direction:column;gap:10px;margin:0 0 16px;padding-left:22px;font-size:14px;line-height:1.6;display:flex}.setup-steps code{background:var(--skin-glass,#fff6);border-radius:6px;padding:2px 6px;font-size:12px}.setup-deploy-btn{margin-bottom:8px;text-decoration:none;display:inline-flex}.voice-room-actions{flex-wrap:wrap;gap:10px;display:flex}.voice-room-toggle-row{justify-content:space-between;align-items:center;gap:16px;display:flex}.voice-room-switch{flex-shrink:0;width:44px;height:26px;display:inline-flex;position:relative}.voice-room-switch input{opacity:0;cursor:pointer;margin:0;position:absolute;inset:0}.voice-room-switch-track{background:var(--skin-glass,#9f6e6033);border:1px solid var(--skin-border,#9f6e6033);border-radius:9999px;transition:background .2s;position:absolute;inset:0}.voice-room-switch-track:before{content:"";background:var(--skin-ink,#fffaf6);border-radius:50%;width:20px;height:20px;transition:transform .2s;position:absolute;top:2px;left:2px}.voice-room-switch input:checked+.voice-room-switch-track{background:linear-gradient(135deg, var(--color-primary,#a56f61), var(--color-accent,#d6a494))}.voice-room-switch input:checked+.voice-room-switch-track:before{transform:translate(18px)}.settings-list{padding:0;overflow:hidden}.settings-list-item{border:none;border-bottom:1px solid var(--skin-border,#9f6e601a);width:100%;color:var(--skin-ink,#372b29);text-align:left;cursor:pointer;background:0 0;align-items:center;gap:14px;padding:16px;display:flex;position:relative}.settings-list-item:last-child{border-bottom:none}.settings-list-item-label{cursor:pointer}.settings-list-icon{background:var(--skin-glass,#9f6e601f);width:36px;height:36px;color:var(--color-accent,#9f6e60);border-radius:9999px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.settings-list-text{flex-direction:column;gap:2px;display:flex}.settings-list-title{font-family:var(--font-body,"Plus Jakarta Sans", sans-serif);font-weight:600}.settings-list-desc{color:var(--skin-muted,#fff4f0b8);font-size:12px}.settings-file-input{opacity:0;cursor:pointer;position:absolute;inset:0}.settings-toast{left:50%;bottom:calc(96px + env(safe-area-inset-bottom,0px));z-index:1000;font-family:var(--font-body,"Plus Jakarta Sans", sans-serif);color:#fffaf6;border-radius:9999px;align-items:center;gap:8px;padding:12px 20px;font-size:14px;font-weight:600;animation:.2s ease-out settings-toast-in;display:flex;position:fixed;transform:translate(-50%);box-shadow:0 12px 32px #0000003d}.settings-toast-success{background:linear-gradient(135deg,#4f9d6e,#6fbb8a)}.settings-toast-error{background:linear-gradient(135deg,#c4554b,#d97a6f)}@keyframes settings-toast-in{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}@media (prefers-reduced-motion:reduce){.settings-toast{animation:none}}.gallery-overlay{align-items:stretch;padding:0}.gallery-panel{background:radial-gradient(circle at 78% 8%, var(--skin-glow,transparent), transparent 30%), var(--skin-panel,var(--gradient-bg,#131315));border-radius:0;min-height:100dvh;max-height:100dvh;padding:84px 24px 104px;position:relative}.gallery-header{justify-content:space-between;gap:18px;margin-bottom:22px;display:flex}.gallery-kicker{color:var(--color-accent,#cebdff);letter-spacing:.12em;text-transform:uppercase;font-size:12px}.gallery-header h2{font-family:var(--font-display,"Playfair Display", serif);color:var(--color-text,#fff);margin-top:4px;font-size:36px;line-height:1.1}.gallery-header p:last-child{max-width:300px;color:var(--skin-muted,currentColor);margin-top:8px;font-size:14px;line-height:1.55}.gallery-tabs{z-index:2;justify-content:center;margin-bottom:24px;display:flex;position:sticky;top:0}.gallery-tabs:before{content:"";background:var(--skin-glass,#ffffff1f);-webkit-backdrop-filter:blur(24px);border-radius:9999px;position:absolute;inset:0}.gallery-tabs button{z-index:1;min-height:40px;color:var(--color-text,#fff);letter-spacing:.04em;cursor:pointer;background:0 0;border:none;border-radius:9999px;padding:0 16px;font-size:12px;font-weight:700;position:relative}.gallery-tabs .active{background:var(--skin-tab-active,#ffffff2e)}.gallery-masonry{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.gallery-item{background:0 0;border:none;border-radius:18px;max-width:100%;overflow:hidden}.gallery-item img{object-fit:cover;background:var(--skin-glass,#ffffff1f);width:100%;height:140px;display:block}.gallery-item-fallback{background:var(--skin-glass,#ffffff1f);width:100%;height:140px;color:var(--skin-muted,#fff4f0b8);justify-content:center;align-items:center;display:flex}.gallery-item-actions{justify-content:space-between;align-items:center;gap:8px;padding:10px;display:flex}.gallery-item-actions button{min-height:36px;color:var(--color-text,#fff);cursor:pointer;background:#ffffff1a;border:none;border-radius:9999px;padding:0 12px;font-size:11px}.gallery-fab{right:calc(50% - min(50vw,215px) + 24px);bottom:calc(110px + env(safe-area-inset-bottom));z-index:1002;background:linear-gradient(135deg, #fffeff, var(--color-accent,#cebdff));color:#281719;width:56px;height:56px;box-shadow:0 4px 20px color-mix(in srgb, var(--color-accent,#cebdff) 40%, transparent);cursor:pointer;border-radius:9999px;justify-content:center;align-items:center;display:flex;position:fixed}.gallery-fab input{opacity:0;cursor:pointer;position:absolute;inset:0}.settings-privacy-btn{width:100%;color:var(--color-text,#e4e2e4);font-family:var(--font-body,"Plus Jakarta Sans", sans-serif);cursor:pointer;background:#ffffff14;border:none;align-items:center;gap:10px;display:flex}.settings-chevron{opacity:.5;margin-left:auto}.material-symbols-outlined{letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;vertical-align:middle;direction:ltr;font-family:Material Symbols Outlined;font-size:24px;font-style:normal;font-weight:400;line-height:1;display:inline-block}.home-screen{background-position:50%;background-size:cover;background-color:var(--color-bg,#160d0d);background-image:var(--gradient-bg,none);width:100%;height:100vh;font-family:var(--font-body,"Plus Jakarta Sans", sans-serif);flex-direction:column;display:flex;position:relative;overflow:hidden}.home-bg-photo{z-index:0;background-image:var(--bg-url,none);filter:var(--bg-filter,none);background-position:50%;background-size:cover;position:absolute;inset:0}.home-vignette{z-index:1;pointer-events:none;background:radial-gradient(90% 80% at 50% 42%,#0000 62%,#0c090a2e 100%);position:absolute;inset:0}.scrim{pointer-events:none;z-index:1;position:absolute;left:0;right:0}.scrim-top{background:linear-gradient(#140a0a29,#140a0a00);height:26%;top:0}.scrim-bottom{background:linear-gradient(#140a0a00,#140a0a29);height:26%;bottom:0}.sparkles-field{pointer-events:none;z-index:1;position:absolute;inset:0;overflow:hidden}.sparkle-star{background:var(--color-accent,#d4af37);box-shadow:0 0 4px 1px color-mix(in srgb, var(--color-accent,#d4af37) 60%, transparent);opacity:0;border-radius:50%;animation:3.2s ease-in-out infinite sparkleTwinkle;position:absolute}@keyframes sparkleTwinkle{0%,to{opacity:0;transform:scale(.6)}50%{opacity:.85;transform:scale(1)}}.home-content{z-index:2;flex-direction:column;flex:1;justify-content:space-between;align-items:center;gap:16px;padding:16px 20px 106px;display:flex;position:relative;overflow-y:auto}.home-switcher-row{justify-content:center;width:100%;display:flex}.avatar-bar{-webkit-backdrop-filter:blur(20px)saturate(120%);background:#ffffff1a;border:1px solid #ffffff1f;border-radius:9999px;gap:8px;padding:6px;display:flex}.avatar{background:var(--color-primary,#5c1a1a);width:32px;height:32px;color:var(--color-text,#fff);opacity:.55;cursor:pointer;font-family:var(--font-display,"Playfair Display", serif);border:none;border-radius:50%;transition:opacity .2s,box-shadow .2s}.avatar.active{opacity:1;box-shadow:0 0 0 2px color-mix(in srgb, var(--color-accent,#d9a86c) 80%, transparent)}.time-weather{text-align:center;color:var(--color-text,#fff);flex-direction:column;align-items:center;gap:6px;margin-top:56px;display:flex}.clock-display{font-family:var(--font-display,"Playfair Display", serif);letter-spacing:-.01em;text-shadow:0 2px 16px #00000059;font-size:32px;font-weight:500;line-height:1}.weather-display{opacity:.88;align-items:center;gap:6px;font-size:12px;display:inline-flex}.voice-presence{flex-direction:column;align-items:center;gap:8px;display:flex}.home-waveform{justify-content:center;align-items:center;gap:5px;height:22px;display:flex}.home-waveform-bar{background:var(--skin-ink,#fff8f6);opacity:.35;border-radius:99px;width:3px;transition:opacity .3s,transform .3s;animation:none;transform:scaleY(.5)}.home-waveform.speaking .home-waveform-bar{opacity:.6;animation:2.4s ease-in-out infinite homeWaveDrift}.home-waveform-bar:first-child{height:8px;animation-delay:0s}.home-waveform-bar:nth-child(2){height:14px;animation-delay:.2s}.home-waveform-bar:nth-child(3){height:18px;animation-delay:.4s}.home-waveform-bar:nth-child(4){height:12px;animation-delay:.1s}.home-waveform-bar:nth-child(5){height:9px;animation-delay:.3s}@keyframes homeWaveDrift{0%,to{opacity:.45;transform:scaleY(.6)}50%{opacity:.9;transform:scaleY(1)}}.voice-presence-status{letter-spacing:.04em;color:var(--skin-ink,#fff8f6);opacity:.9;text-shadow:0 1px 2px #3c231e33;font-size:12px}.voice-presence-replay{cursor:pointer;text-decoration:underline;-webkit-text-decoration-color:color-mix(in srgb, var(--color-accent,#d9a86c) 70%, transparent);text-decoration-color:color-mix(in srgb, var(--color-accent,#d9a86c) 70%, transparent);text-underline-offset:3px;opacity:.92;background:0 0;border:none}.hero-companion-card{z-index:2;box-sizing:border-box;text-align:left;-webkit-backdrop-filter:blur(10px)saturate(125%);background:#6e2d463d;border:1.5px solid #ffe8ee80;border-radius:20px;flex-direction:column;justify-content:center;gap:3px;width:168px;padding:14px;display:flex;position:absolute;top:108px;left:28px;box-shadow:0 8px 22px #5a183a38}.hero-companion-label{letter-spacing:.08em;text-transform:uppercase;color:#fff8fae0;text-shadow:0 1px 2px #32101e2e;margin:0;font-family:Manrope,Noto Sans TC,sans-serif;font-size:10px;font-weight:600}.hero-house-name{font-family:var(--font-display,"Playfair Display", serif);color:#fff7fa;text-shadow:0 1px 2px #32101e2e;margin:0;font-size:20px;font-weight:700;line-height:1.1}.hero-status-text{color:#ffeef4d9;text-shadow:0 1px 2px #32101e2e;margin:0;font-size:13px;font-style:italic;line-height:1.35}.greeting-block{justify-content:center;width:100%;display:flex}.greeting-card{-webkit-backdrop-filter:blur(20px)saturate(140%);color:#551c34;background:linear-gradient(165deg,#ffd6e447,#d8a8bc38);border:1px solid #ffffff75;border-radius:24px;align-items:flex-start;gap:12px;width:100%;max-width:380px;padding:18px 20px;display:flex;box-shadow:0 10px 28px #5a183a3d}.greeting-card-icon{color:#c2557f;filter:drop-shadow(0 0 4px #c2557f4d);flex-shrink:0;margin-top:2px}.greeting-card-body{flex-direction:column;gap:10px;display:flex}.greeting-text{font-family:var(--font-display,"Playfair Display", serif);color:#551c34;margin:0;font-size:16px;font-style:italic;line-height:1.5}.greeting-card-kicker{font-family:var(--font-display,"Playfair Display", serif);color:#a14868;opacity:.85;margin:0;font-size:12px;font-style:italic}.greeting-card-action{cursor:pointer;font-family:var(--font-display,"Playfair Display", serif);color:#a14868;opacity:.9;text-underline-offset:3px;background:0 0;border:none;align-self:flex-start;margin:0;padding:0;font-size:12px;font-style:italic;-webkit-text-decoration:underline #a1486866;text-decoration:underline #a1486866}.floating-anim{animation:4s ease-in-out infinite floatY}.bottom-bar{left:50%;bottom:calc(14px + env(safe-area-inset-bottom));z-index:1100;background:linear-gradient(160deg, var(--skin-glow,#ffc49614), transparent 50%), var(--skin-tab,#3a1c2273);-webkit-backdrop-filter:blur(26px)saturate(150%);border:1px solid var(--skin-border,#e8c99738);width:calc(min(100vw,430px) - 28px);box-shadow:0 8px 28px var(--skin-glow,color-mix(in srgb, var(--color-accent,#d9a86c) 14%, transparent));color:var(--skin-ink,#f3e3cd);border-radius:9999px;justify-content:space-around;align-items:center;gap:4px;margin:0;padding:8px 12px;display:flex;position:fixed;transform:translate(-50%)}.bottom-tab{min-width:0;height:52px;color:var(--skin-ink,#f3e3cd);text-shadow:0 1px 3px #28141459;opacity:.75;cursor:pointer;background:0 0;border:none;border-radius:20px;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:2px;transition:opacity .2s,background .2s,transform .15s;display:flex}.bottom-tab:disabled{opacity:.35;cursor:not-allowed}.bottom-tab .material-symbols-outlined{font-size:22px}.bottom-tab-label{letter-spacing:.02em;font-size:10px;font-weight:700}.bottom-tab:hover{opacity:1}.bottom-tab:active{transform:scale(.92)}.bottom-tab:focus-visible{outline:2px solid var(--skin-ink,#fff7e8);outline-offset:2px}.btn-talk{opacity:1;background:radial-gradient(circle, var(--skin-tab-active,#ffc49666), color-mix(in srgb, var(--color-accent,#d9a86c) 45%, transparent));border:1px solid var(--skin-border,#fff6);width:56px;height:56px;box-shadow:0 6px 18px var(--skin-glow,#ffc49659);border-radius:50%;flex:0 0 56px;transform:translateY(-10px)}.btn-talk .bottom-tab-label{display:none}.btn-talk .material-symbols-outlined{font-size:24px}.btn-talk:active{transform:translateY(-10px)scale(.92)}.bottom-tab.active{opacity:1;background:var(--skin-tab-active,#ffffff29)}.bottom-tab.active .bottom-tab-label{color:var(--skin-ink,#fff7e8)}.deep-link-label{display:none}.frost-overlay{background:radial-gradient(circle at 70% 10%, var(--skin-glow,#ffffff1a), transparent 32%), var(--skin-overlay,#1a1c1d40)}.frost-modal{background:var(--skin-panel,#faf9fa);border:1px solid var(--skin-border,#fff9);color:var(--skin-ink,#1a1c1d);box-shadow:0 20px 60px -10px var(--skin-glow,#6c586d40);font-family:DM Sans,Noto Sans TC,sans-serif}.summon-overlay{align-items:stretch;padding:0}.summon-panel{background:radial-gradient(circle at 82% 18%, var(--skin-glow,#d8bfd861), transparent 28%), radial-gradient(circle at 10% 74%, var(--skin-glass,#b8cac93d), transparent 30%), var(--skin-panel,linear-gradient(to bottom, #ffffff6b, #faf9fad6));border-radius:0;min-height:100dvh;max-height:100dvh;padding:84px 24px 120px}.summon-header{align-items:flex-start;gap:12px;margin-bottom:24px;display:flex}.summon-cloud{color:#6c586d;filter:drop-shadow(0 0 12px #6c586d33)}.summon-title{margin:0 36px 8px 0;font-size:32px;line-height:1.15}.summon-title:after{content:" · " var(--skin-name,"Sanctuary");letter-spacing:.16em;text-transform:uppercase;color:var(--color-accent,#6c586d);margin-top:8px;font-family:DM Sans,Noto Sans TC,sans-serif;font-size:11px;font-style:normal;font-weight:700;display:block}.summon-subtitle{max-width:300px;font-style:italic;line-height:1.55}.summon-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.summon-card{text-align:left;cursor:pointer;justify-content:space-between;align-items:flex-start;min-height:190px}.summon-card:active{background:#ffffff9e;transform:scale(.97)}.summon-card-copy{margin-top:auto}.summon-card-copy p{letter-spacing:.12em;text-transform:uppercase;color:#6c586da8;font-size:10px;line-height:1.3}.summon-card-glow-left{inset:auto auto -24px -24px}.summon-card-dashed{background:#ffffff3d;border-style:dashed}.summon-card-disabled{opacity:.4;cursor:not-allowed}.summon-card-disabled:active{transform:none}.summon-pen{color:#6c586d52;position:absolute;bottom:18px;right:18px}.summon-status{color:#4b454b;letter-spacing:.05em;border-radius:9999px;flex-direction:row;justify-content:space-between;align-items:center;min-height:auto;margin-top:24px;padding:14px 18px;font-size:11px;font-style:italic}.summon-status-left,.summon-bars{align-items:center;gap:10px;display:flex}.summon-status-dot{background:#6c586da3;border-radius:9999px;width:7px;height:7px;box-shadow:0 0 8px #6c586d66}.summon-bars span{background:#6c586d66;border-radius:9999px;width:22px;height:4px;display:block}.summon-bars .dim{background:#4b454b1f;width:12px}.summon-legacy-actions{gap:10px;margin-top:18px;display:flex}.frost-modal .modal-close-btn{color:#6c586d;background:#ffffff80;border:1px solid #ffffffb3}.frost-modal .modal-close-btn:hover{background:#fffc}.frost-title{color:#1a1c1d;margin-right:32px;font-family:Playfair Display,Noto Serif TC,serif;font-size:24px;font-style:italic;font-weight:600}.frost-subtitle{color:#4b454b;opacity:.85;font-family:DM Sans,Noto Sans TC,sans-serif;font-size:14px}.frost-card-mode{-webkit-backdrop-filter:blur(16px)saturate(120%);background:#fff6;border:1px solid #fff9;border-radius:24px;flex-direction:column;gap:8px;padding:16px;transition:box-shadow .3s,border-color .3s;display:flex;position:relative;overflow:hidden;box-shadow:0 10px 30px -10px #6c586d26}.frost-card-mode:hover{border-color:#d8bfd8cc;box-shadow:0 15px 40px -5px #d8bfd866}.frost-card-glow{filter:blur(24px);pointer-events:none;background:#6c586d14;border-radius:9999px;width:96px;height:96px;position:absolute;top:-24px;right:-24px}.frost-card-icon{color:#6c586d;background:#ffffff80;border:1px solid #ffffffb3;border-radius:14px;justify-content:center;align-items:center;width:44px;height:44px;display:flex}.frost-card-mode h3{color:#1a1c1d;font-family:Playfair Display,Noto Serif TC,serif;font-size:18px;font-style:italic;font-weight:600}.frost-card-mode p{color:#4b454b;font-family:DM Sans,Noto Sans TC,sans-serif;font-size:14px;line-height:1.5}.frost-card-btn{color:#6c586d;cursor:pointer;background:#6c586d1f;border:1px solid #6c586d4d;border-radius:9999px;align-self:flex-start;margin-top:4px;padding:10px 20px;font-family:DM Sans,Noto Sans TC,sans-serif;font-weight:600}.frost-card-btn:hover{background:#6c586d33}@keyframes drift{0%{transform:translateY(0)translate(0)}50%{transform:translateY(-8px)translate(4px)}to{transform:translateY(0)translate(0)}}.animate-drift{animation:8s ease-in-out infinite drift}
