*{
  box-sizing:border-box}
body{
  margin:0;
  background:var(--bg);
  color:var(--textPrimary);
  font-family:var(--body-font);
  font-size:var(--body-M);
  line-height:1.6}
button,input,textarea,select{
  font:inherit}
button,input,textarea,select{
  min-height:var(--touch)}
button{
  cursor:pointer}
button:disabled{
  cursor:default;
  opacity:.55}
button,a,input,textarea,select{
  outline-offset:var(--xs)}
:focus-visible{
  outline:var(--line) solid var(--primary)}
h1,h2,p{
  margin:0}
h1{
  font-family:var(--display-font);
  font-size:var(--display-L);
  line-height:1.16;
  font-weight:var(--weight);
  white-space:pre-line}
h2{
  font-family:var(--display-font);
  font-size:var(--title-L);
  line-height:1.35}
.muted{
  color:var(--textSecondary)}
.fine,.timestamp{
  font-size:var(--caption)}
.eyebrow{
  font-size:var(--caption);
  letter-spacing:.16em;
  font-weight:var(--weight);
  color:var(--primary)}
.wordmark{
  font-family:var(--display-font);
  font-size:var(--display-XL);
  color:var(--primary);
  text-decoration:none}
.stack{
  display:flex;
  flex-direction:column;
  gap:var(--md)}
.screen{
  width:100%;
  max-width:var(--content);
  margin:0 auto;
  padding:var(--s40);
  display:flex;
  flex-direction:column;
  gap:var(--lg)}
.page-header{
  display:flex;
  flex-direction:column;
  gap:var(--sm);
  margin-bottom:var(--sm)}
.pressable{
  border:var(--line) solid var(--border);
  border-radius:var(--radius-sm);
  padding:var(--s12) var(--lg);
  background:var(--bgElevated);
  color:var(--textPrimary);
  transition:transform var(--fast),background var(--fast);
  font-weight:var(--weight)}
.pressable:hover{
  background:var(--surface)}
.pressable:active{
  transform:scale(var(--press-scale))}
.primary{
  background:var(--primary);
  color:var(--primaryContrast);
  border-color:var(--primary)}
.primary:hover{
  background:var(--primary);
  filter:brightness(.94)}
.card{
  background:var(--bgElevated);
  border:var(--line) solid var(--surfaceAlt);
  border-radius:var(--radius);
  padding:var(--lg);
  display:flex;
  flex-direction:column;
  gap:var(--md)}
.hero{
  background:var(--surface);
  padding:var(--s40);
  position:relative;
  overflow:hidden}
.hero h2{
  font-size:var(--display-M);
  max-width:24ch}
.hero p{
  max-width:56ch}
.hero .avatar{
  width:var(--s56);
  height:var(--s56);
  border-radius:var(--pill);
  background:var(--primary);
  color:var(--primaryContrast);
  display:grid;
  place-items:center;
  font-size:var(--title-L)}
.notice{
  background:var(--surfaceAlt);
  color:var(--textPrimary);
  border-left:var(--xs) solid var(--primary);
  border-radius:var(--radius-sm);
  padding:var(--md)}
[hidden]{
  display:none!important}
.field{
  display:flex;
  flex-direction:column;
  gap:var(--sm);
  font-size:var(--label);
  font-weight:var(--weight)}
input:not([type=range]),textarea,select{
  width:100%;
  background:var(--bgElevated);
  color:var(--textPrimary);
  border:var(--line) solid var(--border);
  border-radius:var(--radius-sm);
  padding:var(--s12) var(--md)}
input[type=range]{
  accent-color:var(--primary);
  width:100%;
  cursor:pointer}
textarea{
  resize:vertical}
.login-page{
  min-height:100dvh;
  display:grid;
  grid-template-columns:1.05fr 1fr}
.login-story{
  background:var(--surface);
  padding:var(--s56);
  display:flex;
  flex-direction:column;
  gap:var(--xl);
  justify-content:center;
  position:relative;
  overflow:hidden}
.login-story h1{
  font-size:var(--display-XL);
  max-width:15ch}
.login-story .intro{
  font-size:var(--body-L);
  color:var(--textSecondary);
  max-width:38ch}
.login-story .wordmark{
  position:absolute;
  top:var(--lg)}
.orbit{
  font-family:var(--display-font);
  font-size:calc(var(--display-XL)*2);
  line-height:1;
  color:var(--primary)}
