.portfolio-view{min-height:180px}
.portfolio-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px}
.portfolio-item{border:1px solid #808080;padding:5px;background:#ece9d8;text-align:center;font-size:12px}
.portfolio-item .thumb{position:relative;width:100%;aspect-ratio:4/3;background:#808080;display:flex;align-items:center;justify-content:center;color:#fff;font-size:11px;overflow:hidden}
.portfolio-item .thumb img,.portfolio-item .thumb video{width:100%;height:100%;object-fit:cover;display:block}
.portfolio-item .item-title{font-weight:bold;margin-bottom:4px}
.portfolio-item .item-desc{color:#444;font-size:11px;line-height:1.3}
.portfolio-videos .portfolio-item .thumb::after{content:'▶';position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-size:24px;opacity:.85;text-shadow:0 1px 2px #000}
.portfolio-list{list-style:none;padding:0;margin:0}
.portfolio-list li{padding:10px 8px;border-bottom:1px solid #c0c0c0;display:flex;gap:12px;align-items:flex-start;font-size:12px}
.portfolio-list li:last-child{border-bottom:none}
.portfolio-list .track-icon{width:32px;height:32px;background:#214d77;color:#fff;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:14px}
.portfolio-list .track-info{flex:1;min-width:0}
.portfolio-list .track-title{font-weight:bold;margin-bottom:2px}
.portfolio-list .track-desc{color:#444;font-size:11px;line-height:1.3}
.portfolio-empty{padding:24px 12px;text-align:center;color:#666;font-size:13px}
.portfolio-item,.portfolio-list li[data-src]{cursor:pointer}
.portfolio-item:hover,.portfolio-list li[data-src]:hover{background:#d8e4f0}
.portfolio-list li.active{background:#0a246a;color:#fff}
.portfolio-list li.active .track-desc{color:#ddd}

.player-now-playing{font-weight:bold;margin-bottom:12px;min-height:1.4em}
.player-controls{display:flex;gap:8px;margin-bottom:12px}
.player-controls button{min-width:36px;padding:6px 10px}
.player-playlist{max-height:180px;overflow-y:auto;border:1px inset #808080}

.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}
.media-window{min-width:320px;min-height:300px;overflow:hidden}
.media-window .titlebar{user-select:none}
.program-menu{height:24px;flex:0 0 24px;display:flex;align-items:center;gap:2px;padding:0 5px;background:#d4d0c8;border-bottom:1px solid #808080;color:#000;font-size:11px}
.program-menu button{font:inherit;color:inherit;background:transparent;border:0;padding:3px 7px;min-width:0;cursor:default}
.program-menu button::first-letter{text-decoration:underline}
.program-menu button:hover,.program-menu button:focus-visible{background:#0a246a;color:#fff;outline:none}
.viewer-toolbar,.video-button-row{display:flex;align-items:center;gap:4px}
.viewer-toolbar{height:34px;flex:0 0 34px;padding:0 6px;background:#d4d0c8;border-bottom:1px solid #808080}
.viewer-toolbar button,.video-button-row button{min-width:32px;height:25px;padding:2px 7px;background:#d4d0c8;border:2px outset #fff;color:#000;font:11px Tahoma,Arial,sans-serif}
.viewer-toolbar button:active,.video-button-row button:active{border-style:inset;padding:3px 6px 1px 8px}
.viewer-toolbar button:disabled,.video-button-row button:disabled{color:#808080;text-shadow:1px 1px #fff}
.toolbar-divider{height:23px;border-left:1px solid #808080;border-right:1px solid #fff;margin:0 3px}
.program-status{height:24px;flex:0 0 24px;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 5px;background:#d4d0c8;color:#000;font-size:11px}
.program-status span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border:1px inset #fff;padding:2px 5px}
.program-status span:first-child{flex:1}
.program-status span:last-child{flex:0 0 auto}

.image-viewer-canvas{position:relative;flex:1 1 auto;min-height:0;display:flex;align-items:center;justify-content:center;overflow:auto;background:#808080;border:2px inset #fff;padding:10px}
.image-viewer-canvas img{display:block;max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;background:#fff;box-shadow:1px 1px 0 #404040}
.image-viewer-canvas.actual-size{align-items:flex-start;justify-content:flex-start}
.image-viewer-canvas.actual-size img{max-width:none;max-height:none;object-fit:none}

.video-playback-surface{position:relative;flex:1 1 auto;min-height:0;display:flex;align-items:center;justify-content:center;overflow:hidden;background:#000;border:3px inset #fff;margin:5px 6px 0}
.player-video{width:100%;height:100%;max-width:100%;max-height:100%;background:#000;display:block;object-fit:contain}
.media-error{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:min(320px,80%);margin:0;padding:10px;color:#fff;background:#000;border:1px solid #808080;text-align:center;font-size:12px;line-height:1.4}
.video-control-panel{flex:0 0 auto;padding:6px;background:#d4d0c8;color:#000;border-top:1px solid #fff}
.video-seek-row{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.video-seek{flex:1;min-width:70px}
.video-seek-row output{width:86px;text-align:right;font:11px monospace}
.video-button-row{min-height:27px}
.video-button-row .video-volume{width:88px}
.video-button-row button{display:inline-flex;align-items:center;justify-content:center}
.pause-icon{display:inline-block;width:12px;height:13px;background:linear-gradient(90deg,#000 0 4px,transparent 4px 8px,#000 8px 12px)}
.stop-icon{display:inline-block;width:12px;height:12px;background:#000}
.retro-range{accent-color:#0a246a;cursor:pointer}

@media (max-width:760px), (hover:none) and (pointer:coarse){
 .portfolio-grid{grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:8px}
 .portfolio-item{padding:3px}
 .media-window{width:auto!important;height:auto!important;min-width:0!important;min-height:0!important}
 .program-menu{overflow-x:auto}
 .viewer-toolbar{height:42px;flex-basis:42px}
 .viewer-toolbar button{min-width:42px;height:34px}
 .image-viewer-canvas{padding:4px}
 .video-playback-surface{margin:3px 3px 0}
 .video-control-panel{padding:4px}
 .video-seek-row{gap:4px}
 .video-seek-row output{width:76px;font-size:10px}
 .video-button-row{gap:2px;flex-wrap:wrap}
 .video-button-row button{min-width:36px;height:34px;padding-left:5px;padding-right:5px}
 .video-button-row .video-volume{width:min(90px,24vw)}
}
