@import "https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@300;400;500;700&family=Outfit:wght@300;400;500;600;700&display=swap";:root{--color-sea-deep:#052c3d;--color-sea-emerald:#00a896;--color-sea-teal:#028090;--color-sea-light:#f0fdfa;--color-accent-orange:#f25c54;--color-accent-sand:#fbf5f0;--color-status-owned:#2d6a4f;--color-status-owned-bg:#e8f5e9;--color-status-missing:#b7094c;--color-status-missing-bg:#ffebee;--color-status-checking:#d97706;--color-status-checking-bg:#fef3c7;--text-main:#0f172a;--text-muted:#475569;--text-light:#94a3b8;--border-color:#e2e8f0;--card-bg:#fff;--font-sans:"Outfit", "Noto Sans JP", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--shadow-sm:0 1px 2px 0 #0000000d;--shadow-md:0 4px 6px -1px #0000001a, 0 2px 4px -2px #0000001a;--shadow-lg:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--shadow-premium:0 20px 25px -5px #052c3d1a, 0 8px 10px -6px #052c3d1a;--radius-sm:6px;--radius-md:12px;--radius-lg:20px;--transition-smooth:all .3s cubic-bezier(.4, 0, .2, 1)}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-sans);background-color:var(--color-sea-light);color:var(--text-main);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.6}a{color:var(--color-sea-teal);transition:var(--transition-smooth);text-decoration:none}a:hover{color:var(--color-sea-emerald)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--color-sea-light)}::-webkit-scrollbar-thumb{background:var(--color-sea-teal);border-radius:var(--radius-sm)}::-webkit-scrollbar-thumb:hover{background:var(--color-sea-deep)}.app-header{z-index:100;-webkit-backdrop-filter:blur(12px);color:#fff;border-bottom:3px solid var(--color-sea-emerald);box-shadow:var(--shadow-md);background:#052c3df2;justify-content:space-between;align-items:center;padding:1.25rem 2rem;display:flex;position:sticky;top:0}.header-logo{align-items:center;gap:.75rem;display:flex}.header-logo h1{letter-spacing:-.025em;background:linear-gradient(135deg,#fff 30%,#e0f2fe 90%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;font-size:1.5rem;font-weight:700}.header-logo span{background-color:var(--color-sea-emerald);color:var(--color-sea-deep);text-transform:uppercase;border-radius:4px;padding:.2rem .5rem;font-size:.75rem;font-weight:700}.last-updated{color:var(--text-light);align-items:center;gap:.4rem;font-size:.85rem;display:flex}.app-container{max-width:1400px;margin:0 auto;padding:2rem}.hero-section{background:linear-gradient(135deg, var(--color-sea-deep) 0%, var(--color-sea-teal) 100%);color:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow-premium);margin-bottom:2rem;padding:3rem 2rem;position:relative;overflow:hidden}.hero-section:before{content:"";pointer-events:none;background:radial-gradient(circle,#00a89626 0%,#0000 60%);width:200%;height:200%;position:absolute;top:-50%;left:-50%}.hero-title{margin-bottom:.75rem;font-size:2.25rem;font-weight:700}.hero-subtitle{opacity:.9;max-width:800px;font-size:1.1rem}.control-panel{background:var(--card-bg);border-radius:var(--radius-md);box-shadow:var(--shadow-md);border:1px solid var(--border-color);flex-direction:column;gap:1.25rem;margin-bottom:2rem;padding:1.5rem;display:flex}.search-filter-row{flex-wrap:wrap;gap:1rem;display:flex}.search-wrapper{flex:1;min-width:300px;position:relative}.search-input{border:2px solid var(--border-color);border-radius:var(--radius-sm);width:100%;font-family:var(--font-sans);color:var(--text-main);transition:var(--transition-smooth);padding:.85rem 1rem .85rem 2.75rem;font-size:.95rem}.search-input:focus{border-color:var(--color-sea-teal);outline:none;box-shadow:0 0 0 4px #02809026}.search-icon{color:var(--text-light);position:absolute;top:50%;left:1rem;transform:translateY(-50%)}.tabs-wrapper{border-bottom:2px solid var(--border-color);gap:1rem;display:flex}.tab-btn{font-family:var(--font-sans);color:var(--text-muted);cursor:pointer;transition:var(--transition-smooth);background:0 0;border:none;padding:.75rem .5rem;font-size:1.05rem;font-weight:600;position:relative}.tab-btn:hover{color:var(--color-sea-teal)}.tab-btn.active{color:var(--color-sea-deep)}.tab-btn.active:after{content:"";background-color:var(--color-sea-emerald);width:100%;height:3px;position:absolute;bottom:-2px;left:0}.tab-count{background:var(--border-color);color:var(--text-muted);border-radius:9999px;margin-left:.4rem;padding:.15rem .4rem;font-size:.75rem}.tab-btn.active .tab-count{background-color:var(--color-sea-emerald);color:var(--color-sea-deep)}.filter-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;display:flex}.filter-group{align-items:center;gap:.5rem;display:flex}.filter-label{color:var(--text-muted);text-transform:uppercase;font-size:.85rem;font-weight:700}.select-filter{border:1px solid var(--border-color);border-radius:var(--radius-sm);font-family:var(--font-sans);cursor:pointer;transition:var(--transition-smooth);background-color:#fff;outline:none;padding:.6rem 2rem .6rem 1rem;font-size:.9rem}.select-filter:focus{border-color:var(--color-sea-teal)}.btn-group{gap:.5rem;display:flex}.btn-filter-status{border:1px solid var(--border-color);font-family:var(--font-sans);cursor:pointer;color:var(--text-muted);transition:var(--transition-smooth);background:#f1f5f9;border-radius:9999px;padding:.5rem 1rem;font-size:.85rem;font-weight:600}.btn-filter-status:hover{background:#e2e8f0}.btn-filter-status.active{background-color:var(--color-sea-teal);color:#fff;border-color:var(--color-sea-teal)}.btn-primary{background-color:var(--color-sea-emerald);color:var(--color-sea-deep);font-family:var(--font-sans);border-radius:var(--radius-sm);cursor:pointer;transition:var(--transition-smooth);box-shadow:var(--shadow-sm);border:none;align-items:center;gap:.5rem;padding:.65rem 1.25rem;font-weight:600;display:flex}.btn-primary:hover{box-shadow:var(--shadow-md);background-color:#008f80;transform:translateY(-1px)}.btn-secondary{border:2px solid var(--color-sea-teal);color:var(--color-sea-teal);font-family:var(--font-sans);border-radius:var(--radius-sm);cursor:pointer;transition:var(--transition-smooth);background-color:#fff;align-items:center;gap:.5rem;padding:.6rem 1.25rem;font-weight:600;display:flex}.btn-secondary:hover{background-color:var(--color-sea-light);color:var(--color-sea-deep)}.books-grid{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:1.5rem;display:grid}.book-card{background:var(--card-bg);border-radius:var(--radius-md);border:1px solid var(--border-color);box-shadow:var(--shadow-sm);transition:var(--shadow-sm);transition:var(--transition-smooth);flex-direction:column;display:flex;position:relative;overflow:hidden}.book-card:hover{box-shadow:var(--shadow-premium);transform:translateY(-4px)}.book-card-header{justify-content:space-between;align-items:flex-start;gap:.5rem;padding:1.25rem 1.25rem .5rem;display:flex}.book-category-badge{text-transform:uppercase;color:var(--text-muted);background-color:#e2e8f0;border-radius:4px;padding:.15rem .4rem;font-size:.7rem;font-weight:700}.book-category-badge.okinawa-ja{color:#0369a1;background-color:#e0f2fe}.book-category-badge.okinawa-en{color:#a21caf;background-color:#fae8ff}.book-category-badge.academic{color:#b45309;background-color:#fef3c7}.status-badge{border-radius:9999px;align-items:center;gap:.3rem;padding:.25rem .6rem;font-size:.75rem;font-weight:700;display:flex}.status-badge.owned{background-color:var(--color-status-owned-bg);color:var(--color-status-owned)}.status-badge.missing{background-color:var(--color-status-missing-bg);color:var(--color-status-missing)}.status-badge.checking{background-color:var(--color-status-checking-bg);color:var(--color-status-checking)}.book-card-body{flex-direction:column;flex:1;padding:.5rem 1.25rem 1.25rem;display:flex}.book-title{color:var(--text-main);-webkit-line-clamp:2;-webkit-box-orient:vertical;height:3.1rem;margin-bottom:.5rem;font-size:1.1rem;font-weight:700;line-height:1.4;display:-webkit-box;overflow:hidden}.book-author{color:var(--text-muted);-webkit-line-clamp:1;-webkit-box-orient:vertical;margin-bottom:.75rem;font-size:.85rem;display:-webkit-box;overflow:hidden}.book-meta{border-top:1px solid var(--border-color);color:var(--text-light);flex-direction:column;gap:.4rem;margin-top:auto;padding-top:.75rem;font-size:.8rem;display:flex}.meta-row{justify-content:space-between;display:flex}.meta-val{color:var(--text-muted);font-weight:500}.book-card-actions{border-top:1px solid var(--border-color);background-color:#f8fafc;justify-content:space-between;align-items:center;padding:.75rem 1.25rem;display:flex}.btn-card-action{cursor:pointer;background:0 0;border:none;align-items:center;gap:.3rem;font-size:.85rem;font-weight:600;display:flex}.btn-card-opac{color:var(--color-sea-teal)}.btn-card-opac:hover{color:var(--color-sea-deep)}.btn-card-details{color:var(--text-muted)}.btn-card-details:hover{color:var(--text-main)}.modal-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1000;background-color:#052c3d99;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.modal-content{border-radius:var(--radius-lg);width:100%;max-width:650px;max-height:90vh;box-shadow:var(--shadow-lg);border:1px solid var(--border-color);background:#fff;animation:.3s cubic-bezier(.16,1,.3,1) modalEnter;overflow-y:auto}@keyframes modalEnter{0%{opacity:0;transform:scale(.95)translateY(10px)}to{opacity:1;transform:scale(1)translateY(0)}}.modal-header{border-bottom:1px solid var(--border-color);justify-content:space-between;align-items:flex-start;padding:1.5rem;display:flex}.modal-close-btn{cursor:pointer;color:var(--text-light);transition:var(--transition-smooth);background:0 0;border:none;border-radius:50%;padding:.25rem}.modal-close-btn:hover{color:var(--text-main);background-color:#f1f5f9}.modal-body{flex-direction:column;gap:1.5rem;padding:1.5rem;display:flex}.modal-book-profile{gap:1.5rem;display:flex}@media (width<=500px){.modal-book-profile{text-align:center;flex-direction:column;align-items:center}}.modal-book-cover{border:1px solid var(--border-color);border-radius:var(--radius-sm);width:120px;height:180px;color:var(--text-light);object-fit:cover;box-shadow:var(--shadow-sm);background-color:#f1f5f9;justify-content:center;align-items:center;font-size:.8rem;display:flex}.modal-book-info{flex-direction:column;flex:1;display:flex}.modal-book-title{color:var(--color-sea-deep);margin-bottom:.5rem;font-size:1.35rem;font-weight:700;line-height:1.3}.modal-book-author{color:var(--text-muted);margin-bottom:1rem;font-size:.95rem}.details-table{border-collapse:collapse;width:100%}.details-table th,.details-table td{text-align:left;border-bottom:1px solid var(--border-color);padding:.65rem 0}.details-table th{width:140px;color:var(--text-light);text-transform:uppercase;font-size:.85rem;font-weight:600}.details-table td{color:var(--text-main);font-size:.9rem;font-weight:500}.holdings-info-box{background-color:var(--color-accent-sand);border-radius:var(--radius-md);border:1px solid #e2d9cf;padding:1.25rem}.holdings-title{color:var(--color-sea-deep);align-items:center;gap:.4rem;margin-bottom:.75rem;font-size:.95rem;font-weight:700;display:flex}.holdings-list{flex-direction:column;gap:.5rem;list-style:none;display:flex}.holding-item{border-radius:var(--radius-sm);border:1px solid var(--border-color);background-color:#fff;justify-content:space-between;padding:.4rem .6rem;font-size:.85rem;display:flex}.holding-loc{color:var(--text-main);font-weight:600}.holding-status{color:var(--color-status-owned);font-weight:700}.holdings-empty{color:var(--color-status-missing);border-radius:var(--radius-sm);text-align:center;background-color:#fff5f5;border:1px solid #fed7d7;padding:.75rem;font-size:.85rem;font-weight:600}.modal-footer{border-top:1px solid var(--border-color);justify-content:flex-end;gap:.75rem;padding:1.25rem 1.5rem;display:flex}.empty-state{text-align:center;background:var(--card-bg);border-radius:var(--radius-md);border:1px dashed var(--border-color);color:var(--text-muted);grid-column:1/-1;padding:4rem 2rem}.empty-state-icon{color:var(--text-light);margin-bottom:1rem}.loading-container{color:var(--color-sea-teal);flex-direction:column;grid-column:1/-1;justify-content:center;align-items:center;padding:5rem 0;display:flex}.spinner{border:5px solid #02809033;border-left-color:var(--color-sea-teal);border-radius:50%;width:48px;height:48px;margin-bottom:1rem;animation:1s linear infinite spin}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (width<=768px){.app-header{flex-direction:column;align-items:flex-start;gap:.75rem;padding:1rem}.app-container{padding:1rem}.hero-section{padding:2rem 1rem}.hero-title{font-size:1.75rem}.search-filter-row{flex-direction:column}.search-wrapper{min-width:100%}.filter-row,.filter-group{flex-direction:column;align-items:stretch}}.books-table-wrapper{background:var(--card-bg);border-radius:var(--radius-md);border:1px solid var(--border-color);box-shadow:var(--shadow-sm);margin-bottom:2rem;overflow-x:auto}.books-table{border-collapse:collapse;text-align:left;width:100%;font-size:.95rem}.books-table th,.books-table td{border-bottom:1px solid var(--border-color);vertical-align:middle;padding:1rem 1.25rem}.books-table th{background-color:var(--color-sea-deep);color:#fff;text-transform:uppercase;letter-spacing:.05em;font-size:.85rem;font-weight:600}.books-table th:first-child{border-top-left-radius:var(--radius-md)}.books-table th:last-child{border-top-right-radius:var(--radius-md)}.books-table tr{transition:var(--transition-smooth);cursor:pointer}.books-table tr:hover{background-color:var(--color-sea-light)}.books-table tr:last-child td{border-bottom:none}.books-table .book-title-cell{color:var(--color-sea-deep);text-overflow:ellipsis;white-space:nowrap;max-width:350px;font-weight:700;overflow:hidden}.books-table .book-title-cell:hover{color:var(--color-sea-teal)}.books-table .book-author-cell{text-overflow:ellipsis;white-space:nowrap;max-width:200px;overflow:hidden}.table-actions{align-items:center;gap:.5rem;display:flex}.btn-table-action{border-radius:var(--radius-sm);cursor:pointer;transition:var(--transition-smooth);align-items:center;gap:.25rem;padding:.4rem .8rem;font-size:.8rem;font-weight:700;display:inline-flex}.btn-table-opac{background-color:var(--color-sea-teal);color:#fff;border:1px solid var(--color-sea-teal)}.btn-table-opac:hover{background-color:var(--color-sea-deep);border-color:var(--color-sea-deep)}.btn-table-source{color:var(--text-muted);border:1px solid var(--border-color);background-color:#fff}.btn-table-source:hover{color:var(--text-main);border-color:var(--text-light);background-color:#f1f5f9}@media (width<=900px){.books-table,.books-table thead,.books-table tbody,.books-table th,.books-table td,.books-table tr{display:block}.books-table thead{display:none}.books-table tr{border-bottom:2px solid var(--border-color);background:#fff;padding:1rem;position:relative}.books-table td{white-space:normal;text-align:right;border:none;padding:.35rem 0 .35rem 45%;font-size:.9rem;position:relative}.books-table td:before{content:attr(data-label);text-align:left;width:40%;color:var(--text-muted);text-transform:uppercase;font-size:.8rem;font-weight:700;position:absolute;left:0}.books-table .book-title-cell{text-align:right;max-width:none;font-size:1.05rem}.books-table .book-author-cell{max-width:none}.table-actions{justify-content:flex-end}}.status-badge svg{flex-shrink:0!important;width:12px!important;height:12px!important}.btn-table-action svg,.btn-primary svg,.btn-secondary svg,.header-logo svg,.holdings-title svg{flex-shrink:0!important}.col-checkbox{text-align:center;width:50px}.checkbox-cell{text-align:center;cursor:default}.checkbox-cell input[type=checkbox]{cursor:pointer;width:16px;height:16px;accent-color:var(--color-sea-emerald)}.row-selected{border-left:4px solid var(--color-sea-emerald);background-color:#00a8960a!important}.row-selected:hover{background-color:#00a89614!important}.row-unnecessary{opacity:.6;border-left:4px solid #94a3b8;background-color:#f8fafc!important}.row-unnecessary:hover{opacity:.8}.quick-action-btns{gap:.35rem;display:flex}.btn-quick{border:1px solid var(--border-color);cursor:pointer;color:var(--text-light);transition:var(--transition-smooth);background:0 0;border-radius:4px;justify-content:center;align-items:center;padding:.35rem;display:inline-flex}.btn-quick:hover{background-color:#f1f5f9}.btn-quick.selected-active{background-color:var(--color-status-owned-bg);border-color:var(--color-status-owned);color:var(--color-status-owned)}.btn-quick.unnecessary-active{background-color:var(--color-status-missing-bg);border-color:var(--color-status-missing);color:var(--color-status-missing)}.modal-expand-section{border-top:1px solid var(--border-color);margin-top:.5rem;padding-top:1.25rem}.expand-header{cursor:pointer;color:var(--color-sea-deep);-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;padding:.5rem 0;font-size:.95rem;font-weight:700;display:flex}.expand-header:hover{color:var(--color-sea-teal)}.expand-content{border:1px solid var(--border-color);border-radius:var(--radius-sm);color:var(--text-muted);white-space:pre-wrap;background-color:#f8fafc;max-height:250px;margin-top:.5rem;padding:1rem;font-size:.85rem;line-height:1.5;overflow-y:auto}.toggle-filter-wrapper{border:1px solid var(--border-color);color:var(--text-muted);background-color:#f8fafc;border-radius:9999px;align-items:center;gap:.5rem;padding:.5rem 1rem;font-size:.85rem;font-weight:600;display:flex}.toggle-filter-wrapper input[type=checkbox]{cursor:pointer;width:16px;height:16px;accent-color:var(--color-sea-teal)}
