:root{--primary:#06c;--primary-hover:#0052a3;--primary-light:#e6f2ff;--primary-shadow:rgba(0,102,204,.15);--gray-50:#fafbfc;--gray-100:#f3f4f6;--gray-200:#e5e7eb;--gray-300:#d1d5db;--gray-400:#9ca3af;--gray-500:#6b7280;--gray-600:#4b5563;--gray-700:#374151;--gray-800:#1f2937;--gray-900:#111827;--success:#10b981;--success-light:#d1fae5;--warning:#f59e0b;--warning-light:#fef3c7;--error:#ef4444;--error-light:#fee2e2;--background:#f8f9fa;--surface:#fff;--border:#e2e8f0;--divider:#e5e7eb;--text-primary:#1a202c;--text-secondary:#64748b;--text-tertiary:#94a3b8;--shadow-xs:0 1px 2px rgba(0,0,0,.05);--shadow-sm:0 2px 4px rgba(0,0,0,.06),0 1px 2px rgba(0,0,0,.03);--shadow-md:0 4px 8px rgba(0,0,0,.08),0 2px 4px rgba(0,0,0,.04);--shadow-lg:0 8px 16px rgba(0,0,0,.1),0 4px 8px rgba(0,0,0,.05);--shadow-xl:0 16px 32px rgba(0,0,0,.12),0 8px 16px rgba(0,0,0,.06);--transition-fast:150ms cubic-bezier(0.4,0,0.2,1);--transition-base:250ms cubic-bezier(0.4,0,0.2,1);--transition-slow:350ms cubic-bezier(0.4,0,0.2,1);--radius-sm:4px;--radius-md:6px;--radius-lg:8px;--radius-xl:12px;--radius-2xl:16px}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Inter,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;overflow:hidden;color:var(--text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.app-container,body{background:var(--background)}.app-container{display:flex;flex-direction:column;height:100vh}.menu-bar-new{display:flex;align-items:center;padding:12px 24px;background:var(--surface);color:var(--text-primary);box-shadow:var(--shadow-sm);position:relative;z-index:100;border-bottom:1px solid var(--border);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}.app-title{font-weight:700;margin-right:20px;background:linear-gradient(135deg,var(--primary) 0,#0052cc 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;white-space:nowrap;letter-spacing:-.5px}.menu-container{display:flex;gap:2px;flex:1 1;margin:0 20px}.menu-button,.menu-item-wrapper{position:relative}.menu-button{padding:8px 16px;background:transparent;color:var(--text-primary);border:none;border-radius:var(--radius-md);cursor:pointer;font-size:14px;font-weight:500;transition:all var(--transition-fast)}.menu-button:after{content:"";position:absolute;bottom:2px;left:50%;width:0;height:2px;background:var(--primary);transition:all var(--transition-base);transform:translateX(-50%);border-radius:2px}.menu-button:hover{background:var(--gray-100);color:var(--primary)}.menu-button:hover:after{width:60%}.menu-button.active{background:var(--primary-light);color:var(--primary);font-weight:600}.menu-button.active:after{width:60%}.dropdown-menu{position:absolute;top:100%;left:0;margin-top:8px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);min-width:260px;z-index:1000;padding:8px;-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);animation:menuFadeIn var(--transition-fast)}@keyframes menuFadeIn{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.dropdown-item{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;cursor:pointer;font-size:14px;color:var(--text-primary);border-radius:var(--radius-md);transition:all var(--transition-fast)}.dropdown-item:hover{background:var(--primary-light);color:var(--primary);transform:translateX(2px)}.dropdown-item .shortcut{color:var(--text-tertiary);font-size:12px;margin-left:24px;font-weight:500;font-family:SF Mono,Monaco,Consolas,monospace;background:var(--gray-100);padding:2px 6px;border-radius:var(--radius-sm)}.dropdown-item.auto-save-item{font-weight:500}.dropdown-item .status-text{color:var(--success);font-size:12px;font-weight:500;margin-left:8px}.menu-divider{height:1px;background:var(--divider);margin:6px 0}.spreadsheet table.no-gridlines td{border:none}.spreadsheet table.no-gridlines th{border-right:none;border-bottom:1px solid #d1d1d1}.menu-bar{display:flex;align-items:center;padding:8px 16px;background:#217346;color:#fff;box-shadow:0 2px 4px rgba(0,0,0,.1)}.app-title{font-size:18px;font-weight:600;margin-right:24px}.menu-items{display:flex;gap:8px}.menu-btn{padding:6px 16px;background:transparent;color:#fff;border:1px solid hsla(0,0%,100%,.3);border-radius:4px;cursor:pointer;font-size:13px;transition:background .2s}.menu-btn:hover{background:hsla(0,0%,100%,.1)}.toolbar{padding:12px 24px;background:var(--gray-50);border-bottom:1px solid var(--border);gap:16px;box-shadow:var(--shadow-xs)}.toolbar,.toolbar-group{display:flex;align-items:center}.toolbar-group{gap:6px;padding-right:16px;border-right:1px solid var(--divider)}.toolbar-group:last-child{border-right:none}.tool-btn{width:36px;height:36px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:15px;transition:all var(--transition-fast);color:var(--text-secondary);position:relative;overflow:hidden}.tool-btn:before{content:"";position:absolute;inset:0;background:var(--primary-light);opacity:0;transition:opacity var(--transition-fast)}.tool-btn:hover{background:var(--surface);border-color:var(--primary);color:var(--primary);transform:translateY(-2px);box-shadow:var(--shadow-md)}.tool-btn:hover:before{opacity:1}.tool-btn:active{transform:translateY(0);box-shadow:var(--shadow-sm)}.tool-btn.active{background:var(--primary-light);border-color:var(--primary);color:var(--primary);font-weight:600}.font-size-select{padding:8px 32px 8px 12px;border:1px solid var(--border);border-radius:var(--radius-md);font-size:13px;cursor:pointer;background:var(--surface);transition:all var(--transition-fast);color:var(--text-primary);appearance:none;-webkit-appearance:none;-moz-appearance:none;background-image:url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23666' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6 9 12 15 18 9'%3e%3c/polyline%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right 8px center;background-size:16px}.font-size-select:hover{border-color:var(--primary);box-shadow:var(--shadow-sm)}.font-size-select:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-shadow)}.font-family-select{padding:8px 32px 8px 12px;border:1px solid var(--border);border-radius:var(--radius-md);font-size:13px;cursor:pointer;background:var(--surface);transition:all var(--transition-fast);min-width:140px;color:var(--text-primary);appearance:none;-webkit-appearance:none;-moz-appearance:none;background-image:url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23666' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6 9 12 15 18 9'%3e%3c/polyline%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right 8px center;background-size:16px}.font-family-select:hover{border-color:var(--primary);box-shadow:var(--shadow-sm)}.font-family-select:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-shadow)}.border-style-select,.border-type-select,.border-width-select{padding:8px 32px 8px 12px;border:1px solid var(--border);border-radius:var(--radius-md);font-size:13px;cursor:pointer;background:var(--surface);transition:all var(--transition-fast);min-width:110px;color:var(--text-primary);appearance:none;-webkit-appearance:none;-moz-appearance:none;background-image:url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23666' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6 9 12 15 18 9'%3e%3c/polyline%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right 8px center;background-size:16px}.border-style-select:hover,.border-type-select:hover,.border-width-select:hover{border-color:var(--primary);box-shadow:var(--shadow-sm)}.border-style-select:focus,.border-type-select:focus,.border-width-select:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-shadow)}.format-select{padding:8px 32px 8px 12px;border:1px solid var(--border);border-radius:var(--radius-md);font-size:13px;cursor:pointer;min-width:120px;background:var(--surface);transition:all var(--transition-fast);color:var(--text-primary);appearance:none;-webkit-appearance:none;-moz-appearance:none;background-image:url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23666' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6 9 12 15 18 9'%3e%3c/polyline%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right 8px center;background-size:16px}.format-select:hover{border-color:var(--primary);box-shadow:var(--shadow-sm)}.format-select:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-shadow)}.color-picker{width:36px;height:36px;border:2px solid var(--border);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);margin-left:4px;padding:2px;background:var(--surface)}.color-picker:hover{border-color:var(--primary);transform:translateY(-2px);box-shadow:var(--shadow-md)}.color-label{font-size:15px;font-weight:600;color:var(--text-primary);display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px}.formula-bar{display:flex;align-items:center;padding:12px 24px;background:var(--surface);border-bottom:1px solid var(--border);gap:16px;box-shadow:var(--shadow-xs)}.cell-label{font-weight:600;font-size:13px;padding:8px 16px;background:var(--gray-100);border:1px solid var(--border);border-radius:var(--radius-md);min-width:80px;text-align:center;color:var(--text-secondary);font-family:SF Mono,Monaco,Consolas,monospace;letter-spacing:.5px}.formula-input-wrapper{flex:1 1;position:relative}.formula-input{width:100%;padding:8px 16px;border:1px solid var(--border);border-radius:var(--radius-md);font-size:14px;font-family:SF Mono,Monaco,Consolas,Courier New,monospace;background:var(--surface);transition:all var(--transition-fast);color:var(--text-primary)}.formula-input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-shadow)}.formula-input.invalid{border-color:var(--error);background:var(--error-light)}.formula-input.invalid:focus{box-shadow:0 0 0 3px rgba(239,68,68,.15)}.formula-validation-error{position:absolute;top:100%;left:0;margin-top:8px;padding:10px 14px;background:var(--error);color:#fff;font-size:12px;border-radius:var(--radius-md);box-shadow:var(--shadow-lg);z-index:100;white-space:nowrap;animation:slideDown var(--transition-base);font-weight:500}.formula-validation-error:before{content:"";position:absolute;bottom:100%;left:20px;border:6px solid transparent;border-bottom:6px solid var(--error)}.formula-explanation{position:absolute;top:100%;left:0;margin-top:8px;padding:12px 16px;background:linear-gradient(135deg,var(--primary) 0,#0052cc 100%);color:#fff;font-size:12px;border-radius:var(--radius-md);box-shadow:var(--shadow-lg);z-index:100;max-width:500px;animation:slideDown var(--transition-base);font-weight:500}.formula-explanation:before{content:"";position:absolute;bottom:100%;left:20px;border:6px solid transparent;border-bottom:6px solid var(--primary)}@keyframes slideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.spreadsheet-container{flex:1 1;overflow:auto;background:var(--background);position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none}.spreadsheet-wrapper{padding:24px}.spreadsheet{display:inline-block;box-shadow:var(--shadow-lg);border-radius:var(--radius-lg);overflow:hidden;border:1px solid var(--border)}.spreadsheet,table{background:var(--surface)}table{border-collapse:separate;border-spacing:0}.col-header{background:linear-gradient(180deg,var(--gray-50) 0,var(--gray-100) 100%);font-weight:600;text-align:center;padding:12px;border:1px solid var(--border);border-top:none;min-width:100px;font-size:12px;position:-webkit-sticky;position:sticky;top:0;z-index:10;-webkit-user-select:none;-moz-user-select:none;user-select:none;position:relative;color:var(--text-secondary);letter-spacing:.3px;text-transform:uppercase;font-weight:700}.col-header:hover{background:linear-gradient(180deg,var(--primary-light) 0,var(--gray-100) 100%)}.col-header:hover .resize-handle{opacity:1}.filter-indicator{margin-left:4px;font-size:11px;color:var(--primary);cursor:pointer;transition:transform var(--transition-fast)}.filter-indicator:hover{transform:scale(1.2)}.group-toggle{font-size:11px;padding:2px 5px;margin-right:4px;cursor:pointer;border:1px solid var(--border);background:var(--gray-100);border-radius:var(--radius-sm);transition:all var(--transition-fast);color:var(--text-secondary);font-weight:600}.group-toggle:hover{background:var(--primary-light);border-color:var(--primary);color:var(--primary);transform:scale(1.05)}.resize-handle{position:absolute;right:0;top:0;width:4px;height:100%;cursor:col-resize;background:var(--primary);opacity:0;transition:opacity var(--transition-fast)}.resize-handle:hover{opacity:1;background:var(--primary-hover)}.row-header{background:linear-gradient(90deg,var(--gray-50) 0,var(--gray-100) 100%);font-weight:600;text-align:center;padding:12px;border:1px solid var(--border);border-left:none;min-width:50px;font-size:12px;position:-webkit-sticky;position:sticky;left:0;z-index:10;-webkit-user-select:none;-moz-user-select:none;user-select:none;color:var(--text-secondary);font-weight:700}.row-header:hover{background:linear-gradient(90deg,var(--primary-light) 0,var(--gray-100) 100%)}.cell{border:1px solid var(--border);padding:6px 12px;min-width:100px;min-height:32px;cursor:cell;position:relative;background:var(--surface);font-size:14px;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;color:var(--text-primary);transition:all var(--transition-fast)}.cell:hover{background:var(--gray-50)}.cell:focus{z-index:2}.cell.selected,.cell:focus{outline:2px solid var(--primary);outline-offset:-2px}.cell.selected{background:var(--primary-light);position:relative;z-index:1;box-shadow:inset 0 0 0 1px var(--primary)}.cell.in-range{background:rgba(224,242,254,.5);outline:1px solid var(--primary);outline-offset:-1px}.cell.fill-preview{background:rgba(186,230,253,.4);outline:2px dashed var(--primary);outline-offset:-2px}.cell.merged{border:2px solid var(--primary)!important;text-align:center;vertical-align:middle;background:var(--primary-light)}.fill-handle{position:absolute;bottom:-4px;right:-4px;width:10px;height:10px;background:var(--primary);border:2px solid var(--surface);cursor:crosshair;z-index:2;border-radius:2px;transition:all var(--transition-fast);box-shadow:var(--shadow-sm)}.fill-handle:hover{background:var(--primary-hover);transform:scale(1.2);box-shadow:var(--shadow-md)}.cell.selected:after{content:"";position:absolute;bottom:-3px;right:-3px;width:8px;height:8px;background:var(--primary);cursor:crosshair;border:2px solid var(--surface);border-radius:2px;box-shadow:var(--shadow-sm)}.cell.highlight{background:var(--warning-light);animation:highlightPulse 1.5s ease-in-out}@keyframes highlightPulse{0%,to{background:var(--warning-light)}50%{background:#fde68a}}.cell.editing{outline:2px solid var(--primary);padding:0;box-shadow:0 0 0 4px var(--primary-shadow),var(--shadow-md);z-index:3}.cell-input,.cell.editing{-webkit-user-select:text;-moz-user-select:text;user-select:text}.cell-input{width:100%;height:100%;border:none;padding:6px 12px;font-size:14px;font-family:inherit;background:var(--surface);color:var(--text-primary)}.cell-input:focus{outline:none}.sheet-tabs{padding:12px 24px;background:var(--gray-50);gap:10px;box-shadow:var(--shadow-xs)}.sheet-tabs,.status-bar{display:flex;align-items:center;border-top:1px solid var(--border)}.status-bar{padding:8px 24px;background:var(--surface);gap:28px;font-size:13px;color:var(--text-secondary);min-height:36px;box-shadow:0 -1px 2px rgba(0,0,0,.03)}.status-item{display:flex;align-items:center;gap:8px}.status-label{font-weight:600;color:var(--text-tertiary);text-transform:uppercase;font-size:11px;letter-spacing:.5px}.status-value{color:var(--primary);font-weight:700;font-size:13px}.tabs-container{display:flex;gap:6px;flex:1 1;overflow-x:auto;scrollbar-width:thin}.sheet-tab{padding:8px 20px;background:var(--gray-200);border:1px solid var(--border);border-radius:var(--radius-md) var(--radius-md) 0 0;cursor:pointer;font-size:13px;white-space:nowrap;transition:all var(--transition-fast);color:var(--text-secondary);font-weight:500;position:relative}.sheet-tab:after{content:"";position:absolute;bottom:0;left:0;right:0;height:2px;background:var(--primary);transform:scaleX(0);transition:transform var(--transition-fast)}.sheet-tab:hover{background:var(--gray-100);color:var(--primary);transform:translateY(-2px)}.sheet-tab:hover:after{transform:scaleX(.7)}.sheet-tab.active{background:var(--surface);border-bottom-color:var(--surface);font-weight:600;color:var(--primary);box-shadow:var(--shadow-sm);transform:translateY(-2px)}.sheet-tab.active:after{transform:scaleX(1)}.add-sheet-btn{width:36px;height:36px;background:var(--surface);border:2px solid var(--border);border-radius:var(--radius-md);cursor:pointer;font-size:18px;display:flex;align-items:center;justify-content:center;transition:all var(--transition-fast);color:var(--text-secondary);font-weight:600}.add-sheet-btn:hover{background:var(--primary-light);border-color:var(--primary);color:var(--primary);transform:translateY(-2px) rotate(90deg);box-shadow:var(--shadow-md)}.context-menu{position:fixed;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);z-index:1000;min-width:200px;padding:8px;-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);animation:contextMenuFadeIn var(--transition-fast)}@keyframes contextMenuFadeIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.context-item{padding:10px 14px;cursor:pointer;font-size:14px;border-radius:var(--radius-md);transition:all var(--transition-fast);color:var(--text-primary);display:flex;align-items:center;gap:10px;font-weight:500}.context-item:hover{background:var(--primary-light);color:var(--primary);transform:translateX(3px)}.context-divider{height:1px;background:var(--divider);margin:8px 0}::-webkit-scrollbar{width:12px;height:12px}::-webkit-scrollbar-track{background:var(--gray-50)}::-webkit-scrollbar-thumb{background:var(--gray-300);border-radius:var(--radius-md);border:3px solid var(--gray-50);-webkit-transition:background var(--transition-fast);transition:background var(--transition-fast)}::-webkit-scrollbar-thumb:hover{background:var(--gray-400)}::-webkit-scrollbar-thumb:active{background:var(--gray-500)}.dialog{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(17,24,39,.5);display:flex;align-items:center;justify-content:center;z-index:2000;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);animation:dialogBackdropFadeIn var(--transition-base)}@keyframes dialogBackdropFadeIn{0%{opacity:0}to{opacity:1}}.dialog-content{background:var(--surface);border-radius:var(--radius-xl);padding:32px;min-width:360px;box-shadow:var(--shadow-xl),0 0 0 1px rgba(0,0,0,.05);animation:dialogContentSlideIn var(--transition-base)}@keyframes dialogContentSlideIn{0%{opacity:0;transform:scale(.95) translateY(-20px)}to{opacity:1;transform:scale(1) translateY(0)}}.dialog-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;padding-bottom:16px;border-bottom:1px solid var(--divider)}.dialog-header h3{margin:0;font-size:20px;color:var(--text-primary);font-weight:700;letter-spacing:-.3px}.close-btn{background:none;border:none;font-size:24px;cursor:pointer;color:var(--text-tertiary);padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-md);transition:all var(--transition-fast)}.close-btn:hover{background:var(--gray-100);color:var(--error);transform:rotate(90deg)}.dialog-input{width:100%;padding:12px 16px;border:1px solid var(--border);border-radius:var(--radius-md);font-size:14px;margin-bottom:24px;transition:all var(--transition-fast);background:var(--surface);color:var(--text-primary)}.dialog-input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-shadow)}.dialog-buttons{display:flex;gap:12px;justify-content:flex-end;margin-top:24px}.dialog-btn{padding:12px 24px;background:linear-gradient(135deg,var(--primary) 0,#0052cc 100%);color:#fff;border:none;border-radius:var(--radius-md);cursor:pointer;font-size:14px;font-weight:600;transition:all var(--transition-fast);box-shadow:var(--shadow-sm);position:relative;overflow:hidden}.dialog-btn:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,hsla(0,0%,100%,.2),transparent);opacity:0;transition:opacity var(--transition-fast)}.dialog-btn:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}.dialog-btn:hover:before{opacity:1}.dialog-btn:active{transform:translateY(0);box-shadow:var(--shadow-sm)}.dialog-btn-secondary{background:var(--gray-100);color:var(--text-primary)}.dialog-btn-secondary:hover{background:var(--gray-200);box-shadow:var(--shadow-md)}