/* Interaction controls shared by desktop, touch devices and dialog layers. */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.icon-button,.quiet-button,.nav-item,.card-favorite,.dir-toggle,.facet-options button{min-height:44px}
.icon-button,.card-favorite,.dir-toggle{min-width:44px}
.search-box .icon-button{min-width:44px;min-height:44px;width:44px;height:44px}
.sidebar-folders{display:grid;grid-template-columns:1fr;gap:6px;margin:14px 10px}.sidebar-folders button{justify-content:flex-start;white-space:nowrap;font-size:11px;padding:0 6px}
#sync-status{font-size:11px;line-height:1.7;color:var(--muted)}
.password-field{display:flex;align-items:center;gap:4px;min-width:0;min-height:54px;padding:4px;border:1px solid var(--line);border-radius:9px;background:var(--surface);margin-top:0;transition:border-color .15s ease}
.password-field:focus-within{border-color:var(--accent);outline:2px solid var(--accent);outline-offset:2px}
.password-field #password{flex:1 1 0;min-width:0;width:0;height:44px;padding:0 12px;border:0;border-radius:5px;margin:0;background:transparent;color:var(--text);font-size:16px;line-height:24px;outline:none;box-shadow:none}
.password-field #password::placeholder{color:var(--muted);opacity:1}
.password-field #password:autofill{background:var(--surface);color:var(--text)}
.password-field #password:-webkit-autofill{-webkit-text-fill-color:var(--text);box-shadow:0 0 0 1000px var(--surface) inset}
.password-field .password-toggle{flex:0 0 44px;width:44px;height:44px;padding:0;color:var(--muted);border-radius:5px}
.password-field .password-toggle:hover{color:var(--accent);background:var(--surface-hover)}
.password-field .password-toggle:focus-visible{outline-offset:-3px}
.password-toggle svg{width:20px;height:20px}
.login-form>label{line-height:1.5}.login-form>.button{min-height:48px}

