.bottom-sheet{position:fixed;inset:0;z-index:300;display:flex;align-items:flex-end;justify-content:center}.bottom-sheet-backdrop{position:absolute;inset:0;background:#0006;animation:fadeIn .2s ease}.bottom-sheet-content{position:relative;background:#fff;width:100%;max-width:500px;border-radius:16px 16px 0 0;padding:20px;padding-bottom:calc(20px + env(safe-area-inset-bottom));max-height:70vh;overflow-y:auto;animation:slideUp .3s ease}.bottom-sheet-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.bottom-sheet-title{font-size:17px;font-weight:700}.bottom-sheet-close{width:32px;height:32px;border:none;background:#f5f5f5;border-radius:50%;font-size:14px;color:#666;cursor:pointer}.bottom-sheet-close:active{background:#e8e8e8}.bottom-sheet-body{display:flex;flex-direction:column;gap:6px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.option-item{display:flex;align-items:center;gap:12px;padding:14px 16px;border:2px solid #e8e8e8;border-radius:10px;cursor:pointer;transition:all .15s ease;background:#fff;width:100%;text-align:left;font-family:inherit}.option-item:active{transform:scale(.99)}.option-item.selected{background:#e8f5e9;border-color:#1a5f2a}.option-item.disabled{opacity:.4;cursor:not-allowed}.option-check{width:22px;height:22px;border:2px solid #ddd;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;color:transparent;flex-shrink:0}.option-item.selected .option-check{background:#1a5f2a;border-color:#1a5f2a;color:#fff}.option-info{flex:1}.option-title{font-size:15px;font-weight:600;color:#333}.option-desc{font-size:11px;color:#888;margin-top:2px}.option-badge{font-size:11px;font-weight:600;color:#ff6b35;background:#fff3e0;padding:3px 8px;border-radius:4px}.option-section{margin-top:16px;padding-top:16px;border-top:1px solid #eee}.option-section-title{font-size:12px;font-weight:600;color:#888;margin-bottom:10px}.horse-checkbox-list{background:#fff;border-radius:12px;overflow:hidden}.horse-checkbox-list .horse-list-header{display:grid;padding:10px 8px;background:#f8f9fa;font-size:11px;color:#888;font-weight:600}.horse-checkbox-list .horse-item{display:grid;padding:0;border-bottom:1px solid #f0f0f0;align-items:center;min-height:52px;position:relative}.horse-checkbox-list .horse-item.selected{background:#f0f9f1}.horse-checkbox-list.cols-1 .horse-list-header,.horse-checkbox-list.cols-1 .horse-item{grid-template-columns:40px 1fr 48px 44px}.horse-checkbox-list.cols-2 .horse-list-header,.horse-checkbox-list.cols-2 .horse-item{grid-template-columns:40px 1fr 48px 76px}.horse-checkbox-list.cols-3 .horse-list-header,.horse-checkbox-list.cols-3 .horse-item{grid-template-columns:40px 1fr 48px 108px}.horse-checkbox-list .horse-number{width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;margin:0 auto}.horse-checkbox-list .horse-info{padding:6px 4px;overflow:hidden}.horse-checkbox-list .horse-name{font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.horse-checkbox-list .horse-jockey{font-size:10px;color:#888;margin-top:2px}.horse-checkbox-list .horse-odds{font-size:14px;font-weight:600;color:#1a5f2a;text-align:right;padding-right:4px}.header-checkboxes{display:flex;justify-content:flex-end;gap:4px;padding:0 8px}.header-checkbox-label{width:28px;text-align:center;font-size:10px;color:#666;font-weight:600}.header-checkbox-label.col-1{color:#e53935}.header-checkbox-label.col-2{color:#1e88e5}.header-checkbox-label.col-3{color:#43a047}.header-checkbox-label.col-axis{color:#ff6b35}.header-checkbox-label.col-partner{color:#1a5f2a}.horse-checkboxes{display:flex;align-items:center;justify-content:flex-end;gap:4px;padding:0 8px}.checkbox-col{display:flex;flex-direction:column;align-items:center;gap:2px}.checkbox-col input[type=checkbox]{appearance:none;-webkit-appearance:none;width:28px;height:28px;border:2px solid #ddd;border-radius:6px;background:#fff;cursor:pointer;position:relative;transition:all .15s ease}.checkbox-col input[type=checkbox]:checked{background:#1a5f2a;border-color:#1a5f2a}.checkbox-col input[type=checkbox]:checked:after{content:"✓";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:#fff;font-size:14px;font-weight:700}.checkbox-col input[type=checkbox]:active{transform:scale(.95)}.checkbox-col.col-1 input[type=checkbox]:checked{background:#e53935;border-color:#e53935}.checkbox-col.col-2 input[type=checkbox]:checked{background:#1e88e5;border-color:#1e88e5}.checkbox-col.col-3 input[type=checkbox]:checked{background:#43a047;border-color:#43a047}.checkbox-col.col-axis input[type=checkbox]:checked{background:#ff6b35;border-color:#ff6b35}.checkbox-col.col-partner input[type=checkbox]:checked{background:#1a5f2a;border-color:#1a5f2a}.checkbox-col.col-single input[type=checkbox]:checked{background:#1a5f2a;border-color:#1a5f2a}.selector-area{display:flex;gap:8px;margin-bottom:12px}.selector-badge{display:flex;align-items:center;gap:6px;background:#fff;border:1.5px solid #ddd;padding:10px 14px;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;transition:all .15s ease}.selector-badge:active{transform:scale(.98);background:#f5f5f5}.selector-badge .label{color:#333}.selector-badge .arrow{color:#888;font-size:10px}.selector-badge.bet-type{flex:1}.selector-badge.bet-method{flex:1.2}.selector-badge.disabled{opacity:.5;cursor:not-allowed}.selector-area .clear-selection-btn{display:flex;align-items:center;gap:4px;background:none;border:1px solid #e53935;color:#e53935;padding:6px 10px;border-radius:6px;font-size:11px;font-weight:600;cursor:pointer}.selector-area .clear-selection-btn:active{background:#ffebee}.bet-section{background:#fff;border-radius:12px;padding:16px;margin-top:16px;margin-bottom:80px}.bet-section .bet-input-group{margin-bottom:16px}.bet-section .bet-input-group label{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600;color:#333;margin-bottom:8px}.selection-label{font-size:12px;font-weight:500;color:#666;background:#f0f0f0;padding:2px 8px;border-radius:4px}.selected-horses-display{background:#f8f9fa;border:2px solid #e8e8e8;border-radius:8px;padding:12px;min-height:44px;display:flex;align-items:center;gap:8px}.selected-horses-display.has-selection{border-color:#1a5f2a;background:#f0f9f1}.selected-numbers{font-weight:600;font-size:15px;color:#1a5f2a;flex:1}.inline-bet-count{font-size:12px;font-weight:600;color:#1a5f2a;background:#1a5f2a1a;padding:4px 10px;border-radius:12px;white-space:nowrap}.selected-horses-display .clear-selection-btn{background:none;border:1px solid #999;color:#666;padding:4px 8px;border-radius:4px;font-size:11px;cursor:pointer}.no-selection{color:#999;font-size:13px}.amount-input-wrapper{display:flex;align-items:center;background:#f8f9fa;border:2px solid #e8e8e8;border-radius:8px;overflow:hidden}.amount-input-wrapper:focus-within{border-color:#1a5f2a}.amount-stepper-btn{width:44px;height:44px;border:none;background:#e8e8e8;font-size:20px;font-weight:600;color:#333;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s;flex-shrink:0}.amount-stepper-btn:active{background:#d0d0d0}.amount-center{flex:1;display:flex;align-items:center;justify-content:center;padding:0 8px;gap:2px;min-width:0}.currency-symbol{font-size:16px;font-weight:600;color:#666;flex-shrink:0}.amount-input{width:80px;border:none;background:none;padding:12px 4px;font-size:18px;font-weight:600;outline:none;text-align:center}.preset-btn{flex:1;padding:8px;border:1px solid #ddd;background:#fff;border-radius:6px;font-size:12px;cursor:pointer;transition:all .15s}.preset-btn:active{background:#e8f5e9;border-color:#1a5f2a}.bet-summary{display:flex;justify-content:space-between;padding:12px;background:#e8f5e9;border-radius:8px;margin-bottom:12px;font-weight:600;color:#1a5f2a}*{margin:0;padding:0;box-sizing:border-box}html,body{height:100%}body{font-family:-apple-system,BlinkMacSystemFont,Hiragino Sans,Meiryo,sans-serif;background-color:#f5f6f8;color:#1a1a1a;line-height:1.5;font-size:14px;padding-bottom:70px}.alert-banner{background:linear-gradient(90deg,#ff6b35,#f44);color:#fff;padding:12px 16px;display:flex;align-items:center;gap:8px;font-size:14px;font-weight:600}.app-header{background:linear-gradient(135deg,#1a5f2a,#2d8a3e);color:#fff;padding:16px;display:flex;justify-content:space-between;align-items:center;position:sticky;top:0;z-index:100}.app-title{font-size:20px;font-weight:700}.header-actions{display:flex;align-items:center;gap:12px}.cart-btn{position:relative;background:#fff3;border:none;padding:8px 12px;border-radius:8px;cursor:pointer;display:flex;align-items:center;gap:4px;color:#fff}.cart-icon{font-size:18px}.cart-badge{position:absolute;top:-4px;right:-4px;background:#f44;color:#fff;font-size:11px;font-weight:700;min-width:18px;height:18px;border-radius:9px;display:flex;align-items:center;justify-content:center;padding:0 4px}main{padding:16px 16px 80px}.bottom-nav{position:fixed;bottom:0;left:0;right:0;background:#fff;display:flex;border-top:1px solid #e0e0e0;padding:8px 0;padding-bottom:calc(8px + env(safe-area-inset-bottom));z-index:100}.nav-item{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;background:none;border:none;padding:8px;cursor:pointer;color:#999;transition:color .2s}.nav-item.active{color:#1a5f2a}.nav-icon{font-size:20px}.nav-label{font-size:11px}.section-title{font-size:13px;color:#666;margin-bottom:12px;padding-left:4px}.race-date-selector{display:flex;gap:8px;margin-bottom:16px;overflow-x:auto;padding-bottom:4px}.date-btn{background:#fff;border:1px solid #ddd;padding:10px 16px;border-radius:8px;font-size:13px;white-space:nowrap;cursor:pointer}.date-btn.active{background:#1a5f2a;color:#fff;border-color:#1a5f2a}.venue-tabs{display:flex;gap:8px;margin-bottom:16px}.venue-tab{flex:1;background:#fff;border:none;padding:12px;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;color:#666}.venue-tab.active{background:#1a5f2a;color:#fff}.race-card{background:#fff;border-radius:12px;padding:16px;margin-bottom:12px;box-shadow:0 1px 3px #00000014;cursor:pointer;transition:transform .2s,box-shadow .2s}.race-card:active{transform:scale(.98)}.race-header{display:flex;align-items:center;gap:12px;margin-bottom:8px}.race-number{background:#1a5f2a;color:#fff;padding:4px 10px;border-radius:4px;font-size:13px;font-weight:700;flex-shrink:0}.race-time{color:#666;font-size:13px}.race-header .race-name{font-size:17px;font-weight:700;color:#1a1a1a;flex:1}.race-name{font-size:16px;font-weight:700;margin-bottom:8px}.race-info{display:flex;gap:12px;color:#666;font-size:12px}.race-card-v2{background:#fff;border-radius:12px;padding:14px 16px;margin-bottom:10px;box-shadow:0 1px 3px #00000014;cursor:pointer;transition:transform .2s,box-shadow .2s;display:flex;align-items:center;gap:16px}.race-card-v2:active{transform:scale(.98)}.race-card-v2:hover{box-shadow:0 2px 8px #0000001f}.race-card-left{display:flex;flex-direction:column;align-items:center;gap:4px;min-width:50px}.race-number-badge{background:#1a5f2a;color:#fff;padding:6px 10px;border-radius:6px;font-size:14px;font-weight:700;min-width:40px;text-align:center}.race-start-time{font-size:12px;color:#666;font-weight:500}.race-card-center{flex:1;min-width:0}.race-name-main{font-size:15px;font-weight:700;color:#1a1a1a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:2px}.race-name-sub{font-size:12px;color:#666;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.race-card-right{display:flex;flex-direction:column;align-items:flex-end;gap:4px;min-width:70px}.track-badge{padding:3px 8px;border-radius:4px;font-size:11px;font-weight:600}.track-badge.turf{background:#e8f5e9;color:#2e7d32}.track-badge.dirt{background:#fff3e0;color:#e65100}.distance-text{font-size:13px;font-weight:600;color:#1a1a1a}.horse-count-text{font-size:12px;color:#666}.race-conditions-row{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}.grade-badge{display:inline-flex;align-items:center;padding:2px 6px;border-radius:3px;font-size:10px;font-weight:700;line-height:1.2}.grade-badge.g1{background:linear-gradient(135deg,#1a5fb4,#3584e4);color:#fff}.grade-badge.g2{background:linear-gradient(135deg,#c0392b,#e74c3c);color:#fff}.grade-badge.g3{background:linear-gradient(135deg,#26a269,#33d17a);color:#fff}.grade-badge.listed{background:#9b59b6;color:#fff}.grade-badge.open{background:#34495e;color:#fff}.grade-badge.obstacle{background:#795548;color:#fff}.condition-chip{display:inline-flex;align-items:center;padding:2px 6px;border-radius:3px;font-size:10px;background:#f0f0f0;color:#666}.condition-chip.female{background:#fce4ec;color:#c2185b}.condition-chip.handicap{background:#fff3e0;color:#e65100}.back-btn{display:flex;align-items:center;gap:4px;background:none;border:none;color:#1a5f2a;font-size:14px;padding:0;margin-bottom:16px;cursor:pointer}.race-detail-header{background:#fff;border-radius:12px;padding:16px;margin-bottom:16px}.race-header-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.race-detail-header .race-number{display:inline-block}.jra-link-btn{display:inline-flex;align-items:center;gap:4px;background:#4caf50;color:#fff;padding:4px 10px;border:none;border-radius:4px;font-size:11px;font-weight:600;text-decoration:none}.jra-link-btn svg{flex-shrink:0}.race-detail-header .race-name{font-size:20px;margin-bottom:12px}.race-conditions{display:flex;flex-wrap:wrap;gap:8px}.condition-tag{background:#f0f0f0;padding:6px 12px;border-radius:16px;font-size:12px;color:#555}.horse-list{background:#fff;border-radius:12px;overflow:hidden;margin-bottom:16px}.horse-list-header{display:grid;grid-template-columns:36px 40px 1fr 60px;padding:12px 16px;background:#f8f8f8;font-size:12px;color:#666;font-weight:600}.horse-item{display:grid;grid-template-columns:36px 40px 1fr 60px;padding:14px 16px;border-bottom:1px solid #f0f0f0;align-items:center;cursor:pointer;transition:background .2s}.horse-item:hover{background:#f9f9f9}.horse-item.selected{background:#e8f5e9}.horse-checkbox{display:flex;align-items:center;justify-content:center}.horse-checkbox input[type=checkbox]{width:20px;height:20px;cursor:pointer;accent-color:#1a5f2a}.horse-number{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;border:1px solid #ccc;box-sizing:border-box}.horse-info{min-width:0}.horse-name{font-weight:600;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.horse-jockey{font-size:12px;color:#666}.horse-odds{text-align:right;font-size:14px;font-weight:600;color:#1a5f2a}.bet-section{background:#fff;border-radius:12px;padding:16px;margin-bottom:16px}.bet-section h3{font-size:16px;margin-bottom:16px;display:flex;align-items:center;gap:8px}.bet-type-selector{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:16px}.bet-type-btn{background:#f5f5f5;border:2px solid transparent;padding:12px 8px;border-radius:8px;font-size:13px;cursor:pointer;text-align:center;transition:all .2s}.bet-type-btn.active{background:#e8f5e9;border-color:#1a5f2a;color:#1a5f2a;font-weight:600}.bet-input-group{margin-bottom:16px}.bet-input-group label{display:block;font-size:13px;color:#666;margin-bottom:8px}.amount-input-wrapper{position:relative}.amount-input{width:100%;padding:14px 14px 14px 24px;border:1px solid #ddd;border-radius:8px;font-size:18px;font-weight:600}.amount-input:focus{outline:none;border-color:#1a5f2a}.currency-symbol{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:#666;font-size:16px}.amount-presets{display:flex;gap:8px;margin-top:8px}.preset-btn{flex:1;background:#f5f5f5;border:none;padding:10px;border-radius:6px;font-size:13px;cursor:pointer}.preset-btn:active{background:#e0e0e0}.selected-horses-display{display:flex;align-items:center;justify-content:space-between;padding:14px;border:2px solid #ddd;border-radius:8px;background:#f9f9f9;min-height:50px}.selected-horses-display.has-selection{border-color:#1a5f2a;background:#e8f5e9}.selected-numbers{font-size:20px;font-weight:700;color:#1a5f2a}.no-selection{color:#999;font-size:14px}.clear-selection-btn{background:#f5f5f5;border:none;padding:6px 12px;border-radius:4px;font-size:12px;cursor:pointer;color:#666}.selection-error{color:#c62828;font-size:12px;margin-top:8px;padding-left:4px}.ai-consult-btn{width:100%;background:linear-gradient(135deg,#1a5f2a,#2d8a3e);color:#fff;border:none;padding:18px;border-radius:12px;font-size:16px;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;transition:transform .2s}.ai-consult-btn:active{transform:scale(.98)}.ai-consult-btn:disabled{background:#ccc}.ai-chat-container{background:#fff;border-radius:12px;overflow:hidden;margin-bottom:16px}.ai-chat-header{background:linear-gradient(135deg,#1a5f2a,#2d8a3e);color:#fff;padding:16px;display:flex;align-items:center;gap:12px}.ai-avatar{width:40px;height:40px;background:#fff3;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:20px}.ai-chat-header-text h3{font-size:16px;font-weight:600}.ai-chat-header-text p{font-size:12px;opacity:.9}.chat-messages{padding:16px;max-height:400px;overflow-y:auto}.chat-message{margin-bottom:16px}.chat-message.ai{padding-right:40px}.chat-message.user{padding-left:40px}.message-bubble{padding:14px 16px;border-radius:16px;font-size:14px;line-height:1.6}.chat-message.ai .message-bubble{background:#f0f0f0;border-bottom-left-radius:4px}.chat-message.user .message-bubble{background:#1a5f2a;color:#fff;border-bottom-right-radius:4px;margin-left:auto}.markdown-content{word-break:break-word}.markdown-content p{margin:0 0 12px}.markdown-content p:last-child{margin-bottom:0}.markdown-content strong{font-weight:700;color:#1a5f2a}.markdown-content ul,.markdown-content ol{margin:8px 0;padding-left:20px}.markdown-content li{margin:4px 0}.markdown-content h1,.markdown-content h2,.markdown-content h3{margin:16px 0 8px;font-weight:700;color:#1a5f2a}.markdown-content h1{font-size:18px}.markdown-content h2{font-size:16px}.markdown-content h3{font-size:15px}.markdown-content code{background:#0000000f;padding:2px 6px;border-radius:4px;font-size:13px}.loading-bubble{min-width:80px}.loading-dots{display:inline-flex;align-items:center}.loading-dots .dot{animation:blink 1.4s infinite both}.loading-dots .dot:nth-child(4){animation-delay:0s}.loading-dots .dot:nth-child(5){animation-delay:.2s}.loading-dots .dot:nth-child(6){animation-delay:.4s}@keyframes blink{0%,80%,to{opacity:0}40%{opacity:1}}.quick-replies{display:flex;flex-wrap:wrap;gap:8px;padding:0 16px 16px}.quick-reply-btn{background:#fff;border:2px solid #1a5f2a;color:#1a5f2a;padding:12px 20px;border-radius:24px;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s}.quick-reply-btn:active{background:#1a5f2a;color:#fff}.data-feedback{background:#f8f9fa;border-radius:12px;padding:16px;margin:16px}.feedback-title{font-size:13px;color:#666;margin-bottom:12px;display:flex;align-items:center;gap:6px}.feedback-item{display:flex;justify-content:space-between;padding:10px 0;border-bottom:1px solid #eee;font-size:14px}.feedback-item:last-child{border-bottom:none}.feedback-label{color:#666}.feedback-value{font-weight:600}.feedback-value.positive{color:#2e7d32}.feedback-value.negative{color:#c62828}.feedback-value.warning{color:#f57c00}.action-buttons{display:flex;gap:12px;padding:16px;border-top:1px solid #eee}.btn-primary{flex:1;background:#1a5f2a;color:#fff;border:none;padding:16px;border-radius:10px;font-size:16px;font-weight:700;cursor:pointer}.btn-primary:disabled{background:#ccc}.btn-secondary{flex:1;background:#f5f5f5;color:#333;border:none;padding:16px;border-radius:10px;font-size:16px;font-weight:600;cursor:pointer}.cart-container{background:#fff;border-radius:12px;overflow:hidden;margin-bottom:16px}.cart-header{display:flex;justify-content:space-between;align-items:center;padding:16px;background:#f8f8f8;border-bottom:1px solid #eee}.cart-header h3{font-size:16px;display:flex;align-items:center;gap:8px}.cart-clear-btn{background:none;border:none;color:#c62828;font-size:13px;cursor:pointer}.cart-empty{padding:40px 20px;text-align:center;color:#999}.cart-empty-icon{font-size:48px;margin-bottom:12px}.cart-item{display:flex;padding:16px;border-bottom:1px solid #f0f0f0;gap:12px}.cart-item-info{flex:1}.cart-item-race{font-size:12px;color:#666;margin-bottom:4px}.cart-item-bet{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:4px}.cart-item-bet-type{font-weight:600;font-size:12px;background:#1a5f2a;color:#fff;padding:2px 8px;border-radius:4px;flex-shrink:0}.cart-item-bet-display{font-weight:600;font-size:13px;color:#333;word-break:break-all}.cart-item-bet-count{font-size:11px;font-weight:600;color:#1a5f2a;background:#1a5f2a1a;padding:2px 8px;border-radius:10px;flex-shrink:0}.cart-item-amount{font-size:14px;color:#1a5f2a;font-weight:600}.cart-item-delete{background:none;border:none;color:#999;font-size:20px;cursor:pointer;padding:0 8px}.cart-item-delete:hover{color:#c62828}.cart-summary{background:#f8f9fa;padding:16px;border-top:1px solid #eee}.cart-summary-row{display:flex;justify-content:space-between;margin-bottom:8px;font-size:14px}.cart-summary-row.total{font-size:18px;font-weight:700;padding-top:8px;border-top:1px solid #ddd}.add-more-btn{width:100%;background:#fff;border:2px dashed #ddd;padding:14px;border-radius:10px;font-size:14px;color:#666;cursor:pointer;margin-bottom:12px;display:flex;align-items:center;justify-content:center;gap:8px}.add-more-btn:hover{border-color:#1a5f2a;color:#1a5f2a}.toast{position:fixed;bottom:80px;left:50%;transform:translate(-50%);background:#333;color:#fff;padding:12px 24px;border-radius:24px;font-size:14px;z-index:1000;animation:fadeIn .3s ease}.dashboard-summary{background:linear-gradient(135deg,#1a5f2a,#2d8a3e);border-radius:16px;padding:24px;color:#fff;margin-bottom:16px}.summary-label{font-size:13px;opacity:.9;margin-bottom:4px}.summary-value{font-size:36px;font-weight:700;margin-bottom:16px}.login-prompt{text-align:center;padding:60px 20px}.login-prompt-icon{font-size:60px;margin-bottom:20px}.login-prompt h2{margin-bottom:12px}.login-prompt p{color:#666;margin-bottom:24px}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.fade-in{animation:fadeIn .3s ease}