.login-panel{
  display:flex;
  align-items:center;
  justify-content:center;
  padding:var(--xl)}
.login-panel .screen{
  max-width:var(--login);
  gap:var(--xl);
  padding:var(--lg)}
.app-shell{
  min-height:100dvh;
  display:grid;
  grid-template-columns:var(--sidebar) 1fr;
  grid-template-rows:auto 1fr}
.sidebar{
  grid-row:1 / 3;
  padding:var(--xl) var(--lg);
  background:var(--bgElevated);
  border-right:var(--line) solid var(--surfaceAlt);
  display:flex;
  flex-direction:column;
  gap:var(--lg);
  position:sticky;
  top:0;
  height:100dvh}
.nav{
  display:flex;
  flex-direction:column;
  gap:var(--sm);
  margin-top:var(--xl)}
.nav button{
  text-align:left;
  border-color:transparent;
  background:transparent}
.nav .selected{
  background:var(--surfaceAlt);
  color:var(--primary)}
.sidebar-bottom{
  margin-top:auto;
  display:flex;
  flex-direction:column;
  gap:var(--md)}
.outlet{
  min-width:0}
.offline{
  grid-column:2;
  margin:var(--md)}
.dashboard-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:var(--lg)}
.dashboard-grid .card{
  min-height:calc(var(--touch)*5)}
.dashboard-grid button{
  margin-top:auto;
  align-self:flex-start}
.conversation{
  height:48dvh;
  min-height:calc(var(--touch)*5);
  overflow:auto;
  overscroll-behavior:contain;
  padding:var(--md);
  background:var(--bgElevated);
  border-radius:var(--radius)}
.messages{
  display:flex;
  flex-direction:column;
  gap:var(--s12);
  padding-block:var(--md)}
.bubble{
  max-width:85%;
  align-self:flex-start;
  border-radius:var(--radius);
  padding:var(--s12) var(--md);
  background:var(--bubbleTheirs);
  color:var(--bubbleTheirsText)}
.bubble.mine{
  align-self:flex-end;
  background:var(--bubbleMineStart);
  color:var(--bubbleMineText)}
.message-body{
  white-space:pre-wrap;
  overflow-wrap:anywhere}
.timestamp{
  margin-top:var(--xs)}
.quoted{
  border-left:var(--line) solid currentColor;
  padding-left:var(--sm);
  margin-bottom:var(--sm)}
.chat-photo{
  max-width:100%;
  max-height:calc(var(--touch)*6);
  border-radius:var(--radius-sm);
  object-fit:contain}
.bubble audio{
  max-width:100%}
.composer{
  display:flex;
  gap:var(--md);
  align-items:flex-end}
.composer textarea{
  flex:1}
.player-card{
  background:var(--bgElevated);
  border-radius:var(--radius);
  padding:var(--md);
  max-width:var(--player);
  display:flex;
  flex-direction:column;
  gap:var(--sm)}
.player-card:fullscreen{
  position:relative;
  width:100%;
  height:100%;
  max-width:none;
  margin:0;
  padding:0;
  border-radius:0;
  gap:0;
  overflow:hidden;
  background:var(--shadowColor)}
.player-overlay{
  display:flex;
  flex-direction:column;
  gap:var(--sm)}
.player-overlay input[type=range]{
  margin:0}
.player-card:fullscreen .movie{
  width:100%;
  height:100%;
  max-height:none;
  aspect-ratio:auto;
  border-radius:0;
  object-fit:contain}
.player-card:fullscreen .player-overlay{
  position:absolute;
  inset:auto 0 0;
  max-height:100%;
  overflow:auto;
  padding:var(--md);
  background:var(--overlay);
  color:var(--fullscreenInk);
  transition:opacity var(--base)}
.player-card:fullscreen .player-overlay .muted{
  color:inherit}
.fullscreen-hide-controls{display:none}
.player-card:fullscreen .fullscreen-hide-controls{
  display:block;
  position:absolute;
  top:var(--md);
  right:var(--md);
  z-index:2}
.player-card:fullscreen.controls-hidden .player-overlay,
.player-card:fullscreen.controls-hidden .fullscreen-hide-controls,
.player-card:fullscreen.controls-idle .fullscreen-hide-controls{
  visibility:hidden;
  opacity:0;
  pointer-events:none}
.player-card:fullscreen.controls-hidden,
.player-card:fullscreen.controls-idle{
  cursor:none}
.player-card:fullscreen.controls-idle .player-overlay{
  opacity:0;
  pointer-events:none}