.connection-banner{padding:14px 16px;margin:12px 0;border:1px solid var(--rose-line);background:var(--surface-raised);border-radius:8px;color:var(--text);font-size:13px;line-height:1.7}
.mobile-sort{display:none}
.facet-body{flex:1;min-width:0}.facet-search{display:block;width:min(100%,300px);padding:10px 12px;margin:0 0 8px;border:1px solid var(--line);border-radius:6px;background:var(--sidebar);color:var(--text);font-size:14px}
.facet-body .facet-options{max-height:230px;overflow:auto;overscroll-behavior:contain}.facet-options button:disabled{opacity:.35;cursor:not-allowed}
.continue-watching{margin:28px 0 36px}.continue-watching header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.continue-watching h3{font-size:18px;font-weight:500;margin:0}.continue-watching small{font-size:11px;color:var(--muted)}
.continue-grid{display:grid;grid-auto-flow:column;grid-auto-columns:calc((100% - 48px)/4);gap:16px;overflow-x:auto;padding-bottom:8px;scroll-snap-type:x proximity}.continue-grid>article{scroll-snap-align:start;min-width:0}
.watched-label{position:absolute;left:10px;bottom:10px;padding:5px 8px;border-radius:5px;background:#201a19dd;color:var(--accent);font-size:11px}
.media-frame .compatibility{position:absolute;left:16px;right:16px;bottom:16px;z-index:5;margin:0;background:var(--surface-raised);border-color:var(--line)}
.compatibility p{font-size:13px}.compatibility .button{font-size:13px;min-height:44px}
.media-frame .compatibility.is-buffering{top:12px;left:12px;right:auto;bottom:auto;max-width:calc(100% - 24px);padding:0;border:0;border-radius:0;background:none;pointer-events:none}
.compatibility.is-buffering p{font-size:12px;line-height:1.5;color:#fff;text-shadow:0 1px 3px #000,0 0 8px #0008}
.media-frame .compatibility.is-buffering:not([hidden])~#enable-sound{top:40px}
.resume-controls{position:absolute;inset:auto 16px 16px;display:flex;align-items:center;flex-wrap:wrap;gap:10px;padding:14px;background:var(--surface-raised);border:1px solid var(--line);border-radius:8px;z-index:6;font-size:13px}.resume-controls>span{flex:1;min-width:140px}.resume-controls button{color:var(--accent)}
#enable-sound{position:absolute;left:16px;top:16px;z-index:5;background:var(--surface-raised);border:1px solid var(--line);padding:0 12px;font-size:12px}
.image-surface{overflow:hidden;touch-action:none;user-select:none}.image-surface img{transform-origin:center;will-change:transform}.image-zoomed{cursor:grab}.image-zoomed:active{cursor:grabbing}
#viewer-position{display:block;text-align:center;font-size:12px;margin-bottom:3px}.viewer-bottom>span{min-width:0;flex:1;text-align:center}.viewer-toolbar #viewer-kind{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-right:8px}
#toolbar-favorite.saved{color:var(--rose)}
.toast{display:flex;align-items:center;justify-content:center;gap:12px;line-height:1.6}.toast button{flex:none;color:var(--accent);padding:0 10px;min-height:44px;background:transparent;font-size:13px}
.filter-sheet{width:min(640px,96vw);padding:0;max-height:90svh}.filter-sheet[open]{display:flex;flex-direction:column;overflow:hidden}.filter-sheet>header{position:static;top:auto;flex:none;display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--line)}.filter-sheet h2{font-size:18px;margin:0;font-weight:500}#filter-sheet-content{min-height:0;flex:1;padding:4px 8px;overflow:auto;max-height:calc(90svh - 160px);overscroll-behavior:contain}.filter-sheet>footer{position:static;bottom:auto;margin:0;display:flex;flex-direction:row;align-items:center;gap:12px;padding:16px 20px;border-top:1px solid var(--line);background:var(--surface)}.filter-sheet>footer .button{flex:1;min-height:48px}
.filter-sheet .filter-content{padding:12px}.filter-sheet .facet-row{display:block;margin:0 0 24px}.filter-sheet .facet-label{display:block;margin-bottom:10px;font-size:13px}.filter-sheet .facet-options{display:flex;gap:6px;flex-wrap:wrap}.filter-sheet .facet-options button{display:inline-flex;gap:7px;align-items:center;padding:8px 12px;font-size:13px;border-radius:6px;background:transparent;color:var(--muted)}.filter-sheet .facet-options button.active{background:var(--accent);color:#21180e}.filter-sheet .facet-options b{font-size:11px;font-weight:400}
@media(max-width:1000px){.continue-grid{grid-auto-columns:calc((100% - 32px)/3)}}
@media(max-width:700px){
  input[type=search],input[type=password],input[type=text],textarea,select{font-size:16px!important}
  #sidebar>#all-category,#sidebar>#videos-nav,#sidebar>#images-nav,#sidebar>#random-nav,#sidebar>#favorites-nav{display:none}.sidebar-tools{display:flex;flex-direction:column;gap:4px;margin:6px 10px}.sidebar-tools button{justify-content:flex-start}
  .night-line{padding:8px 0 0}.collection-header{margin-top:12px;gap:8px}
  .control-panels{display:flex;flex-wrap:wrap;gap:10px;align-items:stretch;margin:10px 0 6px}.control-panels>.tag-panel{flex:1 0 100%}
  .resource-filters{margin:0;flex:0 0 auto}.resource-filters>summary{min-height:50px;padding:8px 12px;gap:8px}.resource-filters .filter-content{display:none}.resource-filters .filter-disclosure{display:none}.filter-heading{gap:6px}.filter-count{font-size:11px}
  .sort-row{flex:1;min-height:50px;min-width:150px;margin:0;padding:4px 8px;gap:4px;display:flex;flex-wrap:nowrap;align-items:center}.sort-label{display:none}.sort-options{display:none}.mobile-sort{display:block;flex:1;min-width:0}.mobile-sort select{width:100%;min-height:44px;border:0;background:transparent;color:var(--text);padding:0 6px}.mobile-sort option{background:var(--surface);color:var(--text)}.sort-direction{font-size:12px;min-height:44px;flex:none;padding:0 6px}.sort-hint{display:none}
  .active-filters{margin:8px 0 12px}.continue-watching{margin:18px 0 28px}.continue-watching header{align-items:flex-start;margin-bottom:12px}.continue-watching small{max-width:125px;text-align:right}.continue-grid{grid-auto-columns:72%;gap:12px}
  .filter-sheet{width:100vw;max-width:none;max-height:92svh;margin:auto 0 0;border-radius:16px 16px 0 0;border-bottom:0}.filter-sheet>footer{padding-bottom:calc(16px + env(safe-area-inset-bottom))}#filter-sheet-content{max-height:calc(92svh - 170px - env(safe-area-inset-bottom))}.filter-sheet .facet-body .facet-options{max-height:none}
  .details-hidden .viewer-layout,.details-hidden .viewer-main{height:100%;min-height:0}.details-hidden .media-frame{min-height:0;max-height:none}.details-hidden .media-frame img,.details-hidden .media-frame video{max-height:calc(100svh - 130px)}.viewer-toolbar{padding:8px;flex:none}.viewer-toolbar>div{gap:2px}.viewer-toolbar .quiet-button{padding:0 8px;font-size:12px}.viewer-bottom{padding:8px;flex:none}.viewer-bottom button{min-width:76px;font-size:12px}.viewer-bottom #player-status{font-size:11px}.viewer-toolbar #viewer-kind{font-size:11px;max-width:65px}
  .directory-actions{flex-wrap:wrap}.directory-manager .directory-actions>label{min-height:44px;display:flex;align-items:center}.directory-tree input{width:20px;height:20px}.dir-row{min-height:44px}.toast{max-width:calc(100vw - 24px);width:max-content;padding:6px 12px;font-size:13px}
}

/* Keep focus indicators inside scrollable groups and labels inside narrow controls. */
.resource-filters .facet-options button:focus-visible,.filter-sheet .facet-options button:focus-visible,.tag-options button:focus-visible{outline-offset:-2px}
.facet-search:focus-visible,#custom-tags:focus-visible{outline-offset:-2px}
.viewer-toolbar>div{flex:none}.manager>header .icon-button{flex:none}
.viewer-toolbar{gap:8px}
.viewer-toolbar .viewer-context{flex:1;min-width:0;align-items:center;gap:12px}
.viewer-toolbar .viewer-return{flex:none;min-height:44px;padding:10px 14px;gap:7px;font-size:13px;white-space:nowrap}
.viewer-return svg{width:17px;height:17px}
@media(max-width:700px){.viewer-toolbar .viewer-context{gap:4px}.viewer-toolbar .viewer-return{padding:8px 10px;font-size:12px}.has-image-origin .viewer-toolbar #viewer-kind{display:none}}
.dir-count,.dir-lock{flex:none}.directory-manager .dir-choice input{flex:none}
#toast-message{min-width:0;overflow-wrap:anywhere}
.recommendations-header>div{min-width:0}.recommendations-header p{white-space:normal;overflow:visible;text-overflow:clip;line-height:1.7}
@media(max-width:700px){
  .sort-direction{min-width:44px;max-width:100%}
  .directory-manager>footer>span{overflow-wrap:anywhere}
  .directory-auto-sync>span{min-width:0}.directory-auto-sync b,.directory-auto-sync small{overflow-wrap:anywhere}
  .filter-sheet>footer .button{min-width:0;white-space:normal;overflow-wrap:anywhere}
}

.search-box{height:48px;min-height:48px}
.facet-search{min-height:44px}
.sort-options button,.sort-direction,.tag-option{min-height:44px}
@media(max-width:700px){
  #sort-direction-label{display:none}
  .sort-direction{width:44px;flex:0 0 44px;padding:0;gap:0}
  .mobile-sort select{padding-left:2px;padding-right:2px}
  #filter-count{font-size:0}
  #filter-count::after{content:attr(data-count);font-size:11px}
}

.directory-manager .dir-choice input{margin:0}
.directory-manager .dir-name{white-space:normal;overflow-wrap:anywhere;line-height:1.6}
@media(max-width:700px){
  .directory-manager .dir-row{flex-wrap:wrap}
.directory-manager .dir-lock{flex-basis:100%;margin:0 0 4px 48px;min-width:0;white-space:normal;overflow-wrap:anywhere}
}

/* Fit resource details into the available height without hiding their content. */
.viewer-details{padding:18px 16px}
.viewer-details>.eyebrow{display:none}
.viewer-details h2{font-size:15px;line-height:1.45;margin:0 0 10px}
#viewer-metadata{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:12px}
.viewer-details .metadata-row{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:baseline;gap:6px;min-width:0;padding:5px 0;font-size:10px;line-height:1.6}
.viewer-details .metadata-row span{min-width:0;max-width:none;margin:0;font-size:11px;line-height:1.6;text-align:left}
.metadata-row-wide{grid-column:1/-1}
.viewer-details .viewer-tags{margin-top:10px;padding-bottom:6px}
.viewer-details .viewer-tags h3{font-size:12px;margin-bottom:6px}
.related-videos{margin-top:16px;padding-top:12px;border-top:1px solid var(--line)}
.related-videos header{margin-bottom:8px}
.related-videos h3{margin:0;font-size:13px;line-height:1.6}
#related-video-count,.related-group-count{margin-left:5px;font-size:11px;font-weight:400;color:var(--muted)}
.related-video-group{margin-top:14px}
.related-video-group+.related-video-group{padding-top:14px;border-top:1px solid var(--line)}
.related-video-group h4{margin:0;font-size:12px;line-height:1.7}
.related-video-group:first-of-type h4{color:var(--accent)}
.related-videos header small,.related-video-status{font-size:11px;line-height:1.6;color:var(--muted)}
.related-video-status{margin:8px 0}.related-video-status:empty{display:none}
.related-video-list{display:flex;flex-direction:column;gap:8px}
.related-video{display:flex;align-items:center;gap:10px;width:100%;min-height:60px;padding:5px;text-align:left;background:transparent;border-radius:8px;color:var(--text)}
.related-video:hover{background:var(--surface-hover)}
.related-video-cover{position:relative;display:block;flex:0 0 88px;aspect-ratio:16/9;overflow:hidden;border-radius:5px;background:var(--bg)}
.related-video-cover img{width:100%;height:100%;object-fit:cover}
.related-video-cover svg{position:absolute;bottom:4px;right:4px;width:20px;height:20px;padding:4px;background:#000b;border-radius:50%;color:#fff}
.related-video-text{display:block;flex:1;min-width:0}
.related-video-text b{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;overflow-wrap:anywhere;font-size:12px;line-height:1.5;font-weight:500}
.related-video-text small{display:block;margin-top:4px;color:var(--muted);font-size:11px;line-height:1.6}
.related-video-more{width:100%;margin-top:8px;font-size:12px}
#viewer-tag-list{gap:4px}
.viewer-details .tag-option{padding:4px 7px;min-height:44px;line-height:18px}
.viewer-details #tag-editor{margin-top:4px}
.viewer-details #tag-editor>summary{min-height:44px;line-height:44px}
.viewer-detail-actions{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;margin-top:10px}
.viewer-detail-actions .button{min-height:44px;padding:8px;margin:0;font-size:11px;white-space:normal;gap:6px}
.viewer-details .viewer-detail-actions .text-link{display:flex;align-items:center;justify-content:center;min-height:44px;padding:0 4px;margin:0;font-size:11px;white-space:nowrap}
@media(max-width:700px){
  .viewer-details{padding:12px 16px}
  .viewer-details .metadata-row{font-size:11px}
  .viewer-details .metadata-row span{font-size:12px}
  .viewer:not(.details-hidden) .viewer-main{min-height:0}
  .viewer:not(.details-hidden) .media-frame:not(.player-fullscreen){min-height:0;max-height:clamp(120px,22svh,210px);flex:0 0 clamp(120px,22svh,210px)}
  .viewer:not(.details-hidden) .media-frame:not(.player-fullscreen) img,.viewer:not(.details-hidden) .media-frame:not(.player-fullscreen) video{max-height:100%;object-fit:contain}
  .viewer:not(.details-hidden) .media-frame:not(.player-fullscreen) .plyr{height:100%;width:100%}
  .viewer:not(.details-hidden) .media-frame:not(.player-fullscreen) .plyr__video-wrapper{height:100%}
}
@media(min-width:701px) and (max-height:620px){
  .viewer-layout{min-height:0;height:calc(92svh - 2px)}
  .viewer-main{min-height:0}
  .viewer-details{min-height:0;max-height:100%}
  .viewer .media-frame:not(.player-fullscreen){min-height:0;max-height:none}
  .viewer .media-frame:not(.player-fullscreen) .plyr,.viewer .media-frame:not(.player-fullscreen) .plyr__video-wrapper{height:100%;width:100%}
  .viewer .media-frame:not(.player-fullscreen) img,.viewer .media-frame:not(.player-fullscreen) video{max-height:calc(92svh - 124px);object-fit:contain}
}

/* Browse choices live in a compact title menu, leaving the list unobstructed. */
.collection-title-row{display:flex;align-items:center;gap:12px;min-width:0}
.collection-title-row h2{flex:1;min-width:0}
.browse-menu{position:relative;flex:none}
.browse-menu>summary{display:flex;align-items:center;justify-content:center;gap:4px;width:44px;height:44px;padding:8px;border:1px solid var(--line);border-radius:8px;color:var(--accent);cursor:pointer;list-style:none}
.browse-menu>summary::-webkit-details-marker{display:none}
.browse-menu>summary:hover,.browse-menu[open]>summary{background:var(--accent-dim);border-color:var(--accent)}
.browse-menu>summary:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
#browse-icon{display:flex}#browse-icon svg{width:18px;height:18px}
.browse-chevron{width:5px;height:5px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg);margin-bottom:3px}
.browse-menu[open] .browse-chevron{transform:rotate(225deg);margin-bottom:0}
.browse-options{position:absolute;right:0;top:calc(100% + 8px);z-index:8;width:min(272px,calc(100vw - 32px));max-height:calc(100svh - 24px);overflow-y:auto;overscroll-behavior:contain;padding:6px;background:var(--surface-raised);border:1px solid var(--line);border-radius:9px;box-shadow:0 12px 32px #0005}
.browse-menu.browse-above .browse-options{top:auto;bottom:calc(100% + 8px)}
.browse-option{display:flex;align-items:center;gap:10px;min-height:60px;width:100%;padding:8px 10px;text-align:left;background:transparent;border-radius:6px;color:var(--text)}
.browse-option:hover{background:var(--surface-hover)}
.browse-option.active{background:var(--accent-dim);color:var(--accent)}
.browse-option:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.browse-option>svg{flex:none;width:18px;height:18px}
.browse-option-text{flex:1;min-width:0;display:grid;gap:2px}
.browse-option-text b{font-size:13px;font-weight:500;line-height:20px}
.browse-option-text small{font-size:11px;line-height:18px;color:var(--muted)}
.browse-option .browse-check{width:16px;height:16px}
.folder-navigation{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin:12px 0 16px}
.folder-navigation .folder-path{flex:1;min-width:0;margin:0}
.folder-navigation #album-back{min-height:44px}
@media(max-width:700px){.collection-title-row{gap:8px}.folder-navigation #album-back{flex-basis:auto;height:44px;min-height:44px}}
