:root{--bg: #f4f5f7;--panel: #ffffff;--border: #d1d5db;--text: #1a1a2e;--text-secondary: #6b7280;--accent: #3d66ff;--accent-light: #eef2ff;--danger: #ef4444;--success: #22c55e;--warning: #f59e0b;--radius: 10px;--shadow: 0 1px 3px rgba(0,0,0,.06), 0 1px 2px rgba(0,0,0,.04)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;background:var(--bg);color:var(--text);font-size:14px;line-height:1.5}.app{display:flex;flex-direction:column;min-height:100vh}.topbar{display:flex;align-items:center;gap:16px;padding:0 24px;height:56px;background:var(--panel);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:100}.brand{display:flex;align-items:center;gap:8px;font-size:18px;font-weight:700;color:var(--accent);cursor:pointer;background:none;border:none}.topnav{display:flex;gap:4px}.topnav button{padding:6px 14px;border:none;background:none;cursor:pointer;font-size:14px;color:var(--text-secondary);border-radius:6px;transition:all .15s}.topnav button.active,.topnav button:hover{background:var(--accent-light);color:var(--accent)}.top-actions{margin-left:auto;display:flex;align-items:center;gap:12px}.avatar{width:32px;height:32px;border-radius:50%;background:var(--accent-light);display:flex;align-items:center;justify-content:center}.balance-pill{display:flex;align-items:center;gap:6px;padding:6px 12px;border-radius:20px;border:none;cursor:pointer;background:var(--accent-light);color:var(--accent);font-size:13px;font-weight:600;transition:background .15s}.balance-pill:hover{background:#dbe3ff}.phone-label{font-size:13px;color:var(--text-secondary)}.layout{display:flex;flex:1}.sidebar{width:220px;flex-shrink:0;background:var(--panel);border-right:1px solid var(--border);padding:16px 8px;overflow-y:auto;position:sticky;top:56px;align-self:flex-start;height:calc(100vh - 56px)}.content{flex:1;padding:24px;overflow-y:auto}.side-section{margin-bottom:8px}.side-section-head{display:flex;align-items:center;justify-content:space-between;width:100%;padding:8px 12px;border:none;background:none;cursor:pointer;font-size:13px;font-weight:600;color:var(--text-secondary)}.side-title{display:flex;align-items:center;gap:8px}.side-children{padding-left:8px}.side-item{display:block;width:100%;text-align:left;padding:7px 12px;border:none;background:none;cursor:pointer;font-size:13px;color:var(--text);border-radius:6px;transition:all .15s}.side-item:hover{background:var(--accent-light)}.side-item.active{background:var(--accent);color:#fff}.panel{background:var(--panel);border-radius:var(--radius);box-shadow:var(--shadow);padding:24px;margin-bottom:20px}.panel-title{font-size:16px;font-weight:600;margin-bottom:16px}.page-title{font-size:22px;font-weight:700;margin-bottom:20px}.toolbar{display:flex;align-items:center;gap:12px;margin-bottom:20px;flex-wrap:wrap}.search-box{display:flex;align-items:center;gap:8px;padding:8px 14px;border:1px solid var(--border);border-radius:8px;background:var(--panel);min-width:240px}.search-box input{border:none;outline:none;font-size:14px;flex:1;background:none}.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border:none;border-radius:8px;font-size:13px;font-weight:500;cursor:pointer;transition:all .15s}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:#2d54e0}.btn-secondary{background:var(--accent-light);color:var(--accent)}.btn-secondary:hover{background:#dbe3ff}.btn-danger{background:#fef2f2;color:var(--danger)}.btn-danger:hover{background:#fee2e2}.btn-ghost{background:none;color:var(--text-secondary)}.btn-ghost:hover{background:#f3f4f6}.btn-sm{padding:5px 10px;font-size:12px}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse}th,td{padding:10px 14px;text-align:left;border-bottom:1px solid var(--border);font-size:13px}th{color:var(--text-secondary);font-weight:500;background:#fafafa}td{color:var(--text)}tr:hover td{background:#fafbfc}.badge{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600}.badge-new{background:#dbeafe;color:#2563eb}.badge-hot{background:#fef3c7;color:#d97706}.badge-active{background:#dcfce7;color:#16a34a}.badge-inactive{background:#f3f4f6;color:#6b7280}.badge-danger{background:#fef2f2;color:#ef4444}.badge-warning{background:#fef3c7;color:#d97706}.tag{display:inline-block;padding:3px 10px;border-radius:20px;font-size:12px;background:#f3f4f6;color:var(--text-secondary);margin:2px}.grid{display:grid;gap:16px}.grid-2{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(3,1fr)}.grid-4{grid-template-columns:repeat(4,1fr)}@media(max-width:1024px){.grid-4{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}}.model-card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:20px;cursor:pointer;transition:all .2s;text-align:left;width:100%}.model-card:hover{border-color:var(--accent);box-shadow:0 4px 12px #3d66ff1a;transform:translateY(-2px)}.model-card h3{font-size:16px;margin-bottom:4px}.model-card .provider{font-size:13px;color:var(--text-secondary)}.model-desc{font-size:13px;color:var(--text-secondary);margin:10px 0;line-height:1.5}.badges{display:flex;gap:6px;margin-bottom:10px}.badges span{padding:2px 8px;border-radius:4px;font-size:11px;font-weight:700;background:var(--accent);color:#fff}.badges span.hot{background:var(--warning)}.stat-card{background:var(--panel);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow)}.stat-label{font-size:13px;color:var(--text-secondary);margin-bottom:6px}.stat-value{font-size:28px;font-weight:700}.stat-sub{font-size:12px;color:var(--text-secondary);margin-top:4px}.form-group{margin-bottom:16px}.form-label{display:block;font-size:13px;font-weight:500;margin-bottom:6px;color:var(--text)}.form-input{width:100%;padding:9px 14px;border:1px solid var(--border);border-radius:8px;font-size:14px;outline:none;transition:border .15s}.form-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px #3d66ff1a}.date-range-input{width:168px;color:var(--text)}.form-select{width:100%;padding:9px 14px;border:1px solid var(--border);border-radius:8px;font-size:14px;outline:none;background:var(--panel)}.form-row{display:flex;gap:16px}.form-row>*{flex:1}.profile-info-list{display:flex;flex-direction:column}.profile-info-row{display:flex;align-items:center;gap:12px;padding:14px 0;border-bottom:1px solid var(--border)}.profile-info-row:last-child{border-bottom:none}.profile-info-label{width:100px;flex-shrink:0;font-size:13px;color:var(--text-secondary)}.profile-info-value{flex:1;font-size:14px}.auth-page{display:flex;align-items:center;justify-content:flex-end;min-height:100vh;padding-right:8vw;background:#eaf2ff url(/login-bg.jpg) center/cover no-repeat}.auth-card{background:var(--panel);border-radius:18px;padding:48px;width:440px;max-width:90vw;box-shadow:0 20px 60px #00000026}.auth-card h1{font-size:26px;margin-bottom:8px}@media(max-width:768px){.auth-page{justify-content:center;padding-right:0}}.auth-card .subtitle{font-size:14px;color:var(--text-secondary);margin-bottom:24px}.auth-card .btn{width:100%;justify-content:center;padding:12px;font-size:15px}.auth-switch{text-align:center;margin-top:16px;font-size:13px;color:var(--text-secondary)}.auth-switch a{color:var(--accent);cursor:pointer;text-decoration:none}.price-table{width:100%}.price-table th{background:var(--accent-light);color:var(--accent)}.price-table th:first-child{width:36%}.price-table th:not(:first-child){width:32%}.price-value{font-weight:600;color:var(--accent)}.pricing-toolbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-bottom:16px}.pricing-count{font-size:13px;color:var(--text-secondary)}.pricing-toolbar-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.segmented{display:inline-flex;border:1px solid var(--border);border-radius:8px;overflow:hidden;background:var(--panel)}.segmented button{border:none;background:none;padding:6px 12px;font-size:12px;color:var(--text-secondary);cursor:pointer;display:flex;align-items:center}.segmented button+button{border-left:1px solid var(--border)}.segmented button.active{background:var(--accent);color:#fff}.segmented button:hover:not(.active){background:#f3f4f6}.sort-select{width:auto;padding:6px 10px;font-size:12px}.price-card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:18px;cursor:pointer;transition:all .2s}.price-card:hover{border-color:var(--accent);box-shadow:0 4px 12px #3d66ff1a;transform:translateY(-2px)}.price-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.price-card-title{display:flex;align-items:center;gap:8px;min-width:0}.price-card-title h3{font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.price-card-actions{display:flex;align-items:center;gap:2px;flex-shrink:0}.vendor-icon{display:flex;align-items:center;flex-shrink:0}.price-card-prices{display:flex;flex-wrap:wrap;gap:4px 14px;margin:12px 0 4px;font-size:12px;color:var(--text-secondary)}.price-card-prices b{color:var(--text);font-size:13px;margin-left:2px}.price-card-foot{display:flex;flex-wrap:wrap;gap:4px;margin-top:10px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:200}.modal{background:var(--panel);border-radius:12px;padding:24px;width:480px;max-width:90vw;max-height:80vh;overflow-y:auto;box-shadow:0 20px 60px #0003}.modal-title{font-size:18px;font-weight:600;margin-bottom:16px}.modal-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:20px}.modal-wide{width:1200px;max-width:95vw}.empty{text-align:center;padding:40px;color:var(--text-secondary)}.loading{display:flex;align-items:center;justify-content:center;padding:40px;color:var(--text-secondary)}.announcement-item{padding:14px 0;border-bottom:1px solid var(--border)}.announcement-item:last-child{border-bottom:none}.announcement-title{font-weight:500;font-size:14px}.announcement-meta{font-size:12px;color:var(--text-secondary);margin-top:4px}.announcement-content-preview{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow-wrap:anywhere;word-break:break-word}.announcement-content-full{white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word}.code-block{background:#1e293b;color:#e2e8f0;padding:16px;border-radius:8px;font-family:SF Mono,Fira Code,monospace;font-size:12px;overflow-x:auto;line-height:1.6;white-space:pre;margin:0}.playground{display:flex;gap:16px;height:calc(100vh - 128px);min-height:520px}.playground-params{width:280px;flex-shrink:0;background:var(--panel);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px;overflow-y:auto;transition:width .15s}.playground-params.collapsed{width:44px;padding:16px 8px;display:flex;align-items:flex-start;justify-content:center}.playground-params-head{display:flex;align-items:center;justify-content:space-between;font-size:14px;font-weight:600;margin-bottom:16px}.playground-params-head>span{display:flex;align-items:center;gap:6px}.param-slider{margin-bottom:18px}.param-slider-head{display:flex;align-items:center;justify-content:space-between;font-size:13px;margin-bottom:8px}.param-help{color:var(--text-secondary);cursor:help}.param-value{background:var(--accent-light);color:var(--accent);font-weight:600;font-size:12px;padding:2px 8px;border-radius:6px;min-width:40px;text-align:center}.param-slider input[type=range]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:6px;border-radius:3px;outline:none;cursor:pointer;background:#e5e7eb}.param-slider input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:16px;height:16px;border-radius:50%;background:#fff;border:3px solid var(--accent);cursor:pointer;box-shadow:0 1px 3px #0003}.param-slider input[type=range]::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:#fff;border:3px solid var(--accent);cursor:pointer}.param-range-labels{display:flex;justify-content:space-between;font-size:11px;color:var(--text-secondary);margin-top:4px}.param-help-text{font-size:12px;color:var(--text-secondary);margin-top:6px;line-height:1.5}.link-btn{background:none;border:none;padding:0;color:var(--accent);cursor:pointer;font-size:12px;text-decoration:underline}.playground-chat{flex:1;display:flex;flex-direction:column;min-width:0;background:var(--panel);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px}.playground-chat-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:12px;margin-bottom:12px;border-bottom:1px solid var(--border);font-size:14px;font-weight:600}.playground-messages{flex:1;overflow-y:auto;padding:8px 4px}.playground-welcome{max-width:480px;margin:40px auto;text-align:center}.playground-avatar{width:56px;height:56px;border-radius:50%;background:var(--accent-light);color:var(--accent);display:flex;align-items:center;justify-content:center;margin:0 auto 16px}.playground-welcome h2{font-size:18px;margin-bottom:8px}.playground-welcome p{color:var(--text-secondary);font-size:13px;margin-bottom:20px}.playground-suggestions{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.suggestion-chip{padding:10px 14px;border:1px solid var(--border);border-radius:8px;background:var(--panel);font-size:13px;text-align:left;cursor:pointer;transition:all .15s;color:var(--text)}.suggestion-chip:hover{border-color:var(--accent);background:var(--accent-light)}.chat-bubble-row{display:flex;gap:10px;margin-bottom:16px;align-items:flex-start}.chat-bubble-row.user{flex-direction:row-reverse}.chat-avatar{width:30px;height:30px;border-radius:50%;background:var(--accent-light);color:var(--accent);display:flex;align-items:center;justify-content:center;flex-shrink:0}.chat-bubble-row.user .chat-avatar{background:var(--accent);color:#fff}.chat-bubble{max-width:70%;padding:10px 14px;border-radius:10px;background:#f4f5f7;font-size:14px;line-height:1.6;white-space:pre-wrap;word-break:break-word}.chat-bubble-row.user .chat-bubble{background:var(--accent-light)}.chat-bubble-images{display:flex;gap:8px;flex-wrap:wrap;margin-top:6px}.chat-bubble-image{max-width:200px;max-height:200px;border-radius:8px;object-fit:cover;display:block}.chat-bubble-markdown{white-space:normal}.chat-bubble-markdown>*:first-child{margin-top:0}.chat-bubble-markdown>*:last-child{margin-bottom:0}.chat-bubble-markdown p{margin:0 0 8px}.chat-bubble-markdown ul,.chat-bubble-markdown ol{margin:0 0 8px 20px}.chat-bubble-markdown li{margin-bottom:4px}.chat-bubble-markdown li>p{margin-bottom:4px}.chat-bubble-markdown h1,.chat-bubble-markdown h2,.chat-bubble-markdown h3,.chat-bubble-markdown h4{margin:12px 0 8px;font-size:1.05em;line-height:1.4}.chat-bubble-markdown blockquote{border-left:3px solid var(--border);padding-left:10px;color:var(--text-secondary);margin:0 0 8px}.chat-bubble-markdown table{border-collapse:collapse;margin:0 0 8px;font-size:13px}.chat-bubble-markdown th,.chat-bubble-markdown td{border:1px solid var(--border);padding:4px 8px}.chat-bubble-markdown a{color:var(--accent);word-break:break-all}.chat-bubble-markdown hr{border:none;border-top:1px solid var(--border);margin:10px 0}.chat-bubble-markdown code{background:#0000000f;padding:1px 5px;border-radius:4px;font-family:SF Mono,Fira Code,monospace;font-size:12.5px}.chat-bubble-markdown pre.code-block{margin:0 0 8px}.chat-bubble-markdown pre.code-block code{background:none;padding:0;border-radius:0;font-size:12px;color:inherit}.playground-attach-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:8px}.attach-chip{display:inline-flex;align-items:center;gap:6px;padding:3px 8px 3px 3px;border:1px solid var(--border);border-radius:20px;font-size:12px;background:var(--panel);color:var(--text-secondary);max-width:220px}.attach-chip img{width:22px;height:22px;border-radius:4px;object-fit:cover;flex-shrink:0}.attach-chip-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.attach-chip button{display:flex;align-items:center;border:none;background:none;padding:2px;cursor:pointer;color:var(--text-secondary);flex-shrink:0}.attach-chip button:hover{color:var(--danger)}.page-notice{display:flex;align-items:center;gap:10px;margin-top:8px;padding:10px 14px;border-radius:8px;background:#fffbeb;border:1px solid #fde68a;color:#92400e;font-size:13px}.page-notice svg{flex-shrink:0;color:var(--warning)}.page-notice span{flex:1;line-height:1.5}.playground-input-bar{display:flex;align-items:flex-end;gap:10px;border:1px solid var(--border);border-radius:10px;padding:10px;margin-top:8px}.playground-input{flex:1;border:none;outline:none;resize:none;font-size:14px;font-family:inherit;line-height:1.5;max-height:120px}.playground-send{padding:8px;border-radius:8px;flex-shrink:0}.playground-disclaimer{text-align:center;font-size:11px;color:var(--text-secondary);margin-top:8px}@media(max-width:900px){.playground{flex-direction:column;height:auto}.playground-params{width:100%}.playground-suggestions{grid-template-columns:1fr}}@media(max-width:768px){.sidebar{display:none}.content{padding:16px}.topbar{padding:0 12px}}
