:root{--primary: #2563eb;--primary-dark: #1d4ed8;--bg: #f5f7fa;--card: #ffffff;--text: #1f2937;--text-2: #6b7280;--border: #e5e7eb;--danger: #dc2626;--success: #16a34a;--warn: #d97706;--font-xingkai: "STXingkai", "华文行楷", "Xingkai SC", "STKaiti", "华文楷体", "KaiTi", "楷体", "Kaiti SC", cursive, serif}*{box-sizing:border-box;margin:0;padding:0}body{font-family:PingFang SC,Microsoft YaHei,system-ui,sans-serif;background:var(--bg);color:var(--text);font-size:14px}a{color:var(--primary);text-decoration:none}.topbar{background:#fff;border-bottom:1px solid var(--border);position:sticky;top:0;z-index:10}.topbar-main{max-width:1100px;margin:0 auto;padding:0 16px;height:54px;display:flex;align-items:center;gap:14px}.brand{display:inline-flex;align-items:flex-end;gap:10px;margin-right:auto;min-width:0;overflow:hidden}.topbar .logo{font-size:18px;font-weight:700;color:var(--primary);white-space:nowrap;line-height:1;flex:0 0 auto}.logo-slogan{font-family:var(--font-xingkai);font-size:12.5px;letter-spacing:.3px;color:#64748b;white-space:nowrap;padding-left:10px;border-left:1px solid var(--border);line-height:1;min-width:0;overflow:hidden;text-overflow:ellipsis}.topbar-nav{border-top:1px solid #f1f3f6;background:#fafbfd}.topbar-nav nav{max-width:1100px;margin:0 auto;padding:7px 16px 9px;display:flex;gap:6px;overflow-x:auto;scrollbar-width:none}.topbar-nav nav::-webkit-scrollbar{display:none}.topbar nav a{padding:7px 13px;border-radius:8px;color:var(--text-2);white-space:nowrap;line-height:1.2;transition:background .15s,color .15s}.topbar nav a:hover{background:#eef2f7;color:var(--text)}.topbar nav a.active{background:#eff6ff;color:var(--primary);font-weight:600}.user-chip{color:var(--text-2);white-space:nowrap;font-size:13px}.notif-wrap{position:relative}.notif-btn{position:relative;width:34px;height:34px;border-radius:50%;border:1px solid var(--border);background:#fff;font-size:15px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center}.notif-btn:hover{background:var(--bg)}.notif-badge{position:absolute;top:-5px;right:-5px;min-width:17px;height:17px;padding:0 4px;border-radius:999px;background:var(--danger);color:#fff;font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center}.notif-dot{position:absolute;bottom:-1px;right:-1px;width:9px;height:9px;border-radius:50%;background:#cbd5e1;border:2px solid #fff}.notif-dot.live{background:var(--success)}.notif-dot.connecting{background:var(--warn);animation:notifPulse 1.2s infinite}.notif-panel{position:absolute;right:0;top:42px;width:340px;background:#fff;border:1px solid var(--border);border-radius:12px;box-shadow:0 12px 32px #0f172a24;z-index:60;overflow:hidden}.notif-head{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid var(--border);font-size:13px;font-weight:600}.notif-head em{font-style:normal;font-weight:400;color:var(--text-2);font-size:11px;margin-left:6px}.notif-link{border:none;background:none;color:var(--primary);font-size:12px;cursor:pointer;font-family:inherit}.notif-list{max-height:360px;overflow-y:auto}.notif-item{display:flex;gap:8px;width:100%;text-align:left;padding:10px 12px;border:none;border-bottom:1px solid #f3f4f6;background:#fff;cursor:pointer;font-family:inherit}.notif-item:hover{background:#f8fafc}.notif-item.unread{background:#f5f9ff}.notif-item.unread .notif-title:before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--primary);margin-right:5px;vertical-align:middle}.notif-ico{font-size:14px;line-height:18px}.notif-body{display:flex;flex-direction:column;gap:2px;min-width:0}.notif-title{font-size:13px;font-weight:600;color:var(--text)}.notif-text{font-size:12px;color:var(--text-2);line-height:1.45;word-break:break-word}.notif-time{font-size:11px;color:#9ca3af}.notif-empty{padding:26px 14px;text-align:center;color:var(--text-2);font-size:12px}.lv-danger .notif-title{color:var(--danger)}@keyframes notifPulse{0%,to{opacity:1}50%{opacity:.25}}.grade-s{color:#b45309;background:#fef3c7;border-color:#fcd34d}.grade-a{color:#1d4ed8;background:#dbeafe;border-color:#bfdbfe}.grade-b{color:#047857;background:#d1fae5;border-color:#a7f3d0}.grade-c{color:#475569;background:#f1f5f9;border-color:#e2e8f0}.grade-badge{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:700;padding:2px 8px;border-radius:999px;border:1px solid transparent;white-space:nowrap;vertical-align:middle}.grade-badge.big{font-size:20px;padding:6px 12px;border-radius:10px}.grade-chip{border:1px solid var(--border);background:#fff;border-radius:999px;padding:4px 12px;font-size:12px;cursor:pointer;display:inline-flex;align-items:center;gap:6px;font-family:inherit}.grade-chip.on{border-color:var(--primary);background:#eff6ff;color:var(--primary);font-weight:600}.grade-dot{width:18px;height:18px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:10px;font-weight:800;color:#fff}.gd-S{background:#f59e0b}.gd-A{background:#2563eb}.gd-B{background:#059669}.gd-C{background:#94a3b8}.slot-cover{position:relative}.slot-cover .grade-badge{position:absolute;top:8px;left:8px;box-shadow:0 1px 4px #0000002e}.slot-desc{font-size:12px;color:var(--text-2);line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:36px}.slot-traffic{font-size:12px;background:#f8fafc;border:1px dashed var(--border);border-radius:8px;padding:5px 8px}.detail-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.detail-grid{display:grid;grid-template-columns:1fr 340px;gap:14px;align-items:start}.detail-cover{width:100%;height:300px;object-fit:cover;display:block}.gallery-thumbs{display:flex;gap:8px;padding:10px}.gallery-thumbs img{width:76px;height:56px;object-fit:cover;border-radius:6px;cursor:pointer;border:2px solid transparent}.gallery-thumbs img.on{border-color:var(--primary)}.traffic-bar{height:10px;background:#eef2f7;border-radius:999px;overflow:hidden}.traffic-bar span{display:block;height:100%;background:linear-gradient(90deg,#60a5fa,#2563eb);border-radius:999px}.traffic-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.traffic-num{font-size:20px;font-weight:700}.grade-card{border-radius:12px;padding:12px;border:1px solid var(--border)}.grade-card-top{display:flex;gap:10px;align-items:center}.grade-card-stats{display:flex;gap:18px;margin-top:10px;font-size:13px}.grade-card-stats .muted{display:block;font-size:11px}.map-card{border:1px solid var(--border);border-radius:10px;overflow:hidden}.map-box{height:240px}.map-box.schematic svg{width:100%;height:100%;display:block}.map-info{padding:10px 12px}.map-addr{font-size:13px;font-weight:600}.coord-chip{font-size:12px;background:#f1f5f9;border-radius:6px;padding:4px 8px}.coord-chip em{font-style:normal;color:var(--text-2);margin-left:4px;font-size:11px}@media (max-width: 720px){.detail-grid{grid-template-columns:1fr}.detail-cover{height:200px}}.container{max-width:1100px;margin:0 auto;padding:20px 16px 44px}.page-title{font-size:20px;font-weight:700;margin-bottom:4px}.page-sub{color:var(--text-2);margin-bottom:16px;font-size:13px}.card{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:16px;margin-bottom:14px}.grid{display:grid;gap:12px}.grid-2{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(3,1fr)}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.spread{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}.muted{color:var(--text-2);font-size:12px}.mt8{margin-top:8px}.mt16{margin-top:16px}.price{color:var(--danger);font-weight:700}.btn{display:inline-block;border:none;border-radius:8px;padding:8px 16px;font-size:14px;cursor:pointer;background:var(--primary);color:#fff;font-family:inherit}.btn:hover{background:var(--primary-dark)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-ghost{background:#fff;color:var(--text);border:1px solid var(--border)}.btn-danger{background:var(--danger)}.btn-sm{padding:4px 10px;font-size:12px;border-radius:6px}input,select,textarea{width:100%;padding:8px 10px;border:1px solid var(--border);border-radius:8px;font-size:14px;font-family:inherit;background:#fff}input[type=checkbox]{width:auto;display:inline-block;padding:0;margin:0;accent-color:var(--primary);cursor:pointer}input:focus,select:focus,textarea:focus{outline:2px solid #bfdbfe;border-color:var(--primary)}label.field{display:block;margin-bottom:10px}label.field span{display:block;font-size:12px;color:var(--text-2);margin-bottom:4px}.tag{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12px}.tag-success{background:#dcfce7;color:#15803d}.tag-warn{background:#fef3c7;color:#b45309}.tag-danger{background:#fee2e2;color:#b91c1c}.tag-info{background:#dbeafe;color:#1d4ed8}.tag-purple{background:#ede9fe;color:#6d28d9}.tag-gray{background:#f3f4f6;color:#6b7280}.tag-rural{background:#d1fae5;color:#047857;font-weight:600}.stat-num{font-size:24px;font-weight:700}.empty{text-align:center;color:var(--text-2);padding:40px 0}.app-footer{border-top:1px solid var(--border);background:#fafbfd;margin-top:8px}.app-footer-inner{max-width:1100px;margin:0 auto;padding:18px 16px;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;color:var(--text-2);font-size:12.5px}.app-footer-inner a{color:var(--text-2)}.app-footer-inner a:hover{color:var(--primary)}.banner{background:linear-gradient(90deg,#059669,#10b981);color:#fff;border-radius:12px;padding:14px 18px;margin-bottom:16px}.banner b{font-size:15px}.modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:100;padding:16px}.modal{background:#fff;border-radius:14px;padding:20px;width:100%;max-width:520px;max-height:88vh;overflow-y:auto}.modal h3{margin-bottom:14px}.imgs{display:flex;gap:8px;flex-wrap:wrap}.imgs img{width:64px;height:64px;object-fit:cover;border-radius:8px;border:1px solid var(--border)}.thumb-lg{width:100%;height:140px;object-fit:cover;border-radius:10px 10px 0 0}.toast{position:fixed;top:70px;left:50%;transform:translate(-50%);background:#111827;color:#fff;padding:10px 18px;border-radius:8px;z-index:200;max-width:90vw}.toast.err{background:var(--danger)}.auth-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#1e3a8a,#2563eb 60%,#3b82f6);padding:16px}.auth-card{background:#fff;border-radius:16px;padding:32px;width:100%;max-width:400px}.auth-card h1{font-size:22px;margin-bottom:0;line-height:1}.brand-row{display:flex;align-items:flex-end;gap:8px;flex-wrap:wrap;margin-bottom:12px}.brand-slogan{font-family:var(--font-xingkai);font-size:13px;line-height:1;letter-spacing:.5px;color:#1e3a8a;opacity:.85;white-space:nowrap}.auth-card .sub{color:var(--text-2);margin-bottom:20px;font-size:13px}.role-pick{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:12px}.role-pick button{padding:10px 4px;border:1px solid var(--border);border-radius:10px;background:#fff;cursor:pointer;font-size:13px;font-family:inherit}.role-pick button.on{border-color:var(--primary);background:#eff6ff;color:var(--primary);font-weight:600}.role-pick small{display:block;color:var(--text-2);font-size:11px;margin-top:2px}.tabs{display:flex;gap:8px;margin-bottom:14px;flex-wrap:wrap}.tabs button{border:1px solid var(--border);background:#fff;padding:6px 14px;border-radius:999px;cursor:pointer;font-size:13px;font-family:inherit}.tabs button.on{background:var(--primary);border-color:var(--primary);color:#fff}@media (max-width: 720px){.grid-3,.grid-2{grid-template-columns:1fr}.topbar-main{padding:0 10px;height:50px;gap:5px}.topbar-nav nav{padding:6px 12px 8px}.topbar .logo{font-size:15px}.user-chip{font-size:12px;display:inline-block;max-width:44px;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}.topbar .btn-sm{padding:4px 6px}.brand{flex-direction:row;align-items:flex-end;gap:5px}.logo-slogan{font-size:9px;padding-left:5px;letter-spacing:0}.notif-panel{position:fixed;left:12px;right:12px;top:92px;width:auto}}.ev-grid{display:flex;gap:10px;flex-wrap:wrap}.ev-item{position:relative;margin:0;border-radius:8px;overflow:hidden;border:1px solid var(--border);cursor:zoom-in;background:#111}.ev-item img{display:block;object-fit:cover}.ev-ts{position:absolute;left:0;right:0;bottom:0;background:#0000009e;color:#fff;font-size:10px;line-height:16px;text-align:center;letter-spacing:.3px;font-variant-numeric:tabular-nums}.ev-item:hover{border-color:var(--primary)}.kv{display:grid;gap:8px}.kv>div{display:flex;justify-content:space-between;gap:12px;border-bottom:1px dashed var(--border);padding-bottom:6px;font-size:13px}.kv>div>span{flex:0 0 auto}.mono{font-family:ui-monospace,Menlo,Consolas,monospace}.escrow-bar{display:flex;justify-content:space-between;align-items:center;gap:10px;background:#fff8e6;border:1px solid #ffe1a8;border-radius:10px;padding:10px 12px;margin-top:10px;flex-wrap:wrap}.escrow-bar.done{background:#eefaf1;border-color:#bfe8cb}.escrow-bar .amt{font-weight:700;color:#b45309}.escrow-bar.done .amt{color:#15803d}.track{display:flex;flex-wrap:wrap;gap:6px 0;margin-top:12px;padding-top:10px;border-top:1px dashed var(--border)}.track .node{position:relative;padding-left:14px;margin-right:16px;font-size:11px;color:var(--text-2)}.track .node:before{content:"";position:absolute;left:0;top:3px;width:6px;height:6px;border-radius:50%;background:var(--border)}.track .node.on{color:var(--text)}.track .node.on:before{background:var(--primary)}.track .node b{display:block;font-size:11px;font-weight:600}.auto-tip{display:flex;gap:10px;align-items:baseline;margin-top:10px;padding:8px 12px;border-radius:8px;background:#fff8e6;border:1px solid #ffe1a8;font-size:12px;line-height:1.6;color:var(--text-2)}.auto-tip>b{flex:0 0 auto;color:#b45309}.auto-tip.overdue{background:#fdecec;border-color:#f7c6c6}.auto-tip.overdue>b{color:#b91c1c}.auto-tip.done{background:#eefaf1;border-color:#bfe8cb}.auto-tip.done>b{color:#15803d}.cart-chip{position:relative;display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:9px;background:#f8fafc;border:1px solid var(--border);font-size:16px;text-decoration:none}.cart-chip:hover{background:#eff6ff;border-color:#bfdbfe}.cart-badge{position:absolute;top:-6px;right:-6px;min-width:17px;height:17px;padding:0 4px;border-radius:999px;background:var(--danger);color:#fff;font-size:11px;line-height:17px;text-align:center;font-weight:700}.cart-item{transition:opacity .2s}.cart-item.disabled{opacity:.75;background:#fcfcfd}.cart-cover{width:64px;height:64px;border-radius:10px;overflow:hidden;background:#f3f4f6;display:flex;align-items:center;justify-content:center;font-size:26px;flex:0 0 auto}.cart-cover img{width:100%;height:100%;object-fit:cover}.cart-breakdown{background:#f8fafc;border:1px dashed var(--border);border-radius:8px;padding:8px 10px;font-size:12px;color:var(--text-2);display:grid;gap:6px}.cart-breakdown b{color:var(--text)}.cart-bar{position:sticky;bottom:0;margin:16px -20px 0;padding:10px 20px;background:#fffffff7;border-top:1px solid var(--border);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:8}.cart-bar-inner{max-width:1100px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:12px}.table-wrap{overflow-x:auto}.table{width:100%;border-collapse:collapse;font-size:13px}.table th{text-align:left;font-weight:600;color:var(--text-2);background:#fafbfd;padding:10px 12px;border-bottom:1px solid var(--border);white-space:nowrap}.table td{padding:10px 12px;border-bottom:1px solid var(--border);vertical-align:middle}.table tbody tr:last-child td{border-bottom:none}.batch-progress-bar{height:8px;background:#eef2f7;border-radius:999px;overflow:hidden}.batch-progress-bar i{display:block;height:100%;background:linear-gradient(90deg,#22c55e,#16a34a);border-radius:999px;transition:width .3s}.bundle-cover{position:relative;height:150px;background:#f3f4f6;display:flex;align-items:center;justify-content:center;font-size:44px}.bundle-cover img{width:100%;height:100%;object-fit:cover}.bundle-discount{position:absolute;top:8px;left:8px;background:#7c3aed;color:#fff;font-size:12px;font-weight:700;padding:3px 9px;border-radius:999px}.bundle-slots{display:flex;flex-wrap:wrap;gap:6px;font-size:12px;align-items:center}.bundle-slot{display:inline-flex;align-items:center;gap:4px;background:#f8fafc;border:1px solid var(--border);border-radius:6px;padding:2px 6px}.bundle-slot i{font-style:normal}.bundle-line{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px dashed var(--border)}.bundle-line:last-child{border-bottom:none}.bundle-line-seq{width:20px;height:20px;border-radius:50%;background:#eff6ff;color:var(--primary);font-size:12px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}.bundle-line-cover{width:52px;height:52px;border-radius:8px;overflow:hidden;background:#f3f4f6;display:flex;align-items:center;justify-content:center;font-size:22px;flex:0 0 auto}.bundle-line-cover img{width:100%;height:100%;object-fit:cover}.detail-hero{position:relative;height:260px;background:#f3f4f6;display:flex;align-items:center;justify-content:center}.detail-hero img{width:100%;height:100%;object-fit:cover}.hero-placeholder{font-size:64px}.badge-purple{background:#7c3aed;color:#fff}.thumb-pick{width:56px;height:56px;object-fit:cover;border-radius:8px;cursor:pointer;border:2px solid transparent}.thumb-pick.on{border-color:var(--primary)}.slot-picker{max-height:220px;overflow-y:auto;border:1px solid var(--border);border-radius:8px;padding:6px;display:grid;gap:4px}.slot-pick{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:6px;cursor:pointer;font-size:13px}.slot-pick:hover{background:#f8fafc}.slot-pick.on{background:#eff6ff}.input{width:100%;padding:8px 10px;border:1px solid var(--border);border-radius:8px;font-family:inherit;font-size:13px;background:#fff}@media (max-width: 720px){.cart-bar{margin:12px -12px 0;padding:8px 12px}.cart-cover{width:52px;height:52px;font-size:22px}.detail-hero{height:190px}}.review-stats{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin:14px 0}.review-stat{padding:12px 14px;margin:0}.review-stat .stat-num{font-size:22px}.review-card{border-left:3px solid var(--primary)}.review-overdue{border-left-color:var(--danger)}.sla-chip{font-size:12px;padding:4px 10px;border-radius:999px;background:#f3f4f6;color:#6b7280;white-space:nowrap}.sla-chip[data-over="1"]{background:#fee2e2;color:#b91c1c}.hits{margin-top:10px;display:flex;flex-direction:column;gap:6px}.hit{display:flex;gap:8px;align-items:center;background:#fffbeb;border:1px solid #fde68a;border-radius:8px;padding:6px 10px;font-size:13px}.hit-ex{color:#92400e}.payload{margin-top:10px;background:var(--bg);border:1px dashed var(--border);border-radius:10px;padding:10px 12px}.payload-text{font-size:13px;line-height:1.7;color:var(--text)}.word-chips{display:flex;gap:6px;flex-wrap:wrap}.word-chip{font-size:12px;padding:2px 8px;border-radius:6px;background:#f3f4f6;color:#4b5563}@media (max-width: 900px){.review-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}.topbar .btn{white-space:nowrap}.portal{min-height:100vh;display:flex;flex-direction:column;background:var(--bg)}.portal-hero{background:linear-gradient(135deg,#1e3a8a,#2563eb 60%,#3b82f6);color:#fff;padding:48px 16px 40px;text-align:center}.portal-hero h1{font-size:30px;letter-spacing:1px}.portal-hero p{margin-top:12px;color:#ffffffd9;font-size:14px}.portal-entries{display:flex;gap:16px;justify-content:center;margin-top:28px;flex-wrap:wrap}.portal-entry{background:#fff;border-radius:14px;padding:20px 22px;width:300px;color:var(--text);text-align:left;display:flex;flex-direction:column;gap:6px;box-shadow:0 10px 26px #0f172a2e;transition:transform .15s,box-shadow .15s}.portal-entry:hover{transform:translateY(-3px);box-shadow:0 16px 34px #0f172a3d}.portal-entry-icon{font-size:28px;line-height:1}.portal-entry b{font-size:16px}.portal-entry span{color:var(--text-2);font-size:13px;line-height:1.6}.portal-entry em{font-style:normal;color:var(--primary);font-weight:600;font-size:13px;margin-top:4px}.portal-login-hint{margin-top:22px;font-size:13px;color:#fffc}.portal-login-hint a{color:#fff;text-decoration:underline}.portal-stats{max-width:1100px;margin:-22px auto 0;width:calc(100% - 32px);background:#fff;border:1px solid var(--border);border-radius:12px;box-shadow:0 8px 20px #0f172a14;display:flex;padding:14px 0;flex-wrap:wrap}.portal-stats>div{flex:1;text-align:center;min-width:90px;display:flex;flex-direction:column;gap:2px}.portal-stats b{font-size:20px;color:var(--primary)}.portal-stats span{font-size:12px;color:var(--text-2)}.portal-main{max-width:1100px;margin:0 auto;width:100%;padding:24px 16px 8px;flex:1}.portal-sec-head h2{font-size:18px}.portal-sec-head span{display:block;color:var(--text-2);font-size:12px;margin:4px 0 12px}.showcase-card{padding:0!important;overflow:hidden}.showcase-card .thumb-lg{width:100%;height:140px;object-fit:cover}.showcase-card div.thumb-lg{height:140px}.showcase-text{font-size:13px;color:var(--text);line-height:1.7}.portal-roles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:28px 0 8px}.portal-roles>div{background:#fff;border:1px solid var(--border);border-radius:12px;padding:18px;display:flex;flex-direction:column;gap:8px;align-items:flex-start}.portal-roles b{font-size:15px}.portal-roles p{color:var(--text-2);font-size:13px;line-height:1.7;flex:1}.portal-foot{border-top:1px solid var(--border);background:#fff;margin-top:24px}.portal-foot-inner{max-width:1100px;margin:0 auto;padding:14px 16px;display:flex;justify-content:space-between;align-items:center;width:100%;flex-wrap:wrap;gap:8px;color:var(--text-2);font-size:12px}.portal-foot a{font-size:12px}@media (max-width: 760px){.portal-hero h1{font-size:22px}.portal-entries{flex-direction:column;align-items:center}.portal-entry{width:100%;max-width:360px}.portal-roles{grid-template-columns:1fr}.portal-stats b{font-size:16px}}.rating-summary{display:flex;align-items:baseline;gap:10px}.rating-avg{font-size:30px;font-weight:700;color:#f59e0b;line-height:1}.rating-avg-stars{color:#f59e0b;font-size:15px;letter-spacing:2px}.rev-list{display:flex;flex-direction:column}.rev-item{padding:10px 0;border-top:1px dashed var(--border)}.rev-item:first-child{border-top:0}.rev-item-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.rev-name{font-size:13px;color:var(--text);font-weight:600}.rev-stars{color:#f59e0b;font-size:13px;letter-spacing:1px}.rev-date{margin-left:auto;color:var(--text-2);font-size:12px}.rev-comment{margin-top:4px;font-size:13px;line-height:1.7;color:var(--text)}.rev-meta{margin-top:4px;font-size:12px;color:var(--text-2)}.star-picker{display:inline-flex;gap:2px;font-size:22px;line-height:1;cursor:pointer;-webkit-user-select:none;user-select:none}.star-picker span{color:#d4d4d8;transition:color .1s}.star-picker span.on{color:#f59e0b}.star-picker span:hover{transform:scale(1.1)}.acct-profile{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.acct-avatar{width:56px;height:56px;border-radius:50%;flex:0 0 auto;display:flex;align-items:center;justify-content:center;font-size:24px;font-weight:700;color:#fff;background:linear-gradient(135deg,#1d4ed8,#60a5fa);box-shadow:0 4px 12px #2563eb40}.acct-id{flex:1;min-width:220px}.acct-name{font-size:18px;font-weight:700;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.acct-badges{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}.acct-meta{margin-top:8px;font-size:13px}.acct-actions{display:flex;gap:8px;flex-wrap:wrap}.acct-stats{margin-bottom:4px}.acct-stats .card{margin-bottom:12px}.seg{display:inline-flex;background:#f1f5f9;border:1px solid var(--border);border-radius:10px;padding:3px;gap:2px;margin-bottom:12px}.seg button{border:0;background:transparent;padding:6px 14px;border-radius:8px;font-size:13px;color:var(--text-2);cursor:pointer}.seg button.on{background:#fff;color:var(--text);font-weight:600;box-shadow:0 1px 3px #0f172a1f}@media (max-width: 640px){.acct-profile{align-items:flex-start}.acct-actions{width:100%}.acct-actions .btn{flex:1}}.filter-card{padding:14px 14px 12px}.filter-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px;align-items:center}.filter-grid input,.filter-grid select{width:100%}.filter-grid .btn{justify-self:start;padding-left:22px;padding-right:22px}.filter-foot{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-top:10px;font-size:12px;color:var(--text-2);line-height:1.6}.link-btn{border:0;background:none;color:var(--primary);font-size:12px;cursor:pointer;padding:0;white-space:nowrap}.link-btn:hover{text-decoration:underline}.browse-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:2px 0 12px}.browse-bar .count{font-size:13px;color:var(--text-2)}.browse-bar .count b{color:var(--primary);font-size:16px;margin:0 2px}@media (max-width: 640px){.filter-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.filter-grid .btn{grid-column:1 / -1;justify-self:stretch}.filter-foot{flex-direction:column;gap:6px}}.seg-lg{padding:4px;border-radius:12px}.seg-lg button{padding:8px 20px;font-size:14px;border-radius:9px}.list-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:14px}.chip-row{display:flex;gap:6px;flex-wrap:wrap}.chip-count{font-weight:600;font-size:11px;color:var(--text-2);background:#f1f5f9;border-radius:999px;padding:1px 6px;min-width:18px;text-align:center}.grade-chip.on .chip-count{background:#dbeafe;color:var(--primary)}.order-head{align-items:flex-start}.order-title{font-size:16px}.order-amount{text-align:right;white-space:nowrap}.order-amount .price{font-size:18px}.order-meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:6px 18px;margin-top:12px;padding-top:10px;border-top:1px dashed var(--border)}.order-meta>div{display:flex;gap:8px;font-size:12.5px;line-height:1.6;min-width:0}.order-meta>div>span{color:var(--text-2);flex:0 0 auto}.order-meta>div>span:after{content:"："}.order-meta>div>b{font-weight:500;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.order-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:16px;padding-top:12px;border-top:1px dashed var(--border)}.batch-card{cursor:pointer;transition:border-color .15s,box-shadow .15s}.batch-card:hover{border-color:var(--primary);box-shadow:0 6px 18px #2563eb1a}.batch-line{margin-top:12px;padding-top:10px;border-top:1px dashed var(--border)}.batch-line-bar{height:6px;background:#eef2f7;border-radius:999px;overflow:hidden}.batch-line-bar i{display:block;height:100%;background:linear-gradient(90deg,#22c55e,#16a34a);border-radius:999px}.batch-line-text{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:8px;font-size:12px;color:var(--text-2)}.batch-line-text b{color:var(--text)}.batch-line-link{margin-left:auto;color:var(--primary);font-weight:600}.pager{display:flex;align-items:center;justify-content:center;gap:12px;margin:16px 0 4px;font-size:13px}@media (max-width: 640px){.order-meta{grid-template-columns:1fr;gap:4px}.order-meta>div>b{white-space:normal}.order-actions .btn{flex:1;justify-content:center}.list-toolbar{align-items:stretch}.seg-lg{width:100%}.seg-lg button{flex:1}}body{background:radial-gradient(1100px 420px at 50% -120px,rgba(37,99,235,.09),transparent 65%),var(--bg)}.card{border-radius:14px;border-color:#e8edf4;box-shadow:0 1px 2px #0f172a0a,0 10px 28px #0f172a0d}.btn{border-radius:10px;padding:9px 18px;font-weight:500;background:linear-gradient(135deg,#2f6bed,#1d4ed8);box-shadow:0 4px 14px #2563eb3d;transition:transform .12s ease,box-shadow .12s ease,background .12s ease}.btn:hover{background:linear-gradient(135deg,#2a60dd,#1a44c4);transform:translateY(-1px);box-shadow:0 7px 20px #2563eb52}.btn-sm{border-radius:8px;padding:5px 12px;box-shadow:none}.btn-sm:hover{transform:none;box-shadow:none}.btn-ghost{background:#fff;color:var(--text);border:1px solid var(--border);box-shadow:none}.btn-ghost:hover{background:var(--bg)}.btn-danger{background:linear-gradient(135deg,#ef4444,#dc2626);box-shadow:0 4px 14px #dc262638}.btn-danger:hover{background:linear-gradient(135deg,#e23c3c,#c81e1e)}.page-title{font-size:24px;font-weight:800;letter-spacing:.3px}.page-sub{font-size:13.5px}.topbar{background:#ffffffeb;-webkit-backdrop-filter:saturate(1.4) blur(10px);backdrop-filter:saturate(1.4) blur(10px);border-bottom-color:#edf1f7;box-shadow:0 8px 24px #0f172a0d}.banner{background:linear-gradient(100deg,#047857,#10b981 60%,#34d399);box-shadow:0 10px 26px #05966938}.tabs button{padding:7px 16px;border-radius:999px}.tabs button.on{background:linear-gradient(135deg,#2f6bed,#1d4ed8);border-color:transparent;box-shadow:0 4px 12px #2563eb42}.stat-num{letter-spacing:.3px}.portal-hero{position:relative;overflow:hidden;text-align:center;padding:88px 16px 72px;background:linear-gradient(160deg,#0b1e4b,#143072 42%,#1d4ed8 78%,#2563eb)}.portal-hero:before,.portal-hero:after{content:"";position:absolute;border-radius:50%;pointer-events:none;border:1px solid rgba(255,255,255,.1)}.portal-hero:before{width:560px;height:560px;left:-180px;top:-220px;background:radial-gradient(circle at 30% 30%,rgba(96,165,250,.18),transparent 60%)}.portal-hero:after{width:640px;height:640px;right:-220px;bottom:-300px;background:radial-gradient(circle at 60% 40%,rgba(59,130,246,.16),transparent 60%)}.portal-hero>*{position:relative;z-index:1}.portal-kicker{display:inline-block;padding:7px 18px;border-radius:999px;border:1px solid rgba(255,255,255,.32);background:#ffffff14;color:#ffffffeb;font-size:13px;letter-spacing:2.5px}.portal-hero h1{margin-top:22px;font-family:var(--font-xingkai);font-weight:400;font-size:46px;letter-spacing:3px;line-height:1.25;text-shadow:0 4px 24px rgba(2,12,40,.45)}.portal-hero p{margin-top:16px;color:#ffffffd1;font-size:15px;letter-spacing:.5px}.portal-entries{gap:20px;margin-top:40px}.portal-entry{width:320px;padding:26px 24px;border-radius:16px;box-shadow:0 16px 40px #020c2859}.portal-entry b{font-size:17px}.portal-entry span{font-size:13px}.portal-entry em{font-size:13.5px}.portal-entry-icon{font-size:34px}.portal-login-hint{margin-top:30px;font-size:14px}.portal-stats>div{padding:6px 0}.portal-stats b{font-size:26px;letter-spacing:.5px}.portal-stats span{font-size:12.5px}.portal-sec-head h2{font-size:20px;letter-spacing:.5px}.portal-sec-head span{font-size:13px;margin-top:6px}.portal-roles>div{border-radius:14px;box-shadow:0 6px 18px #0f172a0d}.portal-foot{background:#fff}@media (max-width: 760px){.portal-hero{padding:64px 16px 52px}.portal-hero h1{font-size:28px;letter-spacing:2px}.portal-kicker{font-size:12px;letter-spacing:1.5px}.portal-hero p{font-size:13.5px}.portal-entry{width:100%;max-width:380px}.portal-stats b{font-size:18px}}.portal-filter{background:#fff;border:1px solid var(--border);border-radius:14px;padding:14px;margin-bottom:16px;box-shadow:0 6px 18px #0f172a0d}.pf-types{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.pf-check{font-size:11px;margin-right:-2px}.pf-chip{flex:0 0 auto;display:inline-flex;align-items:center;gap:6px;border:1px solid var(--border);background:#fff;color:var(--text);border-radius:999px;padding:7px 14px;font-size:13px;font-family:inherit;cursor:pointer;white-space:nowrap;transition:all .15s}.pf-chip:hover{border-color:#bfdbfe;background:#f8fbff}.pf-chip .pf-ico{font-size:13px;line-height:1}.pf-chip .n{font-style:normal;font-size:11px;color:var(--text-2)}.pf-chip.on{background:linear-gradient(135deg,#2f6bed,#1d4ed8);border-color:transparent;color:#fff;font-weight:600;box-shadow:0 6px 14px #2563eb42}.pf-chip.on .n{color:#ffffffd9}.pf-chip-rural.on{background:linear-gradient(135deg,#16a34a,#15803d);box-shadow:0 6px 14px #16a34a3d}.pf-sep{flex:0 0 auto;width:1px;height:18px;background:var(--border);align-self:center;margin:0 2px}.pf-group{display:inline-flex;align-items:center;gap:8px;flex:0 0 auto}.pf-sel{flex:0 0 auto;font-size:12px;color:var(--primary);background:#eff6ff;border:1px solid #dbeafe;border-radius:999px;padding:4px 11px;line-height:1.6}.pf-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr)) 1.6fr;gap:8px;margin-top:12px}.pf-row select,.pf-row input{width:100%;height:34px;font-size:13px}.pf-row select:disabled{background:#f9fafb;color:#9ca3af;cursor:not-allowed}.pf-foot{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-top:10px;padding-top:10px;border-top:1px dashed var(--border);font-size:12px;color:var(--text-2)}.pf-count b{color:var(--primary);font-size:15px;margin:0 2px}.pf-count em{font-style:normal;color:var(--text-2)}.pf-note{color:#9ca3af}@media (max-width: 860px){.pf-row{grid-template-columns:repeat(2,minmax(0,1fr))}.pf-keyword{grid-column:1 / -1}}@media (max-width: 560px){.portal-filter{padding:12px}.pf-types{gap:6px}.pf-chip{padding:6px 11px;font-size:12.5px}.pf-row{gap:6px}.pf-foot{flex-direction:column;align-items:flex-start;gap:6px}.pf-note{display:none}}.price-block{background:#f8fbff;border:1px solid #dbeafe;border-radius:12px;padding:12px 12px 8px;margin:4px 0 10px}.price-block .field>span{color:var(--primary)}.price-preview{height:34px;display:flex;align-items:center;font-size:13px;color:var(--primary);font-weight:600}.price-preview .muted{font-weight:400}.fee-lines{border-top:1px dashed var(--border);padding-top:8px;display:flex;flex-direction:column;gap:6px;font-size:13px}.modal-wide{max-width:1100px}.ds-grid{display:grid;grid-template-columns:1.15fr 1fr;gap:20px;align-items:start}.ds-label{font-size:13px;font-weight:600;color:var(--text);margin-bottom:6px}.ds-form{display:flex;flex-direction:column;gap:8px}.ds-form .field{margin:0}.ds-form .field>span{font-size:12px}.ds-3col{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.ds-preview{border:1px solid var(--border);border-radius:10px;overflow:hidden;background:#f6f7f9}.ds-preview svg{display:block;width:100%;height:auto}.ds-versions{display:flex;flex-direction:column;gap:10px;max-height:340px;overflow-y:auto;padding-right:2px}.ds-version{border:1px solid var(--border);border-radius:10px;padding:10px;background:#fff}.ds-version.final{border-color:#16a34a;box-shadow:0 0 0 1px #16a34a inset}.ds-thumb{border:1px solid var(--border);border-radius:8px;overflow:hidden;background:#f6f7f9;max-height:190px;display:flex;justify-content:center}.ds-thumb svg,.ds-thumb img{display:block;max-width:100%;max-height:190px;height:auto}.ds-reject-input{height:30px;font-size:12px;width:120px}.ds-revision{background:#fff8e6;border:1px solid #ffe1a8;border-radius:10px;padding:10px}.ds-timeline{max-height:260px;overflow-y:auto;display:flex;flex-direction:column;gap:8px;padding-right:2px}.ds-msg{border:1px solid var(--border);border-radius:10px;padding:8px 10px;font-size:12px;background:#fff}.ds-msg.sys{background:#f8fafc;color:var(--text-2)}.ds-upload{margin-bottom:8px}@media (max-width: 900px){.ds-grid{grid-template-columns:1fr}.ds-3col{grid-template-columns:repeat(2,minmax(0,1fr))}}
