*{box-sizing:border-box;margin:0;padding:0}
body{font-family:Georgia,'Times New Roman',serif;background:#fafafa;color:#222;line-height:1.7;font-size:18px}
a{color:#1a2a3a;text-decoration:none}
a:hover{text-decoration:underline}
nav{background:#1a2a3a;color:#fff;padding:0 20px;display:flex;align-items:center;height:56px;position:sticky;top:0;z-index:100}
nav .brand{font-weight:700;font-size:17px;margin-right:30px}
nav a{color:#ccc;margin-right:18px;font-size:15px;transition:color .2s}
nav a:hover{color:#fff;text-decoration:none}
nav a.active{color:#fff;font-weight:600}
.page{display:none;max-width:960px;margin:0 auto;padding:30px 24px;background:#fff;min-height:calc(100vh - 56px)}
.page.active{display:block}
h1{font-size:24px;font-weight:700;margin-bottom:12px;line-height:1.3}
h2{font-size:20px;font-weight:700;margin:24px 0 10px;padding-bottom:4px;border-bottom:1px solid #ddd}
h3{font-size:17px;font-weight:700;margin:16px 0 8px;color:#333}
p{margin-bottom:12px;text-align:justify}
.tag-h{color:#27ae60;font-weight:700}
.tag-l{color:#e67e22;font-weight:700}
.tag-ll{color:#b8860b;font-weight:700}
.tag-c{color:#8e44ad;font-weight:700}
.tag-q{color:#999}
.badge{display:inline-block;padding:2px 8px;border-radius:3px;font-size:13px;font-weight:700;color:#fff}
.badge-h{background:#27ae60}
.badge-l{background:#e67e22}
.badge-ll{background:#b8860b}
.badge-c{background:#8e44ad}
.badge-q{background:#999}
.badge-ok{background:#27ae60}
.badge-pending{background:#e67e22}
.badge-none{background:#999}
.table-wrap{overflow-x:auto;margin:12px 0 16px;border:1px solid #ddd;border-radius:4px}
table{width:100%;border-collapse:collapse;font-size:14px}
th{background:#1a2a3a;color:#fff;padding:7px 10px;text-align:left;font-size:13px;font-weight:600}
td{padding:6px 10px;border-bottom:1px solid #eee;font-size:13px}
tr:nth-child(even){background:#f8f8f8}
tr.clickable{cursor:pointer}
tr.clickable:hover{background:#e8f0fe}
.fig-wrap{text-align:center;margin:20px 0}
.fig-wrap canvas{max-width:100%;border:1px solid #e0e0e0;border-radius:4px}
.fig-thumb canvas{max-width:260px;max-height:150px;width:auto;height:auto}
.fig-thumb .fig-caption{font-size:12px}
.fig-thumb:hover canvas{border-color:#2980b9;box-shadow:0 2px 8px rgba(41,128,185,0.2)}
.fig-overlay{display:none;position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,0.88);z-index:1000;justify-content:center;align-items:center;cursor:pointer}
.fig-overlay.active{display:flex}
.fig-overlay .fig-overlay-wrap{max-width:94vw;max-height:94vh;display:flex;align-items:center;justify-content:center;cursor:default;position:relative}
.fig-overlay .fig-overlay-wrap canvas{max-width:94vw;max-height:94vh;object-fit:contain;border-radius:4px}
.fig-overlay .fig-close{position:absolute;top:16px;right:20px;font-size:28px;color:#fff;cursor:pointer;z-index:1001;line-height:1;opacity:0.7;transition:opacity .2s;font-family:Arial,sans-serif}
.fig-overlay .fig-close:hover{opacity:1}
.fig-overlay .fig-label{position:absolute;bottom:-30px;left:50%;transform:translateX(-50%);color:rgba(255,255,255,0.7);font-size:13px;font-family:Arial,sans-serif;white-space:nowrap}
.fig-caption{font-size:13px;color:#555;margin-top:6px;font-style:italic}
.abstract-box{background:#f8f8f8;border-left:3px solid #1a2a3a;padding:12px 16px;margin-bottom:24px;font-size:15px;border-radius:0 4px 4px 0}
.refs{font-size:14px;line-height:1.6}
.refs p{margin-bottom:6px;padding-left:24px;text-indent:-24px;text-align:left}
.kw{font-size:15px;color:#666;text-align:center;margin-bottom:24px}
.sample-detail{margin-top:16px}
.sample-detail .meta{display:grid;grid-template-columns:140px 1fr;gap:4px 12px;font-size:15px;margin-bottom:20px}
.sample-detail .meta dt{font-weight:700;color:#555;text-align:right}
.sample-detail .meta dd{margin:0}
.file-list{margin:12px 0}
.file-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid #eee;border-radius:4px;margin-bottom:6px;font-size:14px}
.file-item .file-icon{font-size:20px}
.file-item .file-info{flex:1}
.file-item .file-info .fname{font-weight:600}
.file-item .file-info .fmeta{color:#888;font-size:12px}
.btn{display:inline-block;padding:8px 18px;background:#1a2a3a;color:#fff;border:none;border-radius:4px;font-size:14px;cursor:pointer;font-family:inherit}
.btn:hover{background:#2a3a4a}
.btn-sm{padding:5px 12px;font-size:12px}
.btn-danger{background:#c0392b}
.btn-danger:hover{background:#e74c3c}
.upload-zone{border:2px dashed #ccc;border-radius:6px;padding:30px;text-align:center;margin:16px 0;cursor:pointer;transition:border-color .2s}
.upload-zone:hover,.upload-zone.dragover{border-color:#1a2a3a;background:#f0f4f8}
.upload-zone .icon{font-size:36px;color:#aaa;margin-bottom:8px}
.upload-zone p{color:#888;font-size:15px;text-align:center}
.obs-list{margin:12px 0}
.obs-item{padding:12px 14px;border:1px solid #eee;border-radius:4px;margin-bottom:8px;font-size:15px}
.obs-item .obs-author{font-weight:600;color:#1a2a3a}
.obs-item .obs-date{color:#999;font-size:12px;margin-left:8px}
.obs-item .obs-text{margin-top:4px}
.obs-form textarea{width:100%;min-height:80px;padding:10px;border:1px solid #ddd;border-radius:4px;font-size:14px;font-family:inherit;margin-bottom:8px;resize:vertical}
.obs-form input[type=text]{width:100%;padding:9px 10px;border:1px solid #ddd;border-radius:4px;font-size:14px;font-family:inherit;margin-bottom:8px}
.search-bar{padding:9px 14px;border:1px solid #ddd;border-radius:4px;font-size:16px;width:100%;max-width:320px;margin-bottom:16px;font-family:inherit}
.stats-row{display:flex;gap:12px;margin:16px 0;flex-wrap:wrap}
.stat-card{flex:1;min-width:120px;padding:16px;border:1px solid #ddd;border-radius:6px;text-align:center}
.stat-card .num{font-size:30px;font-weight:700}
.stat-card .label{font-size:14px;color:#888;margin-top:2px}
#file-preview img{max-width:200px;max-height:200px;border-radius:4px;margin-top:8px}
.loading{text-align:center;padding:30px;color:#888;font-size:16px}
.toast{position:fixed;bottom:20px;right:20px;padding:12px 20px;border-radius:4px;color:#fff;font-size:14px;z-index:999;opacity:0;transition:opacity .3s}
.toast.show{opacity:1}
.toast-success{background:#27ae60}
.toast-error{background:#c0392b}
.tabs{display:flex;gap:0;border-bottom:2px solid #ddd;margin-bottom:16px}
.tab{padding:10px 18px;cursor:pointer;font-size:15px;color:#888;border-bottom:2px solid transparent;margin-bottom:-2px;transition:all .2s}
.tab:hover{color:#333}
.tab.active{color:#1a2a3a;font-weight:600;border-bottom-color:#1a2a3a}
.logos{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:24px 36px;margin-bottom:24px;padding:12px 0}
.logos img{height:55px;width:auto;opacity:0.8;transition:opacity .2s}
.logos img:hover{opacity:1}
.pair-section{margin:28px 0}
.pair-locality{margin-bottom:28px}
.pair-locality h3{font-size:17px;font-weight:700;margin-bottom:10px;padding-bottom:4px;border-bottom:2px solid #ddd}
.pair-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}
.pair-card{border:1px solid #e0e0e0;border-radius:6px;overflow:hidden;transition:box-shadow .2s}
.pair-card:hover{box-shadow:0 2px 10px rgba(0,0,0,.1)}
.pair-card-header{padding:10px 14px;color:#fff;font-size:15px;font-weight:600;display:flex;justify-content:space-between;align-items:center}
.pair-card-body{padding:10px 14px;font-size:14px}
.pair-card-body .pair-info{display:flex;gap:10px;margin-bottom:6px;color:#666;font-size:13px}
.pair-card-body .pair-info span{background:#f0f0f0;padding:1px 6px;border-radius:3px}
.pair-sample{display:flex;justify-content:space-between;padding:4px 0;border-bottom:1px solid #f0f0f0;font-size:13px}
.pair-sample:last-child{border-bottom:none}
.pair-sample .ps-code{font-weight:600;color:#1a2a3a}
.pair-sample .ps-name{color:#666}
.ir-tag{display:inline-block;background:#3498db;color:#fff;font-size:10px;padding:1px 6px;border-radius:3px;margin-left:4px;font-weight:600;vertical-align:middle}
.pair-sample .ps-chi{font-family:monospace;font-size:12px}
.pair-sample .ps-w{color:#888;font-size:12px}
.pair-sample .ps-dens{font-family:monospace;font-size:12px;color:#8e44ad}
@media(max-width:600px){nav{padding:0 10px;gap:6px}nav .brand{font-size:15px;margin-right:12px}nav a{margin-right:8px;font-size:14px}.page{padding:16px 12px}h1{font-size:20px}.sample-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}}

#chart-tooltip,#chart-tooltip3{display:none;position:absolute;background:rgba(30,30,30,0.92);color:#fff;font-size:13px;padding:5px 10px;border-radius:3px;pointer-events:none;white-space:nowrap;z-index:10;font-family:Arial,sans-serif}
#chart-tooltip4{display:none;position:absolute;background:rgba(30,30,30,0.92);color:#fff;font-size:13px;padding:5px 10px;border-radius:3px;pointer-events:none;white-space:nowrap;z-index:10;font-family:Arial,sans-serif}
#chart-tooltip5{display:none;position:absolute;background:rgba(30,30,30,0.92);color:#fff;font-size:13px;padding:5px 10px;border-radius:3px;pointer-events:none;white-space:nowrap;z-index:10;font-family:Arial,sans-serif}
.file-thumb{height:48px;width:auto;border-radius:3px;cursor:pointer;border:1px solid #eee;transition:opacity .2s}
.file-thumb:hover{opacity:0.8}
.type-badge{display:inline-block;padding:3px 8px;border-radius:3px;font-size:12px;font-weight:700;color:#fff;letter-spacing:0.3px}
.type-ir{background:#8e44ad}
.type-raman{background:#2980b9}
.type-photo{background:#27ae60}
.type-unknown{background:#999}
.gallery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;margin-top:12px}
.gallery-grid .gallery-item{position:relative;cursor:pointer;border-radius:4px;overflow:hidden;border:1px solid #ddd;background:#fafafa;aspect-ratio:1;display:flex;align-items:center;justify-content:center}
.gallery-grid .gallery-item:hover{border-color:#2980b9;box-shadow:0 2px 8px rgba(41,128,185,0.2)}
.gallery-grid .gallery-item img,.gallery-grid .gallery-item canvas{max-width:100%;max-height:100%;object-fit:contain}
.gallery-grid .gallery-item .gallery-fname{position:absolute;bottom:0;left:0;right:0;font-size:10px;color:#fff;background:rgba(0,0,0,0.55);padding:3px 5px;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lightbox{display:none;position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,0.88);z-index:1000;justify-content:center;align-items:center;cursor:pointer}
.lightbox.active{display:flex}
.lightbox .lb-close{position:absolute;top:16px;right:20px;font-size:28px;color:#fff;cursor:pointer;z-index:1001;line-height:1;opacity:0.7;transition:opacity .2s}
.lightbox .lb-close:hover{opacity:1}
.lightbox .lb-nav{position:absolute;top:50%;transform:translateY(-50%);font-size:36px;color:#fff;cursor:pointer;padding:16px;opacity:0.5;transition:opacity .2s;user-select:none;z-index:1001}
.lightbox .lb-nav:hover{opacity:1}
.lightbox .lb-prev{left:10px}
.lightbox .lb-next{right:10px}
.lightbox .lb-img-wrap{max-width:92vw;max-height:92vh;display:flex;align-items:center;justify-content:center;cursor:default;position:relative}
.lightbox .lb-img-wrap img,.lightbox .lb-img-wrap canvas{max-width:92vw;max-height:92vh;object-fit:contain;border-radius:4px;box-shadow:0 4px 30px rgba(0,0,0,0.5)}
.lightbox .lb-counter{position:absolute;bottom:-30px;left:50%;transform:translateX(-50%);color:rgba(255,255,255,0.6);font-size:15px;font-family:Arial,sans-serif}
@media(max-width:600px){.gallery-grid{grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:6px}}
.spectrum-container{margin:0 0 10px;padding:4px 10px 10px;background:#fcfcfc;border:1px solid #eee;border-radius:0 0 4px 4px;border-top:none}
.spec-controls{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:6px}
.spec-controls input,.spec-controls select{flex:1;min-width:80px;padding:5px 8px;border:1px solid #ddd;border-radius:3px;font-size:13px;font-family:inherit}
.spec-controls input:focus,.spec-controls select:focus{outline:none;border-color:#2980b9}
.spec-controls select{flex:0 0 80px;cursor:pointer}
.spectrum-wrap{text-align:center;background:#fff;border-radius:3px;position:relative}
.spectrum-wrap canvas{max-width:100%;height:auto;border:1px solid #ddd;border-radius:3px}
.spec-loading{font-size:13px;color:#888;padding:20px;text-align:center}
.ir-pair-panel{margin-bottom:16px}
.ir-pair-canvas{width:100%;max-width:900px;border:1px solid #eee;border-radius:4px;display:block;margin:0 auto}
