:root{--zju-navy-header: #003878;--zju-navy: #002e63;--zju-navy-hover: #063b7a;--zju-navy-active: #0a448a;--zju-blue: #0b53a8;--zju-blue-soft: #edf4fc;--bg-page: #f4f6f9;--bg-surface: #ffffff;--bg-subtle: #f8fafc;--border-subtle: #e3e8ef;--border-strong: #cbd5e1;--text-primary: #1e293b;--text-secondary: #526071;--text-muted: #64748b;--danger: #b91c1c;--danger-bg: #fef2f2;--danger-border: #fecaca;--ok-fg: #065f46;--ok-bg: #ecfdf5;--ok-border: #a7f3d0;--warn-fg: #92400e;--warn-bg: #fffbeb;--font-sans: "Arimo", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;--font-mono: "SFMono-Regular", Menlo, Monaco, Consolas, monospace;--radius-sm: 5px;--radius-md: 6px;--radius-lg: 8px}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;background-color:var(--bg-page);color:var(--text-primary);font-family:var(--font-sans);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit;color:inherit}a{color:var(--zju-blue);text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--zju-blue);outline-offset:2px}.bis-mark-badge{display:inline-flex;align-items:center;justify-content:center;background-color:var(--zju-navy-header);border-radius:6px;padding:3px;flex-shrink:0;overflow:hidden}.bis-mark-badge img{width:100%;height:100%;object-fit:contain;display:block}.public-shell{display:flex;min-height:100vh}.public-sidebar{width:248px;flex-shrink:0;background-color:var(--zju-navy);color:#f1f5f9;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow-y:auto;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.2) transparent}.sidebar-brand{background-color:var(--zju-navy-header);padding:13px 20px 11px;border-bottom:1px solid rgba(255,255,255,.09)}.brand-link{display:block;text-decoration:none}.sidebar-logo-img{width:100%;max-width:170px;height:auto;display:block;margin:0 auto}.sidebar-nav{display:flex;flex-direction:column;padding:2px 0}.sidebar-nav-item{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;padding:7px 18px;border:none;border-bottom:1px solid rgba(255,255,255,.06);background:transparent;color:#ffffffdb;font-size:13px;font-weight:400;line-height:1.35;text-align:left;text-decoration:none;cursor:pointer;transition:background-color .12s ease,color .12s ease}.sidebar-nav-item:hover{background-color:var(--zju-navy-hover);color:#fff;text-decoration:none}.sidebar-nav-item.is-active{background-color:var(--zju-navy-active);color:#fff;font-weight:600;box-shadow:inset 3px 0 #56b4ff}.sidebar-nav-label{display:flex;align-items:center;gap:10px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-nav-label svg{opacity:.82;flex-shrink:0}.sidebar-nav-item.is-active .sidebar-nav-label svg,.sidebar-nav-item:hover .sidebar-nav-label svg{opacity:1}.sidebar-nav-count{font-size:11px;color:#ffffff85;font-variant-numeric:tabular-nums;flex-shrink:0}.sidebar-nav-item.is-active .sidebar-nav-count,.sidebar-nav-item:hover .sidebar-nav-count{color:#ffffffe0}.sidebar-heart{font-size:12px;color:#fff;opacity:.9;margin-left:8px;flex-shrink:0}.sidebar-partner-box{margin-top:auto;padding:10px 18px 14px;display:flex;justify-content:center}.sidebar-partner-link{display:flex;align-items:center;justify-content:center;width:100%;max-width:146px;border-radius:4px;overflow:hidden;background:#fff;border:1px solid rgba(255,255,255,.24);box-shadow:0 4px 12px #0000003d;transition:transform .14s ease,border-color .14s ease}.sidebar-partner-link:hover{transform:translateY(-1px);border-color:#ffffff80}.sidebar-partner-img{display:block;width:100%;max-height:196px;height:auto;object-fit:contain}@media(min-width:1024px)and (max-height:760px){.sidebar-brand{padding:10px 18px 8px}.sidebar-logo-img{max-width:148px}.sidebar-nav-item{padding:5.5px 18px;font-size:12.5px}.sidebar-partner-box{padding:8px 18px 10px}.sidebar-partner-link{max-width:132px}.sidebar-partner-img{max-height:172px}}.public-main-column{flex:1;min-width:0;display:flex;flex-direction:column}.mobile-brand-bar,.mobile-category-strip{display:none}.public-topbar{position:sticky;top:0;z-index:20;background:#fffffff5;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--border-subtle);padding:11px 28px}.search-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;max-width:1380px}.search-input-wrap{position:relative;flex:1;max-width:500px;display:flex;align-items:center;min-width:0}.search-icon{position:absolute;left:12px;color:var(--text-muted);pointer-events:none}.search-input{width:100%;height:36px;padding:0 36px;border:1px solid var(--border-strong);border-radius:var(--radius-md);background-color:var(--bg-subtle);font-size:13.5px;color:var(--text-primary);transition:border-color .15s ease,background-color .15s ease,box-shadow .15s ease}.search-input:focus{outline:none;background-color:#fff;border-color:var(--zju-blue);box-shadow:0 0 0 3px #0b53a81f}.search-shortcut{position:absolute;right:10px;font-family:var(--font-mono);font-size:11px;color:var(--text-muted);background:#fff;border:1px solid var(--border-subtle);border-radius:4px;padding:1px 6px;pointer-events:none}.search-clear-btn{position:absolute;right:8px;border:none;background:transparent;color:var(--text-muted);padding:4px;border-radius:4px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.search-clear-btn:hover{color:var(--text-primary);background:var(--border-subtle)}.toolbar-meta{display:flex;align-items:center;flex-wrap:wrap;gap:8px;min-width:0}.resource-count-text{font-size:12.5px;color:var(--text-muted);font-variant-numeric:tabular-nums;white-space:nowrap}.active-filter-chip{display:inline-flex;align-items:center;gap:5px;max-width:220px;padding:3px 9px;border-radius:999px;border:1px solid #bfdbfe;background:var(--zju-blue-soft);color:var(--zju-blue);font-size:12px;font-weight:500;cursor:pointer}.active-filter-chip .chip-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.reset-filter-btn{border:1px solid var(--border-strong);background:#fff;color:var(--text-primary);font-size:12px;font-weight:500;padding:3px 10px;border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap}.reset-filter-btn:hover{background:var(--bg-subtle)}.public-content{flex:1;padding:20px 28px 34px;max-width:1440px;width:100%}.category-sections{display:flex;flex-direction:column;gap:26px}.category-section-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-bottom:8px;margin-bottom:13px;border-bottom:1px solid var(--border-subtle)}.category-heading{margin:0;font-size:15.5px;font-weight:600;color:#1e293b;display:flex;align-items:center;gap:8px}.category-heading-icon{color:var(--zju-blue);flex-shrink:0}.category-heading-count{font-size:11.5px;font-weight:500;color:var(--text-muted);background:#e9eef5;padding:1px 7px;border-radius:999px;font-variant-numeric:tabular-nums}.resource-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}@media(max-width:1280px){.resource-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}.resource-card{position:relative;background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:13px 14px;box-shadow:0 1px 2px #0f172a06;transition:border-color .14s ease,box-shadow .14s ease;display:flex;flex-direction:column;min-width:0}.resource-card:hover{border-color:#93c5fd;box-shadow:0 4px 12px #002e6312}.resource-card-main{display:flex;align-items:flex-start;gap:11px;flex:1;min-width:0}.resource-thumb{flex-shrink:0;border-radius:50%;border:1px solid #edf1f7;background:#fff;display:flex;align-items:center;justify-content:center;overflow:hidden}.resource-thumb img{width:100%;height:100%;object-fit:contain;padding:2px}.resource-thumb-fallback{font-size:13px;font-weight:700;letter-spacing:.02em;-webkit-user-select:none;user-select:none}.resource-card-body{flex:1;min-width:0;display:flex;flex-direction:column;min-height:100%}.resource-title{margin:0;font-size:14px;font-weight:700;line-height:1.32}.resource-link{color:var(--zju-navy-header);text-decoration:none;overflow-wrap:anywhere;word-break:break-word}.resource-link:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;border-radius:inherit}.resource-card:hover .resource-link{color:var(--zju-blue)}.resource-link:hover{text-decoration:underline}.resource-description{margin:4px 0 0;font-size:12.5px;line-height:1.48;color:var(--text-secondary);overflow-wrap:anywhere;word-break:break-word}.resource-description.is-clamped{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.resource-description.is-full{display:block}.resource-card-footer{margin-top:auto;padding-top:6px;display:flex;align-items:center;justify-content:space-between;gap:8px}.resource-tags{display:flex;flex-wrap:wrap;gap:4px;min-width:0}.resource-tag{position:relative;z-index:2;border:1px solid var(--border-subtle);background:var(--bg-subtle);color:var(--text-secondary);font-size:11px;padding:1px 7px;border-radius:999px;cursor:pointer;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.resource-tag:hover,.resource-tag.is-active{border-color:#93c5fd;background:var(--zju-blue-soft);color:var(--zju-blue)}.resource-expand-btn{position:relative;z-index:2;border:none;background:transparent;color:var(--zju-blue);font-size:11.5px;font-weight:500;padding:1px 5px;border-radius:4px;display:inline-flex;align-items:center;gap:2px;cursor:pointer;flex-shrink:0}.resource-expand-btn:hover{background:var(--zju-blue-soft)}.category-section{scroll-margin-top:72px}.collaboration-section{margin-top:32px;scroll-margin-top:72px}.collaboration-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,2fr);gap:14px;align-items:stretch}@media(max-width:1280px)and (min-width:1024px){.collaboration-grid{grid-template-columns:minmax(190px,.9fr) minmax(190px,.9fr) minmax(260px,1.45fr)}}.collab-card{background:#fff;border:1px solid var(--border-subtle);border-radius:var(--radius-md);overflow:hidden;display:flex;flex-direction:column;justify-content:center;text-decoration:none;color:var(--text-primary);box-shadow:0 1px 2px #0f172a06;transition:border-color .15s ease,box-shadow .15s ease}.collab-card:hover{border-color:#93c5fd;box-shadow:0 4px 12px #002e6314;text-decoration:none}.collab-media{flex:1;display:flex;align-items:center;justify-content:center;background:#fff;width:100%}.collab-media-portrait{padding:14px;height:320px}.collab-media-portrait img{width:100%;height:100%;max-height:292px;object-fit:contain;display:block}.collab-stack{display:flex;flex-direction:column;gap:10px;justify-content:space-between;height:320px}.collab-card-zjbs{height:70px}.collab-card-zju-igem{height:64px}.collab-card-international{flex:1;min-height:166px}.collab-media-landscape{padding:8px 18px;height:100%;background:#fff}.collab-card-zjbs .collab-media-landscape img{max-width:100%;max-height:52px;width:auto;height:auto;object-fit:contain;display:block}.collab-card-zju-igem .collab-media-landscape img{max-width:100%;max-height:46px;width:auto;height:auto;object-fit:contain;display:block}.collab-card-international .collab-media-landscape img{max-width:100%;max-height:150px;width:auto;height:auto;object-fit:contain;display:block}.public-footer{border-top:1px solid var(--border-subtle);background:#fff;padding:15px 28px;margin-top:auto}.public-footer-inner{font-size:12.5px;color:var(--text-secondary);display:flex;flex-wrap:wrap;align-items:center;gap:8px}.public-footer-inner a{color:var(--text-primary)}.public-footer-inner a:hover{color:var(--zju-blue)}.catalog-state-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px}.resource-card-skeleton{background:#fff;border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:14px 16px;display:flex;gap:12px}.skeleton-thumb{width:42px;height:42px;border-radius:50%;background:#e2e8f0}.skeleton-lines{flex:1;display:flex;flex-direction:column;gap:8px}.skeleton-line{height:11px;border-radius:4px;background:#e2e8f0}.skeleton-title{width:55%;height:14px}.skeleton-short{width:75%}.state-panel{background:#fff;border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:32px 24px;text-align:center;max-width:520px;margin:20px auto}.state-panel h2{margin:0 0 8px;font-size:16px}.state-panel p{margin:0 0 16px;color:var(--text-secondary);overflow-wrap:anywhere}.state-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:10px}.state-error{border-color:var(--danger-border);background:var(--danger-bg)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:34px;padding:0 13px;border-radius:var(--radius-sm);font-size:13px;font-weight:500;border:1px solid transparent;cursor:pointer;text-decoration:none;white-space:nowrap;transition:background-color .12s ease,border-color .12s ease}.btn:hover{text-decoration:none}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-sm{height:29px;padding:0 10px;font-size:12.5px}.btn-full{width:100%;height:38px}.btn-primary{background-color:var(--zju-navy-header);color:#fff}.btn-primary:hover:not(:disabled){background-color:var(--zju-navy-active)}.btn-secondary{background-color:#fff;border-color:var(--border-strong);color:var(--text-primary)}.btn-secondary:hover:not(:disabled){background-color:var(--bg-subtle)}.btn-ghost{background-color:transparent;color:var(--text-secondary)}.btn-ghost:hover:not(:disabled){background-color:var(--border-subtle);color:var(--text-primary)}.btn-danger{background-color:var(--danger);color:#fff}.btn-danger:hover:not(:disabled){background-color:#991b1b}.btn-ghost-danger{background-color:transparent;color:var(--danger);border-color:var(--danger-border)}.btn-ghost-danger:hover:not(:disabled){background-color:var(--danger-bg)}.btn-link{border:none;background:transparent;color:var(--zju-blue);font-size:12.5px;cursor:pointer;padding:2px 4px}.btn-link:hover{text-decoration:underline}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:1px solid var(--border-subtle);border-radius:5px;background:#fff;color:var(--text-secondary);cursor:pointer}.icon-btn:hover:not(:disabled){background:var(--bg-subtle);color:var(--text-primary);border-color:var(--border-strong)}.icon-btn:disabled{opacity:.35;cursor:not-allowed}.admin-auth-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;background:var(--bg-page)}.admin-login-card{width:100%;max-width:390px;background:#fff;border:1px solid var(--border-subtle);border-radius:var(--radius-lg);overflow:hidden;box-shadow:0 4px 18px #002e6314}.login-brand{display:flex;flex-direction:column}.login-logo-box{background:var(--zju-navy-header);padding:22px 28px 18px;display:flex;justify-content:center}.login-logo-img{width:180px;height:auto;display:block}.login-brand-title{padding:18px 28px 4px}.login-brand-title h1{margin:0;font-size:16px;font-weight:600;color:var(--text-primary)}.login-form{padding:12px 28px 20px;display:flex;flex-direction:column;gap:14px}.login-footer{padding:14px 28px 20px;border-top:1px solid var(--border-subtle);font-size:12.5px;background:var(--bg-subtle)}.admin-shell{min-height:100vh;display:flex;flex-direction:column}.admin-header{background:#fff;border-bottom:1px solid var(--border-subtle);padding:0 24px;height:56px;display:flex;align-items:center;justify-content:space-between;gap:16px;position:sticky;top:0;z-index:30}.admin-header-left{display:flex;align-items:center;gap:24px}.admin-brand{display:flex;align-items:center;gap:10px;color:var(--text-primary);font-weight:600;font-size:15px;text-decoration:none}.admin-brand:hover{text-decoration:none}.admin-tabs{display:flex;align-items:center;gap:4px}.admin-tab{display:inline-flex;align-items:center;gap:6px;padding:7px 12px;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);font-size:13.5px;font-weight:500;cursor:pointer}.admin-tab:hover{background:var(--bg-subtle);color:var(--text-primary)}.admin-tab.is-active{background:var(--zju-blue-soft);color:var(--zju-blue);font-weight:600}.admin-header-right{display:flex;align-items:center;gap:8px}.admin-toast{position:fixed;bottom:20px;right:24px;z-index:80;display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:var(--radius-md);font-size:13px;font-weight:500;box-shadow:0 6px 20px #0f172a1f}.admin-toast.is-ok{background:var(--ok-bg);color:var(--ok-fg);border:1px solid var(--ok-border)}.admin-toast.is-error{background:var(--danger-bg);color:var(--danger);border:1px solid var(--danger-border)}.toast-close{border:none;background:transparent;cursor:pointer;padding:2px;display:inline-flex}.admin-main{flex:1;max-width:1400px;width:100%;margin:0 auto;padding:20px 24px 48px}.admin-toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.admin-filters{display:flex;flex-wrap:wrap;align-items:center;gap:10px;flex:1}.admin-search-wrap{position:relative;width:280px;display:flex;align-items:center}.admin-search-input{width:100%;height:34px;padding:0 30px 0 34px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:#fff;font-size:13px}.admin-select{height:34px;padding:0 10px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:#fff;font-size:13px}.admin-select-sm{height:29px;font-size:12.5px}.status-segmented{display:inline-flex;background:#e2e8f0;padding:2px;border-radius:var(--radius-sm)}.segment-btn{border:none;background:transparent;color:var(--text-secondary);font-size:12.5px;font-weight:500;padding:4px 10px;border-radius:4px;cursor:pointer}.segment-btn.is-active{background:#fff;color:var(--text-primary);box-shadow:0 1px 2px #0f172a14}.bulk-action-bar{background:var(--zju-blue-soft);border:1px solid #bfdbfe;border-radius:var(--radius-md);padding:10px 14px;margin-bottom:12px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px}.bulk-summary{display:flex;align-items:center;gap:10px;font-size:13px}.bulk-controls{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.bulk-label{font-size:12.5px;color:var(--text-secondary)}.bulk-divider{width:1px;height:18px;background:#cbd5e1;margin:0 4px}.admin-table-container{background:#fff;border:1px solid var(--border-subtle);border-radius:var(--radius-md);overflow-x:auto}.admin-table{width:100%;border-collapse:collapse;text-align:left;font-size:13px}.admin-table th{background:var(--bg-subtle);color:var(--text-secondary);font-weight:600;font-size:12px;padding:10px 12px;border-bottom:1px solid var(--border-subtle);white-space:nowrap}.admin-table td{padding:10px 12px;border-bottom:1px solid var(--border-subtle);vertical-align:middle}.admin-table tr:last-child td{border-bottom:none}.admin-table tr:hover td{background:#f8fafc}.admin-table tr.row-selected td{background:#f0f7ff}.col-check{width:36px;text-align:center}.col-category{width:170px}.col-status{width:96px}.col-order{width:135px}.col-actions{width:90px}.admin-resource-cell{display:flex;align-items:flex-start;gap:10px}.admin-resource-info{min-width:0;flex:1}.admin-resource-title-line{display:flex;align-items:center;gap:6px}.admin-resource-title-btn{border:none;background:transparent;padding:0;font-weight:600;font-size:13.5px;color:var(--zju-navy-header);cursor:pointer;text-align:left}.admin-resource-title-btn:hover{color:var(--zju-blue);text-decoration:underline}.admin-ext-link{color:var(--text-muted);display:inline-flex}.admin-ext-link:hover{color:var(--zju-blue)}.admin-resource-desc{margin:2px 0 0;font-size:12.5px;color:var(--text-secondary);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.admin-row-tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}.mini-tag{font-size:11px;background:var(--bg-subtle);border:1px solid var(--border-subtle);color:var(--text-secondary);padding:0 6px;border-radius:999px}.admin-cat-badge{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--text-primary)}.status-badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:999px;font-size:11.5px;font-weight:500;white-space:nowrap}.status-published{background:var(--ok-bg);color:var(--ok-fg)}.status-draft{background:var(--warn-bg);color:var(--warn-fg)}.status-archived{background:#f1f5f9;color:var(--text-muted)}.order-controls{display:inline-flex;align-items:center;gap:4px}.order-num{font-family:var(--font-mono);font-size:11.5px;color:var(--text-muted);margin-left:4px}.admin-cat-cell{display:flex;align-items:center;gap:8px}.cat-icon-box{width:28px;height:28px;border-radius:6px;background:var(--zju-blue-soft);color:var(--zju-blue);display:inline-flex;align-items:center;justify-content:center}.mono-code{font-family:var(--font-mono);font-size:12px;background:var(--bg-subtle);padding:2px 6px;border-radius:4px;color:var(--text-secondary)}.row-action-group{display:flex;align-items:center;gap:6px}.section-title{margin:0;font-size:16px;font-weight:600}.drawer-backdrop,.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:#0f172a66;display:flex;justify-content:flex-end}.modal-backdrop{align-items:center;justify-content:center;padding:20px}.drawer-panel{width:100%;max-width:520px;background:#fff;height:100%;display:flex;flex-direction:column;box-shadow:-8px 0 24px #0f172a24}.modal-card{width:100%;max-width:540px;background:#fff;border-radius:var(--radius-lg);box-shadow:0 12px 32px #0f172a2e;overflow:hidden}.drawer-header{padding:16px 20px;border-bottom:1px solid var(--border-subtle);display:flex;align-items:center;justify-content:space-between}.drawer-header h2{margin:0;font-size:16px;font-weight:600}.drawer-form{flex:1;display:flex;flex-direction:column;min-height:0}.drawer-body,.modal-body{flex:1;overflow-y:auto;padding:20px;display:flex;flex-direction:column;gap:15px}.drawer-footer{padding:14px 20px;border-top:1px solid var(--border-subtle);background:var(--bg-subtle);display:flex;align-items:center;justify-content:flex-end;gap:10px}.form-field{display:flex;flex-direction:column;gap:6px}.form-field label{font-size:12.5px;font-weight:600;color:var(--text-primary);display:flex;align-items:center;justify-content:space-between}.field-meta{font-weight:400;color:var(--text-muted);font-size:11.5px}.form-field input[type=text],.form-field input[type=url],.form-field input[type=password],.form-field input[type=number],.form-field select,.form-field textarea{width:100%;padding:8px 10px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:#fff;font-size:13.5px}.form-field textarea{resize:vertical;line-height:1.5}.form-row-2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.form-error-banner{background:var(--danger-bg);border:1px solid var(--danger-border);color:var(--danger);padding:9px 12px;border-radius:var(--radius-sm);font-size:12.5px}.icon-editor-row{display:flex;align-items:flex-start;gap:12px}.icon-editor-controls{flex:1;display:flex;flex-direction:column;gap:8px}.icon-upload-actions{display:flex;align-items:center;gap:8px}.sr-only-file{position:absolute;width:1px;height:1px;opacity:0;overflow:hidden;pointer-events:none}.icon-picker-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(105px,1fr));gap:6px;margin-top:4px}.icon-picker-btn{display:flex;align-items:center;gap:6px;padding:6px 8px;border:1px solid var(--border-subtle);border-radius:var(--radius-sm);background:#fff;font-size:11.5px;color:var(--text-secondary);cursor:pointer}.icon-picker-btn:hover{border-color:var(--border-strong);color:var(--text-primary)}.icon-picker-btn.is-selected{border-color:var(--zju-blue);background:var(--zju-blue-soft);color:var(--zju-blue);font-weight:600}.checkbox-label{display:inline-flex;align-items:center;gap:8px;cursor:pointer;font-weight:500}.danger-zone{margin-top:6px;padding-top:14px;border-top:1px solid var(--border-subtle)}.danger-confirm-box{background:var(--danger-bg);border:1px solid var(--danger-border);border-radius:var(--radius-sm);padding:12px}.danger-confirm-box p{margin:0 0 10px;font-size:12.5px;color:var(--danger)}.danger-confirm-actions{display:flex;gap:8px}.io-block h3{margin:0 0 4px;font-size:14.5px}.io-block p{margin:0 0 12px}.io-divider{border:none;border-top:1px solid var(--border-subtle);margin:4px 0}.import-file-row{display:flex;align-items:center;gap:10px}.import-filename{font-family:var(--font-mono);font-size:12px;color:var(--text-secondary)}.import-preview-box{margin-top:14px;padding:14px;background:var(--bg-subtle);border:1px solid var(--border-strong);border-radius:var(--radius-md)}.import-preview-box h4{margin:0 0 10px;font-size:13px}.preview-counts-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin:0 0 14px}.preview-counts-grid div{background:#fff;border:1px solid var(--border-subtle);border-radius:var(--radius-sm);padding:8px;text-align:center}.preview-counts-grid dt{font-size:11px;color:var(--text-muted)}.preview-counts-grid dd{margin:2px 0 0;font-size:15px;font-weight:700;font-family:var(--font-mono)}.confirm-replace-check{margin-bottom:12px;font-size:12.5px}.muted-text{color:var(--text-muted);font-size:12.5px}@media(max-width:1023px){.public-sidebar{display:none}.mobile-brand-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;background-color:var(--zju-navy-header);padding:10px 14px;border-bottom:1px solid rgba(255,255,255,.12)}.mobile-brand{display:inline-flex;align-items:center;text-decoration:none}.mobile-logo-img{height:44px;width:auto;display:block}.mobile-brand-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}.mobile-top-link{font-size:12px;color:#ffffffe0;background:transparent;border:none;padding:4px 6px;border-radius:4px;font-weight:500;cursor:pointer;text-decoration:none}.mobile-top-link:hover{color:#fff;background:#ffffff1a;text-decoration:none}.public-topbar{padding:10px 14px}.search-toolbar{flex-direction:column;align-items:stretch;gap:8px}.search-input-wrap{max-width:none}.search-shortcut{display:none}.toolbar-meta{justify-content:space-between}.mobile-category-strip{display:flex;align-items:center;gap:6px;overflow-x:auto;padding:8px 0 2px;margin-top:4px;scrollbar-width:none}.mobile-category-strip::-webkit-scrollbar{display:none}.category-pill{display:inline-flex;align-items:center;gap:5px;padding:5px 11px;border-radius:999px;border:1px solid var(--border-subtle);background:var(--bg-subtle);color:var(--text-secondary);font-size:12px;font-weight:500;white-space:nowrap;cursor:pointer;flex-shrink:0}.category-pill .pill-count{font-size:11px;opacity:.78;font-variant-numeric:tabular-nums}.category-pill.is-active{background:var(--zju-navy-header);border-color:var(--zju-navy-header);color:#fff}.public-content{padding:16px 14px 28px}.resource-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.category-section,.collaboration-section{scroll-margin-top:144px}.collaboration-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.collab-stack{grid-column:1 / -1;height:auto;gap:10px}.collab-media-portrait{height:auto;min-height:220px;padding:12px 10px}.collab-media-portrait img{width:100%;height:auto;max-height:230px;object-fit:contain}.collab-card-zjbs,.collab-card-zju-igem,.collab-card-international{height:auto;min-height:0}.collab-media-landscape{padding:12px 16px}.collab-card-international .collab-media-landscape img{max-height:180px}}@media(max-width:640px){.mobile-logo-img{height:38px}.category-sections{gap:22px}.category-section-header{margin-bottom:10px}.resource-grid{grid-template-columns:1fr;gap:9px}.resource-card{padding:11px 13px}.collab-media-portrait{min-height:204px;padding:10px 8px}.collab-media-portrait img{max-height:216px}.public-footer{padding:14px}.admin-header{padding:8px 12px;height:auto;flex-wrap:wrap}.admin-main{padding:12px}.form-row-2{grid-template-columns:1fr}.preview-counts-grid{grid-template-columns:repeat(3,1fr)}}@media(max-width:359px){.collaboration-grid{grid-template-columns:1fr}}
