/* The shared guestlist is a paper object, not another game's settings palette. */
.session-dialog {
  --action-fibre-edge: url("assets/nachtzine/release/score-paper-v1.webp");
  --session-ink: #20272b;
  --session-paper: #f1e6cc;
  --session-yellow: #e8c64e;
  --session-error: #923327;
  width: min(700px, calc(100vw - 40px));
  max-width: none;
  max-height: calc(100dvh - 40px);
  margin: auto;
  padding: 0;
  border: 0;
  overflow: auto;
  overscroll-behavior: contain;
  color: var(--session-ink);
  background: var(--session-paper);
  background-image: url("assets/nachtzine/release/paper-stock-v1.webp");
  background-size: 720px auto;
  box-shadow: 2px 4px 2px #090d1066, 10px 19px 18px #090d105c, 22px 35px 65px #090d1047;
  font-family: "Nachtzine Print", "Nachtzine Word", sans-serif;
  font-weight: 400;
  font-size: 20px;
  line-height: 1.25;
}
.session-dialog::backdrop { background: #151e29ed; }
.session-dialog[open] { animation: session-arrive 180ms steps(3, end) both; }
.session-dialog [hidden] { display: none !important; }
.session-dialog *, .session-dialog *::before, .session-dialog *::after { box-sizing: border-box; }
.session-sheet { margin: 0; padding: 30px clamp(24px, 4vw, 56px) 28px; border-top: 9px solid var(--session-ink); }
.session-heading { text-align: center; }
.session-overline { margin: 0 0 1px; font-size: 19px; text-transform: uppercase; letter-spacing: .14em; }
.session-heading h2 { margin: 0; font-size: clamp(40px, 5.5vw, 64px); font-weight: 900; line-height: 1; }
.session-heading h2:focus { outline: none; }
.session-heading p:last-child { margin: 9px 0 20px; }
.session-modes { display: grid; grid-template-columns: 1fr 1fr; width: min(330px, 100%); gap: 14px; margin: 0 auto 24px; }
.session-dialog button { font: inherit; color: inherit; cursor: pointer; border: 0; border-radius: 0; min-height: 44px; padding: 8px 16px; line-height: 1; }
.session-modes button { background: transparent; border: 2px solid var(--session-ink); font-size: 25px; font-weight: 900; }
.session-modes button[aria-pressed="true"] { background: var(--session-yellow); box-shadow: 3px 3px 0 var(--session-ink); }
.session-dialog button:disabled { opacity: .45; cursor: default; }
.session-dialog button:not(:disabled):active { transform: translateY(2px); }
.session-dialog :is(button, input):focus-visible { outline: 3px dotted var(--session-ink); outline-offset: 4px; }
.session-dialog label { font-weight: 900; font-size: 21px; }
.session-dialog input { width: 100%; min-width: 0; height: 49px; border: 0; border-bottom: 2px solid #20272b94; border-radius: 0; padding: 4px 9px; background: #fffaf038; color: var(--session-ink); font: 400 28px/1 "Nachtzine Print", "Nachtzine Word", sans-serif; }
.session-dialog input[aria-invalid="true"] { border-color: var(--session-error); outline: 2px solid var(--session-error); outline-offset: 1px; }
.session-solo { max-width: 390px; margin: auto; }
.session-solo label { display: block; margin-bottom: 8px; }
.session-solo label span { font-weight: 400; font-size: 18px; }
.session-players { display: grid; gap: 7px; }
.session-player { display: grid; grid-template-columns: 84px minmax(0, 1fr) 62px; align-items: center; gap: 10px; }
.session-dialog .session-remove { background: transparent; padding: 8px 4px; text-decoration: underline; text-underline-offset: 3px; font-size: 17px; }
.session-dialog .session-add { display: block; margin: 11px 0 0 94px; padding-left: 0; padding-right: 0; background: transparent; font-size: 22px; text-decoration: underline; text-underline-offset: 5px; }
.session-hint { margin: 14px 0 0; text-align: center; font-size: 17px; }
.session-running { margin: 12px auto 0; max-width: 35ch; text-align: center; font-size: 19px; }
.session-error { min-height: 23px; margin: 8px 0 5px; color: var(--session-error); font-size: 18px; text-align: center; }
.session-actions { display: flex; justify-content: center; align-items: center; gap: 20px; }
.session-dialog .session-confirm { min-width: 150px; min-height: 50px; background: var(--session-yellow); box-shadow: 3px 4px 0 var(--session-ink); font-weight: 900; font-size: 28px; }
.session-dialog .session-cancel { background: transparent; text-decoration: underline; text-underline-offset: 4px; }
@media (min-width: 680px) {
  .session-dialog[data-session-mode="group"][data-session-dense="true"] .session-heading h2 { font-size: 44px; }
  .session-dialog[data-session-mode="group"][data-session-dense="true"] .session-heading p:last-child { margin: 6px 0 14px; }
  .session-dialog[data-session-mode="group"][data-session-dense="true"] .session-modes { margin-bottom: 18px; }
  .session-dialog[data-session-mode="group"][data-session-dense="true"] .session-players { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px 26px; }
  .session-dialog[data-session-mode="group"][data-session-dense="true"] .session-player { grid-template-columns: minmax(0, 1fr) 44px; gap: 2px 6px; }
  .session-dialog[data-session-mode="group"][data-session-dense="true"] .session-player label { grid-column: 1 / -1; font-size: 17px; }
  .session-dialog[data-session-mode="group"][data-session-dense="true"] .session-player input { font-size: 24px; height: 44px; }
  .session-dialog[data-session-mode="group"][data-session-dense="true"] .session-add { margin-left: 0; }
}
@keyframes session-arrive { 0% { transform: translateY(-10px) rotate(-.6deg); } 60% { transform: translateY(2px); } 100% { transform: none; } }
/* The utility belongs to the same printed-paper world as the games. Its
   material is separate from text/input so rough edges never mask controls. */
.session-dialog { background:transparent; box-shadow:none; filter:drop-shadow(2px 4px 2px #090d1066) drop-shadow(12px 20px 18px #090d105c); }
.session-sheet { position:relative; isolation:isolate; border-top:0; padding-top:38px; padding-bottom:34px; }
.session-sheet::before { content:""; position:absolute; inset:0; z-index:-1; pointer-events:none; background:var(--session-paper) url("assets/nachtzine/release/paper-stock-v1.webp") center/720px; mask-image:url("assets/nachtzine/shipping/story-case/brief-sheet-v1.webp"),linear-gradient(#000,#000); mask-position:center; mask-size:100% 100%,calc(100% - 80px) calc(100% - 64px); mask-repeat:no-repeat; mask-composite:add; }
.session-heading h2,.session-overline { mask:var(--ink-grain-mask,none) 0 0/384px 320px; }
.session-modes button,.session-dialog .session-confirm { position:relative; isolation:isolate; border:0; background:none; box-shadow:none; filter:drop-shadow(1px 2px 1px #090d1040); }
.session-modes button::before,.session-confirm::before { content:""; position:absolute; inset:0; z-index:-1; pointer-events:none; background:var(--session-paper) url("assets/nachtzine/release/paper-stock-v1.webp") 40px 70px/620px; mask-image:var(--action-fibre-edge),linear-gradient(#000,#000); mask-position:center; mask-size:100% 100%,calc(100% - 18px) calc(100% - 14px); mask-repeat:no-repeat; }
.session-modes button[aria-pressed="true"],.session-dialog .session-confirm { background:none; box-shadow:none; }
.session-modes button[aria-pressed="true"]::before,.session-confirm::before { background-color:var(--session-yellow); background-blend-mode:multiply; }
.session-modes button[aria-pressed="true"]::after { content:""; position:absolute; width:34px; height:3px; left:calc(50% - 17px); bottom:5px; background:var(--session-ink); mask:var(--ink-grain-mask,none) 0 0/192px 160px; }
.session-dialog .session-confirm { min-height:60px; min-width:200px; padding:14px 32px 17px; }
@media (max-height: 650px) {
  .session-sheet { padding-top: 20px; padding-bottom: 20px; }
  .session-heading h2 { font-size: 44px; }
  .session-heading p:last-child { margin: 5px 0 12px; }
  .session-modes { margin-bottom: 16px; }
}
@media (max-width: 480px) {
  .session-dialog { width: calc(100vw - 24px); max-height: calc(100dvh - 24px); }
  .session-sheet { padding-left: 18px; padding-right: 18px; }
  .session-player { grid-template-columns: 65px minmax(0, 1fr) 44px; gap: 6px; }
  .session-player label { font-size: 18px; }
  .session-dialog input { font-size: 25px; }
  .session-dialog .session-add { margin-left: 71px; }
  .session-actions { gap: 12px; }
}
@media (prefers-reduced-motion: reduce) { .session-dialog[open] { animation: none; } }
@media (forced-colors: active) {
  .session-dialog { filter:none; }
  .session-sheet::before,.session-modes button::before,.session-confirm::before { display:none; }
  .session-heading h2,.session-overline { mask:none; }
  .session-dialog { background: Canvas; color: CanvasText; border: 2px solid CanvasText; box-shadow: none; }
  .session-dialog :is(button, input) { color: ButtonText; background: ButtonFace; border: 1px solid ButtonText; }
  .session-modes button[aria-pressed="true"] { outline: 3px solid Highlight; outline-offset: 2px; }
  .session-dialog :is(button, input):focus-visible { outline-color: Highlight; }
  .session-error { color: CanvasText; }
}
