.tile-header{justify-content:space-between;gap:8px;margin-bottom:12px;padding-bottom:12px;border-bottom:1px solid #e4e4e7}.tile-header,.tile-header-main{display:flex;align-items:flex-start}.tile-header-main{gap:10px;min-width:0}.tile-header-icon{display:flex;height:28px;align-items:center;flex-shrink:0}.tile-header-text{flex:1}.tile-icon{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;color:#52525b}.tile-icon-svg{height:1.25rem;width:1.25rem;stroke-width:2}.tile-title{font-size:.9375rem;font-weight:600;color:#18181b;margin:0;letter-spacing:-.01em;line-height:1.35}.tile-hint{margin:2px 0 0;font-size:.75rem;line-height:1.4;color:#71717a}.tile-divider{display:none}.tile-content{flex:1;min-height:0;font-size:.875rem;color:#52525b;line-height:1.55}.tile-empty{display:flex;align-items:center;justify-content:center;text-align:center;min-height:5rem;padding:1.5rem 0;font-size:.875rem;color:#a1a1aa}.tile-stat{text-align:center;padding:.75rem;border-radius:.75rem;background:#f4f4f5}.tile-stat-value{font-size:2rem;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.02em;line-height:1.1}.tile-stat-label{margin-top:.25rem;font-size:.875rem;color:#71717a}.dashboard-tile.tile-error .tile-icon,.tile-error .tile-icon{color:#dc2626}.tile-edit-panel{display:flex;flex-direction:column;gap:1rem}.tile-edit-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.5rem;padding-top:.5rem}.tile-goal-row{padding:.75rem;border:1px solid #e4e4e7;border-radius:.75rem;background:#fafafa}.tile-goal-row.is-done{background:#f0fdf4;border-color:#bbf7d0}@media (prefers-color-scheme:dark){.tile-header{border-bottom-color:#3f3f46}.tile-title{color:#fafafa}.tile-content,.tile-hint,.tile-icon{color:#a1a1aa}.tile-stat{background:#27272a}.tile-stat-label{color:#a1a1aa}.tile-goal-row{border-color:#3f3f46;background:#18181b}.tile-goal-row.is-done{background:rgb(20 83 45/.2);border-color:rgb(34 197 94/.3)}}@media (prefers-reduced-motion:reduce){.tile-shell-interactive{transition:none}}.react-grid-layout{position:relative;transition:height .2s ease}.react-grid-item{transition:all .2s ease;transition-property:left,top,width,height}.react-grid-item img{pointer-events:none;user-select:none}.react-grid-item.cssTransforms{transition-property:transform,width,height}.react-grid-item.resizing{transition:none;z-index:1;will-change:width,height}.react-grid-item.react-draggable-dragging{transition:none;z-index:3;will-change:transform}.react-grid-item.dropping{visibility:hidden}.react-grid-item.react-grid-placeholder{background:red;opacity:.2;transition-duration:.1s;z-index:2;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.react-grid-item.react-grid-placeholder.placeholder-resizing{transition:none}.react-grid-item>.react-resizable-handle{position:absolute;width:20px;height:20px}.react-grid-item>.react-resizable-handle:after{content:"";position:absolute;right:3px;bottom:3px;width:5px;height:5px;border-right:2px solid rgba(0,0,0,.4);border-bottom:2px solid rgba(0,0,0,.4)}.react-resizable-hide>.react-resizable-handle{display:none}.react-grid-item>.react-resizable-handle.react-resizable-handle-sw{bottom:0;left:0;cursor:sw-resize;transform:rotate(90deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-se{bottom:0;right:0;cursor:se-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-nw{top:0;left:0;cursor:nw-resize;transform:rotate(180deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-ne{top:0;right:0;cursor:ne-resize;transform:rotate(270deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-e,.react-grid-item>.react-resizable-handle.react-resizable-handle-w{top:50%;margin-top:-10px;cursor:ew-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-n,.react-grid-item>.react-resizable-handle.react-resizable-handle-s{left:50%;margin-left:-10px;cursor:ns-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}.react-resizable{position:relative}.react-resizable-handle{position:absolute;width:20px;height:20px;background-repeat:no-repeat;background-origin:content-box;box-sizing:border-box;background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2IDYiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYwMCIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI2cHgiIGhlaWdodD0iNnB4Ij48ZyBvcGFjaXR5PSIwLjMwMiI+PHBhdGggZD0iTSA2IDYgTCAwIDYgTCAwIDQuMiBMIDQgNC4yIEwgNC4yIDQuMiBMIDQuMiAwIEwgNiAwIEwgNiA2IEwgNiA2IFoiIGZpbGw9IiMwMDAwMDAiLz48L2c+PC9zdmc+");background-position:100% 100%;padding:0 3px 3px 0}.react-resizable-handle-sw{bottom:0;left:0;cursor:sw-resize;transform:rotate(90deg)}.react-resizable-handle-se{bottom:0;right:0;cursor:se-resize}.react-resizable-handle-nw{top:0;left:0;cursor:nw-resize;transform:rotate(180deg)}.react-resizable-handle-ne{top:0;right:0;cursor:ne-resize;transform:rotate(270deg)}.react-resizable-handle-e,.react-resizable-handle-w{top:50%;margin-top:-10px;cursor:ew-resize}.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-resizable-handle-n,.react-resizable-handle-s{left:50%;margin-left:-10px;cursor:ns-resize}.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}.customizable-dashboard-grid{min-height:100%;position:relative;padding:1rem 0 1.5rem}.masonry-grid{display:flex;margin-left:-16px;width:auto}.masonry-grid_column{padding-left:16px;background-clip:padding-box}.masonry-grid_column>div{margin-bottom:16px}.routine-popup-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.routine-popup-header .routine-close-btn,.routine-popup-header .routine-edit-btn{background:none;border:none;cursor:pointer;font-size:22px;color:#888;transition:color .2s}.routine-popup-header .routine-edit-btn:hover{color:#1976d2}.routine-popup-header .routine-close-btn{margin-left:8px}.routine-popup-header .routine-close-btn:hover{color:#d32f2f}.music-player{display:flex;align-items:center;gap:16px;margin-bottom:16px}.album-art{flex-shrink:0}.album-art img{width:48px;height:48px;border-radius:12px;object-fit:cover;box-shadow:var(--shadow-sm)}.track-info{flex:1;min-width:0}.track-title{font-weight:700;font-size:17px;color:var(--text-primary);margin-bottom:2px}.track-artist,.track-title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.track-artist{font-size:14px;color:var(--text-secondary)}.play-button{background:var(--surface-primary);border:none;border-radius:50%;width:38px;height:38px;box-shadow:var(--shadow-sm);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all var(--transition-fast);color:var(--primary-main)}.play-button:hover{background:var(--surface-hover);transform:scale(1.05)}.play-button:active{transform:scale(.95)}.progress-container{margin-top:12px}.progress-bar{height:4px;background:var(--surface-secondary);border-radius:2px;position:relative;margin-bottom:8px}.progress-fill{height:4px;background:var(--primary-main);border-radius:2px;position:absolute;top:0;left:0;transition:width .3s ease}.time-display{display:flex;justify-content:space-between;font-size:12px;color:var(--text-tertiary)}.error,.loading,.no-music{text-align:center;padding:20px;color:var(--text-secondary)}.error{color:var(--error-main)}@media (max-width:768px){.music-tile{padding:16px}.controls{flex-direction:column;gap:8px}.volume-control{width:100%}.quick-actions{justify-content:center}}.ai-chat-tile{background:rgba(255,255,255,.85);border-radius:22px;box-shadow:0 8px 32px 0 rgba(31,38,135,.15);backdrop-filter:blur(16px) saturate(180%);-webkit-backdrop-filter:blur(16px) saturate(180%);border:1px solid rgba(255,255,255,.18);overflow:hidden;display:flex;flex-direction:column;height:100%;min-height:420px;position:relative;transition:box-shadow .2s}.ai-chat-tile:hover{box-shadow:0 12px 40px 0 rgba(31,38,135,.22)}.chat-header{min-height:64px;background:rgba(255,255,255,.5);backdrop-filter:blur(8px);padding:18px 24px 10px;justify-content:space-between;border-bottom:1px solid rgba(0,0,0,.04);flex-shrink:0}.chat-header,.chat-title{display:flex;align-items:center}.chat-title{gap:12px}.chat-title h3{margin:0;color:#222;font-size:20px;font-weight:700;letter-spacing:.5px}.model-indicator{background:rgba(0,0,0,.06);padding:4px 12px;border-radius:14px;font-size:12px;color:#555;font-weight:500}.chat-controls{display:flex;gap:10px}.control-btn{background:rgba(0,0,0,.04);border:none;color:#555;width:36px;height:36px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s,color .2s}.control-btn:hover{background:rgba(0,0,0,.09);color:#1976d2}.settings-panel{background:rgba(255,255,255,.95);padding:18px 24px;border-bottom:1px solid rgba(0,0,0,.04);animation:slideDown .3s ease}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.setting-group{margin-bottom:16px;display:flex;align-items:center;gap:12px}.setting-group:last-child{margin-bottom:0}.setting-group label{font-size:15px;color:#333;font-weight:500;display:flex;align-items:center;gap:8px;cursor:pointer}.setting-group select{padding:6px 10px;border:1px solid #ddd;border-radius:6px;font-size:13px;background:white;color:#333}.setting-group input[type=checkbox]{width:16px;height:16px;accent-color:#667eea}.chat-messages{flex:1 1 auto;overflow-y:auto;padding:24px 24px 0;background:none;min-height:80px}.chat-messages::-webkit-scrollbar{width:6px}.chat-messages::-webkit-scrollbar-track{background:rgba(255,255,255,.1);border-radius:3px}.chat-messages::-webkit-scrollbar-thumb{background:rgba(255,255,255,.3);border-radius:3px}.chat-messages::-webkit-scrollbar-thumb:hover{background:rgba(255,255,255,.5)}.empty-state{text-align:center;color:rgba(255,255,255,.8);padding:40px 20px}.empty-state p{margin:5px 0;font-size:14px}.empty-state p:first-child{font-size:16px;font-weight:600;margin-bottom:10px}.message{margin-bottom:18px;display:flex;flex-direction:column;align-items:flex-start}.message.user{align-items:flex-end}.message-content{background:rgba(255,255,255,.7);border-radius:16px;padding:12px 18px;font-size:15px;color:#222;box-shadow:0 2px 8px rgba(31,38,135,.06);max-width:80%;word-break:break-word}.message.user .message-content{background:#e3f2fd;color:#1976d2}.message.ai .message-content{background:rgba(255,255,255,.95);color:#333}.message-text{font-size:14px;line-height:1.4;margin-bottom:6px;word-wrap:break-word}.message-meta{display:flex;gap:10px;font-size:12px;color:#888;margin-top:4px}.timestamp{font-weight:500}.model-used{background:#f0f0f0;border-radius:8px;padding:2px 8px;color:#555;font-size:11px}.voice-controls{display:flex;gap:8px;margin-top:6px}.voice-btn{background:rgba(0,0,0,.04);border:none;color:#1976d2;width:32px;height:32px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s,color .2s}.voice-btn:hover{background:rgba(25,118,210,.08);color:#0d47a1}.voice-btn:disabled{opacity:.5;cursor:not-allowed}.voice-btn.recording{background:#ff4757;color:white;animation:pulse 1s infinite}.voice-btn.listening{background:#2ed573;color:white;animation:pulse 1s infinite}.voice-btn.disabled{background:rgba(0,0,0,.1);color:rgba(0,0,0,.3)}@keyframes pulse{0%{transform:scale(1)}50%{transform:scale(1.1)}to{transform:scale(1)}}.message.loading .message-content{background:rgba(255,255,255,.8);padding:16px}.typing-indicator{display:flex;gap:4px;justify-content:center}.typing-indicator span{width:8px;height:8px;border-radius:50%;background:#667eea;animation:typing 1.4s ease-in-out infinite}.typing-indicator span:first-child{animation-delay:-.32s}.typing-indicator span:nth-child(2){animation-delay:-.16s}@keyframes typing{0%,80%,to{transform:scale(0)}40%{transform:scale(1)}}.error-message{background:#ff4757;color:white;padding:10px 15px;margin:10px 24px;border-radius:10px;display:flex;justify-content:space-between;align-items:center;font-size:13px;animation:slideIn .3s ease}@keyframes slideIn{0%{opacity:0;transform:translateX(-10px)}to{opacity:1;transform:translateX(0)}}.error-message button{background:none;border:none;color:white;cursor:pointer;font-size:16px;padding:0;width:20px;height:20px;display:flex;align-items:center;justify-content:center}.chat-input{background:rgba(255,255,255,.7);backdrop-filter:blur(8px);padding:18px 24px;border-top:1px solid rgba(0,0,0,.04);min-height:56px;flex-shrink:0}.chat-input input,.chat-input textarea{color:#222!important;background:rgba(255,255,255,.9)}.input-controls{display:flex;gap:10px;margin-bottom:10px;justify-content:center}.input-area{display:flex;gap:10px;align-items:flex-end}.input-area textarea{flex:1;background:rgba(255,255,255,.9);border:none;border-radius:20px;padding:12px 16px;font-size:15px;resize:none;max-height:100px;min-height:44px;color:#333;font-family:inherit}.input-area textarea:focus{outline:none;box-shadow:0 0 0 2px rgba(102,126,234,.2)}.input-area textarea:disabled{opacity:.6;cursor:not-allowed}.send-btn{background:#1976d2;border:none;color:white;width:44px;height:44px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s;font-size:18px}.send-btn:hover:not(:disabled){background:#1565c0;transform:translateY(-1px)}.send-btn:disabled{opacity:.5;cursor:not-allowed}@media (max-width:600px){.ai-chat-tile{min-height:320px;padding:0}.chat-header,.chat-input,.settings-panel{padding:12px 10px}.chat-messages{padding:10px 10px 0}}@media (max-width:480px){.chat-header{padding:12px 15px}.chat-title h3{font-size:16px}.chat-messages{padding:12px;max-height:250px}.chat-input{padding:12px 15px}.input-area textarea{font-size:13px;padding:10px 14px}}@media (prefers-color-scheme:dark){.input-area textarea,.message-content{background:rgba(255,255,255,.1);color:white}.input-area textarea::placeholder{color:rgba(255,255,255,.6)}.settings-panel{background:rgba(0,0,0,.8);color:white}.setting-group label{color:white}.setting-group select{background:rgba(255,255,255,.1);color:white;border-color:rgba(255,255,255,.2)}}