
:root{--bg:#101010;--panel:#1c1c1c;--panel2:#252525;--line:#333;--text:#e8e8e8;--dim:#9a9a9a;--accent:#52b54b;--danger:#c0392b}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--text);font:15px/1.4 "Segoe UI",Roboto,Helvetica,Arial,sans-serif}
button{font:inherit;cursor:pointer;border:0;border-radius:4px;padding:9px 16px;background:var(--panel2);color:var(--text)}
button:hover{background:#333}
button:focus{outline:3px solid var(--accent)}
button.primary{background:var(--accent);color:#fff}
button.primary:hover{background:#45a03f}
button.danger{background:var(--danger);color:#fff}
input,select{font:inherit;width:100%;padding:9px 10px;border-radius:4px;border:1px solid var(--line);background:#161616;color:var(--text)}
label{display:block;margin:14px 0 5px;color:var(--dim);font-size:13px}
h2{font-size:20px;margin:0;font-weight:500}
.err{color:#ff7a6b;margin-top:12px;min-height:20px}
.btns{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}
.top{position:fixed;top:0;left:0;right:0;height:56px;background:var(--panel);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 20px;z-index:5}
.top .who{display:flex;align-items:center;gap:14px}
.side{position:fixed;top:56px;left:0;bottom:0;width:240px;background:var(--panel);border-right:1px solid var(--line);padding:12px 0}
.side a{display:block;padding:11px 24px;color:var(--text);text-decoration:none}
.side a:hover{background:var(--panel2)}
.side a.on{background:var(--panel2);border-left:4px solid var(--accent);padding-left:20px}
.main{margin:56px 0 0 240px;padding:28px}
.main.full{margin-left:0}
.row{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}
.stat{display:inline-block;background:var(--panel);border-radius:8px;padding:20px 28px;margin:0 16px 16px 0;min-width:180px}
.stat b{display:block;font-size:30px;font-weight:500}
.stat span{color:var(--dim)}
.lib{background:var(--panel);border-radius:8px;padding:16px 20px;margin-bottom:14px;display:flex;justify-content:space-between;gap:16px}
.lib .paths{color:var(--dim);font-size:13px;margin-top:6px;word-break:break-all}
.lib .acts{display:flex;gap:10px;align-items:flex-start}
table{border-collapse:collapse;width:100%;background:var(--panel);border-radius:8px;overflow:hidden}
th,td{text-align:left;padding:12px 16px;border-bottom:1px solid var(--line)}
th{color:var(--dim);font-weight:400;font-size:13px}
.ov{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.7);display:flex;align-items:center;justify-content:center;z-index:10;padding:20px}
.dlg{background:var(--panel);border-radius:8px;padding:24px;width:560px;max-width:100%;max-height:90vh;overflow:auto}
.flist{border:1px solid var(--line);border-radius:4px;height:300px;overflow:auto;background:#161616;margin-top:12px}
.flist div{padding:8px 12px;cursor:pointer;border-bottom:1px solid #222}
.flist div:hover{background:var(--panel2)}
.pathrow{display:flex;gap:8px;align-items:center}
.pathrow input{flex:1}
.pill{display:inline-block;background:var(--panel2);border-radius:4px;padding:6px 10px;margin:4px 6px 0 0;font-size:13px;word-break:break-all}
.pill a{color:#ff7a6b;margin-left:10px;cursor:pointer}
.note{color:var(--dim);margin:0 0 16px}
.grid{display:grid;grid-template-columns:repeat(auto-fill,190px);gap:16px}
.card{width:190px;height:112px;background:var(--panel);border-radius:6px;padding:10px 12px;cursor:pointer;display:flex;flex-direction:column;justify-content:space-between;outline:none;border:3px solid transparent;scroll-margin-top:72px;scroll-margin-bottom:24px}
.card:hover{background:var(--panel2)}
.card:focus{border-color:var(--accent);background:var(--panel2)}
.card .t{font-size:15px;line-height:1.25;max-height:57px;overflow:hidden;word-break:break-word}
.card .y{color:var(--dim);font-size:13px}
.player{position:fixed;top:0;left:0;right:0;bottom:0;background:#000;z-index:50}
.player video{position:absolute;top:0;left:0;width:100%;height:100%;background:#000}
.ptitle{position:absolute;top:0;left:0;right:0;padding:18px 24px;font-size:18px;background:linear-gradient(rgba(0,0,0,.85),transparent);transition:opacity .3s}
.pbar{position:absolute;left:0;right:0;bottom:0;padding:36px 20px 24px;display:flex;justify-content:center;gap:14px;background:linear-gradient(transparent,rgba(0,0,0,.85));transition:opacity .3s}
.pbar button{min-width:130px}
.ptitle.hide,.pbar.hide{opacity:0;pointer-events:none}
.perr{position:absolute;top:42%;left:0;right:0;text-align:center;color:#ff7a6b;padding:0 20px;font-size:17px}
@media(max-width:700px){.side{display:none}.main{margin-left:0}}
/* Downloaded movie posters */
.card{height:350px;padding:0;overflow:hidden;justify-content:flex-start}
.card .poster{width:184px;height:276px;object-fit:cover;background:#252525;flex-shrink:0}
.card .t{padding:7px 9px 0;max-height:46px;font-size:14px}
.card .y{padding:3px 9px 7px}

.film-layout{display:flex;flex-wrap:wrap;gap:32px;margin-top:22px}
.film-poster{width:240px;height:360px;object-fit:cover;background:#252525;border-radius:7px}
.film-copy{flex:1;min-width:280px;max-width:880px;user-select:text}
.film-copy h1{font-size:30px;margin:0 0 14px;font-weight:500}
.film-meta{color:#bbb;font-size:15px;margin:12px 0}
.film-plot{font-size:17px;line-height:1.6;white-space:pre-wrap}
.film-actions{display:flex;flex-wrap:wrap;gap:12px;margin:22px 0}
.review-row{display:flex;align-items:center;justify-content:space-between;gap:20px;background:#1c1c1c;padding:16px;margin-bottom:12px;border-radius:6px;user-select:text}
.identify-dialog{width:840px;max-width:calc(100vw - 40px);max-height:calc(100vh - 40px)}
.identify-fields{display:flex;flex-wrap:wrap;align-items:end;gap:12px;margin-bottom:16px}
.identify-title{flex:1;min-width:220px}
.identify-year{width:110px}
.identify-results{display:flex;flex-direction:column;gap:12px}
.identify-result{display:flex;align-items:flex-start;gap:16px;padding:14px;background:#252525;border-radius:5px;user-select:text}
.identify-poster{width:80px;height:120px;object-fit:cover;background:#161616;flex-shrink:0}
.identify-copy{flex:1;min-width:0}
.identify-copy strong{font-size:17px}
.identify-copy p{margin:7px 0;line-height:1.5}
.identify-result button{flex-shrink:0}


/* Home: library tiles followed by two horizontal rows of ten films. */
.brand{font-size:18px;background:transparent;padding:6px 0;text-align:left}
.brand:hover{background:transparent}
.home-strip{display:flex;gap:16px;overflow-x:auto;padding:5px 4px 14px;scroll-padding:8px}
.home-strip .card{flex-shrink:0}
.library-strip{margin-top:18px;margin-bottom:26px}
.library-tile.card{width:220px;height:184px}
.library-picture{width:214px;height:120px;object-fit:cover;background:#252525;flex-shrink:0}
.library-placeholder{display:flex;align-items:center;justify-content:center;font-size:38px;color:#52b54b}
.home-section{margin-top:26px}
.home-section .row{margin-bottom:12px}
.home-section .card{width:170px;height:316px}
.home-section .poster{width:164px;height:246px}
.home-strip .card{scroll-margin-top:74px}


/* Consistent navigation and fluorescent server name. */
.top .brand{
  font-size:25px;
  font-weight:700;
  color:#efff00;
  letter-spacing:1px;
  text-shadow:0 0 5px #d9ed00,0 0 13px rgba(230,255,0,.55);
}
.quicknav{
  position:fixed;top:56px;left:0;right:0;height:62px;
  display:flex;align-items:center;justify-content:center;
  background:var(--bg);z-index:4;
}
.nav-pill{
  display:flex;gap:4px;padding:4px;
  background:#303030;border-radius:28px;
}
.nav-pill button{
  border-radius:23px;padding:7px 22px;
  background:transparent;font-size:16px;font-weight:600;
}
.nav-pill button:hover{background:#444}
.nav-pill button.on{background:#747474;color:white}
.main{margin-top:118px}
.side{top:118px}
.card{scroll-margin-top:136px}
.home-strip .card{scroll-margin-top:136px}

/* Hide horizontal scrollbars; retain scrolling and remote navigation. */
.home-strip{
  scrollbar-width:none;
  -ms-overflow-style:none;
}
.home-strip::-webkit-scrollbar{display:none}

/* Each row has its own pointer-sensitive edge controls. */
.shelf-frame{position:relative;min-width:0}
.shelf-edge{
  position:absolute;top:0;bottom:0;width:64px;
  display:flex;align-items:center;z-index:2;
}
.shelf-edge[hidden]{display:none}
.shelf-left{left:0;justify-content:flex-start}
.shelf-right{right:0;justify-content:flex-end}
.shelf-arrow{
  width:54px;height:54px;padding:0;border-radius:30px;
  background:#fff;color:#111;font-size:28px;line-height:54px;
  box-shadow:0 2px 12px rgba(0,0,0,.45);
  opacity:0;transition:opacity .15s;
}
.shelf-edge:hover .shelf-arrow,.shelf-arrow:focus{opacity:1}
.shelf-arrow:hover{background:#eee}
@media(hover:none){.shelf-arrow{opacity:1}}


/* JBMBY display update 1 */
.main .grid {
  grid-template-columns:repeat(var(--jb-columns,6),minmax(0,1fr));
  width:100%;
}
.main .grid > .card {
  width:100%;
  min-width:0;
  height:auto;
  box-sizing:border-box;
  overflow:hidden;
}
.main .grid > .card > .poster {
  width:100%;
  height:auto;
  aspect-ratio:2/3;
  object-fit:cover;
  display:block;
}
.home-strip:not(.library-strip) > .card {
  width:var(--jb-shelf-width,170px);
  height:auto;
  min-height:0;
  flex:0 0 var(--jb-shelf-width,170px);
  overflow:hidden;
}
.home-strip:not(.library-strip) > .card > .poster {
  width:100%;
  height:auto;
  aspect-ratio:2/3;
  object-fit:cover;
}
.shelf-frame > .shelf-edge {
  top:0;
  bottom:0;
  height:auto;
  width:90px;
  align-self:stretch;
}
.shelf-frame:hover > .shelf-edge:not([hidden]) .shelf-arrow,
.shelf-frame:focus-within > .shelf-edge:not([hidden]) .shelf-arrow {
  opacity:1;
}
.display-settings {
  margin-top:30px;
  padding-top:20px;
  border-top:1px solid #444;
  max-width:480px;
}
.display-settings label {
  display:block;
  margin:14px 0 6px;
}


/* JBMBY consistent display update */
.main .grid {
  grid-template-columns:
    repeat(auto-fill,minmax(min(100%,var(--jb-poster-width,170px)),1fr));
}
.main .grid > .card {
  width:auto;
  min-width:0;
  height:auto;
}
.main .grid > .card > .poster {
  width:100%;
  height:auto;
  aspect-ratio:2/3;
  object-fit:cover;
}
.home-strip:not(.library-strip) > .card {
  width:var(--jb-poster-width,170px);
  flex:0 0 var(--jb-poster-width,170px);
  height:auto;
}
.home-strip:not(.library-strip) > .card > .poster {
  width:100%;
  height:auto;
  aspect-ratio:2/3;
  object-fit:cover;
}
.library-strip > .card {
  width:var(--jb-library-width,220px);
  flex:0 0 var(--jb-library-width,220px);
  height:auto;
}
.library-strip > .card img {
  width:100%;
  height:auto;
  aspect-ratio:16/9;
  object-fit:cover;
}
.main .display-settings {
  margin-top:0;
  padding-top:0;
  border-top:0;
}


/* JBMBY fixed tiles and folder selection */
.main .grid {
  grid-template-columns:repeat(auto-fill,var(--jb-poster-width,190px));
  justify-content:start;
}
.main .grid > .card {
  width:var(--jb-poster-width,190px);
}
.home-strip:not(.library-strip) > .card {
  width:var(--jb-poster-width,190px);
  flex:0 0 var(--jb-poster-width,190px);
}
.display-settings > p.note:last-child:not(:empty) {
  display:block;
  margin-top:24px;
  padding:12px;
}
.folder-choice {
  display:flex;
  align-items:center;
  gap:14px;
  padding:10px 8px;
}
.folder-choice .folder-check {
  appearance:none;
  -webkit-appearance:none;
  box-sizing:border-box;
  width:24px;
  height:24px;
  min-width:24px;
  flex:0 0 24px;
  margin:0;
  padding:0;
  border:2px solid #fff;
  border-radius:3px;
  background:#fff;
  cursor:pointer;
}
.folder-choice .folder-check:checked::after {
  content:'✓';
  display:block;
  color:#111;
  font-size:21px;
  font-weight:bold;
  line-height:20px;
  text-align:center;
}
.folder-choice .folder-check:focus-visible {
  outline:3px solid #00d43b;
  outline-offset:3px;
}
.folder-choice .folder-open {
  flex:1;
  text-align:left;
  background:transparent;
  padding:8px;
  white-space:normal;
  overflow-wrap:anywhere;
}
.folder-choice span {
  overflow-wrap:anywhere;
}


/* JBMBY user selection */
.top .who select {
  width:180px;
  margin:0;
}
.quicknav {gap:20px;}
button[hidden] {display:none !important;}


/* Header order: Display, User, Dashboard */
.top .who {display:flex;align-items:center;gap:12px;}
.top .who button:disabled {
  opacity:0.4;
  cursor:default;
}


/* JBMBY header readability */
.top .who button,
.top .who select {
  font-family:Arial,sans-serif;
  font-size:18px;
  line-height:24px;
  color:#eee;
  opacity:1;
}
.top .who select {
  min-width:0;
  max-width:none;
  padding:8px 10px;
}
.top .who button {
  padding:8px 16px;
}


.top .who .access-note {
  font-size:14px;
  color:#bbb;
  white-space:nowrap;
}
.top .who .access-note:empty {display:none;}

/* Folder dialogs: fixed controls, scrolling list only */
.dlg.folder-picker {
  box-sizing:border-box;
  width:960px;
  max-width:calc(100vw - 40px);
  height:640px;
  max-height:calc(100dvh - 40px);
  display:flex;
  flex-direction:column;
  overflow:hidden;
}
.dlg.folder-picker > * {
  flex-shrink:0;
}
.dlg.folder-picker > .flist {
  flex:1 1 0;
  min-height:60px;
  height:auto;
  max-height:none;
  overflow-y:auto;
  margin-top:12px;
}
.folder-picker-toolbar {
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:8px;
  margin-top:10px;
}
.folder-picker-actions {
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  margin-left:auto;
}
.dlg.folder-picker .folder-choice {
  padding:4px 8px;
}
.dlg.folder-picker .folder-open {
  padding:6px 8px;
}
.dlg.library-form {
  box-sizing:border-box;
  width:760px;
  max-width:calc(100vw - 40px);
  max-height:calc(100dvh - 40px);
  display:flex;
  flex-direction:column;
  overflow:hidden;
}
.dlg.library-form > * {
  flex-shrink:0;
}
.dlg.library-form > div:has(> .pill) {
  flex:0 1 auto;
  min-height:0;
  max-height:140px;
  overflow-y:auto;
}
.dlg.library-form .pill {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  padding:8px 10px;
  margin:4px 0;
  overflow-wrap:anywhere;
}
.dlg.library-form .pill a {
  flex-shrink:0;
  margin-left:12px;
}
.dlg.library-form input:disabled {
  opacity:0.45;
}


/* JBMBY scanning page and movie tools */
.side a {font-size:18px;}
.lib {
  display:grid;
  grid-template-columns:minmax(0,1fr) 340px;
  gap:20px;
  align-items:start;
}
.lib > div:first-child {min-width:0;}
.lib .acts {
  display:flex;
  justify-content:flex-end;
  align-items:center;
  gap:10px;
  flex-shrink:0;
}
.lib .acts button {
  font-size:18px;
  white-space:nowrap;
  flex-shrink:0;
  padding:10px 16px;
}
.lib .acts button:first-child {min-width:210px;}
.lib .paths {
  font-size:16px;
  line-height:25px;
  overflow-wrap:anywhere;
}
.lib .note {font-size:17px;}
.scanning-page h1 {font-size:28px;}
.scanning-page h2 {font-size:25px;}
.scanning-page button {font-size:18px;padding:12px 22px;}
.scan-status {
  padding:28px;
  margin-top:26px;
  background:#202020;
  border-radius:8px;
}
.scan-status progress {
  display:block;
  width:700px;
  max-width:100%;
  height:26px;
  margin:24px 0;
  accent-color:#00cf38;
}
.scan-counts {
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(190px,1fr));
  gap:20px;
  font-size:22px;
  line-height:32px;
}
.scan-actions {margin-top:28px;}
.card[data-id] {position:relative;}
.movie-more {
  position:absolute;
  right:8px;
  top:8px;
  width:40px;
  height:44px;
  padding:0;
  font-size:28px;
  line-height:40px;
  background:#242424;
  color:white;
  border-radius:6px;
}
/* Home library scan overlay */
.home-library-scan {
  position:absolute;
  z-index:2;
  display:grid;
  place-items:center;
  transform:translate(-50%,-50%);
  border-radius:50%;
  background:#242424;
  color:white;
  pointer-events:none;
  font-variant-numeric:tabular-nums;
  white-space:nowrap;
}
.home-library-scan::before {
  content:'';
  position:absolute;
  inset:0;
  border-radius:50%;
  background:conic-gradient(white var(--scan-arc,0deg), #666 0deg);
  mask:radial-gradient(farthest-side, transparent calc(100% - 2px), #000 0);
}
.home-library-scan.spinning::before {
  background:conic-gradient(transparent 0deg, white 130deg, transparent 131deg);
  animation:home-library-scan-spin .65s linear infinite;
}
@keyframes home-library-scan-spin {
  to {transform:rotate(360deg);}
}
@media (prefers-reduced-motion:reduce) {
  .home-library-scan.spinning::before {animation:none;}
}
.movie-tools-dialog {
  width:800px;
  max-width:calc(100vw - 40px);
  max-height:calc(100dvh - 40px);
  display:flex;
  flex-direction:column;
  overflow:hidden;
}
.movie-tools-dialog h2 {font-size:24px;}
.movie-tools-content {
  min-height:0;
  overflow-y:auto;
}
.movie-tools-content > button {
  display:block;
  width:290px;
  font-size:18px;
  text-align:left;
  padding:12px 18px;
  margin:10px 0;
}
.movie-tools-content .note {font-size:18px;}
.movie-image-choices {
  display:grid;
  grid-template-columns:repeat(auto-fill,160px);
  gap:18px;
}
.image-choice {padding:6px;font-size:16px;}
.image-choice img {
  display:block;
  width:148px;
  height:222px;
  object-fit:cover;
  margin-bottom:8px;
}
@media(max-width:1050px) {
  .lib {grid-template-columns:minmax(0,1fr);}
  .lib .acts {justify-content:flex-start;}
}


/* JBMBY compact movie menu */
.movie-poster-frame {
  position:relative;
  width:100%;
  aspect-ratio:2/3;
  overflow:hidden;
}
.movie-poster-frame > .poster {
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
}
.movie-poster-frame > .movie-more {
  position:absolute;
  top:auto;
  bottom:6px;
  right:6px;
  width:34px;
  height:32px;
  min-width:0;
  padding:0;
  border:0;
  border-radius:17px;
  font-size:24px;
  line-height:24px;
  font-weight:bold;
  color:#fff;
  background:rgba(35,35,35,0.8);
}
.film-popover-overlay {
  position:fixed;
  inset:0;
  z-index:65;
  background:transparent;
}
.film-popover {
  position:fixed;
  box-sizing:border-box;
  width:250px;
  max-width:calc(100vw - 24px);
  max-height:calc(100dvh - 24px);
  overflow-y:auto;
  padding:10px;
  border-radius:9px;
  background:#29292c;
  color:#eee;
  box-shadow:0 8px 28px rgba(0,0,0,0.6);
}
.popover-heading {
  display:flex;
  align-items:center;
  gap:10px;
  padding:3px 4px 12px;
  border-bottom:1px solid #494949;
  margin-bottom:6px;
}
.popover-heading img {
  width:36px;
  height:54px;
  object-fit:cover;
  border-radius:3px;
}
.popover-heading strong {
  display:block;
  font-size:16px;
  line-height:20px;
}
.popover-year {font-size:14px;color:#bbb;margin-top:4px;}
.popover-items button {
  display:block;
  box-sizing:border-box;
  width:100%;
  padding:10px 12px;
  margin:0;
  border:0;
  border-radius:4px;
  font-size:16px;
  line-height:20px;
  text-align:left;
  background:transparent;
  color:#eee;
}
.popover-items button:hover,
.popover-items button:focus {
  background:#48484b;
}
.popover-message {
  font-size:14px;
  line-height:19px;
  margin:8px 4px 2px;
}
.popover-message:empty {display:none;}


/* Folder checkbox visibility */
.folder-choice .folder-check {
  appearance: none;
  box-sizing: border-box;
  width: 22px;
  height: 22px;
  min-width: 22px;
  flex: 0 0 22px;
  margin-left: auto;
  border: 1px solid #e6df78;
  border-radius: 3px;
  background: #242424;
  position: relative;
}
.folder-choice .folder-check:checked {
  background: #16763b;
  border-color: #e6df78;
}

/* Library layout refinement */
.library-heading {
  justify-content:flex-start;
  gap:20px;
  margin-bottom:18px;
}
.library-heading h2 {font-size:18px}
.library-list {font-size:14px}
.library-list .lib {
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:4px 14px;
  padding:14px 18px;
  margin-bottom:12px;
}
.library-list .lib > div:first-child {display:contents}
.library-list .lib > div:first-child > div:first-child {
  grid-column:1;
  grid-row:1;
  font-size:15px !important;
}
.library-list .lib > div:first-child > .note {
  grid-column:1;
  grid-row:2;
  font-size:14px;
}
.library-list .lib .paths {
  grid-column:1 / -1;
  grid-row:3;
  justify-self:start;
  display:grid;
  grid-template-columns:minmax(0,max-content) 20px;
  column-gap:20px;
  row-gap:12px;
  font-size:12px;
  margin-top:12px;
  min-width:0;
}
.library-list .paths .folder-choice {display:contents}
.library-list .paths .folder-choice > span {
  grid-column:1;
  align-self:center;
}
.library-list .paths .folder-check {
  grid-column:2;
  align-self:center;
  width:20px;
  height:20px;
  min-width:20px;
  margin:0;
}
.library-list .paths .folder-check:checked::after {
  font-size:18px;
  line-height:18px;
  color:#fff;
}
.library-list .lib .acts {
  grid-column:2;
  grid-row:1 / 3;
  gap:9px;
  align-self:start;
  flex-wrap:wrap;
  justify-content:flex-end;
}
.library-list .acts button {
  font-size:14px;
  padding:8px 14px;
}
.library-list .acts .primary {order:-1}
.library-list .acts .library-remove {
  background:#292929;
  color:#e7aaa4;
}
.library-list .acts .library-remove:hover {background:#383030}
.library-list .acts .library-remove:disabled {
  opacity:0.4;
  cursor:default;
}

/* Library readability correction */
.library-list .lib {
  padding:18px;
  row-gap:8px;
}
.library-list .lib > div:first-child > div:first-child {
  font-size:18px !important;
  color:#fff;
}
.library-list .lib > div:first-child > .note {
  font-size:16px;
  color:#fff;
}
.library-list .lib .paths {
  font-size:15px;
  color:#fff;
  row-gap:14px;
  margin-top:8px;
}
.library-list .lib .acts {
  grid-column:1 / -1;
  grid-row:4;
  justify-content:flex-start;
  gap:12px;
  margin-top:16px;
}
.library-list .acts button {
  font-size:16px;
  padding:10px 16px;
  min-height:42px;
}
.library-list .acts .library-remove {
  background:#c91620;
  color:#fff;
}
.library-list .acts .library-remove:hover {
  background:#e0202b;
}
.library-list .acts .library-remove:disabled {
  background:#c91620;
  color:#fff;
  opacity:1;
  cursor:default;
}

/* Library typography adjustment */
.library-heading {
  gap:40px;
}
.library-heading h2 {
  font-family:Arial,sans-serif;
  font-size:30px;
  font-weight:400;
}
.library-list .lib > div:first-child > div:first-child {
  font-family:Arial,sans-serif;
  font-size:36px !important;
  font-weight:400;
  color:#fff;
}
.library-list .lib > div:first-child > .note {
  font-family:Arial,sans-serif;
  font-size:22px;
  font-weight:400;
  color:#fff;
}
.library-list .lib .paths {
  font-family:Arial,sans-serif;
  font-size:18px;
  font-weight:400;
  line-height:1.5;
  color:#fff;
}
.library-list .acts button {
  font-family:Arial,sans-serif;
  font-size:18px;
  font-weight:400;
}

.main .library-heading {
  justify-content:flex-start !important;
  gap:40px !important;
}
.main .library-heading h2 {
  font:400 36px/1.2 Arial,sans-serif !important;
  margin:0 !important;
  flex:0 0 auto;
}
.main .library-heading > button {
  margin-left:0 !important;
}

.library-list .lib > div:first-child > .note {
  font-size:18px;
}
.library-list .lib .paths {
  font-size:22px;
}

.library-heading > button {
  font-family:Arial,sans-serif;
  font-size:18px;
  font-weight:400;
}

/* Users typography */
.main .users-heading {
  justify-content:flex-start;
  gap:40px;
}
.main .users-heading h2 {
  font:400 36px/1.2 Arial,sans-serif !important;
  margin:0;
}
.users-heading button,
.users-list button {
  font-family:Arial,sans-serif;
  font-size:18px;
  font-weight:400;
}
.users-list table,
.users-list .note {
  font-family:Arial,sans-serif;
  font-weight:400;
  color:#fff;
}
.users-list th {
  font-size:18px;
  font-weight:400;
  color:#fff;
}
.users-list td {
  font-size:18px;
  font-weight:400;
  color:#fff;
}
.users-list td:first-child {
  font-size:22px;
}

/* Linux player matching Android controls */
.jm-player {
  position:fixed; inset:0; z-index:50;
  background:#000; color:#fff;
  font-family:Arial,sans-serif;
}
.jm-player video {
  display:block; width:100%; height:100%; object-fit:contain;
  background:#000;
}
.jm-player video::-webkit-media-controls,
.jm-player video::-webkit-media-controls-start-playback-button {
  display:none !important;
}
.jm-player-title {
  position:absolute; top:0; left:0; right:0;
  padding:20px 28px; font-size:22px; font-weight:400;
  background:linear-gradient(#000c,transparent);
}
.jm-player-panel {
  position:absolute; bottom:0; left:0; right:0;
  padding:36px 32px 24px;
  background:linear-gradient(transparent,#000e);
}
.jm-player-times {
  display:flex; justify-content:space-between;
  font-size:16px; margin-bottom:6px;
}
.jm-player-panel input {
  display:block; width:100%; height:32px; padding:0; margin:0 0 14px;
  accent-color:#00cf42; cursor:pointer;
}
.jm-player-buttons {
  display:flex; justify-content:center; align-items:center;
  gap:56px;
}
.jm-player-buttons button {
  display:flex; align-items:center; justify-content:center;
  width:72px; height:72px; padding:10px;
  border:0; border-radius:8px;
  background:#252525d9; color:#fff;
  font:400 18px Arial,sans-serif;
}
.jm-player-buttons button.jm-back {width:99px; height:49px}
.jm-player-buttons svg {width:48px; height:48px}
.jm-player button:focus,
.jm-player input:focus {
  outline:3px solid #00df49; outline-offset:3px;
}
.jm-player button:hover {background:#3b3b3b}
.jm-controls-hidden .jm-player-panel,
.jm-controls-hidden .jm-player-title {
  opacity:0; pointer-events:none;
}
.jm-player-panel,.jm-player-title {transition:opacity .18s}
.jm-controls-hidden {cursor:none}
.jm-player-error {
  position:absolute; top:40%; left:24px; right:24px;
  text-align:center; color:#ff8c80; font-size:18px;
}
.jm-player-loading {
  position:absolute; top:calc(50% - 22px); left:calc(50% - 22px);
  width:44px; height:44px; border:4px solid #ffffff40;
  border-top-color:#00df49; border-radius:50%;
  animation:jm-loading 0.8s linear infinite;
}
.jm-player-loading[hidden] {display:none}
@keyframes jm-loading {to {transform:rotate(360deg)}}

/* Compact player bar and controls */
.jm-player-panel {
  padding:18px 16px 12px;
}
.jm-player-times,
.jm-player-panel input {
  width:608px;
  max-width:calc(100vw - 32px);
  margin-left:auto;
  margin-right:auto;
}
.jm-player-panel input {
  height:16px;
  margin-bottom:7px;
}
.jm-player-buttons {gap:28px}
.jm-player-buttons button {
  width:36px;
  height:36px;
  padding:5px;
  font-size:9px;
}
.jm-player-buttons button.jm-back {
  width:50px;
  height:25px;
}
.jm-player-buttons svg {
  width:24px;
  height:24px;
}

.jm-player-buttons button.jm-back,
.jm-player-buttons button.jm-back:hover {
  background:transparent;
  border:0;
  box-shadow:none;
  color:#ffff00;
  font:400 18px Arial,sans-serif;
  padding:0;
}

/* Home landscape artwork */
.main .home-content .home-strip {
  gap:22px;
  padding:6px 4px 16px;
}
.main .home-content .library-strip {
  margin-top:20px;
  margin-bottom:30px;
}
.main .home-content .library-strip > .card.library-tile,
.main .home-content .library-strip > .card.library-tile:hover,
.main .home-content .library-strip > .card.library-tile:focus {
  width:280px;
  height:auto;
  min-height:0;
  flex:0 0 280px;
  padding:0;
  border:0 !important;
  outline:none !important;
  background:transparent;
  border-radius:12px;
  overflow:visible;
}
.main .home-content .library-tile .library-picture {
  width:280px;
  height:158px;
  flex:0 0 158px;
  object-fit:cover;
  border-radius:12px;
}
.main .home-content .library-tile .t {
  padding:8px 4px 0;
  height:auto;
  max-height:none;
  text-align:center;
  font:400 18px/24px Arial,sans-serif;
}
.main .home-content .library-tile:focus-visible .t {
  text-decoration:underline;
}
.main .home-content .home-section {
  margin-top:32px;
}
.main .home-content .home-section .row {
  margin-bottom:16px;
}
.main .home-content .home-section .home-strip > .card.home-landscape-card {
  width:280px;
  height:222px;
  flex:0 0 280px;
  padding:0;
  border:0;
  background:transparent;
  border-radius:12px;
}
.main .home-content .home-landscape-card .movie-poster-frame {
  width:280px;
  height:158px;
  flex:0 0 158px;
  overflow:hidden;
  border-radius:12px;
}
.main .home-content .home-landscape-card .poster {
  display:block;
  width:280px;
  height:158px;
  object-fit:cover;
  border-radius:12px;
  background:#252525;
}
.main .home-content .home-landscape-card .t {
  width:280px;
  height:44px;
  max-height:44px;
  padding:6px 4px 0;
  text-align:center;
  white-space:normal;
  overflow:hidden;
  font:400 16px/19px Arial,sans-serif;
}
.main .home-content .home-landscape-card .y {
  padding:2px 4px 0;
  text-align:center;
  font:400 13px/17px Arial,sans-serif;
}
/* Compact opened-library poster cards */
.main .grid.movie-library-grid {
  grid-template-columns:repeat(auto-fill,212px);
  column-gap:22px;
  row-gap:38px;
  padding:0 26px 28px;
  align-items:start;
}
.main .grid.movie-library-grid > .card,
.main .grid.movie-library-grid > .card:hover,
.main .grid.movie-library-grid > .card:focus {
  width:212px;
  height:auto;
  min-height:0;
  padding:0;
  border:0 !important;
  background:transparent;
  outline:none !important;
  overflow:visible;
}
.main .movie-library-grid .movie-poster-frame {
  width:212px;
  height:318px;
  flex:0 0 auto;
  aspect-ratio:auto;
  border-radius:8px;
  overflow:hidden;
}
.main .movie-library-grid .movie-poster-frame > .poster {
  width:212px;
  height:318px;
  object-fit:cover;
  border-radius:8px;
}
.main .movie-library-grid > .card .t {
  height:auto;
  max-height:none;
  padding:6px 2px 0;
  margin:0;
  text-align:center;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  font:400 14px/18px Arial,sans-serif;
  color:#fff;
}
.main .movie-library-grid > .card .y {
  padding:3px 2px 0;
  margin:0;
  text-align:center;
  font:400 13px/17px Arial,sans-serif;
}
.main .movie-library-grid .movie-poster-frame {
  outline:none !important;
  box-shadow:none !important;
}

/* SERVER HEADER LOGO */
.top .brand {
  display:flex;
  align-items:center;
  padding:0;
  line-height:0;
  flex-shrink:0;
}
.top .brand .server-logo {
  display:block;
  height:48px;
  width:auto;
  object-fit:contain;
}

/* Fit the visible logo into the existing top bar. */
.top {
  background:#000;
  padding-left:0;
}
.top .brand {
  position:relative;
  width:124px;
  height:56px;
  padding:0;
  margin:0;
  overflow:hidden;
  border:0;
  border-radius:0;
  background:#000;
}
.top .brand:hover {
  background:#000;
}
.top .brand .server-logo {
  position:absolute;
  width:202px;
  height:110px;
  max-width:none;
  left:-41px;
  top:-27px;
}

.top .brand {
  margin-left:30px;
  width:92px;
  height:40px;
}
.top .brand .server-logo {
  width:145px;
  height:79px;
  left:-29px;
  top:-19px;
}

:root { --bg:#000; }
html, body, .main, .quicknav {
  background:#000;
}
.top {
  background:#000;
  border-bottom:1px solid #333;
}

/* Navigation beside the logo, matching the Android header. */
.top { gap:20px; }
.top .quicknav {
  position:static;
  inset:auto;
  display:flex;
  align-items:center;
  justify-content:flex-start;
  flex:1;
  width:auto;
  height:auto;
  margin:0;
  padding:0;
  background:transparent;
  border:0;
}
.top .quicknav .nav-pill {
  display:flex;
  align-items:center;
  gap:8px;
  margin:0;
  padding:0;
  background:transparent;
  border:0;
  border-radius:0;
}
.top .quicknav button,
.top .quicknav .header-search {
  font-family:Arial,sans-serif;
  font-size:20px;
  font-weight:400;
  line-height:28px;
  padding:8px 14px;
  color:#fff;
  background:transparent;
  border:0;
  border-radius:0;
  white-space:nowrap;
}
.top .quicknav button:hover,
.top .quicknav button.on,
.top .quicknav button.active,
.top .quicknav button[aria-current="page"] {
  color:#00d43b;
  background:transparent;
}
.main { margin-top:56px; }
.side { top:56px; }

/* APK catalogue tabs and sorting */
.catalogue-layout > h2 { margin-bottom:8px; }
.catalogue-tabs {
  display:flex; justify-content:center; align-items:center;
  flex-wrap:wrap; gap:6px; min-height:52px;
}
.catalogue-tabs .catalogue-tab {
  height:44px; padding:8px 16px; border-radius:24px;
  background:#303030; color:#fff;
  font:400 20px Arial,sans-serif;
}
.catalogue-tabs .catalogue-tab.selected { background:#00a530; }
.catalogue-toolbar {
  display:flex; justify-content:center; align-items:center;
  gap:16px; min-height:64px; margin:10px 0 8px;
}
.catalogue-count { font:400 20px Arial,sans-serif; color:#fff; }
.catalogue-sort {
  display:flex; align-items:center; gap:10px;
  height:46px; border-radius:24px; padding:8px 18px;
  background:#303030; font:400 20px Arial,sans-serif;
}
.catalogue-sort-lines {
  display:inline-block; width:20px; height:20px;
  background:
    linear-gradient(#fff,#fff) left 4px top 4px / 20px 2px no-repeat,
    linear-gradient(#fff,#fff) left 4px top 9px / 14px 2px no-repeat,
    linear-gradient(#fff,#fff) left 4px top 14px / 8px 2px no-repeat;
}
.catalogue-note { margin:20px 0; color:#fff; font-size:20px; }
.catalogue-note:empty { display:none; }
.catalogue-layout .movie-library-grid { margin-top:32px; }
.catalogue-sort-overlay {
  position:fixed; inset:0; z-index:70; background:transparent;
}
.catalogue-sort-menu {
  position:absolute; width:225px; padding:12px 10px 10px;
  background:#272727; border-radius:7px;
  box-shadow:0 8px 24px #000;
}
.catalogue-sort-heading {
  text-align:center; height:32px; color:#ccc;
  font:400 16px Arial,sans-serif;
}
.catalogue-sort-option { display:flex; gap:4px; margin:3px 0; }
.catalogue-sort-option button {
  height:46px; padding:0 7px; background:transparent;
  font:400 17px Arial,sans-serif;
}
.catalogue-sort-option button:first-child {
  flex:1; text-align:left; white-space:pre;
}
.catalogue-sort-option button:last-child { width:36px; padding:0; }
.catalogue-sort-option button:hover { background:#383838; }

/* Small Emby-style alphabet strip. */
.catalogue-layout { padding-right:24px; }
.catalogue-alphabet {
  position:fixed;
  right:16px;
  top:100px;
  bottom:12px;
  width:18px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  z-index:6;
}
.catalogue-alphabet button {
  display:block;
  flex:0 1 18px;
  min-height:0;
  width:18px;
  height:18px;
  margin:0;
  padding:0;
  border:0;
  border-radius:2px;
  background:transparent;
  color:#777;
  font:400 12px/18px Arial,sans-serif;
  text-align:center;
}
.catalogue-alphabet button.has-titles { color:#aaa; }
.catalogue-alphabet button:hover,
.catalogue-alphabet button:focus {
  color:#fff;
  background:#555;
  outline:none;
}

/* JMBY_SEARCH_SCREEN */
.media-search { padding:0 16px 32px; }
.media-search-input {
  display:block; box-sizing:border-box;
  width:870px; max-width:calc(100vw - 80px);
  height:40px; margin:0 auto 16px;
  padding:8px 10px; border:2px solid #008e29;
  border-radius:6px; background:#202020; color:#fff;
  font:400 16px Arial,sans-serif;
}
.media-search .catalogue-tabs { margin-bottom:16px; }
.media-search-results {
  display:grid; grid-template-columns:repeat(auto-fit,372px);
  justify-content:center; gap:48px 20px;
  border-top:1px solid #333; padding-top:18px;
}
.media-search-card {
  width:372px; height:auto; padding:0; border:0;
  background:transparent; color:#fff;
  font:400 14px Arial,sans-serif;
  text-align:center; border-radius:8px;
}
.media-search-picture {
  height:210px; background:#242424;
  border-radius:8px; overflow:hidden;
}
.media-search-picture img {
  display:block; width:372px; height:210px; object-fit:contain;
}
.media-search-title { margin-top:6px; }
.media-search-kind,.media-search-year { color:#aaa; margin-top:4px; }
.media-search-card:focus-visible {
  outline:3px solid #00c83c; outline-offset:4px;
}
.top .quicknav .search-home { color:#fff; }
.top .quicknav [hidden] { display:none !important; }

/* Search: portrait posters without landscape frames */
.media-search-results {
  grid-template-columns:repeat(auto-fit,190px);
  justify-content:start;
  gap:36px 24px;
}
.media-search-card { width:190px; }
.media-search-picture {
  width:190px;
  height:285px;
  background:transparent;
}
.media-search-picture img {
  width:190px;
  height:285px;
  object-fit:contain;
}

/* Search cards: aligned posters and fixed two-line titles */
.media-search-results { align-items:start; }
.media-search-card {
  display:flex;
  flex-direction:column;
  align-items:stretch;
  justify-content:flex-start;
}
.media-search-picture { flex:0 0 285px; }
.media-search-title {
  display:-webkit-box;
  -webkit-box-orient:vertical;
  -webkit-line-clamp:2;
  height:36px;
  min-height:36px;
  line-height:18px;
  overflow:hidden;
  white-space:normal;
}
.media-search-kind,
.media-search-year {
  height:18px;
  line-height:18px;
}

/* JNBY Home portrait cards and per-user film marks */
.home-strip .card.jnby-home-poster {
  width:var(--jb-poster-width,190px);
  flex:0 0 var(--jb-poster-width,190px);
}
.home-strip .jnby-home-poster .poster {
  display:block; width:100%; height:auto; aspect-ratio:2 / 3; object-fit:cover;
}
.home-strip .jnby-home-poster .t {
  display:block; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
  text-align:center; height:auto;
}
.home-strip .jnby-home-poster .y {text-align:center}
.movie-poster-frame {position:relative; container-type:inline-size}
.jnby-poster-mark {
  position:absolute; z-index:1; pointer-events:none;
  width:20cqw; height:20cqw; top:max(6px,5cqw);
  display:grid; place-items:center; line-height:1;
}
.jnby-poster-mark.jnby-watched {
  right:max(6px,5cqw); border-radius:50%; background:#00bc41;
  color:white; font-size:15cqw;
}
.jnby-poster-mark.jnby-favourite {left:max(6px,5cqw)}
.jnby-poster-mark svg {display:block; width:100%; height:100%}
.jnby-info-actions {display:flex; align-items:center; gap:20px}
.film-actions .jnby-info-mark {
  display:inline-grid; place-items:center; flex:none;
  width:48px; height:48px; padding:0; border:0; border-radius:50%;
  background:#4e4850; color:#ccc; font-size:26px; line-height:1;
}
.film-actions .jnby-info-mark svg {width:30px; height:30px}
.film-actions .jnby-info-mark.jnby-is-watched {background:#00bc41; color:white}
.film-actions .jnby-info-mark:focus-visible {outline:3px solid white}

/* Use the selected size to fit complete portrait columns across the Movies page. */
.main .catalogue-layout .grid.movie-library-grid {
  grid-template-columns:repeat(auto-fill,minmax(min(100%,var(--jb-poster-width,190px)),1fr)) !important;
  justify-content:stretch;
}
.main .catalogue-layout .grid.movie-library-grid > .card {
  width:auto !important; min-width:0; max-width:none !important;
  justify-self:stretch;
}
.main .catalogue-layout .movie-library-grid .movie-poster-frame {
  width:auto !important; max-width:none; height:auto !important; aspect-ratio:2/3;
}
.main .catalogue-layout .movie-library-grid .movie-poster-frame > .poster {
  width:100%; height:100%; object-fit:cover;
}
.jnby-admin-file {
  display:flex; align-items:baseline; margin-top:32px;
  font:normal 16px Arial,sans-serif; color:#ccc; white-space:nowrap;
}
.jnby-admin-file .file-location {min-width:0; overflow:hidden; text-overflow:ellipsis}
.jnby-admin-file .file-separator {flex:none; white-space:pre}
.jnby-admin-file .file-resolution {flex:none; color:#87cefa}

.top .who { position:relative; }
.top .jnby-profile {
  position:relative; width:42px; height:42px; padding:0;
  border-radius:50%; background:#303030; color:white;
}
.jnby-profile::before,.jnby-profile::after {
  position:absolute; left:50%; transform:translateX(-50%);
  content:""; background:currentColor;
}
.jnby-profile::before { top:7px; width:11px; height:11px; border-radius:50%; }
.jnby-profile::after { bottom:7px; width:23px; height:12px; border-radius:14px 14px 5px 5px; }
.jnby-profile-menu {
  position:absolute; right:0; top:48px; z-index:90;
  width:245px; padding:16px; display:grid; gap:8px;
  border-radius:12px; background:#28282b; box-shadow:0 6px 20px #0009;
}
.jnby-profile-menu button { text-align:left; }
.jnby-profile-menu small,.jnby-server-tile small,.jnby-connect small {color:#bbb}
.jnby-server-grid {display:flex; flex-wrap:wrap; gap:24px; align-items:flex-start}
.jnby-server-tile {
  width:235px; display:grid; gap:6px; padding:4px;
  text-align:center; background:transparent; border:0; color:white;
}
.jnby-server-face {
  display:grid; place-items:center; height:118px;
  border-radius:9px; background:#303033; font-size:44px;
}
.jnby-server-tile small {overflow-wrap:anywhere}
.jnby-connect {max-width:620px; display:grid; gap:12px}
.jnby-connect input,.jnby-connect button {min-height:44px}
.jnby-connect input {font-size:18px; padding:0 12px}

.top .who {position:relative; display:flex; align-items:center; gap:6px}
.top .who .jnby-header-icon {
  display:grid; place-items:center; width:40px; height:40px; padding:0;
  background:transparent; border:0; color:#fff;
}
.jnby-header-icon svg {display:block; width:23px; height:23px}
.top .who .jnby-header-icon:disabled {color:#fff; opacity:1}
.top .who .jnby-header-icon:enabled:is(:hover,:focus) {color:#32ce64}
.jnby-header-panel {
  position:absolute; right:0; top:46px; z-index:90; width:250px;
  background:#29292b; color:#fff; border:1px solid #777;
  border-radius:8px; overflow:hidden;
}
.jnby-menu-heading {display:block; padding:12px 16px}
.jnby-menu-heading small {display:block; color:#ccc; margin-top:3px}
.top .who .jnby-menu-row {
  display:block; width:100%; height:46px; padding:0 16px;
  text-align:left; background:transparent; color:white;
  border:0; border-radius:0; font:normal 18px Arial,sans-serif;
}
.top .who .jnby-header-panel > * + .jnby-menu-row {border-top:1px solid #ddd}
.jnby-menu-row span {display:inline-block; transform-origin:left center}
.top .who .jnby-menu-row:is(:hover,:focus) {color:#32ce64; outline:0}
.jnby-menu-row:is(:hover,:focus) span {transform:scale(1.08)}

/* JNBY_TV_EPISODE_LAYOUT — width comes from the shared Movies display size. */
.main .catalogue-layout .grid.movie-library-grid.jnby-tv-episodes {
  display:flex;
  position:relative;
  overflow-x:auto;
  overflow-y:hidden;
  gap:16px;
  margin-top:0;
  padding:20px 12px;
}
.main .catalogue-layout .grid.movie-library-grid.jnby-tv-episodes > .card {
  flex-shrink:0;
  height:auto;
  align-self:flex-start;
}
.jnby-tv-episode-row {
  display:flex;
  align-items:center;
  gap:8px;
}
.jnby-tv-episode-row > .jnby-tv-episodes {
  flex:1;
  min-width:0;
}
.jnby-tv-arrow {
  flex-shrink:0;
  width:36px;
  height:56px;
  padding:0;
  font-size:32px;
}
.jnby-tv-arrow:disabled {opacity:0.3;}
.jnby-tv-season-selector {margin:24px 0 8px;}
.jnby-tv-season-selector select {min-width:160px;margin-left:8px;}
.jnby-tv-info-image {
  display:block;
  width:560px;
  height:315px;
  object-fit:contain;
  margin:20px 0;
}

/* Position only the TV series/season screen within the visible window. */
.main .catalogue-layout.jnby-tv-series-screen {
  position:fixed;
  top:var(--tv-screen-top,144px);
  left:0;
  right:0;
  bottom:0;
  z-index:1;
  box-sizing:border-box;
  display:grid;
  grid-template-rows:30px minmax(0,1fr) 38px var(--tv-row-height,184px);
  gap:8px;
  padding:12px 28px;
  overflow:hidden;
  background-color:#090909;
  background-size:cover;
  background-position:center;
}
.main .jnby-tv-series-screen > button {
  justify-self:start;
  align-self:start;
  height:30px;
  padding:4px 12px;
  margin:0;
}
.main .jnby-tv-series-screen > .film-layout {
  display:flex;
  align-items:flex-start;
  gap:28px;
  min-height:0;
  margin:0;
  padding:0;
  overflow:hidden;
}
.main .jnby-tv-series-screen .film-layout > .film-poster {
  flex:none;
  width:var(--tv-series-poster-width,160px);
  height:var(--tv-series-poster-height,240px);
  min-width:0;
  max-width:none;
  margin:0;
  object-fit:cover;
  border-radius:8px;
}
.main .jnby-tv-series-screen .film-copy {
  flex:1;
  min-width:0;
  margin:0;
  padding:0;
}
.main .jnby-tv-series-screen .film-copy h1 {
  margin:0 0 10px;
  font-size:26px;
  line-height:32px;
}
.main .jnby-tv-series-screen .film-meta {
  margin:0 0 12px;
}
.main .jnby-tv-series-screen .film-plot {
  margin:0;
  font-size:16px;
  line-height:23px;
  display:-webkit-box;
  -webkit-line-clamp:4;
  -webkit-box-orient:vertical;
  overflow:hidden;
}
.main .jnby-tv-series-screen .jnby-tv-season-selector {
  margin:0;
  align-self:center;
}
.main .jnby-tv-series-screen .jnby-tv-season-selector > label {
  display:flex;
  align-items:center;
  gap:10px;
  margin:0;
}
.main .jnby-tv-series-screen .jnby-tv-season-selector select {
  display:inline-block;
  flex:none;
  width:160px;
  min-width:160px;
  height:34px;
  margin:0;
  padding:4px 10px;
  border-radius:18px;
}
.main .jnby-tv-series-screen > div:last-child {
  min-width:0;
  min-height:0;
}
.main .jnby-tv-series-screen .jnby-tv-episode-row {
  align-items:center;
  min-width:0;
}
.main .catalogue-layout.jnby-tv-series-screen
.grid.movie-library-grid.jnby-tv-episodes {
  margin:0;
  padding:10px 12px 14px;
}
.main .catalogue-layout.jnby-tv-series-screen
.grid.movie-library-grid.jnby-tv-episodes > .card {
  width:var(--jb-poster-width,190px) !important;
  flex:0 0 var(--jb-poster-width,190px);
  height:auto;
  min-height:0;
}
.main .catalogue-layout.jnby-tv-series-screen
.jnby-tv-episodes .movie-poster-frame {
  flex:none;
  aspect-ratio:16/9;
}
.main .jnby-tv-series-screen .jnby-tv-episodes .t {
  text-align:left;
  padding:5px 2px 0;
}
.main .jnby-tv-series-screen .jnby-tv-episodes .y {
  text-align:left;
  padding:2px;
}
.main .jnby-tv-series-screen .jnby-tv-episode-summary {
  display:none;
}

/* Hide the episode scrollbar; retain scrolling through the arrows. */
.main .grid.movie-library-grid.jnby-tv-episodes {
  scrollbar-width:none;
}
.main .grid.movie-library-grid.jnby-tv-episodes::-webkit-scrollbar {
  display:none;
}

/* Match the existing Home-screen arrow appearance. */
.jnby-tv-episode-row > .shelf-arrow.jnby-tv-arrow {
  width:54px;
  height:54px;
  padding:0;
  border-radius:30px;
  background:#fff;
  color:#111;
  font-size:28px;
  line-height:54px;
  box-shadow:0 2px 12px rgba(0,0,0,.45);
  opacity:1;
  transition:opacity .15s;
}
.jnby-tv-episode-row > .shelf-arrow.jnby-tv-arrow:hover {
  background:#eee;
}
.jnby-tv-episode-row > .shelf-arrow.jnby-tv-arrow:disabled {
  visibility:hidden;
}

/* Episode information: artwork left, information right, season row below. */
.main .catalogue-layout.jnby-tv-episode-screen {
  position:fixed;
  top:var(--tv-info-top,144px);
  left:0;
  right:0;
  bottom:0;
  z-index:1;
  box-sizing:border-box;
  display:grid;
  grid-template-rows:30px minmax(0,1fr) 28px var(--tv-info-row,184px);
  gap:8px;
  padding:12px 28px;
  overflow:hidden;
  background-color:#090909;
  background-size:cover;
  background-position:center;
}
.main .jnby-tv-episode-screen > button {
  justify-self:start;
  align-self:start;
  height:30px;
  padding:4px 12px;
  margin:0;
}
.main .jnby-tv-episode-hero {
  display:flex;
  align-items:flex-start;
  gap:28px;
  min-height:0;
  min-width:0;
}
.main .jnby-tv-episode-art {
  flex:none;
  width:var(--tv-info-image-width,320px);
}
.main .jnby-tv-episode-art .jnby-tv-info-image {
  display:block;
  width:var(--tv-info-image-width,320px);
  height:var(--tv-info-image-height,180px);
  margin:0;
  object-fit:cover;
  border-radius:8px;
}
.main .jnby-tv-episode-art .note {
  margin:6px 0 0;
  font-size:11px;
  line-height:16px;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.main .jnby-tv-episode-copy {
  flex:1;
  min-width:0;
  min-height:0;
}
.main .jnby-tv-series-title {
  margin:0 0 10px;
  color:#fff;
  font:bold 44px/48px Arial,sans-serif;
}
.main .jnby-tv-episode-copy h1 {
  margin:0 0 8px;
  font:600 22px/27px Arial,sans-serif;
}
.main .jnby-tv-episode-copy .film-meta {
  margin:0 0 10px;
  font:normal 14px/19px Arial,sans-serif;
}
.main .jnby-tv-episode-copy .jnby-info-actions {
  margin:0 0 10px;
  display:flex;
  align-items:center;
  gap:20px;
}
.main .jnby-tv-episode-copy .film-plot {
  margin:0;
  font:normal 16px/22px Arial,sans-serif;
}
.main .jnby-tv-episode-screen > h2 {
  margin:0;
  font:600 22px/28px Arial,sans-serif;
}
.main .jnby-tv-episode-screen > div:last-child {
  min-width:0;
  min-height:0;
}
.main .catalogue-layout.jnby-tv-episode-screen
.grid.movie-library-grid.jnby-tv-episodes {
  margin:0;
  padding:10px 12px 14px;
}
.main .catalogue-layout.jnby-tv-episode-screen
.grid.movie-library-grid.jnby-tv-episodes > .card {
  width:var(--jb-poster-width,190px) !important;
  flex:0 0 var(--jb-poster-width,190px);
  height:auto;
  min-height:0;
}
.main .catalogue-layout.jnby-tv-episode-screen
.jnby-tv-episodes .movie-poster-frame {
  flex:none;
  aspect-ratio:16/9;
}

/* Episode information: Movies typography and content ordered without overlap. */
.main .catalogue-layout.jnby-tv-episode-screen {
  grid-template-rows:auto auto auto;
  align-content:start;
  gap:12px;
  overflow-x:hidden;
  overflow-y:auto;
}
.main .jnby-tv-episode-hero {
  min-height:min-content;
}
.main .jnby-tv-series-title {
  margin:0 0 8px;
  font-family:inherit;
  font-size:30px;
  font-weight:500;
  line-height:1.4;
}
.main .jnby-tv-episode-copy h1 {
  margin:0 0 6px;
  font-family:inherit;
  font-size:15px;
  font-weight:500;
  line-height:1.4;
}
.main .jnby-tv-episode-copy .film-meta {
  margin:0 0 8px;
  font-family:inherit;
  font-size:15px;
  font-weight:400;
  line-height:1.4;
}
.main .jnby-tv-episode-copy .jnby-info-actions {
  margin:0 0 8px;
}
.main .jnby-tv-episode-copy .film-plot {
  margin:0;
  font-family:inherit;
  font-size:17px;
  font-weight:400;
  line-height:1.6;
  white-space:normal;
  display:-webkit-box;
  -webkit-box-orient:vertical;
  -webkit-line-clamp:3;
  overflow:hidden;
}
.main .jnby-tv-episode-screen > h2 {
  margin:4px 0 0;
  font-family:inherit;
  font-size:20px;
  font-weight:500;
  line-height:1.4;
}
.main .jnby-tv-episode-screen > div:last-child {
  min-height:min-content;
}
.main .catalogue-layout.jnby-tv-episode-screen
.grid.movie-library-grid.jnby-tv-episodes {
  margin:0;
  padding-top:8px;
}

/* TV descriptions: series and episode information. */
.main .jnby-tv-series-screen .film-plot,
.main .jnby-tv-episode-copy .film-plot {
  font-size:14px;
  line-height:20px;
}

/* Let the information block determine its height before the season row. */
.main .catalogue-layout.jnby-tv-episode-screen {
  display:block;
}
.main .jnby-tv-episode-screen > .jnby-tv-episode-hero {
  display:flex;
  height:auto;
  min-height:0;
  overflow:visible;
  margin:0;
}
.main .jnby-tv-episode-screen .jnby-tv-episode-copy {
  height:auto;
  min-height:0;
  overflow:visible;
}
.main .jnby-tv-episode-copy .film-plot {
  display:block;
  max-height:none;
  -webkit-line-clamp:unset;
  overflow:visible;
}
.main .jnby-tv-episode-screen > h2 {
  position:static;
  margin:18px 0 10px;
  clear:both;
}
.main .jnby-tv-episode-screen > div:last-child {
  position:static;
  margin:0;
}

/* Requested TV heading, background and selector adjustments. */
.main .jnby-tv-episode-screen > h2 {
  font-size:14px !important;
  line-height:20px;
}

.main .jnby-tv-series-screen,
.main .jnby-tv-episode-screen {
  background-image:none !important;
  background-color:#000 !important;
}

.main .jnby-tv-season-selector select {
  box-sizing:border-box;
  width:80px !important;
  min-width:80px !important;
  max-width:80px !important;
  height:14px !important;
  min-height:14px !important;
  padding:0 2px !important;
  font-size:10px !important;
  line-height:12px !important;
}

.main .jnby-tv-episode-art > button:first-child {
  display:block;
  margin:0 0 10px;
}

.main .jnby-tv-season-selector select {
  width:110px !important;
  min-width:110px !important;
  max-width:110px !important;
  height:26px !important;
  min-height:26px !important;
  padding:2px 6px !important;
  font-size:14px !important;
  line-height:20px !important;
}


/* Folder tiles match the native APK artwork and border. */
.main .catalogue-layout .movie-library-grid
.jnby-folder-card .jnby-folder-face {
  box-sizing:border-box;
  background:#3c3c3c;
  border:2px solid #969696;
  border-radius:10px;
  padding:4px;
  aspect-ratio:2/3;
}
.main .catalogue-layout .movie-library-grid
.jnby-folder-card .jnby-folder-face > .poster {
  object-fit:contain;
  border-radius:0;
}
.main .catalogue-layout .movie-library-grid
.jnby-folder-card:focus .jnby-folder-face {
  border:3px solid #00bc41;
}
.main .catalogue-layout .movie-library-grid .jnby-folder-card .t {
  font-size:16px;
  line-height:24px;
  text-align:center;
}
.jnby-folder-up {
  display:block;
  margin:0 26px 16px;
}

/* Identical Movies and TV library tab sizing. */
.main .catalogue-layout > .catalogue-tabs > button.catalogue-tab {
  box-sizing:border-box !important;
  height:44px !important;
  min-height:44px !important;
  max-height:44px !important;
  width:auto !important;
  min-width:0 !important;
  padding:8px 16px !important;
  font:400 20px Arial,sans-serif !important;
  border-radius:24px !important;
  flex:0 0 auto !important;
}

/* JNBY folder picker compact bottom */
.dlg.folder-picker {
  padding-bottom:8px;
}
.dlg.folder-picker > .flist + .note {
  order:-1;
  position:absolute;
  width:1px;
  height:1px;
  overflow:hidden;
  clip-path:inset(50%);
}
.dlg.folder-picker > .err:empty {
  display:none;
}

/* Home Next Up and Continue Watching landscape rows. */
.main .home-content .jnby-home-playback .movie-poster-frame {
  aspect-ratio:auto;
}
.main .home-content .jnby-home-playback .t {
  height:24px;
  max-height:24px;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  color:#fff;
}
.main .home-content .jnby-home-playback .y {
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  color:#ddd;
}

.main .jnby-tv-series-screen .jnby-tv-season-selector {
  display: flex;
  align-items: center;
  gap: 16px;
}
.main .jnby-tv-autoplay-control {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  min-width: 0;
}
.main .jnby-tv-autoplay-control > .jnby-tv-autoplay-setting {
  display: inline-flex;
  align-items: center;
  flex: none;
  gap: 16px;
  margin: 0;
  font-size: 16px;
  line-height: 22px;
}
.main .jnby-tv-autoplay-setting input[type="checkbox"] {
  flex: none;
  width: 20px;
  min-width: 20px;
  height: 20px;
  margin: 0;
  padding: 0;
}
.main .jnby-tv-autoplay-error:empty {
  display: none;
}
.jnby-next-episode {
  opacity: 0.6;
  position: absolute;
  right: 24px;
  top: 24px;
  z-index: 10;
  display: grid;
  gap: 8px;
  width: 190px;
  padding: 12px;
  background: #202020;
  color: #fff;
  border-radius: 8px;
}
.jnby-next-episode button:focus-visible {
  outline: 2px solid #fff;
  outline-offset: 2px;
}
