:root{--text:#6b7280;--text-h:#1f2937;--bg:#fff;--surface:#f9fafb;--border:#d1d5db;--border-light:#f3f4f6;--accent:#0540f2;--accent-hover:#3360f5;--accent-bg:#0540f214;--accent-100:#dbeafe;--sans:ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif;--mono:ui-monospace, "Cascadia Code", Consolas, monospace;font-family:var(--sans);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px;line-height:1.5}*,:before,:after{box-sizing:border-box}body{margin:0}a{color:var(--accent);text-decoration:none}::selection{background:var(--accent-bg);color:var(--text-h)}.app{flex-direction:column;min-height:100vh;display:flex}.nav{background:var(--bg);z-index:100;justify-content:space-between;align-items:center;gap:24px;height:60px;padding:0 32px;display:flex;position:sticky;top:0;box-shadow:0 1px 3px #00000014,0 1px 2px #0000000a}.nav-brand{color:var(--accent);flex-shrink:0;align-items:center;gap:10px;text-decoration:none;display:flex}.nav-title{letter-spacing:-.2px;color:var(--accent);font-size:20px;font-weight:700}.nav-links{align-items:center;gap:4px;display:flex}.nav-link{color:var(--text);border-radius:8px;padding:8px 14px;font-size:14px;font-weight:500;text-decoration:none;transition:background .15s,color .15s}.nav-link:hover{color:var(--accent);background:var(--surface)}.nav-link.active{color:var(--accent);background:linear-gradient(to bottom, #fff, var(--accent-100));box-shadow:inset 0 -3px 0 var(--accent)}.hub-header{z-index:90;background:var(--bg);border-bottom:1px solid var(--border-light);padding:20px 32px 18px;position:sticky;top:60px}.hub-toolbar{align-items:center;gap:12px;max-width:1080px;margin:0 auto;display:flex}.search-box{background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:8px;flex:1;align-items:center;gap:10px;padding:10px 40px 10px 14px;transition:border-color .2s,box-shadow .2s;display:flex;position:relative;box-shadow:0 1px 2px #0000000a}.search-box:hover{border-color:var(--accent)}.search-box:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px #0540f226}.search-box input{color:var(--text-h);background:0 0;border:none;outline:none;flex:1;font-family:inherit;font-size:14px}.search-box input::placeholder{color:var(--text)}.search-clear{width:26px;height:26px;color:var(--text);cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;transition:background .15s,color .15s;display:flex;position:absolute;top:50%;right:8px;transform:translateY(-50%)}.search-clear:hover{background:var(--surface);color:var(--text-h)}.view-toggle{background:var(--surface);border:1px solid var(--border-light);border-radius:8px;flex-shrink:0;gap:2px;padding:2px;display:flex}.view-toggle button{width:38px;height:34px;color:var(--text);cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;transition:background .2s,color .2s,box-shadow .2s;display:flex}.view-toggle button:hover{color:var(--accent)}.view-toggle button.active{background:var(--bg);color:var(--accent);box-shadow:0 1px 2px #00000014}.search-hint{max-width:1080px;color:var(--text);align-items:center;gap:8px;margin:14px auto 0;font-size:13px;display:flex}.search-hint-key{border:1px solid var(--border);background:var(--bg);height:22px;color:var(--text-h);font-size:11px;font-weight:600;font-family:var(--mono);border-radius:4px;justify-content:center;align-items:center;padding:0 8px;display:inline-flex}.hub-main{flex:1;padding:28px 32px 80px}.hub-main--grid{width:100%;max-width:1080px;margin:0 auto}.hub-main--list{width:100%;max-width:760px;margin:0 auto}.hub-empty{text-align:center;color:var(--text);padding:80px 32px}.hub-empty strong{color:var(--text-h)}.hub-grid{grid-template-columns:repeat(2,1fr);gap:16px;display:grid}.app-card{border:1px solid var(--border-light);background:var(--bg);color:inherit;border-radius:12px;flex-direction:column;gap:0;padding:0;text-decoration:none;transition:border-color .2s,box-shadow .2s,transform .2s;display:flex;position:relative;overflow:hidden;box-shadow:0 1px 2px #0000000a}.app-card:hover{border-color:var(--accent);box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000000d}.app-card-image{aspect-ratio:16/9;object-fit:cover;border-bottom:1px solid var(--border-light);width:100%;transition:transform .3s;display:block}.app-card:hover .app-card-image{transform:scale(1.05)}.app-card-body{flex-direction:column;flex:1;gap:2px;min-width:0;padding:12px 14px;display:flex}.app-card-name{color:var(--text-h);white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:600;overflow:hidden}.app-card-url{color:var(--text);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.app-card--single{border-color:var(--accent);box-shadow:0 0 0 3px #0540f21f}.star-icon{cursor:pointer;opacity:.35;background:#ffffffe6;border-radius:50%;flex-shrink:0;padding:4px;transition:opacity .15s,transform .15s;position:absolute;top:10px;right:10px}.star-icon:hover{opacity:1;transform:scale(1.15)}.star-icon[fill=\#ffb300]{opacity:1}.app-card:hover .star-icon,.app-list-item:hover .star-icon{opacity:.75}.hub-divider{border:none;border-top:1px dashed var(--border);grid-column:1/-1;margin:6px 0}.favicon{border-radius:6px;flex-shrink:0}.favicon-fallback{background:var(--accent);color:#fff;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;font-weight:600;display:flex}.hub-list{grid-template-columns:1fr 1fr;gap:4px;display:grid}.app-list-item{color:inherit;border-radius:8px;align-items:center;gap:12px;padding:12px 14px;text-decoration:none;transition:background .15s;display:flex}.app-list-item:hover{background:var(--surface)}.app-list-item--single{border-radius:8px;box-shadow:0 0 0 2px #0540f21f}.app-list-body{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.app-list-name{color:var(--text-h);font-size:14px;font-weight:600}.app-list-url{color:var(--text);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.app-list-arrow{color:var(--text);opacity:.4;flex-shrink:0;transition:opacity .15s}.app-list-item:hover .app-list-arrow{opacity:.8}.api-status{flex:1;width:100%;max-width:760px;margin:0 auto;padding:32px}.api-status-header{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.api-status-title{letter-spacing:-.2px;color:var(--text-h);margin:0;font-size:20px;font-weight:700}.api-refresh-all{border:1px solid var(--border);background:var(--bg);color:var(--text);cursor:pointer;border-radius:8px;align-items:center;gap:6px;padding:8px 14px;font-family:inherit;font-size:14px;transition:background .15s,color .15s,border-color .15s;display:flex}.api-refresh-all:hover{border-color:var(--accent);color:var(--accent);background:var(--surface)}.api-list{flex-direction:column;gap:4px;display:flex}.api-row{border-radius:8px;align-items:center;gap:14px;padding:14px 16px;transition:background .15s;display:flex}.api-row:hover{background:var(--surface)}.api-row-dot{border-radius:50%;flex-shrink:0;width:10px;height:10px;transition:background .3s}.api-row-body{flex:1;align-items:center;gap:8px;min-width:0;display:flex}.api-row-name{color:var(--text-h);font-size:15px;font-weight:600}.api-row-meta{text-align:right;flex-shrink:0}.api-row-status{color:var(--text);font-size:13px}.api-row-status--ok{color:#16a34a}.api-row-status--err{color:#ef4444}.api-row-refresh{width:32px;height:32px;color:var(--text);cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;transition:background .15s,color .15s;display:flex}.api-row-refresh:hover{background:var(--surface);color:var(--accent)}.api-row-badge{background:var(--accent-bg);color:var(--accent);border-radius:4px;margin-left:6px;padding:1px 6px;font-size:11px;font-weight:600;display:inline-flex}.api-row-detail{color:var(--text);flex-direction:column;gap:6px;padding:12px 16px 16px 40px;font-size:13px;display:flex}.api-detail-line{line-height:1.6}.api-detail-pre{font-family:var(--mono);background:var(--surface);word-break:break-all;white-space:pre-wrap;border-radius:4px;margin:0;padding:2px 6px;font-size:12px;display:inline}@media (width<=640px){.nav{padding:0 16px}.hub-header{padding:14px 16px 12px}.hub-toolbar{flex-wrap:wrap}.hub-main{padding:18px 16px 64px}.hub-grid,.hub-list{grid-template-columns:1fr}.hub-main--grid,.hub-main--list{max-width:100%}.api-status{padding:18px 16px}.api-status-header{flex-direction:column;align-items:flex-start;gap:12px}}
