/* Scenario Library v5: browse-first, filter-second. */
.trpg-library-page{
    --lib-bg:rgba(13,10,19,.72);
    --lib-bg-strong:rgba(18,13,26,.94);
    --lib-line:rgba(214,199,230,.13);
    --lib-line-strong:rgba(195,175,225,.28);
    --lib-muted:#a89eb2;
    --lib-subtle:#7d7288;
    --lib-accent:#9c79ca;
    --lib-accent-soft:rgba(117,82,164,.18);
    --lib-radius:18px;
}

.trpg-library-page .cx-scenario-main{
    width:min(calc(100% - 40px),1180px);
    margin-inline:auto;
}

.library-hero{
    display:grid;
    gap:10px;
    padding:48px 0 28px;
    border-bottom:1px solid var(--lib-line);
}

.library-hero h1{
    max-width:11ch;
    margin:0;
    font-size:clamp(2.6rem,6vw,4.8rem);
    line-height:1.03;
    letter-spacing:-.045em;
}

.library-hero > p:last-of-type{
    max-width:680px;
    margin:0;
    color:#b9aebe;
    line-height:1.9;
}

.library-hero__meta{
    display:flex;
    flex-wrap:wrap;
    gap:7px;
    margin-top:8px;
}

.library-hero__meta span{
    display:inline-flex;
    align-items:center;
    min-height:28px;
    padding:0 9px;
    border:1px solid var(--lib-line);
    border-radius:999px;
    color:#8f8499;
    background:rgba(255,255,255,.018);
    font:800 .62rem/1 ui-monospace,SFMono-Regular,Consolas,monospace;
    letter-spacing:.1em;
}

.library-browse{
    display:grid;
    gap:18px;
    padding:24px 0 76px;
}

.library-control-bar{
    position:sticky;
    z-index:35;
    top:110px;
    display:grid;
    gap:12px;
    padding:14px;
    border:1px solid var(--lib-line);
    border-radius:16px;
    background:rgba(12,9,18,.9);
    box-shadow:0 24px 80px rgba(0,0,0,.18);
    backdrop-filter:blur(16px) saturate(1.08);
}

.library-search-row{
    display:grid;
    grid-template-columns:minmax(0,1fr) auto;
    gap:10px;
    align-items:center;
}

.library-search-field{
    position:relative;
    display:flex;
    align-items:center;
}

.library-search-field::before{
    position:absolute;
    left:14px;
    color:#7f738a;
    content:"⌕";
    font-size:1.05rem;
    pointer-events:none;
}

.trpg-library-page .library-search-field input{
    width:100%;
    min-height:50px;
    padding:0 16px 0 42px;
    border:1px solid var(--lib-line-strong);
    border-radius:13px;
    color:var(--ch-house-text);
    background:rgba(5,4,9,.44);
    box-shadow:none;
    font-size:.95rem;
}

