/* R15K Core – self-hosted fonts, behaviour/state styles, animations.
   Layout & design tokens live in Oxygen (global stylesheet "r15k-design-system"). */

@font-face{font-family:'R15K Pixel';font-style:normal;font-weight:400;font-display:swap;src:url('../fonts/press-start-2p-400-normal.woff2') format('woff2');}
@font-face{font-family:'R15K Mono';font-style:normal;font-weight:400;font-display:swap;src:url('../fonts/courier-prime-400-normal.woff2') format('woff2');}
@font-face{font-family:'R15K Mono';font-style:italic;font-weight:400;font-display:swap;src:url('../fonts/courier-prime-400-italic.woff2') format('woff2');}
@font-face{font-family:'R15K Mono';font-style:normal;font-weight:700;font-display:swap;src:url('../fonts/courier-prime-700-normal.woff2') format('woff2');}

html{scroll-behavior:smooth;scroll-padding-top:calc(var(--r15k-header-h,88px) + 16px);-webkit-text-size-adjust:100%;}
body{-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:clip;}
::selection{background:var(--r15k-blue,#5865F2);color:#fff;}
:focus-visible{outline:3px solid var(--r15k-blue,#5865F2);outline-offset:3px;}
img[data-pixelate],.r15k-pixelated{image-rendering:pixelated;image-rendering:crisp-edges;}

/* Skip link */
.r15k-skip{position:absolute;left:-9999px;top:8px;z-index:9999;padding:.6rem 1rem;background:var(--r15k-onyx,#0c0f0a);color:#fff;font-family:'R15K Pixel',monospace;font-size:.6rem;}
.r15k-skip:focus{left:8px;}

/* Header state */
.r15k-header{--r15k-header-h:88px;}
.r15k-header.is-scrolled .r15k-nav-bar{box-shadow:6px 6px 0 var(--r15k-onyx,#0c0f0a);}
.r15k-panel{display:grid;grid-template-rows:0fr;opacity:0;visibility:hidden;transition:grid-template-rows .35s cubic-bezier(.2,.8,.2,1),opacity .25s ease,visibility 0s linear .35s;}
.r15k-panel > *{min-height:0;overflow:hidden;}
.r15k-header.is-open .r15k-panel{grid-template-rows:1fr;opacity:1;visibility:visible;transition:grid-template-rows .4s cubic-bezier(.2,.8,.2,1),opacity .25s ease,visibility 0s;}
/* Burger icon centering: the wrappers are flex containers so the SVG does not sit
   on the text baseline (which left ~3px extra below); the burger glyph itself has
   one more empty raster row below than above, hence the 1px (0.0625em) nudge. */
.r15k-burger-lines{display:flex;align-items:center;justify-content:center;}
.r15k-icon--burger{transform:translateY(.0625em);}
.r15k-burger-x{display:none;align-items:center;justify-content:center;}
.r15k-header.is-open .r15k-burger-x{display:flex;}
.r15k-header.is-open .r15k-burger-lines{display:none;}
body.r15k-menu-open{overflow:hidden;}
@media (min-width:1024px){body.r15k-menu-open{overflow:auto;}}

/* Quote ticker */
.r15k-quotes{position:relative;overflow:hidden;height:1.6em;line-height:1.6em;}
.r15k-quote{position:absolute;inset:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transform:translateY(0);}
.r15k-quote.is-out{animation:r15kQuoteOut .45s steps(6) forwards;}
.r15k-quote.is-in{animation:r15kQuoteIn .45s steps(6) forwards;}
.r15k-quote.is-fade-out{animation:r15kFadeOut .35s steps(4) forwards;}
.r15k-quote.is-fade-in{animation:r15kFadeIn .35s steps(4) forwards;}
@keyframes r15kQuoteOut{from{transform:translateY(0);opacity:1}to{transform:translateY(-100%);opacity:0}}
@keyframes r15kQuoteIn{from{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}
@keyframes r15kFadeOut{from{opacity:1}to{opacity:0}}
@keyframes r15kFadeIn{from{opacity:0}to{opacity:1}}

/* Typewriter caret */
.r15k-caret::after{content:'_';display:inline-block;margin-left:.1em;animation:r15kBlink 1s steps(2,start) infinite;}
@keyframes r15kBlink{to{visibility:hidden}}

/* Lottie boxes */
.r15k-lottie{display:block;width:100%;height:100%;}
.r15k-lottie svg{display:block;width:100%!important;height:100%!important;}

/* Reveal on scroll (progressive enhancement) */
.r15k-reveal{opacity:0;transform:translateY(12px);transition:opacity .5s steps(5),transform .5s steps(5);}
.r15k-reveal.is-visible{opacity:1;transform:none;}

/* Back to top */
.r15k-totop{opacity:0;pointer-events:none;transition:opacity .2s;}
.r15k-totop.is-visible{opacity:1;pointer-events:auto;}

/* Reduced motion */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto;}
  .r15k-quote,.r15k-caret::after,.r15k-reveal,.r15k-teaser-glitch,.r15k-teaser-cursor,.r15k-ebadge--teaser,.r15k-date--teaser::after{animation:none!important;transition:none!important;}
  .r15k-pixelrain{display:none;}
  .r15k-reveal{opacity:1;transform:none;}
  .r15k-panel{transition:none;}
}



/* ---- prose extras: WP blocks in pixel style ---- */
.r15k-site .r15k-tag a{color:inherit;text-decoration:none;}
.r15k-site .r15k-prose .wp-element-button,.r15k-site .r15k-prose .wp-block-button__link{font-family:var(--r15k-font-pixel);font-size:.6rem;line-height:1;padding:14px 18px;background:var(--r15k-white);color:var(--r15k-onyx);border:3px solid var(--r15k-onyx);border-radius:0;box-shadow:4px 4px 0 var(--r15k-onyx);text-decoration:none;transition:transform .12s steps(2),box-shadow .12s steps(2);}
.r15k-site .r15k-prose .wp-element-button:hover,.r15k-site .r15k-prose .wp-block-button__link:hover{transform:translate(-2px,-2px);box-shadow:6px 6px 0 var(--r15k-onyx);color:var(--r15k-onyx);}
.r15k-site .r15k-prose .wp-block-image img{width:100%;height:auto;}
.r15k-site .r15k-prose .wp-block-buttons{gap:12px;}
.r15k-site .r15k-prose .breakdance-rich-text-styles > * + *{margin-top:1.1em;}
/* ---- a11y / motion hardening ---- */
.r15k-js .r15k-reveal{opacity:0;transform:translateY(12px);}
.r15k-js .r15k-reveal.is-visible{opacity:1;transform:none;}
.r15k-reveal{opacity:1;transform:none;}
.r15k-totop:not(.is-visible){visibility:hidden;}
.r15k-sr{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;}
@media (prefers-reduced-motion:reduce){
  .r15k-site *,.r15k-site *::before,.r15k-site *::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important;}
}
/* =====================================================================
   Day / Night: automatic colour scheme via design tokens.
   Light values live in Oxygen (:root, variables.css). Dark values override
   the same tokens on <body> when the device prefers dark (or data-theme="dark").
   ===================================================================== */
:root { color-scheme: light dark; }
/* Dark palette. The media query is the SINGLE source of truth - no script decides
   the scheme, because several mobile browsers still answer "light" from matchMedia
   while <head> is being parsed; a stamped data-theme would then outrank this block
   and lock the site to the wrong scheme. html[data-theme] is an explicit user
   override only: same specificity, declared later, so it wins when it is present. */
@media (prefers-color-scheme: dark) {
  html:not([data-theme="light"]) body.r15k-site {
    --r15k-onyx: #f2f3ee; --r15k-white: #12140f;
    --r15k-grey: #a8aba4; --r15k-grey-strong: #b9bcb5; --r15k-grey-light: #4d514a; --r15k-grey-faint: #1c1f19;
    --r15k-grid: rgba(242,243,238,0.07); --r15k-grid-blue: rgba(120,131,255,0.16);
    --r15k-blue-tint: #171a2b; --r15k-blue-ink: #9aa3ff; --r15k-line-soft: rgba(242,243,238,0.28);
    --r15k-shadow: 6px 6px 0 #f2f3ee; --r15k-shadow-sm: 4px 4px 0 #f2f3ee; --r15k-shadow-white: 6px 6px 0 #12140f;
  }
}
html[data-theme="dark"] body.r15k-site {
    --r15k-onyx: #f2f3ee; --r15k-white: #12140f;
    --r15k-grey: #a8aba4; --r15k-grey-strong: #b9bcb5; --r15k-grey-light: #4d514a; --r15k-grey-faint: #1c1f19;
    --r15k-grid: rgba(242,243,238,0.07); --r15k-grid-blue: rgba(120,131,255,0.16);
    --r15k-blue-tint: #171a2b; --r15k-blue-ink: #9aa3ff; --r15k-line-soft: rgba(242,243,238,0.28);
    --r15k-shadow: 6px 6px 0 #f2f3ee; --r15k-shadow-sm: 4px 4px 0 #f2f3ee; --r15k-shadow-white: 6px 6px 0 #12140f;
}
/* Footer keeps its own (always dark) palette */
.r15k-site .r15k-footer {
  --r15k-onyx: #0c0f0a; --r15k-white: #ffffff; --r15k-grey: #a8aba4; --r15k-grey-strong: #c9ccc6; --r15k-grey-light: #c9ccc6; --r15k-grey-faint: #eceee9;
  --r15k-shadow: 6px 6px 0 #0c0f0a; --r15k-shadow-sm: 4px 4px 0 #0c0f0a; --r15k-blue-ink: #3B47D6;
}
/* Fixed-contrast text on coloured chips (independent of scheme) */
.r15k-site .r15k-date, .r15k-site .r15k-ebadge, .r15k-site .r15k-label--blue { color: #ffffff; }
.r15k-site .r15k-ebadge--past { color: #c9ccc6; }
.r15k-site .r15k-ebadge--paused { color: var(--r15k-grey); }
.r15k-site .r15k-ebadge--soldout, .r15k-site .r15k-tags--genre .r15k-tag, .r15k-site .r15k-btn--pink { color: #0c0f0a; }
.r15k-site .r15k-btn--primary { color: var(--r15k-white); }
.r15k-site .r15k-btn--primary:hover { color: #ffffff; }
.r15k-site .r15k-avail-dot { box-shadow: 0 0 0 3px rgba(46,204,113,0.25); }
.r15k-site img.r15k-pixel-img, .r15k-site .r15k-about-photo { background: var(--r15k-white); }
/* contrast fixes */
.r15k-site .r15k-avail { background: var(--r15k-white); }
.r15k-site .r15k-footer .r15k-avail { background: #14251b; border-color: #3f7d5b; }
/* ---- readability fixes (contrast + native controls) ---- */
.r15k-site .r15k-quote-author { color: var(--r15k-blue-ink); }
.r15k-site .r15k-crumbs, .r15k-site .r15k-crumbs a { color: var(--r15k-grey-strong); }
.r15k-site .r15k-meta, .r15k-site .r15k-place, .r15k-site .r15k-past-date, .r15k-site .r15k-past-place,
.r15k-site .r15k-card-sub, .r15k-site .r15k-section-sub, .r15k-site .r15k-stat-label,
.r15k-site .r15k-masthead-ed, .r15k-site .r15k-form-note, .r15k-site .r15k-avail-text,
.r15k-site .r15k-hero-eyebrow, .r15k-site .r15k-subhead, .r15k-site .r15k-fact dt,
.r15k-site .r15k-quotes, .r15k-site .r15k-archive-desc, .r15k-site .r15k-single-lead,
.r15k-site .r15k-prose figcaption, .r15k-site .r15k-single-caption { color: var(--r15k-grey-strong); }

/* =====================================================================
   Form Builder – the visual design lives on the element (native design
   properties, all bound to r15k tokens). Below are the ONLY overrides, each
   for something the element exposes no control for:
   ===================================================================== */
/* a) submit button: the colour control flattens tokens to #fff and there is no
      hover control. Oxygen exposes its own custom properties for exactly this. */
.r15k-site .bde-form-builder .breakdance-form-button__submit{
  max-width:100%;white-space:normal;overflow-wrap:anywhere;hyphens:auto;line-height:1.4;
  --bde-button-custom-text-color:var(--r15k-white);
  --bde-button-custom-text-color-hover:#ffffff;
  --bde-button-custom-background-color-hover:var(--r15k-blue);
  transition:transform .12s steps(2),box-shadow .12s steps(2),background-color .12s;
}
.r15k-site .bde-form-builder .breakdance-form-button__submit:hover{box-shadow:6px 6px 0 var(--r15k-onyx);transform:translate(-2px,-2px);}
.r15k-site .bde-form-builder .breakdance-form-button__submit:active{box-shadow:1px 1px 0 var(--r15k-onyx);transform:translate(2px,2px);}
/* b) select arrow: Oxygen paints a fixed grey chevron; ours follows the text colour */
.r15k-site .bde-form-builder select.breakdance-form-field__input{
  appearance:none;-webkit-appearance:none;
  background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,transparent 50%);
  background-position:calc(100% - 20px) 50%,calc(100% - 14px) 50%;
  background-size:6px 6px,6px 6px;background-repeat:no-repeat;padding-right:40px;
}
/* c) checkbox row: keep box and long label aligned, min 24px target (2.5.8) */
.r15k-site .bde-form-builder .breakdance-form-checkbox{display:flex;align-items:flex-start;gap:10px;line-height:1.5;}
.r15k-site .bde-form-builder .breakdance-form-checkbox input[type=checkbox]{flex:none;margin-top:2px;border:3px solid var(--r15k-onyx);border-radius:0;}
/* Native form controls follow the active scheme (fixes white-on-white select popup) */
.r15k-site .breakdance-form .breakdance-form-field__input,
.r15k-site select, .r15k-site input, .r15k-site textarea { color-scheme: light; }
html[data-theme="dark"] body.r15k-site .breakdance-form .breakdance-form-field__input,
html[data-theme="dark"] body.r15k-site select,
html[data-theme="dark"] body.r15k-site input,
html[data-theme="dark"] body.r15k-site textarea { color-scheme: dark; }
@media (prefers-color-scheme: dark) {
  html:not([data-theme="light"]) body.r15k-site .breakdance-form .breakdance-form-field__input,
  html:not([data-theme="light"]) body.r15k-site select,
  html:not([data-theme="light"]) body.r15k-site input,
  html:not([data-theme="light"]) body.r15k-site textarea { color-scheme: dark; }
}
.r15k-site select option,
.r15k-site .breakdance-form select option { background-color: #ffffff; color: #0c0f0a; }
html[data-theme="dark"] body.r15k-site select option,
html[data-theme="dark"] body.r15k-site .breakdance-form select option { background-color: #1c1f19; color: #f2f3ee; }
@media (prefers-color-scheme: dark) {
  html:not([data-theme="light"]) body.r15k-site select option,
  html:not([data-theme="light"]) body.r15k-site .breakdance-form select option { background-color: #1c1f19; color: #f2f3ee; }
}
/* Deliberately no colours on option:checked / option:hover: some engines paint the
   CLOSED select from the checked option, which produced white-on-white while the
   field had focus. The native highlight follows color-scheme and stays readable. */
/* Page background and native UI colour follow the same rule set as the tokens. */
html {  }
@media (prefers-color-scheme: dark) {
  html:not([data-theme="light"]) {  color-scheme: dark; }
  html:not([data-theme="light"]) body.r15k-site { background-color: #12140f; }
  html:not([data-theme="light"]) .r15k-footer { --r15k-grey-strong: #c9ccc6; }
}
/* "only" keeps a browser's own auto-darkening (Chrome Auto Dark Theme, Samsung
   adaptive force dark) from overriding a choice the visitor made deliberately.
   The auto state above stays "light dark" so those browsers may still adapt. */
html[data-theme="light"] { color-scheme: only light; }
html[data-theme="dark"] {  color-scheme: only dark; }
html[data-theme="dark"] body.r15k-site { background-color: #12140f; }
html[data-theme="dark"] .r15k-footer { --r15k-grey-strong: #c9ccc6; }

/* =====================================================================
   WCAG 2.1 AA hardening (BITV-Prüfschritte)
   ===================================================================== */

/* 2.4.7 Focus visible – strong, theme-aware, never clipped */
.r15k-site :is(a,button,input,select,textarea,summary,[tabindex]):focus-visible{
  outline:3px solid var(--r15k-blue);outline-offset:3px;border-radius:0;
}
.r15k-site .r15k-btn:focus-visible,.r15k-site .r15k-burger:focus-visible,
.r15k-site .breakdance-form-button:focus-visible{
  outline:3px solid var(--r15k-blue);outline-offset:4px;box-shadow:0 0 0 6px rgba(88,101,242,.28);
}
.r15k-site .r15k-card:focus-visible,.r15k-site .r15k-ticket:focus-visible,
.r15k-site .r15k-past:focus-visible,.r15k-site .r15k-feature:focus-visible{
  outline:3px solid var(--r15k-blue);outline-offset:4px;
}
/* focus must not be hidden behind the sticky header (2.4.11 / 2.4.7) */
.r15k-site :target{scroll-margin-top:calc(var(--r15k-header-h,88px) + 24px);}

/* 2.4.1 Skip link (Oxygen ships .oxy-skip-link) – make it clearly visible on focus */
.r15k-site .oxy-skip-link:focus,.r15k-site .r15k-skip:focus{
  position:fixed!important;left:12px;top:12px;z-index:10000;width:auto;height:auto;clip:auto;clip-path:none;
  padding:14px 18px;background:var(--r15k-white);color:var(--r15k-onyx);
  border:3px solid var(--r15k-onyx);box-shadow:var(--r15k-shadow-sm);
  font-family:var(--r15k-font-pixel);font-size:.6rem;text-decoration:none;
}

/* 2.5.5/2.5.8 Target size – min 24×24 CSS px for all controls */
.r15k-site .r15k-nav-link,.r15k-site .r15k-social-link,.r15k-site .r15k-legal-link,
.r15k-site .r15k-panel-link,.r15k-site .r15k-crumbs a,.r15k-site .r15k-more{
  min-height:24px;
}
.r15k-site .r15k-socials--icons .r15k-social-link{min-width:44px;min-height:44px;}
.r15k-site .r15k-totop{min-width:44px;min-height:44px;}

/* 1.4.12 Text spacing – nothing may clip when users override spacing */
.r15k-site .r15k-btn,.r15k-site .r15k-nav-link,.r15k-site .r15k-tag,
.r15k-site .r15k-badge,.r15k-site .r15k-cat,.r15k-site .r15k-ebadge{
  height:auto;overflow-wrap:anywhere;
}
.r15k-site .r15k-card,.r15k-site .r15k-ticket-body,
.r15k-site .r15k-box{overflow:visible;}
/* The mobile menu panel must stay a scroll container: Oxygen caps it with a
   max-height, so listing it as overflow:visible above made long menus unscrollable.
   dvh keeps it inside the visible area while mobile browser toolbars slide away. */
.r15k-site .r15k-header.is-open .r15k-panel-wrap{
  overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;
}
/* The panel stays scrollable, but its scrollbar is never painted - during the
   0fr -> 1fr open animation the content overflows the growing frame and the bar
   would flash on the right until the transition finishes. */
.r15k-site .r15k-panel-wrap{scrollbar-width:none;-ms-overflow-style:none;}
.r15k-site .r15k-panel-wrap::-webkit-scrollbar{display:none;width:0;height:0;}
@supports (height:100dvh){
  .r15k-site .r15k-panel-wrap{max-height:calc(100dvh - var(--r15k-header-h,88px) - 24px);}
}
@media (max-width:767px){
  @supports (height:100dvh){
    .r15k-site .r15k-panel-wrap{max-height:calc(100dvh - var(--r15k-header-h,88px) - 16px);}
  }
}
.r15k-site .r15k-card-title,.r15k-site .r15k-ticket-title,.r15k-site .r15k-past-title,
.r15k-site .r15k-feature-title,.r15k-site .r15k-single-title,.r15k-site .r15k-hero-title{
  overflow-wrap:anywhere;hyphens:auto;
}

/* 1.4.10 Reflow – no horizontal scrolling down to 320px */
@media (max-width:400px){
  .r15k-site .r15k-container{padding-left:12px;padding-right:12px;}
  .r15k-site .r15k-hero-box{padding:18px 14px;}
  .r15k-site .r15k-date-day{font-size:1.3rem;}
  .r15k-site .r15k-masthead-title{font-size:.85rem;}
  .r15k-site .r15k-404-code{font-size:2.2rem;padding:16px 18px;}
}

/* 1.4.11 Non-text contrast – form borders and focus rings stay >= 3:1 */

/* 3.3.1/3.3.3 Error handling – visible, not colour-only */
.r15k-site .breakdance-form-field--error .breakdance-form-field__input{border-color:#c2410c;box-shadow:0 0 0 3px rgba(194,65,12,.25);}
.r15k-site .breakdance-form-field__error::before{content:"⚠ ";}
.r15k-site .r15k-form-status{font-family:var(--r15k-font-mono);font-size:.95rem;}

/* 2.3.3 / 2.2.2 respect reduced motion for decorative animations */
@media (prefers-reduced-motion:reduce){
  .r15k-site .r15k-eq i,.r15k-site .r15k-avail-dot,.r15k-site .r15k-hero-scroll i,
  .r15k-site .r15k-caret::after{animation:none!important;}
}

/* forced-colors (Windows high contrast) */
@media (forced-colors:active){
  .r15k-site .r15k-box,.r15k-site .r15k-btn,.r15k-site .r15k-ticket,.r15k-site .r15k-card{border:3px solid CanvasText;box-shadow:none;}
  .r15k-site .r15k-icon{forced-color-adjust:auto;}
}
/* 2.5.8 Target size (minimum 24x24) */
.r15k-site .r15k-title-link{display:inline-block;padding:6px 0;min-height:24px;}
.r15k-site .r15k-legal-link{display:inline-block;padding:4px 0;min-height:24px;}
.r15k-site .r15k-crumbs a{display:inline-block;padding:4px 0;min-height:24px;}
.r15k-site .r15k-footer-nav .r15k-nav-link{display:inline-block;padding:4px 0;min-height:24px;}
.r15k-site .r15k-panel-mail,.r15k-site .r15k-footer-mail{display:inline-flex;padding:4px 0;min-height:24px;}
.r15k-site .r15k-socials--list .r15k-social-link{padding:4px 0;min-height:24px;}
/* Events switch (SCF option events_enabled) */
body.r15k-events-off #events{display:none!important;}

.r15k-site .breakdance-form .breakdance-form-field__input:-webkit-autofill,
.r15k-site .breakdance-form .breakdance-form-field__input:-webkit-autofill:focus{
  -webkit-text-fill-color:var(--r15k-onyx);
  box-shadow:0 0 0 1000px var(--r15k-white) inset;
}
/* data-theme is written to <html> by the head bootstrap, so the scheme-specific
   native-control rules must key off html[data-theme], not body[data-theme]. */
html[data-theme="dark"] body.r15k-site .breakdance-form .breakdance-form-field__input,
html[data-theme="dark"] body.r15k-site select,
html[data-theme="dark"] body.r15k-site input,
html[data-theme="dark"] body.r15k-site textarea{color-scheme:dark;}
html[data-theme="light"] body.r15k-site .breakdance-form .breakdance-form-field__input,
html[data-theme="light"] body.r15k-site select,
html[data-theme="light"] body.r15k-site input,
html[data-theme="light"] body.r15k-site textarea{color-scheme:light;}
html[data-theme="dark"] body.r15k-site select option,
html[data-theme="dark"] body.r15k-site .breakdance-form select option{background-color:#1c1f19;color:#f2f3ee;}
html[data-theme="light"] body.r15k-site select option,
html[data-theme="light"] body.r15k-site .breakdance-form select option{background-color:#ffffff;color:#0c0f0a;}
/* 1.4.10 Reflow: long URLs in legal/prose text (e.g. the EU-ODR link in the
   Impressum) must wrap instead of forcing the page to scroll sideways. */
.r15k-site .r15k-prose{overflow-wrap:break-word;}
.r15k-site .r15k-prose a,
.r15k-site .r15k-prose code,
.r15k-site .r15k-prose pre,
.r15k-site .r15k-prose td{overflow-wrap:anywhere;word-break:break-word;}