/* KDN TV public mockup implementation v1.0.3 (public pages only).
   Layered after the existing styles so upload/admin/migration screens remain untouched. */
.public-site{
 --kdn-navy:#112d4e;--kdn-navy-2:#19274a;--kdn-teal:#039d94;--kdn-ink:#142b40;
 --kdn-border:#cbdfe9;--kdn-soft:#f1f8fb;--kdn-mint:#e1f3f0;
 background:linear-gradient(180deg,#eaf3fa,#f4f9fd 310px,#edf5fa);
 color:var(--kdn-ink);font-size:12px;
}
.public-site .shell{max-width:1450px;padding-left:24px;padding-right:24px}
.public-site .site-header{background:linear-gradient(111deg,#172747 0%,#1e3152 59%,#035866 100%)!important;border-bottom:1px solid #2b5980}
.public-site .site-header::before{top:34px;left:39%;width:65%;height:128px;border-top:2px solid #15b9df;box-shadow:none;transform:rotate(-7deg)}
.public-site .site-header::after{opacity:.45;box-shadow:none;right:7%;}
.public-site .head-inner{height:99px}
.public-site .brand{gap:13px}
.public-site .brand-mark{width:57px;height:57px;flex-basis:57px;border:4px solid #f8d856;background:#00aea8!important;box-shadow:0 0 0 3px #123f5d,inset 0 1px 3px #45e1c6}
.public-site .brand-copy{padding-left:14px;text-shadow:none}
.public-site .brand-copy strong{font-size:27px;color:#fff;letter-spacing:-.03em}
.public-site .brand-copy small{font-size:16px;color:#9bf2e9!important}
.public-site .retro-nav{background:linear-gradient(180deg,#172949,#142a49)!important;border-bottom:1px solid #2e5069!important;box-shadow:0 1px 3px #23435b30}
.public-site .nav-inner{min-height:61px}
.public-site .top-nav{gap:2px}
.public-site .top-nav a{color:#eaf5ff;font-size:12px;font-weight:700;padding:9px 12px;border-radius:6px;min-height:37px}
.public-site .top-nav a span{font-size:18px;color:#f6bd2f}
.public-site .top-nav a:hover{background:#294668!important;color:#fff!important;border-color:transparent}
.public-site .top-nav .nav-home{background:linear-gradient(180deg,#1595de,#0468b8)!important;color:#fff!important;border-color:#0a8bd2;box-shadow:none}
.public-site .nav-search{flex-basis:490px;gap:9px}
.public-site .nav-search input{height:38px;border:1px solid #bfd1e0;border-radius:7px;background:#fff;color:#18364b;box-shadow:none;padding:7px 13px;font-size:12px}
.public-site .nav-search button{height:38px;border-radius:7px;min-width:96px;box-shadow:none!important}
.public-site .public-area{padding-top:20px}
.public-site .site-footer{background:linear-gradient(90deg,#143152,#142c4c 70%,#0e3b53);border-top:3px solid #16bdbb;box-shadow:none;margin-top:30px}
.public-site .site-footer .shell{min-height:65px}
.public-site .site-footer strong{font-size:14px}
.public-site .site-footer span{font-size:11.5px}

/* Homepage: compact filter row, spacious file cards and cohesive right sidebar. */
.public-site .home-page .filter-panel{width:min(100%,960px);min-height:58px;padding:10px 15px;margin-bottom:19px;
 background:linear-gradient(180deg,#fbfdff,#eff7fb);border:1px solid #cedeea;border-radius:10px;box-shadow:0 1px 3px #193f5b0b}
.public-site .home-page .public-filters{display:flex;align-items:center;gap:18px 24px}
.public-site .home-page .public-filters label{color:#1d344a;gap:10px;font-size:12px}
.public-site .home-page .public-filters select{width:200px;min-width:0;max-width:220px;height:37px;padding:6px 11px;background:#fff;border:1px solid #b5cbda;border-radius:7px;box-shadow:0 1px 3px #15395412;color:#223549}
.public-site .home-page .public-filters .sort-filter{padding-left:20px;border-left:1px solid #c6dbe5}
.public-site .catalog-grid{grid-template-columns:minmax(0,1fr) 340px;gap:19px}
.public-site .library-window,.public-site .sidebar-window,.public-site .firmware-related{background:#fff;border:1px solid var(--kdn-border)!important;border-radius:11px;box-shadow:0 2px 7px #21486512}
.public-site .library-window{overflow:visible}
.public-site .window-title,.public-site .sidebar-window .window-title,.public-site .library-window .window-title,.public-site .related-section .window-title{
 position:relative;min-height:52px;display:flex;gap:11px;align-items:center;padding:10px 17px;
 background:linear-gradient(180deg,#f9fefd,#e0f3ef)!important;border-bottom:1px solid #c7e4e0!important;box-shadow:none;color:#162f42!important}
.public-site .library-window .window-title{min-height:65px;border-bottom:3px solid #12b6a8!important;border-radius:10px 10px 0 0}
.public-site .library-window .window-title::after{content:'';position:absolute;right:19px;top:0;width:37px;height:33px;transform:skewX(-28deg);background:linear-gradient(120deg,#16b3a7 0%,#05a08e 76%,#9fef20 78%);opacity:.9}
.public-site .window-title h1,.public-site .window-title h2{font-weight:800;text-shadow:none;color:#172e42!important;line-height:1.2}
.public-site .library-window .window-title h1{font-size:19px}
.public-site .sidebar-window .window-title h2{font-size:15px}
.public-site .win-folder,.public-site .side-icon{font-size:19px;color:#0e9687;text-shadow:none}
.public-site .library-count-badge{color:#046b63;background:#d7f3ed;border-radius:40px;padding:5px 13px;font-size:12px;font-weight:750;white-space:nowrap}
.public-site .file-header{margin:14px 17px 6px;min-height:35px;border:0;border-radius:7px;background:#e3f0f9;color:#20364b;box-shadow:none;grid-template-columns:minmax(0,1fr) 100px 100px 62px;font-size:11.5px}
.public-site .file-rows{padding:0 17px 13px;display:grid;gap:8px}
.public-site .lib-row,.public-site .lib-row:nth-child(odd),.public-site .lib-row:nth-child(even){grid-template-columns:minmax(0,1fr) 100px 100px 62px;
 min-height:75px;background:#fff;border:1px solid #cee0e8;border-radius:8px;box-shadow:0 1px 2px #214e6512}
.public-site .lib-row:hover,.public-site .lib-row:focus-within{background:#f0f9fb;outline:1px solid #9dcfcf}
.public-site .file-cell-main{gap:12px;padding:11px 15px}
.public-site .file-text{gap:3px}
.public-site .file-text strong{font-size:12.5px;font-weight:750;color:#12263c}
.public-site .file-text small{font-size:11px;color:#698294}
.public-site .file-row-size,.public-site .file-row-count{font-size:11.5px;font-weight:750}
.public-site .file-row-count{color:#086bc2}
.public-site .row-download{width:39px;height:36px;border:1px solid #058b83!important;border-radius:6px;background:linear-gradient(180deg,#08baa9,#00817a)!important;box-shadow:0 2px 4px #1b5c5a20!important}
.public-site .row-download:hover{filter:brightness(1.08)}
.public-site .file-icon.is-zip b{background:linear-gradient(#ffb45e,#ed7a22 60%,#dc6013);border-color:#cf6b20}
.public-site .file-icon b{text-shadow:none}
.public-site .library-pagination{padding:12px 17px 15px;background:#fff;border-top:none;border-radius:0 0 10px 10px}
.public-site .nav-page{min-width:34px;height:33px;border-radius:6px;box-shadow:none;background:#fff}
.public-site .nav-page.active{background:linear-gradient(180deg,#12c5b4,#009789);border-color:#008c82}
.public-site .sidebar{gap:16px}
.public-site .sidebar-window{overflow:hidden}
.public-site .sidebar-window .window-title{min-height:43px;padding:9px 14px}
.public-site .category-list{padding:8px 12px 10px}
.public-site .category-item{min-height:36px;border-bottom:1px solid #e1ebf0;color:#23364c}
.public-site .category-item:hover,.public-site .category-item.selected{background:#ebf8f5!important}
.public-site .category-folder{color:#e6ad0d;text-shadow:none;font-size:20px}
.public-site .category-item strong{font-size:11.7px;color:#1d2f42}
.public-site .category-count{background:#def6f0;color:#086a61;border:1px solid #b2e4da;border-radius:15px;min-width:34px}
.public-site .side-files{padding:8px 12px}
.public-site .side-file{min-height:52px;border-bottom:1px solid #e1edf0;gap:9px}
.public-site .side-filename strong{font-size:11px}
.public-site .side-filesize{color:#638192}
.public-site .top-count{margin-top:-3px;color:#0f78ae}

/* File details: 3 stacked cards at left, optional actual board image at right. */
.public-site .file-detail-page{max-width:1450px;padding-top:17px}
.public-site .detail-breadcrumb{background:#f8fbfd;border-color:#d3e3eb;box-shadow:none;padding:10px 16px;margin:0 0 17px}
.public-site .detail-breadcrumb a{color:#076c7c}
.public-site .firmware-detail{border:1px solid #cbdfe8;border-radius:10px;background:#fff;box-shadow:0 2px 10px #21436110}
.public-site .firmware-hero{padding:18px 23px;min-height:105px;gap:17px;
 background:linear-gradient(107deg,#1c3456 0%,#1a4662 68%,#00777b 100%);border-bottom:3px solid #12b9ac}
.public-site .firmware-hero h1{font-size:24px;line-height:1.22;font-weight:800;letter-spacing:-.02em}
.public-site .firmware-hero-icon{flex-basis:55px;border-right:1px solid #86c5cf77;padding-right:15px;box-sizing:content-box}
.public-site .firmware-hero-icon .file-icon{transform:scale(1.15)}
.public-site .firmware-hero p{color:#d8eaf1;font-size:11.5px;margin-top:6px}
.public-site .firmware-eyebrow{font-size:10px;letter-spacing:.035em;margin-bottom:5px;color:#a5eee7}
.public-site .firmware-layout{display:grid;grid-template-columns:1fr;grid-auto-flow:row;gap:12px;padding:17px;align-items:stretch}
.public-site .firmware-layout.with-board{grid-template-columns:minmax(0,1fr) minmax(290px,36%)}
.public-site .firmware-layout .firmware-specifications,
.public-site .firmware-layout .firmware-identifiers,
.public-site .firmware-layout .firmware-downloads{grid-column:1}
.public-site .firmware-layout .firmware-board{grid-column:2;grid-row:1 / span 3}
.public-site .firmware-layout .firmware-notes,
.public-site .firmware-layout .firmware-report{grid-column:1/-1}
.public-site .firmware-layout.without-board .firmware-specifications,
.public-site .firmware-layout.without-board .firmware-identifiers,
.public-site .firmware-layout.without-board .firmware-downloads{grid-column:1}
.public-site .firmware-card{border:1px solid #d0e0e7;border-radius:9px;background:#fff;box-shadow:0 1px 3px #2549640c;overflow:hidden}
.public-site .firmware-card-header{position:relative;display:flex;align-items:center;min-height:44px;padding:10px 15px;
 background:linear-gradient(180deg,#f6fdfb,#e0f4f0);border-bottom:1px solid #d3e6e4}
.public-site .firmware-card-header::after{content:'';position:absolute;right:14px;top:0;width:32px;height:26px;transform:skewX(-28deg);background:linear-gradient(115deg,#08bba7 0%,#0a9f94 80%,#80e815 81%);opacity:.88}
.public-site .firmware-card-header h2{font-size:14px;color:#1a3246;font-weight:780;text-shadow:none;display:flex;align-items:center;gap:10px;margin:0}
.public-site .firmware-card-header h2::before{content:'ⓘ';font-size:19px;color:#008b82;line-height:1}
.public-site .firmware-identifiers .firmware-card-header h2::before{content:'▣'}
.public-site .firmware-downloads .firmware-card-header h2::before{content:'↓';font-weight:900;font-size:23px}
.public-site .firmware-board .firmware-card-header h2::before{content:'▦'}
.public-site .firmware-notes .firmware-card-header h2::before{content:'≡'}
.public-site .firmware-spec-grid{display:grid;grid-template-columns:minmax(0,1.8fr) repeat(3,minmax(0,1fr));gap:0;margin:0;padding:12px 16px}
.public-site .firmware-layout.with-board .firmware-spec-grid{grid-template-columns:minmax(0,1.7fr) repeat(3,minmax(0,1fr))}
.public-site .firmware-spec{min-width:0;padding:3px 12px 3px 0;margin:0;border:0}
.public-site .firmware-spec:not(:first-child){padding-left:14px;border-left:1px solid #e2ebef}
.public-site .firmware-spec.spec-filename{grid-column:auto}
.public-site .firmware-spec dt{font-size:10px;font-weight:600;color:#697e8b;margin-bottom:6px}
.public-site .firmware-spec dd{font-size:11.5px;line-height:1.42;color:#182e3e;font-weight:750;overflow-wrap:anywhere}
.public-site .firmware-spec dd a{color:#00777b;text-decoration:underline;text-underline-offset:3px}
.public-site .firmware-device-specs,
.public-site .firmware-layout.with-board .firmware-device-specs{grid-template-columns:repeat(2,minmax(0,1fr));padding-top:11px;padding-bottom:11px}
.public-site .firmware-downloads .detail-actions{margin:0;padding:13px 15px 8px;gap:9px}
.public-site .firmware-downloads .download-action{min-width:0;min-height:40px;padding:8px 12px;font-size:11.5px;border-radius:6px;gap:7px;box-shadow:none!important}
.public-site .firmware-downloads .mirror-download{background:linear-gradient(180deg,#7b68a5,#584484)!important;border-color:#584484!important}
.public-site .firmware-downloads .copy-action{min-height:40px;border:1px solid #cedfe7;background:#f9fcfd;box-shadow:none;color:#20465a;border-radius:6px;font-size:11px;padding:8px 10px}
.public-site .firmware-compatibility-warning{margin:5px 15px 14px;padding:10px 11px;background:#f3f9fa;border:0;border-left:3px solid #1cb6a6;font-size:10.7px;line-height:1.5;color:#395568}
.public-site .firmware-board{padding-bottom:12px}
.public-site .firmware-board .board-photo-frame{width:calc(100% - 24px);padding:8px;margin:12px auto 0;border:1px solid #d5e5ea;border-radius:7px;box-shadow:none;min-height:0;background:#fbfcfd}
.public-site .firmware-board .board-photo-frame img{width:100%;height:auto;max-height:350px;min-height:170px;object-fit:contain;background:#fff}
.public-site .firmware-photo-caption{font-size:10px;color:#6b8290;margin:9px 13px 0;line-height:1.5}
.public-site .firmware-notes .firmware-notes-content{font-size:11.5px;line-height:1.6}
.public-site .firmware-report{background:#fbfdfe}
.public-site .report-details summary{color:#1e4155;font-size:11.5px;font-weight:750;padding:13px 16px;min-height:43px;background:#f9fcfd}
.public-site .firmware-related{margin-top:14px;border-radius:9px}
.public-site .firmware-related .window-title{min-height:45px;padding:9px 14px}
.public-site .firmware-related .window-title h2{font-size:14px!important}
.public-site .firmware-related .window-title>a{color:#076b74!important;font-weight:750}
.public-site .firmware-related .related-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding:13px 15px}
.public-site .firmware-related .related-file{background:#fff;border-color:#d2e2e9;border-radius:7px;padding:8px}
.public-site .firmware-related .related-file .row-download{flex-basis:34px;width:34px;height:31px}
.public-site .firmware-related .related-file-text strong{font-size:11px}

@media(max-width:1100px){
 .public-site .catalog-grid{grid-template-columns:minmax(0,1fr) 290px;gap:13px}
 .public-site .home-page .public-filters{gap:10px}
 .public-site .home-page .public-filters select{width:170px}
 .public-site .firmware-layout.with-board{grid-template-columns:minmax(0,1fr) minmax(240px,34%)}
 .public-site .firmware-layout.with-board .firmware-spec-grid{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:9px}
 .public-site .firmware-layout.with-board .firmware-spec:nth-child(3){padding-left:0;border-left:0}
}
@media(max-width:850px){
 .public-site .head-inner{height:84px}
 .public-site .nav-inner{padding-top:9px;padding-bottom:9px;gap:9px}
 .public-site .catalog-grid{grid-template-columns:1fr}
 .public-site .sidebar{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
 .public-site .sidebar-window:first-child{grid-row:span 2}
 .public-site .firmware-layout.with-board{grid-template-columns:1fr}
 .public-site .firmware-layout .firmware-board{grid-column:1;grid-row:auto}
 .public-site .firmware-layout.with-board .firmware-spec-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
 .public-site .firmware-related .related-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:630px){
 .public-site .shell{padding-left:12px;padding-right:12px}
 .public-site .head-inner{height:75px}
 .public-site .brand-mark{transform:scale(.78);flex-basis:45px;margin-left:-5px;margin-right:-3px}
 .public-site .brand{gap:7px}
 .public-site .brand-copy{padding-left:10px}
 .public-site .brand-copy strong{font-size:18px}
 .public-site .brand-copy small{font-size:11px}
 .public-site .site-header::after{width:65px;height:65px;right:1%}
 .public-site .top-nav{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));width:100%}
 .public-site .top-nav a{padding:8px 2px;justify-content:center;font-size:10px;gap:3px}
 .public-site .top-nav a span{font-size:14px}
 .public-site .nav-search{flex-basis:100%;width:100%}
 .public-site .home-page .filter-panel{padding:10px}
 .public-site .home-page .public-filters{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%;column-gap:10px}
 .public-site .home-page .public-filters label{display:grid;gap:4px;font-size:10px;min-width:0}
 .public-site .home-page .public-filters select{width:100%;min-width:0;max-width:100%;height:35px;font-size:11px}
 .public-site .home-page .public-filters .sort-filter{padding-left:0;border-left:0;grid-column:1/-1}
 .public-site .home-page .public-filters .filter-apply{grid-column:1/-1}
 .public-site .home-page .public-filters .filter-clear{grid-column:1/-1}
 .public-site .library-window .window-title{min-height:55px;padding:10px}
 .public-site .library-window .window-title::after{width:25px;height:23px;right:10px}
 .public-site .library-window .window-title h1{font-size:15px}
 .public-site .library-count-badge{padding:4px 8px;font-size:10px}
 .public-site .file-header,.public-site .lib-row,.public-site .lib-row:nth-child(odd),.public-site .lib-row:nth-child(even){grid-template-columns:minmax(0,1fr) 62px 41px}
 .public-site .file-header>span:nth-child(3),.public-site .file-row-count{display:none}
 .public-site .file-rows{padding:0 9px 10px;gap:7px}
 .public-site .file-header{margin:10px 9px 7px}
 .public-site .lib-row{min-height:67px}
 .public-site .file-cell-main{gap:7px;padding:9px}
 .public-site .file-text strong{font-size:11px}
 .public-site .file-text small{font-size:9.5px}
 .public-site .file-row-size{font-size:10px}
 .public-site .row-download{width:33px;height:31px}
 .public-site .sidebar{grid-template-columns:1fr}
 .public-site .sidebar-window:first-child{grid-row:auto}
 .public-site .detail-breadcrumb{padding:8px 10px}
 .public-site .firmware-hero{min-height:88px;padding:14px 13px;gap:10px}
 .public-site .firmware-hero h1{font-size:16px}
 .public-site .firmware-hero-icon{flex-basis:38px;padding-right:10px}
 .public-site .firmware-hero-icon .file-icon{transform:scale(.9)}
 .public-site .firmware-layout{padding:10px;gap:10px}
 .public-site .firmware-card-header{padding:9px 12px;min-height:41px}
 .public-site .firmware-card-header h2{font-size:12px}
 .public-site .firmware-card-header::after{width:25px;height:21px;right:10px}
 .public-site .firmware-spec-grid,.public-site .firmware-layout.with-board .firmware-spec-grid{grid-template-columns:repeat(2,minmax(0,1fr));padding:11px 12px;row-gap:13px}
 .public-site .firmware-spec:nth-child(odd){padding-left:0;border-left:0}
 .public-site .firmware-spec dt{font-size:9.5px}
 .public-site .firmware-spec dd{font-size:11px}
 .public-site .firmware-spec.spec-filename{grid-column:1/-1}
 .public-site .firmware-spec.spec-filename{border-left:0;padding-left:0}
 .public-site .firmware-downloads .detail-actions{padding:11px 12px 5px;gap:8px}
 .public-site .firmware-downloads .download-action{flex:1 1 100%;width:100%;font-size:11px;min-height:41px}
 .public-site .firmware-downloads .copy-action{min-height:35px}
 .public-site .firmware-compatibility-warning{margin:5px 12px 12px;font-size:10px}
 .public-site .firmware-board .board-photo-frame img{max-height:260px}
 .public-site .firmware-related .related-grid{grid-template-columns:1fr;gap:7px;padding:10px}
 .public-site .site-footer .shell{min-height:65px;justify-content:center;flex-direction:column;gap:3px}
}
@media(prefers-reduced-motion:reduce){.public-site *{transition:none!important}}

/* Wrapper keeps the optional image column balanced even when metadata is sparse. */
.public-site .firmware-layout .firmware-primary{grid-column:1;display:grid;gap:12px;min-width:0;align-content:start}
.public-site .firmware-layout.with-board .firmware-board{grid-column:2;grid-row:1;align-self:stretch}
.public-site .firmware-layout.photo-only .firmware-board{grid-column:1/-1;grid-row:auto}
.public-site .firmware-layout .firmware-primary>.firmware-card{grid-column:auto}
@media(max-width:850px){
 .public-site .firmware-layout .firmware-primary{grid-column:1}
 .public-site .firmware-layout.with-board .firmware-board{grid-column:1;grid-row:auto}
}