.trpg-library-page .library-search-field input::placeholder{color:#706579}

.library-favorite-toggle{
    display:inline-flex;
    align-items:center;
    min-height:48px;
    padding:0 14px;
    border:1px solid var(--lib-line);
    border-radius:12px;
    color:#c9bfce;
    background:rgba(255,255,255,.018);
    font-size:.78rem;
    font-weight:800;
    cursor:pointer;
}

.library-favorite-toggle input{
    position:absolute;
    opacity:0;
    pointer-events:none;
}

.library-favorite-toggle:has(input:checked){
    border-color:rgba(165,129,211,.45);
    color:#f2e7ff;
    background:var(--lib-accent-soft);
}

.library-quick-filters{
    display:flex;
    flex-wrap:wrap;
    gap:7px;
    align-items:center;
}

.library-quick-select{
    position:relative;
    display:inline-flex;
    align-items:center;
}

.library-quick-select > span{
    position:absolute;
    z-index:1;
    left:11px;
    color:#8d8197;
    font-size:.62rem;
    font-weight:800;
    pointer-events:none;
    text-transform:uppercase;
}

.library-quick-select select{
    min-height:40px;
    max-width:190px;
    padding:0 30px 0 62px;
    border:1px solid var(--lib-line);
    border-radius:999px;
    color:#c8bdce;
    background:#100c17;
    font-size:.72rem;
    font-weight:750;
}

.library-quick-select--players select{padding-left:54px}
.library-quick-select--time select{padding-left:46px}

.library-more-filters > summary{
    display:inline-flex;
    align-items:center;
    min-height:40px;
    padding:0 14px;
    border:1px solid var(--lib-line);
    border-radius:999px;
    color:#c9bfce;
    background:rgba(255,255,255,.018);
    font-size:.72rem;
    font-weight:800;
    list-style:none;
    cursor:pointer;
}
.library-more-filters > summary::-webkit-details-marker{display:none}
.library-more-filters > summary::after{margin-left:8px;color:var(--lib-accent);content:"＋"}
.library-more-filters[open] > summary::after{content:"−"}

.library-filter-panel{
    display:grid;
    gap:15px;
    margin-top:12px;
    padding:16px;
    border:1px solid var(--lib-line);
    border-radius:14px;
    background:var(--lib-bg-strong);
}

.library-filter-panel__head{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:12px;
}

.library-filter-panel__head h2{
    margin:0;
    font-size:1rem;
}

.library-filter-close{
    display:none;
    min-height:40px;
    padding:0 12px;
    border:1px solid var(--lib-line);
    border-radius:10px;
    color:#c9bfce;
    background:transparent;
}

.library-filter-grid{
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:10px;
}

.trpg-library-page .library-filter-grid .field{
    display:grid;
    gap:6px;
}

.trpg-library-page .library-filter-grid .field > span,
.library-tags__label{
    color:#91869b;
    font-size:.67rem;
    font-weight:800;
    letter-spacing:.03em;
}

.trpg-library-page .library-filter-grid input,
.trpg-library-page .library-filter-grid select,
.trpg-library-page .tag-search-field input{
    width:100%;
    min-height:44px;
    padding:0 12px;
    border:1px solid var(--lib-line);
    border-radius:10px;
    color:var(--ch-house-text);
    background:rgba(5,4,9,.34);
}

.library-filter-actions{
    display:flex;
    flex-wrap:wrap;
    gap:8px;
    align-items:center;
}

.library-filter-actions .button{min-height:40px}

.library-tags{
    display:grid;
    gap:10px;
    padding-top:14px;
    border-top:1px solid var(--lib-line);
}

.library-tags__head{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:10px;
}

.trpg-library-page .tag-filter{
    display:flex;
    flex-wrap:wrap;
    gap:7px;
    max-height:180px;
    overflow:auto;
}

.trpg-library-page .tag-button{
    min-height:36px;
    padding:0 10px;
    border:1px solid var(--lib-line);
    border-radius:999px;
    color:#a99fb3;
    background:rgba(255,255,255,.018);
    font-size:.7rem;
}

.trpg-library-page .tag-button.is-active{
    border-color:rgba(162,131,205,.46);
    color:#eee4f6;
    background:rgba(117,82,164,.24);
}

.trpg-library-page .selected-tag-filter{
    display:flex;
    flex-wrap:wrap;
    gap:7px;
    align-items:center;
    padding:9px 0;
}

.trpg-library-page .selected-tag-filter[hidden]{display:none}

.trpg-library-page .selected-tag-filter-label{color:#8e8298;font-size:.67rem;font-weight:800}
.trpg-library-page .selected-tag-filter-list{display:flex;flex-wrap:wrap;gap:6px}

.trpg-library-page .active-filters{
    display:flex;
    flex-wrap:wrap;
    gap:7px;
    align-items:center;
    min-height:0;
}
.trpg-library-page .active-filters[hidden]{display:none}

.trpg-library-page .active-filter-chip{
    min-height:34px;
    border:1px solid var(--lib-line);
    border-radius:999px;
    color:#d0c6d7;
    background:rgba(117,82,164,.12);
}

.library-results{
    margin:0;
    padding:0;
    border:0;
    background:transparent;
    box-shadow:none;
}

.result-toolbar{
    display:grid;
    grid-template-columns:auto auto 1fr auto;
    gap:10px;
    align-items:center;
    min-height:48px;
    padding:4px 0 12px;
    border-bottom:1px solid var(--lib-line);
}

.result-toolbar__label{margin:0;color:var(--lib-accent)}
.result-count{margin:0;color:#9f94a8;font-size:.75rem;font-weight:750}

.result-sort{
    display:inline-flex;
    align-items:center;
    gap:7px;
}
.result-sort span{color:#817687;font-size:.65rem;font-weight:800;text-transform:uppercase}
.result-sort select{
    min-height:38px;
    padding:0 28px 0 10px;
    border:1px solid var(--lib-line);
    border-radius:9px;
    color:#bfb5c6;
    background:#100c17;
    font-size:.7rem;
}

.view-switch{display:flex;gap:4px}
.view-switch__btn{
    min-height:38px;
    padding:0 10px;
    border:1px solid var(--lib-line);
    border-radius:9px;
    color:#8f8499;
    background:transparent;
    font-size:.7rem;
}
.view-switch__btn.is-active{color:#eee7f3;background:var(--lib-accent-soft);border-color:var(--lib-line-strong)}

.scenario-list{display:grid;gap:0}

.scenario-item{
    position:relative;
    display:grid;
    grid-template-columns:minmax(0,1fr) auto;
    gap:12px 18px;
    padding:22px 4px;
    border-bottom:1px solid var(--lib-line);
    background:transparent;
}

.scenario-card-header{
    display:grid;
    grid-template-columns:auto minmax(0,1fr);
    gap:10px;
    align-items:start;
}

.favorite-button{
    width:34px;
    min-height:34px;
    padding:0;
    border:1px solid var(--lib-line);
    border-radius:9px;
    color:#83778e;
    background:transparent;
    font-size:1rem;
}
.favorite-button.is-active{color:#d7b472;border-color:rgba(215,180,114,.3);background:rgba(215,180,114,.08)}

.scenario-title-block{min-width:0}
.scenario-title{margin:0;color:#f3eef8;font-family:"Yu Mincho","Hiragino Mincho ProN","Noto Serif JP",serif;font-size:clamp(1.12rem,2.2vw,1.45rem);font-weight:600;line-height:1.35}
.scenario-kana{margin:3px 0 0;color:#766c80;font-size:.66rem}
.scenario-author{margin:4px 0 0;color:#9d92a6;font-size:.72rem}
.scenario-summary{grid-column:1 / -1;margin:0 0 0 44px;max-width:72ch;color:#a99fb2;font-size:.78rem;line-height:1.75}

.scenario-meta{
    grid-column:1 / -1;
    display:flex;
    flex-wrap:wrap;
    gap:6px;
    margin-left:44px;
}

.scenario-data{
    display:inline-flex;
    gap:5px;
    align-items:center;
    min-height:30px;
    padding:0 9px;
    border:1px solid var(--lib-line);
    border-radius:999px;
    background:rgba(255,255,255,.012);
}
.scenario-data-label{display:none}
.scenario-data-value{color:#b8aebe;font-size:.67rem;font-weight:750}

.rating-badge{
    position:absolute;
    top:22px;
    right:4px;
    min-height:28px;
    padding:5px 9px;
    border-radius:999px;
    font-size:.62rem;
    font-weight:850;
}

.tag-list{
    grid-column:1 / -1;
    display:flex;
    flex-wrap:wrap;
    gap:5px;
    margin-left:44px;
}
.tag{display:inline-flex;align-items:center;min-height:26px;padding:0 8px;border-radius:999px;color:#8f8497;background:rgba(117,82,164,.09);font-size:.63rem}
.tag-muted{color:#6f6677}

.scenario-actions{
    grid-column:1 / -1;
    display:flex;
    gap:8px;
    margin-left:44px;
}
.scenario-detail-button,.scenario-link{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    min-height:38px;
    padding:0 12px;
    border:1px solid var(--lib-line);
    border-radius:9px;
    color:#c7bdcd;
    background:transparent;
    font-size:.7rem;
    font-weight:800;
    text-decoration:none;
}
.scenario-detail-button{border-color:rgba(153,117,199,.38);color:#eee5f5;background:rgba(117,82,164,.15)}
.scenario-link-disabled{opacity:.45}

.scenario-list--compact .scenario-summary{display:none}
.scenario-list--compact .tag-list{display:none}
.scenario-list--compact .scenario-item{grid-template-columns:minmax(0,1fr);gap:8px;padding-block:17px}
.scenario-list--compact .scenario-actions{position:absolute;right:4px;bottom:17px;margin:0}
.scenario-list--compact .scenario-actions .scenario-link{display:none}
.scenario-list--compact .scenario-meta{padding-right:86px}

.scenario-list--card{
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:12px;
    padding-top:14px;
}
.scenario-list--card .scenario-item{
    display:flex;
    flex-direction:column;
    min-width:0;
    padding:18px;
    border:1px solid var(--lib-line);
    border-radius:15px;
    background:linear-gradient(145deg,rgba(24,18,34,.64),rgba(12,9,18,.62));
}
.scenario-list--card .scenario-summary,.scenario-list--card .scenario-meta,.scenario-list--card .tag-list,.scenario-list--card .scenario-actions{margin-left:44px}
.scenario-list--card .scenario-actions{margin-top:auto}

.load-more-area{display:flex;justify-content:center;padding:22px 0}
.load-more-button{min-width:180px}

/* Reader */
.trpg-library-page .modal[hidden]{display:none}
.trpg-library-page .modal{position:fixed;z-index:160;inset:0;display:grid;grid-template-columns:1fr minmax(360px,680px)}
.trpg-library-page .modal-backdrop{grid-column:1 / -1;grid-row:1;background:rgba(2,2,5,.7);backdrop-filter:blur(7px)}
.trpg-library-page .modal-panel{grid-column:2;grid-row:1;z-index:1;height:100dvh;overflow:auto;border-left:1px solid var(--lib-line-strong);background:#100c17;box-shadow:-30px 0 90px rgba(0,0,0,.42)}
.trpg-library-page .modal-head{position:sticky;z-index:2;top:0;display:flex;justify-content:space-between;gap:16px;align-items:start;padding:20px 24px;border-bottom:1px solid var(--lib-line);background:rgba(16,12,23,.94);backdrop-filter:blur(12px)}
.trpg-library-page .modal-head h2{margin:3px 0 0;font-size:1.2rem}
.modal-close-button{min-height:40px;padding:0 12px;border:1px solid var(--lib-line);border-radius:10px;color:#c5bacb;background:transparent}
.modal-body{display:grid;gap:20px;padding:26px 24px 50px}
.modal-title-area{display:grid;gap:6px;padding-bottom:20px;border-bottom:1px solid var(--lib-line)}
.modal-scenario-title{margin:0;font-family:"Yu Mincho","Hiragino Mincho ProN","Noto Serif JP",serif;font-size:clamp(1.8rem,4vw,3rem);font-weight:600;line-height:1.25}
.modal-scenario-sub{margin:0;color:#93889d;font-size:.75rem}
.modal-meta-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:0}
.modal-meta-item{padding:12px;border:1px solid var(--lib-line);border-radius:11px;background:rgba(255,255,255,.015)}
.modal-meta-label{color:#766c80;font-size:.62rem;font-weight:800;text-transform:uppercase}
.modal-meta-value{margin:5px 0 0;color:#d9d0df;font-size:.78rem;font-weight:800}
.modal-text-block{padding-top:2px}.modal-block-title{margin:0 0 8px;color:#9c79ca;font-size:.72rem;letter-spacing:.08em;text-transform:uppercase}.modal-text-content{margin:0;color:#b6acbd;line-height:1.9;white-space:pre-wrap}.modal-text-block.is-warning{padding:14px;border:1px solid rgba(207,154,124,.22);border-radius:12px;background:rgba(207,154,124,.06)}
.modal-tag-list{display:flex;flex-wrap:wrap;gap:6px}.modal-action-area{display:flex;flex-wrap:wrap;gap:8px;padding-top:18px;border-top:1px solid var(--lib-line)}.modal-primary-link,.modal-favorite-button{min-height:44px}.modal-primary-link{display:inline-flex;align-items:center;justify-content:center;padding:0 15px;border-radius:10px;color:#0d0a12;background:#b69adb;font-size:.76rem;font-weight:850;text-decoration:none}.modal-primary-link.is-disabled{opacity:.4}

.empty-state,.error-state{padding:40px 20px;text-align:center;color:#9e93a8}.empty-state-message{margin:0 0 14px}

@media(max-width:900px){
    .library-control-bar{top:106px}
    .library-filter-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
    .scenario-list--card{grid-template-columns:1fr}
}

@media(max-width:640px){
    .trpg-library-page .cx-scenario-main{width:min(calc(100% - 24px),1180px)}
    .library-hero{padding:30px 0 20px}
    .library-hero h1{font-size:clamp(2.35rem,12vw,3.7rem)}
    .library-hero > p:last-of-type{font-size:.86rem;line-height:1.75}
    .library-hero__meta{display:none}
    .library-browse{gap:12px;padding-top:14px}
    .library-control-bar{top:104px;margin-inline:-12px;padding:10px 12px;border-inline:0;border-radius:0;background:rgba(12,9,18,.95)}
    .library-search-row{grid-template-columns:minmax(0,1fr) auto;gap:7px}
    .trpg-library-page .library-search-field input{min-height:46px;font-size:.9rem}
    .library-favorite-toggle{width:46px;min-height:46px;padding:0;justify-content:center;font-size:0}
    .library-favorite-toggle::before{content:"☆";font-size:1rem}
    .library-favorite-toggle:has(input:checked)::before{content:"★";color:#d7b472}
    .library-quick-filters{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px}
    .library-quick-select{min-width:0}
    .library-quick-select > span{display:none}
    .library-quick-select select{width:100%;max-width:none;min-height:38px;padding:0 20px 0 8px;font-size:.66rem}
    .library-more-filters > summary{width:100%;justify-content:center;min-height:38px;padding:0 8px;font-size:.66rem}
    .library-more-filters[open]::before{position:fixed;z-index:189;inset:0;content:"";background:rgba(2,2,5,.72);backdrop-filter:blur(4px)}
    .library-more-filters[open] .library-filter-panel{position:fixed;z-index:190;right:0;bottom:0;left:0;max-height:84dvh;margin:0;padding:18px 14px 26px;border:1px solid var(--lib-line-strong);border-radius:18px 18px 0 0;overflow:auto;background:#100c17;box-shadow:0 -30px 90px rgba(0,0,0,.5)}
    .library-filter-close{display:inline-flex;align-items:center}
    .library-filter-grid{grid-template-columns:1fr}
    .library-filter-panel__head{position:sticky;z-index:1;top:-18px;margin:-18px -14px 0;padding:16px 14px 10px;background:#100c17}
    .result-toolbar{grid-template-columns:auto 1fr auto;gap:7px;padding-top:4px}
    .result-toolbar > [aria-hidden="true"]{display:none}
    .result-sort{grid-column:1 / -1;grid-row:2;justify-content:flex-end}
    .view-switch{grid-column:3;grid-row:1}
    .view-switch__btn{font-size:0;width:38px;padding:0}.view-switch__icon{font-size:.8rem}
    .scenario-item{padding:18px 0}.rating-badge{right:0;top:18px}
    .scenario-title{padding-right:58px;font-size:1.08rem}
    .scenario-summary,.scenario-meta,.tag-list,.scenario-actions{margin-left:0}
    .scenario-card-header{grid-template-columns:30px minmax(0,1fr);gap:8px}.favorite-button{width:30px;min-height:30px}
    .scenario-meta{gap:5px}.scenario-data{min-height:28px;padding-inline:8px}.scenario-data-value{font-size:.64rem}
    .scenario-list--compact .scenario-actions{right:0}.scenario-list--compact .scenario-meta{padding-right:82px}
    .scenario-list--card .scenario-summary,.scenario-list--card .scenario-meta,.scenario-list--card .tag-list,.scenario-list--card .scenario-actions{margin-left:0}
    .trpg-library-page .modal{grid-template-columns:1fr;align-items:end}
    .trpg-library-page .modal-panel{grid-column:1;align-self:end;width:100%;height:min(92dvh,900px);border-left:0;border-top:1px solid var(--lib-line-strong);border-radius:18px 18px 0 0}
    .trpg-library-page .modal-head{padding:16px 14px}.modal-body{padding:20px 14px 36px}.modal-meta-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
