.player { position: relative; isolation: isolate; overflow: hidden; width: 100%; background: #070908; color: #f2f4f1; outline: none; } .player:focus-visible { box-shadow: inset 0 0 0 3px rgba(242, 244, 241, 0.9); } .video { display: block; object-fit: contain; background: #070908; cursor: pointer; } .player[data-caption-size="small"] video::cue { font-size: 0.82rem; } .player[data-caption-size="medium"] video::cue { font-size: 1rem; } .player[data-caption-size="large"] video::cue { font-size: 1.22rem; } .player video::cue { color: #fff; background: rgba(5, 7, 6, 0.88); text-shadow: 0 1px 4px rgba(0, 0, 0, 0.9); } .loading { position: absolute; inset: 0; display: grid; place-content: center; justify-items: center; gap: 0.65rem; background: rgba(7, 9, 8, 0.3); color: rgba(242, 244, 241, 0.9); font-size: 0.75rem; font-weight: 650; letter-spacing: 0.01em; pointer-events: none; } .error { position: absolute; left: 50%; top: 50%; width: min(88%, 28rem); transform: translate(-50%, -50%); border: 1px solid rgba(255, 255, 255, 0.16); border-radius: 0.75rem; background: rgba(11, 15, 14, 0.94); padding: 1rem; text-align: center; font-size: 0.75rem; line-height: 1.45; } .chrome { position: absolute; inset: auto 0 0; z-index: 3; padding: 3.5rem 0.75rem 0.7rem; background: linear-gradient(to bottom, transparent, rgba(4, 6, 5, 0.86) 45%, rgba(4, 6, 5, 0.98)); opacity: 0; transform: translateY(5px); pointer-events: none; transition: opacity 180ms ease, transform 180ms ease; } .chromeVisible { opacity: 1; transform: translateY(0); pointer-events: auto; } .timelineRow { display: grid; grid-template-columns: 2.8rem minmax(0, 1fr) 2.8rem; align-items: center; gap: 0.55rem; } .time { color: rgba(242, 244, 241, 0.78); font-variant-numeric: tabular-nums; font-size: 0.69rem; font-weight: 650; } .time:last-child { text-align: right; } .timeline, .volume { margin: 0; appearance: none; height: 1.35rem; background: transparent; cursor: pointer; } .timeline::-webkit-slider-runnable-track, .volume::-webkit-slider-runnable-track { height: 0.22rem; border-radius: 999px; background: linear-gradient(to right, #f2f4f1 var(--player-progress, 0%), rgba(255, 255, 255, 0.3) var(--player-progress, 0%)); } .volume::-webkit-slider-runnable-track { background: rgba(255, 255, 255, 0.35); } .timeline::-moz-range-track, .volume::-moz-range-track { height: 0.22rem; border-radius: 999px; background: rgba(255, 255, 255, 0.3); } .timeline::-moz-range-progress { height: 0.22rem; border-radius: 999px; background: #f2f4f1; } .timeline::-webkit-slider-thumb, .volume::-webkit-slider-thumb { width: 0.78rem; height: 0.78rem; margin-top: -0.28rem; appearance: none; border: 0; border-radius: 50%; background: #f2f4f1; box-shadow: 0 1px 5px rgba(0, 0, 0, 0.45); } .timeline::-moz-range-thumb, .volume::-moz-range-thumb { width: 0.78rem; height: 0.78rem; border: 0; border-radius: 50%; background: #f2f4f1; } .timeline:focus-visible, .volume:focus-visible { outline: 2px solid #f2f4f1; outline-offset: 3px; } .controlsRow { display: flex; align-items: center; gap: 0.2rem; min-height: 2.75rem; } .primaryControl, .iconControl { position: relative; display: inline-grid; place-items: center; min-width: 2.75rem; min-height: 2.75rem; border: 0; border-radius: 0.55rem; color: rgba(242, 244, 241, 0.88); cursor: pointer; transition: background-color 150ms ease, color 150ms ease, transform 150ms ease; } .primaryControl { background: #f2f4f1; color: #0b0f0e; } .iconControl { background: transparent; } .primaryControl:hover, .iconControl:hover, .activeControl { background: rgba(255, 255, 255, 0.14); color: #fff; } .primaryControl:hover { background: #fff; color: #0b0f0e; } .primaryControl:active, .iconControl:active { transform: scale(0.96); } .primaryControl:focus-visible, .iconControl:focus-visible, .option:focus-visible, .textControl:focus-visible { outline: 2px solid #fff; outline-offset: 2px; } .skipLabel { position: absolute; inset: 0; display: grid; place-items: center; padding-top: 0.05rem; font-size: 0.48rem; font-weight: 800; } .volumeGroup { display: flex; align-items: center; } .volume { width: 4.5rem; } .lessonLabel { margin-left: 0.35rem; color: rgba(242, 244, 241, 0.56); font-size: 0.65rem; font-weight: 650; letter-spacing: 0.04em; text-transform: uppercase; } .utilityControls { position: relative; display: flex; align-items: center; margin-left: auto; gap: 0.1rem; } .settingsPanel { position: absolute; right: 0; bottom: calc(100% + 0.65rem); width: min(20rem, calc(100vw - 2rem)); border: 1px solid rgba(255, 255, 255, 0.14); border-radius: 0.75rem; background: rgba(14, 20, 19, 0.98); padding: 0.8rem; color: #f2f4f1; box-shadow: 0 18px 50px rgba(0, 0, 0, 0.42); } .settingsSection { margin-top: 0.8rem; border-top: 1px solid rgba(255, 255, 255, 0.12); padding-top: 0.8rem; } .settingsHeading { display: flex; align-items: center; justify-content: space-between; gap: 1rem; } .settingsLabel { font-size: 0.68rem; font-weight: 750; letter-spacing: 0.06em; text-transform: uppercase; } .optionGrid { display: flex; flex-wrap: wrap; gap: 0.35rem; margin-top: 0.55rem; } .option, .textControl { min-height: 2.25rem; border: 1px solid rgba(255, 255, 255, 0.14); border-radius: 0.45rem; padding: 0 0.65rem; color: rgba(242, 244, 241, 0.76); font-size: 0.7rem; font-weight: 650; cursor: pointer; } .option:hover, .textControl:hover, .optionSelected { border-color: rgba(255, 255, 255, 0.42); background: rgba(255, 255, 255, 0.1); color: #fff; } .textControl { min-height: 1.9rem; } .shortcutHint { margin-top: 0.8rem; color: rgba(242, 244, 241, 0.46); font-size: 0.62rem; line-height: 1.45; } @media (max-width: 640px) { .chrome { padding: 2.5rem 0.45rem 0.38rem; } .timelineRow { grid-template-columns: 2.5rem minmax(0, 1fr) 2.5rem; gap: 0.35rem; } .volumeGroup, .lessonLabel { display: none; } .primaryControl, .iconControl { min-width: 2.55rem; min-height: 2.55rem; } .settingsPanel { position: fixed; right: 0.75rem; bottom: max(0.75rem, env(safe-area-inset-bottom)); left: 0.75rem; width: auto; } } @media (prefers-reduced-motion: reduce) { .chrome, .primaryControl, .iconControl { transition-duration: 80ms; transform: none; } }