:root{--library-navy:#062147;--library-orange:#f58220;--library-ink:#24364b;--library-soft:#f4f7fb}
.library-hero{padding:170px 0 78px;color:#fff;background:linear-gradient(120deg,rgba(6,33,71,.96),rgba(6,33,71,.78)),url('../../application/public/images/page/bg-connectivity.jpg') center/cover}
.library-hero h1{font-weight:800}.library-hero p{max-width:720px;margin:14px auto 0;color:#e6edf7;font-size:1.08rem}.library-section{padding:68px 0;background:var(--library-soft)}
.library-toolbar{display:flex;gap:12px;justify-content:space-between;margin-bottom:28px}.library-search{width:min(440px,100%);padding:12px 18px;border:1px solid #ccd6e2;border-radius:50px}.library-filters{display:flex;gap:8px;flex-wrap:wrap}.library-filter{padding:10px 18px;border:1px solid var(--library-navy);border-radius:50px;color:var(--library-navy);background:#fff;font-weight:700}.library-filter.active,.library-filter:hover{color:#fff;background:var(--library-navy)}
.library-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:22px}.library-card{display:flex;overflow:hidden;min-height:100%;flex-direction:column;border:1px solid rgba(6,33,71,.12);border-bottom:4px solid var(--library-orange);border-radius:14px;background:#fff;box-shadow:0 8px 22px rgba(6,33,71,.13);transition:.18s}.library-card:hover{transform:translateY(-6px);box-shadow:0 14px 30px rgba(6,33,71,.2)}.library-card__cover{position:relative;aspect-ratio:16/10;background:linear-gradient(135deg,#062147,#173f70)}.library-card__cover img{width:100%;height:100%;object-fit:cover}.library-card__placeholder{display:grid;width:100%;height:100%;place-items:center;color:#fff;font-size:3rem}.library-card__badge{position:absolute;top:12px;left:12px;padding:5px 10px;border-radius:20px;color:#fff;background:var(--library-orange);font-size:.7rem;font-weight:800;text-transform:uppercase}.library-card__body{display:flex;flex:1;flex-direction:column;padding:20px}.library-card h2{margin-bottom:8px;color:var(--library-navy);font-size:1.15rem;font-weight:800}.library-card__meta{color:var(--library-orange);font-size:.78rem;font-weight:700}.library-card__description{display:-webkit-box;overflow:hidden;margin:10px 0 18px;color:#59697a;font-size:.9rem;-webkit-box-orient:vertical;-webkit-line-clamp:3}.library-card__download-form{margin-top:auto;text-align:center}.library-card__download{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 18px;border:2px solid var(--library-navy);border-radius:50px;color:var(--library-navy);background:#fff;font-weight:800;text-decoration:none;text-transform:uppercase}.library-card__download:hover{color:#fff;background:var(--library-navy)}.library-empty{grid-column:1/-1;padding:50px;text-align:center;border-radius:14px;background:#fff}.library-admin-link{margin-top:24px;color:#dbe7f7;font-size:.85rem}
.admin-shell{min-height:100vh;padding:70px 0;background:var(--library-soft)}.admin-panel{padding:30px;border-radius:16px;background:#fff;box-shadow:0 12px 35px rgba(6,33,71,.14)}.admin-panel h1,.admin-panel h2{color:var(--library-navy);font-weight:800}.admin-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.admin-field--full{grid-column:1/-1}.admin-field label{display:block;margin-bottom:6px;color:var(--library-ink);font-weight:700}.admin-field input,.admin-field select,.admin-field textarea{width:100%;padding:11px 13px;border:1px solid #ccd6e2;border-radius:8px}.admin-field textarea{min-height:110px}.admin-button{padding:11px 22px;border:0;border-radius:50px;color:#fff;background:var(--library-orange);font-weight:800}.admin-message{margin-bottom:20px;padding:12px 16px;border-radius:8px}.admin-message--success{color:#155724;background:#d4edda}.admin-message--error{color:#721c24;background:#f8d7da}.admin-items{margin-top:38px}.admin-item{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:13px 0;border-bottom:1px solid #e8edf3}.admin-delete{padding:7px 13px;border:0;border-radius:30px;color:#fff;background:#b42318}.admin-topbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px}.admin-login{max-width:460px;margin:auto}.admin-help{color:#68798c;font-size:.85rem}
@media(max-width:991px){.library-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:575px){.library-toolbar{align-items:stretch;flex-direction:column}.library-grid{grid-template-columns:1fr}.admin-form{grid-template-columns:1fr}.admin-field--full{grid-column:auto}.admin-panel{padding:22px}.library-hero{padding:140px 18px 60px}}

/* Premium library management portal theme. */
.admin-shell{position:relative;overflow:hidden;padding:52px 0 80px;background:linear-gradient(145deg,#eef3fa 0%,#f9fbfd 52%,#fff4e9 100%)}
.admin-shell::before,.admin-shell::after{content:"";position:fixed;z-index:0;border-radius:50%;filter:blur(2px);pointer-events:none}
.admin-shell::before{top:-180px;right:-120px;width:430px;height:430px;background:radial-gradient(circle,rgba(245,130,32,.2),rgba(245,130,32,0) 68%)}
.admin-shell::after{bottom:-220px;left:-160px;width:520px;height:520px;background:radial-gradient(circle,rgba(6,33,71,.14),rgba(6,33,71,0) 70%)}
.admin-shell>.container{position:relative;z-index:1;width:100%;max-width:none!important;padding-right:clamp(16px,2.25vw,44px);padding-left:clamp(16px,2.25vw,44px)}
.admin-topbar{margin-bottom:24px;padding:28px 32px;border:1px solid rgba(255,255,255,.2);border-radius:20px;color:#fff;background:linear-gradient(120deg,#061b3b,#0a3266);box-shadow:0 18px 45px rgba(6,33,71,.22)}
.admin-topbar h1{margin:0;color:#fff;font-size:clamp(1.7rem,3vw,2.35rem);letter-spacing:-.03em}
.admin-topbar>div:first-child::before{content:"SOLOSTARTECH DOWNLOAD CENTER";display:block;margin-bottom:7px;color:#ff9a3d;font-size:.72rem;font-weight:800;letter-spacing:.15em}
.admin-topbar>div:first-child a{display:inline-block;margin-top:8px;padding:11px 18px;border:1px solid rgba(255,255,255,.26);border-radius:50px;color:#fff;background:rgba(255,255,255,.1);font-size:.82rem;font-weight:800;text-decoration:none;transition:.18s}
.admin-topbar>div:first-child a::before{content:"↗";margin-right:8px;color:#ff9a3d;font-size:1rem}
.admin-topbar>div:first-child a:hover{border-color:#f58220;background:#f58220;transform:translateY(-2px)}
.admin-topbar>a{display:inline-flex;align-items:center;gap:8px;padding:11px 19px;border:1px solid rgba(255,255,255,.35);border-radius:50px;color:#fff;background:transparent;font-size:.82rem;font-weight:800;text-decoration:none;transition:.18s}
.admin-topbar>a::before{content:"⇥";font-size:1rem}.admin-topbar>a:hover{border-color:#ff6b6b;color:#fff;background:#b42318;transform:translateY(-2px)}
.admin-panel{border:1px solid rgba(6,33,71,.08);border-top:5px solid #f58220;border-radius:20px;box-shadow:0 20px 55px rgba(6,33,71,.12)}
.admin-panel>h2{position:relative;margin-bottom:6px;padding-left:48px;font-size:1.45rem}.admin-panel>h2::before{content:"+";position:absolute;top:-7px;left:0;display:grid;width:38px;height:38px;place-items:center;border-radius:11px;color:#fff;background:linear-gradient(135deg,#f58220,#ff9d45);box-shadow:0 8px 17px rgba(245,130,32,.28)}
.admin-panel>h2+.admin-help{margin-bottom:25px;padding-left:48px}
.admin-form{padding:24px;border:1px solid #e2e9f1;border-radius:15px;background:#f9fbfd}
.admin-field label{color:#173554;font-size:.86rem}.admin-field input,.admin-field select,.admin-field textarea{border:1px solid #cfdae7;background:#fff;box-shadow:0 2px 5px rgba(6,33,71,.03);transition:border-color .16s,box-shadow .16s}
.admin-field input:focus,.admin-field select:focus,.admin-field textarea:focus{outline:0;border-color:#f58220;box-shadow:0 0 0 4px rgba(245,130,32,.12)}
.admin-button{min-height:45px;padding:11px 26px;background:linear-gradient(135deg,#f58220,#ff9d45);box-shadow:0 8px 18px rgba(245,130,32,.25);transition:.18s}.admin-button:hover{transform:translateY(-2px);box-shadow:0 12px 24px rgba(245,130,32,.32)}
.admin-items{padding-top:28px;border-top:1px solid #e4eaf1}.admin-item{padding:15px 14px;border-radius:10px;transition:.16s}.admin-item:hover{background:#f5f8fc}.admin-delete{font-weight:700;transition:.16s}.admin-delete:hover{background:#8f1c14;transform:translateY(-1px)}
@media(max-width:700px){.admin-shell{padding-top:22px}.admin-topbar{align-items:flex-start;flex-direction:column;padding:23px}.admin-topbar>a{margin-top:16px}.admin-form{padding:17px}}

/* Keep the portal visually identical to the public download page shell. */
body:has(.admin-shell){background:#f4f7fb}
body:has(.admin-shell) header .navbar{background:rgba(6,27,59,.96)!important;box-shadow:0 5px 22px rgba(6,33,71,.2)}
.admin-shell{padding-top:150px;background:var(--library-soft)}
.admin-shell::before,.admin-shell::after{display:none}
.admin-topbar{position:relative;overflow:hidden;padding:46px clamp(24px,3vw,52px);border:0;border-radius:14px;background:linear-gradient(120deg,rgba(6,33,71,.98),rgba(6,33,71,.84)),url('../../application/public/images/page/bg-connectivity.jpg') center/cover}
.admin-topbar::after{content:"";position:absolute;right:-90px;bottom:-125px;width:330px;height:330px;border:45px solid rgba(245,130,32,.12);border-radius:50%}
.admin-topbar>*{position:relative;z-index:1}
.admin-panel{border-radius:14px;background:#fff;box-shadow:0 8px 22px rgba(6,33,71,.13)}
.admin-panel>h2,.admin-panel>h2+.admin-help{display:none}
.admin-panel>.admin-message:first-child,.admin-panel>h2+.admin-help+.admin-message{margin-top:0}
@media(max-width:700px){.admin-shell{padding-top:118px}.admin-topbar{padding:30px 22px}}

/* Logged-in portal controls live inside the website topbar. */
body:has(.admin-topbar) .admin-topbar{display:none}
body:has(.admin-topbar) .admin-shell{padding-top:108px}
body:has(.admin-topbar) #navbarSupportedContent{align-items:center;justify-content:flex-end;gap:24px}
.portal-nav-title{display:flex;flex-direction:column;margin-right:auto;padding-left:24px;border-left:2px solid #f58220;color:#fff;line-height:1.05}
.portal-nav-title span{margin-bottom:5px;color:#f58220;font-size:.62rem;font-weight:800;letter-spacing:.13em;text-transform:uppercase}
.portal-nav-title strong{font-size:1.05rem;letter-spacing:.02em}
.portal-nav-actions{display:flex;align-items:center;gap:10px}
.portal-nav-button{display:inline-flex;align-items:center;gap:7px;padding:9px 15px;border:1px solid rgba(255,255,255,.35);border-radius:50px;color:#fff;font-size:.75rem;font-weight:800;text-decoration:none;transition:.16s}
.portal-nav-button:hover{color:#fff;transform:translateY(-1px)}
.portal-nav-button--library:hover{border-color:#f58220;background:#f58220}.portal-nav-button--logout:hover{border-color:#b42318;background:#b42318}
@media(max-width:991px){body:has(.admin-topbar) .admin-shell{padding-top:96px}.portal-nav-title{margin:14px 0 12px;padding-left:14px}.portal-nav-actions{align-items:stretch;flex-direction:column;padding:0 0 16px}.portal-nav-button{justify-content:center;width:100%}}

/* Login brand uses text treatment because this project has no dark logo asset. */
.admin-login>img{display:none!important}
.admin-login::before{content:"SOLOSTARTECH";display:block;margin-bottom:24px;padding-left:14px;border-left:5px solid #f58220;color:#062147;font-size:1.05rem;font-weight:900;letter-spacing:.08em}
.admin-login>h1{margin-top:0!important}
.portal-nav-button--visitors:hover{border-color:#3b82f6;background:#2563eb}
.visitor-panel__heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:24px}.visitor-panel__heading h1{margin:0 0 5px}.visitor-panel__heading p{margin:0;color:#68798c}.visitor-panel__heading .admin-button{color:#fff;text-decoration:none}.visitor-table-wrap{overflow:auto;border:1px solid #dce5ef;border-radius:12px}.visitor-table{width:100%;min-width:1050px;border-collapse:collapse}.visitor-table th,.visitor-table td{padding:12px 14px;border-bottom:1px solid #e5ebf2;text-align:left;vertical-align:top;font-size:.82rem}.visitor-table th{position:sticky;top:0;color:#fff;background:#062147;white-space:nowrap}.visitor-table tbody tr:hover{background:#f5f8fc}.visitor-table code{color:#173554;font-size:.78rem}.visitor-browser{max-width:430px;word-break:break-word}.visitor-empty{padding:35px;text-align:center;border-radius:12px;background:#f5f8fc}
@media(max-width:700px){.visitor-panel__heading{align-items:flex-start;flex-direction:column}.visitor-panel__heading .admin-button{width:100%;text-align:center}}

/* Automatic cover treatment when an item has no uploaded image. */
.library-card__placeholder{background:linear-gradient(135deg,#062147,#174b83)}
.library-card[data-category="movie"] .library-card__placeholder{background:linear-gradient(135deg,#41124f,#8a256d)}
.library-card[data-category="firmware"] .library-card__placeholder{background:linear-gradient(135deg,#073f3a,#0b7d68)}
.library-card__placeholder i{filter:drop-shadow(0 7px 12px rgba(0,0,0,.25))}

/* Every uploaded cover stays inside the same fixed card frame. */
.library-card__cover{height:200px;min-height:200px;max-height:200px;flex:0 0 200px;overflow:hidden;aspect-ratio:auto}
.library-card__cover img{display:block!important;width:100%!important;height:100%!important;max-width:100%!important;max-height:100%!important;padding:10px;box-sizing:border-box;object-fit:contain!important;object-position:center!important;background:#fff}
.library-card__placeholder{width:100%;height:100%}
@media(max-width:575px){.library-card__cover{height:220px;min-height:220px;max-height:220px;flex-basis:220px}}

/* Download page spacing after removing the hero section. */
.library-main .library-section{min-height:70vh;padding-top:140px}
@media(max-width:991px){.library-main .library-section{padding-top:120px}}
