:root{--color-bg: #f0f2f5;--color-surface: #ffffff;--color-primary: #6366f1;--color-primary-hover: #4f46e5;--color-primary-light: #eef2ff;--color-danger: #ef4444;--color-danger-hover: #dc2626;--color-text: #1e293b;--color-text-secondary: #64748b;--color-text-muted: #94a3b8;--color-border: #e2e8f0;--color-shadow: rgba(0, 0, 0, .08);--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 20px;--transition: .25s cubic-bezier(.4, 0, .2, 1);--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Arial, sans-serif}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-sans);background:var(--color-bg);color:var(--color-text);min-height:100vh}.container{width:100%;max-width:1200px;margin:0 auto;padding:0 20px}.header{background:linear-gradient(135deg,#667eea,#764ba2);padding:14px 0;position:relative;overflow:hidden}.header:before{content:"";position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:radial-gradient(circle at 30% 50%,rgba(255,255,255,.06) 0%,transparent 60%);pointer-events:none}.header-inner{position:relative;z-index:1;display:flex;flex-direction:column;gap:12px}.header-brand{display:flex;align-items:center;gap:10px}.title-icon{font-size:1.8rem;flex-shrink:0;line-height:1}.site-title{font-size:1.3rem;font-weight:700;color:#fff;letter-spacing:1px;white-space:nowrap}.site-subtitle{color:#ffffffbf;font-size:.85rem;font-weight:400;letter-spacing:2px;white-space:nowrap}.header-right{display:flex;align-items:center;gap:10px}.btn-add-card{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;gap:4px;padding:8px 18px;border:none;border-radius:20px;background:#fff3;color:#fff;font-size:.9rem;font-weight:600;font-family:inherit;cursor:pointer;transition:background var(--transition),transform var(--transition);white-space:nowrap;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.btn-add-card:hover{background:#ffffff59;transform:translateY(-1px)}.btn-add-card:active{transform:translateY(0)}.tabs-bar{display:flex;gap:6px;background:#ffffff26;border-radius:var(--radius-md);padding:4px;overflow-x:auto;-webkit-overflow-scrolling:touch;flex:1;min-width:0;scrollbar-width:none}.tabs-bar::-webkit-scrollbar{display:none}.tab{flex:1;display:flex;align-items:center;justify-content:center;gap:4px;padding:7px 12px;border:none;border-radius:var(--radius-sm);background:transparent;color:#ffffffbf;font-size:.85rem;font-weight:500;cursor:pointer;transition:all var(--transition);white-space:nowrap;font-family:inherit;min-width:0}.tab:hover{background:#ffffff1f;color:#fff}.tab.active{background:#ffffff40;color:#fff;box-shadow:0 1px 6px #0000001a}.tab-icon{font-size:.95rem;flex-shrink:0}.tab-label{overflow:hidden;text-overflow:ellipsis}.tab-count{font-size:.7rem;background:#ffffff26;color:inherit;padding:1px 6px;border-radius:10px;flex-shrink:0}.tab.active .tab-count{background:#ffffff4d}.input-wrapper{display:flex;align-items:center;background:var(--color-bg);border-radius:var(--radius-sm);padding:0 16px;border:2px solid transparent;transition:border-color var(--transition)}.input-wrapper:focus-within{border-color:var(--color-primary);background:var(--color-surface)}.input-icon{font-size:1.2rem;margin-right:10px;flex-shrink:0}.url-input{flex:1;border:none;outline:none;background:transparent;font-size:1rem;padding:12px 0;color:var(--color-text);font-family:inherit}.url-input::placeholder{color:var(--color-text-muted)}.btn-loader{display:none;width:18px;height:18px;border:2.5px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .6s linear infinite;position:absolute}@keyframes spin{to{transform:rotate(360deg)}}.btn-save.loading .btn-text{visibility:hidden}.btn-save.loading .btn-loader{display:block}.btn-save{position:relative}.card-btn-refresh.spinning{animation:spin .6s linear infinite;pointer-events:none;color:var(--color-primary)}.cards-section{margin-top:40px;padding-bottom:60px}.cards-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.cards-title{font-size:1.3rem;font-weight:700;color:var(--color-text)}.cards-count{color:var(--color-text-muted);font-size:.9rem}.cards-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:20px}.card{background:var(--color-surface);border-radius:var(--radius-md);overflow:hidden;box-shadow:0 2px 12px var(--color-shadow);transition:transform var(--transition),box-shadow var(--transition);display:flex;flex-direction:column;position:relative;cursor:pointer}.card:hover{transform:translateY(-4px);box-shadow:0 8px 32px #0000001f}.card-image-wrapper{width:100%;height:160px;overflow:hidden;background:var(--color-primary-light);position:relative}.card-image{width:100%;height:100%;object-fit:cover;display:block;transition:transform .4s ease}.card:hover .card-image{transform:scale(1.05)}.card-image-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:3rem;font-weight:700;color:#fff;-webkit-user-select:none;user-select:none}.card-body{padding:16px 18px 14px;flex:1;display:flex;flex-direction:column}.card-title{font-size:1.05rem;font-weight:600;color:var(--color-text);line-height:1.4;margin-bottom:6px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.card-description{font-size:.85rem;color:var(--color-text-secondary);line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;flex:1}.card-footer{display:flex;align-items:center;justify-content:space-between;padding:10px 18px 14px;gap:8px}.card-favicon{width:18px;height:18px;border-radius:4px;flex-shrink:0}.card-hostname{font-size:.8rem;color:var(--color-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.card-actions{display:flex;gap:4px;flex-shrink:0}.card-btn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;border-radius:var(--radius-sm);cursor:pointer;font-size:.9rem;transition:background var(--transition),color var(--transition);background:transparent;color:var(--color-text-muted)}.card-btn:hover{background:var(--color-bg)}.card-btn-edit:hover{color:var(--color-primary);background:var(--color-primary-light)}.card-btn-delete:hover{color:var(--color-danger);background:#fef2f2}.empty-state{text-align:center;padding:80px 20px;display:none}.cards-grid:empty~.empty-state{display:block}.empty-icon{font-size:4rem;margin-bottom:16px}.empty-state h3{font-size:1.2rem;color:var(--color-text);margin-bottom:8px}.empty-state p{color:var(--color-text-muted);font-size:.95rem}.modal-overlay{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1000;align-items:center;justify-content:center;padding:20px}.modal-sm{max-width:360px}.modal-body{padding:20px 24px 0}.pwd-error{display:none;color:var(--color-danger);font-size:.85rem;margin-top:8px}.pwd-error.show{display:block}#addCardModal .add-hint{text-align:center;color:var(--color-text-muted);font-size:.85rem;margin-top:4px}.modal-overlay.active{display:flex}.modal-content{background:var(--color-surface);border-radius:var(--radius-lg);width:100%;max-width:480px;box-shadow:0 20px 60px #0003;animation:modalIn .25s ease}@keyframes modalIn{0%{opacity:0;transform:scale(.95) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px 0}.modal-header h3{font-size:1.15rem;font-weight:700}.modal-close{width:36px;height:36px;border:none;background:transparent;font-size:1.6rem;cursor:pointer;color:var(--color-text-muted);border-radius:50%;display:flex;align-items:center;justify-content:center;transition:background var(--transition)}.modal-close:hover{background:var(--color-bg);color:var(--color-text)}.modal-form{padding:20px 24px 24px}.form-group{margin-bottom:16px}.form-group label{display:block;font-size:.85rem;font-weight:600;color:var(--color-text-secondary);margin-bottom:6px}.form-input{width:100%;padding:10px 14px;border:2px solid var(--color-border);border-radius:var(--radius-sm);font-size:.95rem;font-family:inherit;color:var(--color-text);background:var(--color-bg);transition:border-color var(--transition),background var(--transition);outline:none}.form-input:focus{border-color:var(--color-primary);background:var(--color-surface)}.form-textarea{resize:vertical;min-height:60px}.form-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2364748b' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:36px;cursor:pointer}.modal-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:24px}.btn-cancel,.btn-save{padding:10px 24px;border-radius:var(--radius-sm);font-size:.95rem;font-weight:600;cursor:pointer;transition:background var(--transition),color var(--transition);border:none;font-family:inherit}.btn-cancel{background:var(--color-bg);color:var(--color-text-secondary)}.btn-cancel:hover{background:var(--color-border)}.btn-save{background:var(--color-primary);color:#fff}.btn-save:hover{background:var(--color-primary-hover)}@media(max-width:768px){.cards-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}.modal-content{max-width:100%;margin:10px}}@media(max-width:640px){.header{padding:10px 0}.header-inner{flex-direction:row;align-items:center;gap:6px}.header-brand .site-title,.header-brand .site-subtitle{display:none}.title-icon{font-size:1.5rem}.header-right{flex:1;min-width:0}.tabs-bar{gap:4px;padding:3px}.tab{padding:5px 8px;font-size:.78rem;gap:3px}.tab-label{font-size:.7rem}.tab-count{font-size:.6rem;padding:0 4px}.btn-add-card{padding:6px 12px;font-size:.8rem}.cards-grid{gap:14px}.container{padding:0 14px}}@media(max-width:450px){.tab-label{display:none}.tab{padding:6px 10px;font-size:.85rem;gap:0}.tab-count,.btn-add-card .btn-add-text{display:none}.btn-add-card{padding:6px 10px;font-size:1.1rem}.cards-grid{grid-template-columns:1fr}.card-image-wrapper{height:140px}}
