:root{--color-primary: #1677FF;--color-primary-hover: #4096FF;--color-primary-active: #0958D9;--color-primary-bg: #E6F4FF;--color-primary-border: #91CAFF;--color-success: #52C41A;--color-success-bg: #F6FFED;--color-success-border: #B7EB8F;--color-warning: #FAAD14;--color-warning-bg: #FFFBE6;--color-warning-border: #FFE58F;--color-danger: #FF4D4F;--color-danger-hover: #FF7875;--color-danger-active: #D9363E;--color-danger-bg: #FFF1F0;--color-danger-border: #FFCCC7;--color-info: #1677FF;--color-info-bg: #E6F4FF;--color-text-primary: #1D2129;--color-text-secondary: #4E5969;--color-text-tertiary: #86909C;--color-text-disabled: #C9CDD4;--color-bg-base: #F5F6F8;--color-bg-elevated: #FFFFFF;--color-bg-hover: #F7F8FA;--color-bg-active: #E5E6EB;--color-border-base: #E5E6EB;--color-border-strong: #C9CDD4;--color-border-light: #F2F3F5;--color-fill-1: #F7F8FA;--color-fill-2: #F2F3F5;--color-fill-3: #E5E6EB;--color-fill-4: #C9CDD4;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--space-16: 64px;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px;--radius-xl: 12px;--radius-full: 9999px;--shadow-xs: 0 1px 2px rgba(0, 0, 0, .04);--shadow-sm: 0 2px 4px rgba(0, 0, 0, .06);--shadow-md: 0 4px 8px rgba(0, 0, 0, .08);--shadow-lg: 0 6px 16px rgba(0, 0, 0, .1);--shadow-xl: 0 12px 24px rgba(0, 0, 0, .12);--font-family-base: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;--font-size-xs: 12px;--font-size-sm: 13px;--font-size-base: 14px;--font-size-md: 15px;--font-size-lg: 16px;--font-size-xl: 18px;--font-size-2xl: 20px;--font-size-3xl: 24px;--font-size-4xl: 28px;--font-weight-regular: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.2;--line-height-base: 1.5;--line-height-relaxed: 1.6;--z-base: 1;--z-dropdown: 1000;--z-sticky: 1020;--z-fixed: 1030;--z-modal-backdrop: 1040;--z-modal: 1050;--z-popover: 1060;--z-tooltip: 1070;--safe-area-inset-top: env(safe-area-inset-top, 0px);--safe-area-inset-bottom: env(safe-area-inset-bottom, 0px);--safe-area-inset-left: env(safe-area-inset-left, 0px);--safe-area-inset-right: env(safe-area-inset-right, 0px);--header-height: 56px;--tabbar-height: 56px;--max-content-width: 768px;--transition-fast: .15s cubic-bezier(.4, 0, .2, 1);--transition-base: .2s cubic-bezier(.4, 0, .2, 1);--transition-slow: .3s cubic-bezier(.4, 0, .2, 1)}*{margin:0;padding:0;box-sizing:border-box}html{font-size:16px;-webkit-tap-highlight-color:transparent}body{font-family:var(--font-family-base);font-size:var(--font-size-base);line-height:var(--line-height-base);color:var(--color-text-primary);background-color:var(--color-bg-base);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden}.text-xs{font-size:var(--font-size-xs)}.text-sm{font-size:var(--font-size-sm)}.text-base{font-size:var(--font-size-base)}.text-md{font-size:var(--font-size-md)}.text-lg{font-size:var(--font-size-lg)}.text-xl{font-size:var(--font-size-xl)}.text-2xl{font-size:var(--font-size-2xl)}.text-3xl{font-size:var(--font-size-3xl)}.text-4xl{font-size:var(--font-size-4xl)}.font-regular{font-weight:var(--font-weight-regular)}.font-medium{font-weight:var(--font-weight-medium)}.font-semibold{font-weight:var(--font-weight-semibold)}.font-bold{font-weight:var(--font-weight-bold)}.text-primary{color:var(--color-text-primary)}.text-secondary{color:var(--color-text-secondary)}.text-tertiary{color:var(--color-text-tertiary)}.text-disabled{color:var(--color-text-disabled)}.app-header{position:fixed;top:0;left:0;right:0;height:var(--header-height);background-color:var(--color-bg-elevated);border-bottom:1px solid var(--color-border-base);display:flex;align-items:center;justify-content:space-between;padding:0 var(--space-4);z-index:var(--z-fixed);padding-top:var(--safe-area-inset-top)}.app-header__title{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.app-header__user{display:flex;align-items:center;gap:var(--space-2);font-size:var(--font-size-sm);color:var(--color-text-secondary)}.app-tabbar{position:fixed;bottom:0;left:0;right:0;height:calc(var(--tabbar-height) + var(--safe-area-inset-bottom));background-color:var(--color-bg-elevated);border-top:1px solid var(--color-border-base);display:flex;align-items:flex-start;justify-content:space-around;padding-top:var(--space-2);padding-bottom:calc(var(--space-2) + var(--safe-area-inset-bottom));z-index:var(--z-fixed)}.app-tabbar__item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-1);text-decoration:none;color:var(--color-text-tertiary);font-size:var(--font-size-xs);padding:var(--space-1) var(--space-2);transition:color var(--transition-fast);min-height:44px;position:relative}.app-tabbar__item:active{background-color:var(--color-bg-hover)}.app-tabbar__item--active{color:var(--color-primary);font-weight:var(--font-weight-medium)}.app-tabbar__icon{font-size:var(--font-size-2xl);line-height:1}.page-container{padding-top:calc(var(--header-height) + var(--safe-area-inset-top));padding-bottom:calc(var(--tabbar-height) + var(--safe-area-inset-bottom));padding-left:var(--space-4);padding-right:var(--space-4);max-width:var(--max-content-width);margin:0 auto;min-height:100vh}.page-container--no-tabbar{padding-bottom:var(--space-6)}.page-container--fullscreen{padding:var(--space-4);min-height:100vh}.card{background-color:var(--color-bg-elevated);border-radius:var(--radius-lg);padding:var(--space-4);margin-bottom:var(--space-3);border:1px solid var(--color-border-light);transition:box-shadow var(--transition-fast)}.card:active{background-color:var(--color-bg-hover)}.card--hover:hover{box-shadow:var(--shadow-sm)}.card--clickable{cursor:pointer;text-decoration:none;color:inherit;display:block}.card--clickable:active{transform:scale(.99);transition:transform var(--transition-fast)}.card__header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-3)}.card__title{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.card__section{padding-top:var(--space-3);margin-top:var(--space-3);border-top:1px solid var(--color-border-light)}.card__section:first-child{padding-top:0;margin-top:0;border-top:none}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);font-size:var(--font-size-base);font-weight:var(--font-weight-medium);line-height:var(--line-height-tight);border-radius:var(--radius-md);border:none;cursor:pointer;transition:all var(--transition-fast);text-decoration:none;white-space:nowrap;min-height:44px;-webkit-user-select:none;user-select:none}.btn:disabled{opacity:.5;cursor:not-allowed}.btn--primary{background-color:var(--color-primary);color:#fff}.btn--primary:hover{background-color:var(--color-primary-hover)}.btn--primary:active{background-color:var(--color-primary-active)}.btn--success{background-color:var(--color-success);color:#fff}.btn--success:hover{background-color:#73d13d}.btn--success:active{background-color:#389e0d}.btn--danger{background-color:var(--color-danger);color:#fff}.btn--danger:hover{background-color:var(--color-danger-hover)}.btn--danger:active{background-color:var(--color-danger-active)}.btn--secondary{background-color:var(--color-fill-2);color:var(--color-text-primary)}.btn--secondary:hover{background-color:var(--color-fill-3)}.btn--secondary:active{background-color:var(--color-fill-4)}.btn--ghost{background-color:transparent;color:var(--color-text-primary);border:1px solid var(--color-border-base)}.btn--ghost:hover{background-color:var(--color-bg-hover);border-color:var(--color-border-strong)}.btn--ghost:active{background-color:var(--color-bg-active)}.btn--small{padding:var(--space-1) var(--space-3);font-size:var(--font-size-sm);min-height:36px}.btn--large{padding:var(--space-3) var(--space-5);font-size:var(--font-size-lg);min-height:48px}.btn--block{width:100%;display:flex}.btn--icon-only{padding:var(--space-2);min-width:44px}.form-group{margin-bottom:var(--space-4)}.form-label{display:block;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-primary);margin-bottom:var(--space-2)}.form-label--required:after{content:" *";color:var(--color-danger)}.form-input,.form-select,.form-textarea{width:100%;padding:var(--space-2) var(--space-3);font-size:var(--font-size-base);line-height:var(--line-height-base);color:var(--color-text-primary);background-color:var(--color-bg-elevated);border:1px solid var(--color-border-base);border-radius:var(--radius-md);transition:all var(--transition-fast);font-family:inherit;min-height:44px}.form-input::placeholder,.form-textarea::placeholder{color:var(--color-text-tertiary)}.form-input:focus,.form-select:focus,.form-textarea:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-primary-bg)}.form-input:disabled,.form-select:disabled,.form-textarea:disabled{background-color:var(--color-fill-1);color:var(--color-text-disabled);cursor:not-allowed}.form-textarea{min-height:88px;resize:vertical;padding:var(--space-3)}.form-hint{font-size:var(--font-size-xs);color:var(--color-text-tertiary);margin-top:var(--space-1)}.form-error{font-size:var(--font-size-xs);color:var(--color-danger);margin-top:var(--space-1)}.tag{display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-2);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);border-radius:var(--radius-sm);white-space:nowrap}.tag--primary{background-color:var(--color-primary-bg);color:var(--color-primary)}.tag--success{background-color:var(--color-success-bg);color:var(--color-success)}.tag--warning{background-color:var(--color-warning-bg);color:var(--color-warning)}.tag--danger{background-color:var(--color-danger-bg);color:var(--color-danger)}.tag--gray{background-color:var(--color-fill-2);color:var(--color-text-secondary)}.chip-filter{display:inline-flex;align-items:center;padding:var(--space-2) var(--space-3);font-size:var(--font-size-sm);font-weight:var(--font-weight-regular);border-radius:var(--radius-full);border:1px solid var(--color-border-base);background-color:var(--color-bg-elevated);color:var(--color-text-secondary);cursor:pointer;transition:all var(--transition-fast);white-space:nowrap;min-height:36px}.chip-filter:hover{background-color:var(--color-bg-hover)}.chip-filter--active{background-color:var(--color-primary);color:#fff;border-color:var(--color-primary);font-weight:var(--font-weight-medium)}.list-item{padding:var(--space-3) 0;border-bottom:1px solid var(--color-border-light)}.list-item:last-child{border-bottom:none}.list-item__header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:var(--space-2)}.list-item__title{font-size:var(--font-size-base);font-weight:var(--font-weight-medium);color:var(--color-text-primary);flex:1;margin-right:var(--space-2)}.list-item__meta{font-size:var(--font-size-sm);color:var(--color-text-secondary);line-height:var(--line-height-relaxed)}.list-item__footer{font-size:var(--font-size-xs);color:var(--color-text-tertiary);margin-top:var(--space-2)}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-12) var(--space-4);text-align:center}.empty-state__icon{font-size:64px;opacity:.3;margin-bottom:var(--space-3)}.empty-state__text{font-size:var(--font-size-base);color:var(--color-text-tertiary)}.loading-spinner{display:flex;align-items:center;justify-content:center;padding:var(--space-6);color:var(--color-text-tertiary)}.stat-card{background:linear-gradient(135deg,var(--color-primary) 0%,#0958D9 100%);color:#fff;border-radius:var(--radius-lg);padding:var(--space-5);margin-bottom:var(--space-3)}.stat-card__label{font-size:var(--font-size-sm);opacity:.9;margin-bottom:var(--space-2)}.stat-card__value{font-size:var(--font-size-4xl);font-weight:var(--font-weight-bold);line-height:var(--line-height-tight)}.stat-card--success{background:linear-gradient(135deg,var(--color-success) 0%,#389E0D 100%)}.stat-card--warning{background:linear-gradient(135deg,var(--color-warning) 0%,#D48806 100%)}.stat-card--danger{background:linear-gradient(135deg,var(--color-danger) 0%,#CF1322 100%)}.greeting-card{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border-radius:var(--radius-lg);padding:var(--space-5);margin-bottom:var(--space-4)}.greeting-card__title{font-size:var(--font-size-2xl);font-weight:var(--font-weight-semibold);margin-bottom:var(--space-1)}.greeting-card__subtitle{font-size:var(--font-size-base);opacity:.9}.status-badge{display:inline-flex;align-items:center;gap:var(--space-1);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium)}.status-badge__dot{width:6px;height:6px;border-radius:50%}.status-badge--success .status-badge__dot{background-color:var(--color-success)}.status-badge--warning .status-badge__dot{background-color:var(--color-warning)}.status-badge--danger .status-badge__dot{background-color:var(--color-danger)}.sticky-footer{position:fixed;bottom:0;left:0;right:0;background-color:var(--color-bg-elevated);border-top:1px solid var(--color-border-base);padding:var(--space-3) var(--space-4);padding-bottom:calc(var(--space-3) + var(--safe-area-inset-bottom));z-index:var(--z-sticky);box-shadow:0 -2px 8px #0000000a}.sticky-footer--above-tabbar{bottom:calc(var(--tabbar-height) + var(--safe-area-inset-bottom));padding-bottom:var(--space-3);z-index:calc(var(--z-fixed) - 1)}.page-container--with-sticky{padding-bottom:calc(var(--tabbar-height) + var(--safe-area-inset-bottom) + 72px)}.sticky-footer__inner{max-width:var(--max-content-width);margin:0 auto;display:flex;gap:var(--space-3)}.fab{position:fixed;bottom:calc(var(--tabbar-height) + var(--space-4) + var(--safe-area-inset-bottom));right:var(--space-4);width:56px;height:56px;border-radius:50%;background-color:var(--color-primary);color:#fff;display:flex;align-items:center;justify-content:center;font-size:var(--font-size-3xl);box-shadow:var(--shadow-lg);cursor:pointer;transition:all var(--transition-fast);z-index:var(--z-fixed);border:none;text-decoration:none}.fab:hover{background-color:var(--color-primary-hover);transform:scale(1.05)}.fab:active{transform:scale(.95)}.grid{display:grid;gap:var(--space-3)}.grid--2{grid-template-columns:repeat(2,1fr)}.grid--3{grid-template-columns:repeat(3,1fr)}.mt-1{margin-top:var(--space-1)}.mt-2{margin-top:var(--space-2)}.mt-3{margin-top:var(--space-3)}.mt-4{margin-top:var(--space-4)}.mt-6{margin-top:var(--space-6)}.mb-1{margin-bottom:var(--space-1)}.mb-2{margin-bottom:var(--space-2)}.mb-3{margin-bottom:var(--space-3)}.mb-4{margin-bottom:var(--space-4)}.mb-6{margin-bottom:var(--space-6)}.ml-2{margin-left:var(--space-2)}.mr-2{margin-right:var(--space-2)}.p-0{padding:0}.p-2{padding:var(--space-2)}.p-3{padding:var(--space-3)}.p-4{padding:var(--space-4)}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-2{gap:var(--space-2)}.gap-3{gap:var(--space-3)}.gap-4{gap:var(--space-4)}.text-center{text-align:center}.text-right{text-align:right}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.line-clamp-2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}@media(min-width:769px){.page-container{padding-left:var(--space-6);padding-right:var(--space-6)}.card{padding:var(--space-5)}}.nine-cell{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;min-height:88px;padding:var(--space-3);background:var(--color-bg-elevated);border:1px solid var(--color-border-base);border-radius:var(--radius-lg);text-decoration:none;color:var(--color-text-primary);font-size:var(--font-size-sm);box-shadow:var(--shadow-xs)}.nine-cell:active{background:var(--color-bg-hover)}.nine-cell__icon{font-size:22px;line-height:1}.nine-cell__badge{position:absolute;top:6px;right:8px;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--color-danger);color:#fff;font-size:11px;line-height:18px;text-align:center}.nine-cell__badge--warn{background:var(--color-warning)}
