:root{--primary-color:#06c755;--secondary-color:#333;--bg-color:#f8f9fa;--card-bg:#fff;--text-color:#333;--text-muted:#666;--border-color:#e9ecef;--success-color:#28a745;--warning-color:#ffc107;--danger-color:#dc3545;--shadow:0 4px 6px #0000001a;--border-radius:12px;--font-xs:22px;--font-sm:29px;--font-base:40px;--font-md:35px;--font-lg:46px;--font-xl:56px;--font-2xl:68px;--font-content:40px;--sp:18px;--sp-2:36px;--sp-3:54px;--container-max-w:800px}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;margin:0;padding:0}body{color:var(--text-color);font-family:PingFang TC,Microsoft JhengHei,sans-serif;font-size:var(--font-base);-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;line-height:1.6}.container,body{background-color:var(--bg-color);overflow-x:clip}.container{max-width:var(--container-max-w);width:100%;min-height:100vh;margin:0 auto;padding:0;position:relative}.btn{border-radius:var(--border-radius);width:100%;font-size:var(--font-base);text-align:center;cursor:pointer;margin-bottom:var(--sp);border:none;padding:.6em 1em;font-family:inherit;font-weight:700;transition:all .2s;display:block}.btn:active{transform:scale(.98)}.btn-primary{background-color:var(--primary-color);color:#fff}.btn-primary:hover{opacity:.9}.btn-secondary{color:var(--text-color);background-color:#e9ecef}.btn-secondary:hover{background-color:#dee2e6}.btn-small{font-size:var(--font-xs);border-radius:8px;width:auto;margin-bottom:0;padding:.2em .5em;display:inline-block}.btn-danger{background-color:var(--danger-color);color:#fff}.form-group{margin-bottom:var(--sp-2)}.form-group label{margin-bottom:var(--sp);font-weight:700;font-size:var(--font-sm);display:block}.form-group input,.form-group select{border:1px solid var(--border-color);border-radius:var(--border-radius);width:100%;font-size:var(--font-base);padding:.5em .7em;font-family:inherit}.form-group input:focus,.form-group select:focus{border-color:var(--primary-color);outline:none;box-shadow:0 0 0 3px #06c7551a}.form-group p{font-size:var(--font-xs);color:var(--text-muted);margin-top:.2em}.message{border-radius:var(--border-radius);margin-bottom:var(--sp-2);font-size:var(--font-sm);padding:.6em .8em}.message-info{color:#004085;background-color:#e7f3ff}.message-success{color:#155724;background-color:#d4edda}.message-warning{color:#856404;background-color:#fff3cd}.message-error{color:#721c24;background-color:#f8d7da}.text-center{text-align:center}.text-muted{color:var(--text-muted)}.mb-20{margin-bottom:var(--sp-2)}.divider{border:none;border-top:1px solid var(--border-color);margin:var(--sp-2) 0}.spinner{border:4px solid #f3f3f3;border-top:4px solid var(--primary-color);width:2.5em;height:2.5em;margin:0 auto var(--sp);border-radius:50%;animation:1s linear infinite spin}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.checkbox-group{align-items:flex-start;gap:var(--sp);margin-bottom:var(--sp-2);display:flex}.checkbox-group input[type=checkbox]{cursor:pointer;flex-shrink:0;width:1.2em;height:1.2em;margin-top:.2em}.checkbox-group label{font-weight:400;font-size:var(--font-sm);cursor:pointer;flex:1;margin:0}.checkbox-group a{color:var(--primary-color);text-decoration:none}.checkbox-group a:hover{text-decoration:underline}.page{background-color:var(--bg-color);min-height:100vh}.card,.card-row,.page-content{padding:12px}.card,.card-row{border-radius:var(--border-radius);box-shadow:var(--shadow);background:#fff;margin-bottom:10px}.card-row:active,.card:active{transform:scale(.98)}.card-row{cursor:pointer;align-items:center;gap:10px;transition:transform .15s,box-shadow .15s;display:flex}.card-row:active{box-shadow:none}.card-row__icon{font-size:var(--font-lg);flex-shrink:0}.card-row__body{flex:1;min-width:0}.card-row__title{font-weight:700;font-size:var(--font-sm)}.card-row__desc,.card-row__title{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.card-row__desc{font-size:var(--font-xs);color:var(--text-muted)}.card-row__arrow{font-size:var(--font-md);color:var(--border-color);flex-shrink:0;font-weight:700}.stats-grid{gap:8px;margin-bottom:12px;display:grid}.stats-grid--2{grid-template-columns:repeat(2,1fr)}.stats-grid--3{grid-template-columns:repeat(3,1fr)}.stat-cell{border-radius:var(--border-radius);box-shadow:var(--shadow);text-align:center;background:#fff;padding:10px 6px}.stat-cell__value{font-size:var(--font-xl);color:var(--primary-color);margin-bottom:2px;font-weight:700}.stat-cell__label{font-size:var(--font-xs);color:var(--text-muted)}.section-heading{font-size:var(--font-sm);margin-bottom:8px;font-weight:700}.empty-center,.loading-center{color:var(--text-muted);flex-direction:column;align-items:center;padding:48px 12px;display:flex}.loading-center .spinner{margin-bottom:12px}.empty-center{text-align:center}.empty-center__icon{font-size:var(--font-2xl);margin-bottom:12px}.progress-row{align-items:center;gap:6px;display:flex}.progress-bar{background-color:var(--bg-color);border-radius:2px;flex:1;height:4px;overflow:hidden}.progress-bar__fill{background:linear-gradient(90deg,var(--primary-color),#2ecc71);border-radius:2px;height:100%;transition:width .4s}.progress-text{font-size:var(--font-xs);color:var(--primary-color);flex-shrink:0;font-weight:700}.text-ellipsis{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}