.player-card:fullscreen .track-settings[open] .local-track-controls{
  background:var(--bgElevated);
  color:var(--textPrimary);
  padding:var(--md);
  border-radius:var(--radius-sm)}
.track-settings summary{
  display:inline-flex;
  align-items:center;
  min-height:var(--touch);
  cursor:pointer}
.local-track-controls{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(min(100%,var(--sidebar)),1fr));
  gap:var(--md);
  margin-top:var(--sm)}
.local-track-controls>p{
  grid-column:1 / -1}
.movie{
  position:relative;
  isolation:isolate;
  overflow:hidden;
  width:100%;
  max-height:65dvh;
  aspect-ratio:16 / 9;
  background:var(--shadowColor);
  border-radius:var(--radius-sm)}
.movie canvas,.movie video{
  display:block;
  max-width:100%;
  max-height:100%}
.movie>.ASS-box{
  z-index:1}
.movie>svg{
  position:absolute;
  inset:0;
  pointer-events:none}
.movie.captions-off>.ASS-box,.movie.captions-off>svg{
  display:none!important}
.movie-captions{
  position:absolute;
  inset:auto var(--lg) var(--lg);
  z-index:2;
  pointer-events:none;
  text-align:center;
  white-space:pre-line;
  color:var(--fullscreenInk);
  font-size:var(--body-M);
  line-height:var(--body-M-line)}
.movie-captions[hidden]{display:none}
.movie-captions span{
  background:var(--overlay);
  padding:var(--xs) var(--sm);
  box-decoration-break:clone;
  -webkit-box-decoration-break:clone}
.player-card:fullscreen .movie-captions{
  font-size:var(--title-L);
  line-height:var(--title-L-line)}
.seek-tools{
  display:flex;
  gap:var(--sm);
  align-items:center}
.seek-tools input{
  max-width:var(--sidebar)}
.volume-controls{
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:var(--sm)}
.volume-controls input[type=range]{
  flex:1;
  min-width:var(--touch);
  max-width:var(--sidebar)}
.player-card:fullscreen .player-overlay{
  display:grid;
  grid-template-columns:1fr auto;
  align-items:center}
.player-card:fullscreen .player-overlay>input,
.player-card:fullscreen .player-overlay>.controls,
.player-card:fullscreen .player-overlay>button,
.player-card:fullscreen .player-overlay>.track-settings,
.player-card:fullscreen .player-overlay>.notice{
  grid-column:1 / -1}
@media(max-width:850px){
  .player-card:fullscreen .player-overlay{
    grid-template-columns:1fr}
}
.controls{
  display:flex;
  align-items:center;
  gap:var(--sm);
  flex-wrap:wrap}
.reaction{
  font-size:var(--display-L);
  min-height:var(--s56)}
.boot{
  display:grid;
  place-items:center;
  min-height:100dvh}
.chat-screen .card{
  padding:var(--md)}
@media(max-width:850px){
  .app-shell{
  grid-template-columns:1fr}
.sidebar{
  grid-row:auto;
  position:static;
  width:100%;
  height:auto;
  padding:var(--md);
  border-right:none;
  gap:var(--sm)}
.sidebar .wordmark{
  font-size:var(--display-M)}
.sidebar>.eyebrow{
  display:none}
.nav{
  flex-direction:row;
  flex-wrap:wrap;
  margin:0;
  gap:var(--xs)}
.nav button{
  padding-inline:var(--md);
  flex:1}
.sidebar-bottom{
  flex-direction:row;
  align-items:center;
  flex-wrap:wrap}
.sidebar-bottom p{
  flex:1}
.sidebar-bottom select{
  width:auto}
.offline{
  grid-column:1}
.screen{
  padding:var(--lg)}
.login-page{
  grid-template-columns:1fr}
.login-story{
  padding:var(--xl);
  min-height:40dvh;
  gap:var(--lg)}
.login-story .wordmark{
  position:static}
.login-story h1{
  font-size:var(--display-L);
  max-width:24ch}
.login-story .orbit,.login-story>.fine{
  display:none}
.login-panel{
  padding:var(--md)}
.dashboard-grid{
  grid-template-columns:1fr}
.hero{
  padding:var(--lg)}
}
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{
  transition:none!important;
  animation:none!important}
.pressable:active{
  transform:none}
}
[data-motion=reduced] .pressable{
  transition:none}
[data-motion=reduced] .pressable:active{
  transform:none}
