.blessing-card-container{width:100%;height:var(--content-height);display:flex;justify-content:center;align-items:center;padding:0;position:relative}.blessing-card{width:100%;height:100%;background-color:var(--card-bg);display:flex;justify-content:center;align-items:center;padding:32px 24px;background-size:cover;background-position:center;position:relative;overflow:hidden}.blessing-text{font-size:22px;line-height:1.6;text-align:center;font-weight:500;padding:10px;max-width:100%;word-break:break-word;color:#444}.loading .blessing-text{opacity:.3}.loading-indicator{position:absolute;inset:0;display:flex;justify-content:center;align-items:center;background-color:#ffffffb3}.spinner{width:40px;height:40px;border:4px solid rgba(255,107,53,.3);border-radius:50%;border-top-color:var(--primary-color);animation:spin 1s ease-in-out infinite}@keyframes spin{to{transform:rotate(360deg)}}.download-button{position:absolute;bottom:16px;right:16px;background-color:#ffffffe6;border:1px solid rgba(0,0,0,.1);border-radius:20px;padding:8px 16px;font-size:14px;font-weight:700;color:#666;cursor:pointer;transition:all .2s ease;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.download-button:hover{background-color:#fff;transform:translateY(-1px);box-shadow:0 2px 8px #0000001a}.download-button:active{transform:translateY(0)}.blessing-card-actions{position:absolute;bottom:16px;right:16px;display:flex;flex-direction:row;gap:8px;z-index:2}.speak-button,.download-button{position:static;margin:0}.speak-button{background-color:#ffffffe6;border:1px solid rgba(0,0,0,.1);border-radius:20px;padding:8px 12px;font-size:18px;color:#666;cursor:pointer;transition:all .2s ease;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center}.speak-button:disabled{opacity:.5;cursor:not-allowed}.speak-loading{animation:speak-breath 1.2s infinite alternate;box-shadow:0 0 12px 2px #8ec6ff}@keyframes speak-breath{0%{box-shadow:0 0 8px #8ec6ff}to{box-shadow:0 0 24px 8px #8ec6ff}}.speak-cooldown{background:#f5f5f5;color:#aaa;box-shadow:none}.speak-cooldown-text{font-size:14px;color:#aaa;margin-left:2px}.speak-error{animation:speak-error-flash .4s 3;background:#fff0f0;color:#f44336;box-shadow:0 0 8px 2px #f44336}@keyframes speak-error-flash{0%,to{background:#fff0f0}50%{background:#f44336;color:#fff}}.speak-error-icon{color:#f44336;font-size:18px}.speak-playing{box-shadow:0 0 16px 4px #ffe066;background:#fffbe6;color:#ffb300;animation:speak-playing-glow 1s infinite alternate}@keyframes speak-playing-glow{0%{box-shadow:0 0 8px #ffe066}to{box-shadow:0 0 24px 8px #ffe066}}.speak-playing-icon{color:#ffb300;font-size:20px;animation:speak-playing-wave .8s infinite alternate}@keyframes speak-playing-wave{0%{transform:scale(1)}to{transform:scale(1.2)}}.speak-spinner{display:inline-block;width:18px;height:18px;border:3px solid #8ec6ff;border-radius:50%;border-top:3px solid #fff;animation:speak-spin .8s linear infinite;margin-right:2px}@keyframes speak-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.date-display{position:absolute;bottom:16px;left:16px;font-size:16px;color:#0009;display:flex;align-items:center;gap:8px}.holiday-tag{background-color:#ff6b35;color:#fff;padding:2px 8px;border-radius:12px;font-size:14px}.type-selector{display:flex;justify-content:space-between;gap:12px;margin-bottom:16px}.type-button{flex:1;height:50px;border:none;border-radius:24px;background-color:#fff;color:var(--text-color);font-size:18px;font-weight:400;cursor:pointer;transition:all .2s ease;box-shadow:0 1px 3px #00000014}.type-button.active{background-color:var(--button-active);color:#fff;font-weight:500}.type-button:active{transform:scale(.98)}.action-buttons{display:flex;flex-direction:column;gap:20px}.main-action-row{display:flex;justify-content:center;align-items:center;gap:40px;padding:20px 0}.action-button{border:none;background-color:var(--button-bg);color:var(--text-color);font-size:14px;font-weight:600;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease;box-shadow:0 1px 3px #0000000d}.action-button:active{transform:translateY(2px)}.main-button{width:80px;height:80px;border-radius:50%;background-color:var(--primary-color);color:#fff;font-size:16px;font-weight:500;box-shadow:0 4px 12px #8b45134d}.main-button .label{font-size:22px;font-weight:500}.main-button:hover{transform:translateY(-2px)}.main-button:active{transform:translateY(0)}.side-button{width:60px;height:60px;border-radius:50%;background-color:#fff;color:#666}.side-button .label{font-size:14px}.side-button:hover{background-color:#e8e8e8;transform:translateY(-1px)}.action-button:disabled{opacity:.5;cursor:not-allowed}.toast{position:fixed;top:20px;left:50%;transform:translate(-50%);padding:12px 24px;border-radius:24px;color:#fff;font-size:16px;font-weight:500;z-index:1000;animation:slideDown .3s ease-out;box-shadow:0 4px 12px #00000026}.toast-success{background-color:#4caf50}.toast-error{background-color:#f44336}.toast-info{background-color:var(--primary-color)}.toast-message{display:block}@keyframes slideDown{0%{opacity:0;transform:translate(-50%) translateY(-20px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.api-test{padding:20px;background-color:#f5f5f5;border-radius:8px;margin:20px}.api-test h2{color:#333;margin-bottom:20px}.test-section{margin-bottom:30px;padding:15px;background-color:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a}.test-section h3{color:#555;margin-bottom:15px}.test-button{padding:10px 20px;background-color:var(--primary-color);color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:16px}.test-button:disabled{background-color:#ccc;cursor:not-allowed}.test-result{margin-top:15px;padding:10px;background-color:#f9f9f9;border-left:4px solid var(--primary-color);border-radius:4px}.test-result a{color:var(--primary-color);word-break:break-all}.pwa-install-prompt{position:fixed;top:40px;right:20px;background:#fff;border-radius:8px;box-shadow:0 2px 12px #00000026;padding:12px;max-width:280px;max-height:80px;width:auto;height:fit-content;z-index:1000;animation:slideIn .3s ease-out}@keyframes slideIn{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}.pwa-install-content{display:flex;align-items:center;gap:8px}.pwa-install-icon{font-size:18px;flex-shrink:0}.pwa-install-text{flex:1;min-width:0}.pwa-install-text h3{margin:0 0 2px;font-size:14px;font-weight:600;color:#333}.pwa-install-text p{margin:0;font-size:12px;color:#666;line-height:1.3}.pwa-install-actions{display:flex;flex-direction:row;gap:6px;flex-shrink:0}.pwa-install-btn{padding:6px 12px;border:none;border-radius:6px;font-size:12px;font-weight:500;cursor:pointer;transition:all .2s ease;min-width:50px}.pwa-install-btn-primary{background:#1890ff;color:#fff}.pwa-install-btn-primary:hover{background:#40a9ff}.pwa-install-btn-primary:active{background:#096dd9}.pwa-install-btn-secondary{background:#f5f5f5;color:#666}.pwa-install-btn-secondary:hover{background:#e6f7ff;color:#1890ff}.pwa-install-btn-secondary:active{background:#d9d9d9}@media (prefers-color-scheme: dark){.pwa-install-prompt{background:#1f1f1f;opacity:80%;box-shadow:0 4px 20px #0000004d}.pwa-install-text h3{color:#fff}.pwa-install-text p{color:#ccc}.pwa-install-btn-secondary{background:#333;color:#ccc}.pwa-install-btn-secondary:hover{background:#444;color:#1890ff}}@media (max-width: 480px){.pwa-install-prompt{bottom:70px;right:10px;left:10px;max-width:none}.pwa-install-content{gap:10px}.pwa-install-actions{gap:8px}}.pwa-status{position:fixed;top:10px;right:10px;background:#ffffffe6;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:8px;padding:8px 12px;font-size:12px;z-index:999;box-shadow:0 2px 8px #0000001a;transition:all .3s ease}.pwa-status--standalone{background:#1890ff1a;border:1px solid rgba(24,144,255,.2)}.pwa-status--browser{background:#0000000d;border:1px solid rgba(0,0,0,.1)}.pwa-status-content{display:flex;align-items:center;gap:6px}.pwa-status-icon{font-size:14px}.pwa-status-text{font-weight:500;color:#333}.pwa-status--standalone .pwa-status-text{color:#1890ff}.pwa-status-details{margin-top:4px;padding-top:4px;border-top:1px solid rgba(0,0,0,.1)}.pwa-status-details small{color:#666;font-size:10px}@media (prefers-color-scheme: dark){.pwa-status{background:#000c;color:#fff}.pwa-status--standalone{background:#1890ff33;border-color:#1890ff4d}.pwa-status--browser{background:#ffffff1a;border-color:#fff3}.pwa-status-text{color:#fff}.pwa-status--standalone .pwa-status-text{color:#40a9ff}.pwa-status-details{border-top-color:#fff3}.pwa-status-details small{color:#ccc}}@media (max-width: 768px){.pwa-status{top:5px;right:5px;padding:6px 10px;font-size:11px}.pwa-status-icon{font-size:12px}}.app{display:flex;flex-direction:column;height:100vh;overflow:hidden}.app-header{height:50px;display:flex;justify-content:center;align-items:center;padding:0 16px;position:relative}.app-header h1{font-size:18px;font-weight:500;color:var(--text-color)}.app-header .header-icon{position:absolute;width:40px;height:40px;display:flex;align-items:center;justify-content:center;border-radius:50%;background-color:#e8e8e8;color:#555;font-size:18px}.app-header .header-left{left:16px}.app-header .header-right{right:16px}.app-header .header-logo{width:36px;height:36px;border-radius:12px;object-fit:cover;margin-right:12px;box-shadow:0 2px 8px #0000000f;background:#fff}.app-content{flex:1;display:flex;flex-direction:column;padding:0;overflow-y:auto;justify-content:space-between}.app-controls{min-height:var(--controls-height);background-color:var(--controls-bg);border-radius:var(--border-radius) var(--border-radius) 0 0;padding:24px 16px 32px;display:flex;flex-direction:column;box-shadow:0 -2px 10px #0000000d;margin-bottom:0}:root{--primary-color: #465dab;--text-color: #333333;--bg-color: #faf9f7;--card-bg: #ffffff;--header-bg: transparent;--controls-bg: #f2f2f2;--button-bg: #ffffff;--button-active: #8392c4;--header-height: 8vh;--content-height: 62vh;--controls-height: 30vh;--border-radius: 24px;--button-height: 60px;--button-spacing: 16px}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Source Han Sans CN,PingFang SC,Microsoft YaHei,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--text-color);font-size:16px;line-height:1.5;touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}#root{display:flex;flex-direction:column;min-height:100vh}
