*,*:before,*:after{box-sizing:border-box}:root{--bg: #0b1020;--card-bg: #121a33;--text: #e8eeff;--muted: #93a4c7;--accent: #5dd6c6;--border: rgba(255, 255, 255, .12);--shadow: 0 10px 30px rgba(0, 0, 0, .35);--radius: 14px;--maxw: 1200px;--sans: system-ui, -apple-system, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;--mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace}body{margin:0;font-family:var(--sans);background:radial-gradient(1200px 800px at 20% 0%,#162450 0%,var(--bg) 55%),radial-gradient(1000px 700px at 100% 30%,#0f2b3a 0%,var(--bg) 60%);color:var(--text);min-height:100vh}.app-header{position:sticky;top:0;z-index:20;background:#0b1020c7;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--border)}.header-inner{max-width:var(--maxw);margin:0 auto;padding:14px 20px;display:flex;align-items:center;gap:10px}.logo{font-size:22px}.brand-name{font-weight:700;font-size:17px;letter-spacing:.2px;color:var(--text);text-decoration:none}.brand-name a,.brand-name a:visited{color:inherit;text-decoration:none}.tagline{color:var(--muted);font-size:13px;margin-left:4px}.home-main{max-width:var(--maxw);margin:0 auto;padding:40px 20px 60px}.tool-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:18px}.tool-card{display:flex;align-items:flex-start;gap:16px;background:color-mix(in oklab,var(--card-bg) 92%,black 8%);border:1px solid var(--border);border-radius:var(--radius);padding:24px;text-decoration:none;color:var(--text);box-shadow:var(--shadow);transition:border-color .18s ease,transform .18s ease;cursor:pointer}.tool-card:hover{border-color:var(--accent);transform:translateY(-2px)}.tool-emoji{font-size:32px;flex-shrink:0;line-height:1}.tool-info h3{margin:0 0 6px;font-size:16px;font-weight:700}.tool-info p{margin:0;color:var(--muted);font-size:13px;line-height:1.55}.tool-page{max-width:var(--maxw);margin:0 auto;padding:20px}.back-link{display:inline-flex;align-items:center;gap:6px;color:var(--muted);text-decoration:none;font-size:13px;margin-bottom:16px;transition:color .15s}.back-link:hover{color:var(--accent)}@media(max-width:640px){.tool-grid{grid-template-columns:1fr}.header-inner{padding:12px 14px}.home-main{padding:24px 14px 40px}}.elementhub-page{min-height:100vh;padding:2rem 1.5rem;max-width:1400px;margin:0 auto}.elementhub-header{text-align:center;margin-bottom:2rem}.elementhub-header h1{font-size:2.5rem;font-weight:800;background:linear-gradient(135deg,#4dabf7,#b197fc,#f783ac);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin:0 0 .5rem}.elementhub-header p{color:#868e96;font-size:1rem;margin:0}.search-bar{display:flex;justify-content:center;margin-bottom:1.5rem}.search-bar input{width:100%;max-width:400px;padding:.75rem 1.25rem;border:1px solid #373a40;border-radius:12px;background:#1e1e2e;color:#e9ecef;font-size:1rem;outline:none;transition:border-color .2s,box-shadow .2s}.search-bar input:focus{border-color:#4dabf7;box-shadow:0 0 0 3px #4dabf726}.search-bar input::placeholder{color:#5c5f66}.legend-bar{display:flex;flex-wrap:wrap;justify-content:center;gap:.75rem;margin-bottom:2rem;padding:.75rem 1rem;background:#ffffff08;border-radius:12px;border:1px solid #2a2a3a}.legend-item{display:flex;align-items:center;gap:.4rem;font-size:.8rem;color:#adb5bd;cursor:pointer;padding:.25rem .5rem;border-radius:6px;transition:background .2s}.legend-item:hover{background:#ffffff0d}.legend-item.active{background:#ffffff14;color:#fff}.legend-swatch{width:14px;height:14px;border-radius:4px;flex-shrink:0}.periodic-table-wrapper{overflow-y:auto;max-height:65vh;padding-bottom:1rem;position:relative}.periodic-table-wrapper:after{content:"";position:sticky;bottom:0;left:0;right:0;display:block;height:24px;background:linear-gradient(transparent,#1a1b2ee6);pointer-events:none;border-radius:0 0 8px 8px}.periodic-table{display:grid;grid-template-columns:repeat(18,1fr);grid-template-rows:repeat(10,auto);gap:4px;min-width:900px;max-width:1200px;margin:0 auto}.row-label{grid-column:1 / -1;text-align:center;font-size:.75rem;color:#5c5f66;padding:.25rem 0;text-transform:uppercase;letter-spacing:.1em}.element-cell{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;aspect-ratio:1;min-width:48px;min-height:48px;border-radius:8px;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease,filter .15s ease;-webkit-user-select:none;user-select:none;border:1px solid rgba(255,255,255,.08);padding:2px}.element-cell:hover{transform:scale(1.15);box-shadow:0 4px 20px #00000080,0 0 20px #4dabf733;z-index:10;border-color:#fff3}.element-cell.dimmed{opacity:.2;filter:grayscale(.6);pointer-events:none}.element-cell.highlighted{animation:pulse .6s ease-in-out;z-index:5}@keyframes pulse{0%{transform:scale(1)}50%{transform:scale(1.12)}to{transform:scale(1)}}.element-number{font-size:.6rem;opacity:.7;line-height:1;position:absolute;top:3px;left:5px}.element-symbol{font-size:1.1rem;font-weight:700;line-height:1.2}.element-name{font-size:.55rem;opacity:.8;line-height:1}.modal-backdrop{position:fixed;inset:0;background:#000000b3;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);z-index:1000;display:flex;align-items:center;justify-content:center;animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal-content{background:#1a1b2e;border:1px solid #2a2a3e;border-radius:16px;width:90vw;max-width:900px;max-height:85vh;display:flex;flex-direction:column;overflow:hidden;animation:slideUp .25s ease;box-shadow:0 20px 60px #00000080}@keyframes slideUp{0%{opacity:0;transform:translateY(30px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}.modal-header{padding:1.5rem 2rem;display:flex;align-items:center;gap:1.25rem;flex-shrink:0;position:relative}.modal-symbol-badge{width:72px;height:72px;border-radius:16px;display:flex;align-items:center;justify-content:center;font-size:2rem;font-weight:800;color:#fff;flex-shrink:0;box-shadow:0 4px 15px #0000004d}.modal-title-info{flex:1}.modal-title-info h2{margin:0;font-size:1.5rem;font-weight:700;color:#e9ecef}.modal-title-info .element-english{font-size:.9rem;color:#868e96;margin:.15rem 0 .4rem}.modal-title-meta{display:flex;flex-wrap:wrap;gap:.5rem}.meta-badge{font-size:.75rem;padding:.2rem .6rem;border-radius:6px;background:#ffffff0f;color:#adb5bd;border:1px solid rgba(255,255,255,.08)}.modal-close{position:absolute;top:1rem;right:1rem;width:36px;height:36px;border-radius:50%;border:none;background:#ffffff0f;color:#adb5bd;cursor:pointer;font-size:1.2rem;display:flex;align-items:center;justify-content:center;transition:background .2s}.modal-close:hover{background:#ffffff1f;color:#fff}.scarcity-bar-wrap{padding:0 2rem 1rem;flex-shrink:0}.scarcity-bar-wrap .label{font-size:.75rem;color:#868e96;margin-bottom:.35rem;display:flex;justify-content:space-between}.scarcity-bar{height:8px;border-radius:4px;background:#ffffff0f;overflow:hidden}.scarcity-fill{height:100%;border-radius:4px;transition:width .5s ease;background:linear-gradient(90deg,#38d9a9,#f5c842,#e85d5d)}.modal-body{flex:1;overflow-y:auto;padding:0 2rem 2rem}.accordion-section{border:1px solid #2a2a3e;border-radius:10px;margin-bottom:.6rem;overflow:hidden;background:#ffffff05;transition:border-color .2s}.accordion-section:hover{border-color:#3a3a4e}.accordion-header{display:flex;align-items:center;justify-content:space-between;padding:.85rem 1.25rem;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .15s}.accordion-header:hover{background:#ffffff08}.accordion-header h4{margin:0;font-size:.95rem;font-weight:600;color:#ced4da;display:flex;align-items:center;gap:.5rem}.accordion-arrow{font-size:.7rem;color:#5c5f66;transition:transform .2s}.accordion-section.open .accordion-arrow{transform:rotate(180deg)}.accordion-body{padding:0 1.25rem 1rem;display:none;font-size:.88rem;line-height:1.7;color:#adb5bd}.accordion-section.open .accordion-body{display:block}.accordion-body p{margin:.4rem 0}.accordion-body strong{color:#ced4da}.dim-field{margin-bottom:.7rem}.dim-field .dim-label{font-size:.78rem;color:#868e96;font-weight:600;text-transform:uppercase;letter-spacing:.05em;margin-bottom:.15rem}.dim-field .dim-value{color:#adb5bd;font-size:.88rem}.dim-list{list-style:none;padding:0;margin:.3rem 0}.dim-list li{padding:.25rem 0;border-bottom:1px solid rgba(255,255,255,.03);font-size:.85rem}.dim-list li:last-child{border-bottom:none}.dim-mini-table{width:100%;border-collapse:collapse;font-size:.82rem;margin:.3rem 0}.dim-mini-table th{text-align:left;padding:.3rem .5rem;color:#868e96;font-weight:600;font-size:.72rem;text-transform:uppercase;border-bottom:1px solid rgba(255,255,255,.08)}.dim-mini-table td{padding:.3rem .5rem;border-bottom:1px solid rgba(255,255,255,.03);color:#adb5bd}.risk-tag{display:inline-block;padding:.15rem .5rem;border-radius:4px;font-size:.75rem;margin-right:.3rem;margin-bottom:.2rem}.risk-high{background:#e85d5d26;color:#e85d5d}.risk-medium{background:#f5c84226;color:#f5c842}.risk-low{background:#38d9a926;color:#38d9a9}.modal-footer{padding:.75rem 2rem;border-top:1px solid #2a2a3e;flex-shrink:0;display:flex;justify-content:space-between;align-items:center;font-size:.75rem;color:#5c5f66}.confidence-badge{padding:.2rem .6rem;border-radius:4px;font-size:.7rem;font-weight:600}.confidence-high{background:#38d9a926;color:#38d9a9}.confidence-medium{background:#f5c84226;color:#f5c842}.confidence-low{background:#e85d5d26;color:#e85d5d}@media(max-width:768px){.elementhub-page{padding:1rem .5rem}.elementhub-header h1{font-size:1.6rem}.periodic-table{min-width:auto;gap:2px}.element-cell{min-width:28px;min-height:28px;border-radius:4px}.element-number{font-size:.4rem;top:1px;left:2px}.element-symbol{font-size:.6rem}.element-name{display:none}.modal-content{width:95vw;max-height:90vh;border-radius:12px}.modal-header{padding:1rem}.modal-body{padding:0 1rem 1rem}.modal-symbol-badge{width:52px;height:52px;font-size:1.4rem;border-radius:12px}.modal-title-info h2{font-size:1.2rem}.scarcity-bar-wrap{padding:0 1rem .75rem}}.empty-state{text-align:center;padding:3rem;color:#5c5f66}.empty-state .icon{font-size:3rem;margin-bottom:1rem}.loading-spinner{display:flex;align-items:center;justify-content:center;padding:2rem;color:#5c5f66;gap:.5rem}.loading-spinner .dot{width:8px;height:8px;border-radius:50%;background:#4dabf7;animation:bounce 1.4s infinite ease-in-out both}.loading-spinner .dot:nth-child(1){animation-delay:-.32s}.loading-spinner .dot:nth-child(2){animation-delay:-.16s}@keyframes bounce{0%,80%,to{transform:scale(0)}40%{transform:scale(1)}}
