{"roots":["0:3"],"nodeById":{"0:3":{"type":"WEBPAGE","id":"0:3","name":"/","absoluteBoundingBox":{"x":0.0,"y":0.0,"width":1847.0,"height":1244.0},"isolatedAbsoluteRenderBounds":{"x":0.0,"y":0.0,"width":1847.0,"height":1244.0},"relativeTransform":[[1.0,0.0,0.0],[0.0,1.0,0.0]],"size":{"x":1847.0,"y":1244.0},"fills":[{"opacity":0.298039227724075,"blendMode":"NORMAL","type":"SOLID","color":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"visible":true}],"strokeAlign":"INSIDE","strokes":[],"accessibleHTMLTag":"AUTO","isDecorativeImage":false,"ariaAttributes":{},"interactions":[],"children":["0:4","0:6"]},"0:6":{"type":"FRAME","id":"0:6","name":"Mobile","absoluteBoundingBox":{"x":1408.0,"y":100.0,"width":375.0,"height":1080.0},"isolatedAbsoluteRenderBounds":{"x":1408.0,"y":100.0,"width":375.0,"height":1080.0},"relativeTransform":[[1.0,0.0,1408.0],[0.0,1.0,100.0]],"size":{"x":375.0,"y":1080.0},"fills":[{"blendMode":"NORMAL","type":"SOLID","color":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"visible":true,"opacity":1.0}],"strokeAlign":"INSIDE","strokes":[],"accessibleHTMLTag":"AUTO","isDecorativeImage":false,"ariaAttributes":{},"interactions":[],"clipsContent":true,"overflowDirection":"VERTICAL_SCROLLING","isBreakpointFrame":true,"children":["1:7"]},"1:7":{"type":"WIDGET","id":"1:7","name":"Embed 1","absoluteBoundingBox":{"x":1408.0,"y":100.0,"width":375.0,"height":1080.0},"isolatedAbsoluteRenderBounds":{"x":1408.0,"y":100.0,"width":375.0,"height":1080.0},"relativeTransform":[[1.0,0.0,0.0],[0.0,1.0,0.0]],"size":{"x":375.0,"y":1080.0},"constraints":{"vertical":"TOP_BOTTOM","horizontal":"LEFT_RIGHT"},"constraintValues":{"left":{"pixelOffset":0.0,"sizeFraction":0.0},"right":{"pixelOffset":0.0,"sizeFraction":1.0},"top":{"pixelOffset":0.0,"sizeFraction":0.0},"bottom":{"pixelOffset":0.0,"sizeFraction":1.0}},"scrollBehavior":"FIXED","accessibleHTMLTag":"AUTO","isDecorativeImage":false,"ariaAttributes":{},"interactions":[],"syncedState":{"embedAllowFullscreen":"false","embedCodeType":"html","embedIframeHtml":"<!doctype html>\n<html lang=\"da\">\n<head>\n<meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, viewport-fit=cover\">\n<title>Culture Club · A-klassens kulturklub</title>\n<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/css2?family=Schibsted+Grotesk:wght@700;800;900&family=Instrument+Sans:wght@400;500;600;700&display=swap\">\n<style>\n:root {\n--bg: #F7F6F2; --ink: #111111; --grey: #555555; --soft: #C9C9C9; --rule: #111111;\n--blue: #2442D6; --red: #E8492F; --lemon: #F2DD4E; --white: #FFFFFF; --sand: #E4DED3;\n--display: \"Schibsted Grotesk\", \"Helvetica Neue\", Arial, sans-serif;\n--body: \"Instrument Sans\", \"Helvetica Neue\", Arial, sans-serif;\n--pad: clamp(20px, 7vw, 100px);\ncolor-scheme: light;\n}\n* { box-sizing: border-box; }\nhtml { scroll-behavior: smooth; }\nbody { margin: 0; background: var(--bg); color: var(--ink); font-family: var(--body); font-size: 17px; line-height: 1.55; -webkit-font-smoothing: antialiased; }\nimg, svg { max-width: 100%; display: block; }\na { color: inherit; }\nbutton { font: inherit; color: inherit; }\n:focus-visible { outline: 2px solid var(--blue); outline-offset: 3px; }\n.wrap { max-width: calc(1240px + 2 * var(--pad)); margin: 0 auto; padding-inline: var(--pad); }\n.header { border-bottom: 1px solid var(--rule); background: var(--bg); }\n.header .wrap { display: flex; align-items: center; justify-content: space-between; gap: 24px; padding-block: 26px; }\n.logo { display: inline-flex; align-items: center; gap: 4px; text-decoration: none; font-family: var(--display); font-weight: 900; font-size: 20px; letter-spacing: -0.03em; line-height: 1; }\n.logo i { width: 10px; height: 10px; display: block; }\n.logo span { margin-left: 4px; }\n.nav { display: flex; align-items: center; gap: 36px; }\n.nav a { text-decoration: none; font-weight: 500; font-size: 15px; padding-block: 10px; }\n.nav a[aria-current=\"page\"] { text-decoration: underline; text-underline-offset: 4px; }\n.divider { width: 1px; height: 22px; background: #BDBDBD; }\n.lang { display: inline-flex; border: 1px solid var(--ink); }\n.lang button { border: 0; background: transparent; padding: 9px 12px; font-size: 12px; font-weight: 600; letter-spacing: .04em; cursor: pointer; min-width: 44px; }\n.lang button[aria-pressed=\"true\"] { background: var(--ink); color: var(--white); }\n.links-mobile { display: none; }\n.hero .wrap { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: 56px; align-items: end; padding-block: 80px 100px; }\n.eyebrow { font-size: 12px; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; margin: 0 0 24px; }\nh1 { font-family: var(--display); font-weight: 900; font-size: clamp(84px, 12vw, 176px); line-height: .84; letter-spacing: -0.06em; margin: 0 0 32px; }\n.welcome { font-family: var(--display); font-weight: 700; font-size: clamp(22px, 2.4vw, 28px); line-height: 1.15; letter-spacing: -0.02em; margin: 0 0 16px; max-width: 560px; }\n.intro { max-width: 560px; color: #333; display: grid; gap: 12px; }\n.intro p { margin: 0; }\n.btn { display: inline-flex; align-items: center; gap: 16px; background: var(--ink); color: var(--white); text-decoration: none; font-weight: 600; font-size: 15px; padding: 15px 22px; margin-top: 28px; }\n.tiles { display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: 1fr 1fr; gap: 12px; aspect-ratio: 5 / 6; max-height: 620px; }\n.tile { display: grid; place-items: center; overflow: hidden; }\n.tile svg { width: 82%; height: auto; }\n.tile.tall { grid-row: span 2; }\n.band { background: var(--blue); color: var(--white); }\n.band .wrap { padding-block: 40px; }\n.band p { font-family: var(--display); font-weight: 700; font-size: clamp(24px, 3vw, 40px); line-height: 1.1; letter-spacing: -0.02em; margin: 0; max-width: 1000px; text-wrap: balance; }\n.section .wrap { padding-block: 96px 112px; display: grid; gap: 40px; }\n.label { display: flex; gap: 12px; border-top: 1px solid var(--rule); padding-top: 14px; font-size: 12px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; }\n.head { display: flex; justify-content: space-between; align-items: end; gap: 16px; flex-wrap: wrap; }\nh2 { font-family: var(--display); font-weight: 900; font-size: clamp(52px, 8vw, 120px); line-height: .9; letter-spacing: -0.05em; margin: 0; }\n.head p { margin: 0; max-width: 300px; color: var(--grey); font-size: 15px; }\n.cal-row { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 20px; align-items: stretch; }\n.cal { background: var(--white); border: 1px solid var(--ink); padding: 32px; display: flex; flex-direction: column; gap: 18px; }\n.cal-head { display: flex; justify-content: space-between; align-items: center; gap: 12px; }\n.cal-month { font-family: var(--display); font-weight: 700; font-size: 24px; letter-spacing: -0.02em; margin: 0; }\n.arrows { display: flex; }\n.arrows button { width: 44px; height: 44px; border: 1px solid var(--ink); background: var(--white); cursor: pointer; display: grid; place-items: center; }\n.arrows button + button { border-left: 0; }\n.arrows button:disabled { opacity: .3; cursor: default; }\n.count { display: flex; align-items: center; gap: 8px; font-weight: 600; font-size: 14px; }\n.count i { width: 10px; height: 10px; background: var(--red); display: block; }\n.grid7 { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 4px; text-align: center; }\n.wd { font-size: 12px; font-weight: 600; color: var(--grey); padding-bottom: 10px; border-bottom: 1px solid var(--ink); }\n.day { height: 46px; display: grid; place-items: center; font-size: 15px; color: var(--soft); font-variant-numeric: tabular-nums; }\n.day button { width: 40px; height: 40px; border: 0; background: var(--red); color: var(--ink); font-weight: 700; font-size: 15px; cursor: pointer; }\n.day button[aria-pressed=\"true\"] { background: var(--ink); color: var(--white); }\n.event { background: var(--blue); color: var(--white); padding: 32px; display: flex; flex-direction: column; gap: 16px; }\n.event .art { height: 220px; display: grid; place-items: center; }\n.event .art svg { height: 88%; width: auto; }\n.ev-date { font-size: 12px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; margin: 0; }\n.ev-title { font-family: var(--display); font-weight: 900; font-size: clamp(32px, 3.4vw, 44px); line-height: .95; letter-spacing: -0.04em; margin: 0; text-wrap: balance; }\n.ev-text { color: #E6EAFF; margin: 0; }\n.meta { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; border-top: 1px solid var(--white); padding-top: 12px; }\n.k { font-size: 11px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: #C9D1FF; display: block; margin-bottom: 4px; }\n.v { font-size: 14px; font-weight: 500; line-height: 1.35; }\n.signup { border-top: 1px solid var(--white); padding-top: 12px; }\n.signup .v { line-height: 1.4; }\n.ev-link { align-self: flex-start; background: var(--white); color: var(--ink); text-decoration: none; font-weight: 600; font-size: 14px; padding: 13px 18px; }\n.empty { display: grid; gap: 8px; }\n.tag { display: inline-block; background: var(--lemon); font-size: 12px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; padding: 6px 12px; }\n.merch-head { display: grid; gap: 18px; justify-items: start; }\n.merch-head p { margin: 0; max-width: 520px; color: #333; font-size: 18px; }\n.mystery { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }\n.mystery figure { margin: 0; display: grid; gap: 12px; }\n.mystery .box { aspect-ratio: 1 / 1; display: grid; place-items: center; }\n.mystery .box svg { width: 72%; height: auto; }\n.mystery figcaption { font-family: var(--display); font-weight: 700; font-size: 22px; letter-spacing: -0.02em; }\n.footer { background: var(--ink); color: var(--white); }\n.footer .wrap { padding-block: 56px; display: flex; justify-content: space-between; align-items: flex-end; gap: 24px; flex-wrap: wrap; }\n.footer .marks { display: flex; gap: 6px; margin-bottom: 14px; }\n.footer .marks i { width: 16px; height: 16px; display: block; }\n.footer .word { font-family: var(--display); font-weight: 900; font-size: clamp(52px, 7vw, 96px); line-height: .9; letter-spacing: -0.05em; }\n.footer small { font-size: 14px; color: #BDBDBD; }\n[hidden] { display: none !important; }\n@media (max-width: 760px) {\nbody { font-size: 16px; }\n.header .wrap { flex-wrap: wrap; padding-block: 18px 14px; row-gap: 14px; }\n.nav .page-link, .nav .divider { display: none; }\n.links-mobile { display: flex; gap: 28px; width: 100%; }\n.links-mobile a { text-decoration: none; font-weight: 500; font-size: 15px; padding-block: 6px; }\n.links-mobile a[aria-current=\"page\"] { text-decoration: underline; text-underline-offset: 4px; }\n.hero .wrap { grid-template-columns: minmax(0, 1fr); gap: 32px; padding-block: 36px 48px; }\nh1 { font-size: 88px; }\n.tiles { aspect-ratio: 1 / 1; }\n.band .wrap { padding-block: 28px; }\n.section .wrap { padding-block: 48px 56px; gap: 24px; }\n.cal-row { grid-template-columns: minmax(0, 1fr); gap: 16px; }\n.cal { padding: 16px; }\n.event { padding: 20px; }\n.event .art { height: 190px; }\n.meta { grid-template-columns: repeat(2, minmax(0, 1fr)); row-gap: 14px; }\n.meta > div:first-child { grid-column: span 2; }\n.mystery { grid-template-columns: minmax(0, 1fr); gap: 24px; }\n.mystery .box { aspect-ratio: 7 / 6; }\n.mystery figcaption { font-size: 18px; }\n}\n@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }\n#cc-root{position:absolute;inset:0;overflow-y:auto;overflow-x:hidden;background:var(--bg);-webkit-overflow-scrolling:touch;overscroll-behavior:contain}\n/*cc-fix2*/\n#cc-root .day button{display:grid;place-items:center;text-align:center;padding:0;margin:0;line-height:1;background:var(--red);color:var(--ink);border-radius:0}\n#cc-root .day button[aria-pressed=\"true\"]{background:var(--red);color:var(--ink);box-shadow:0 0 0 2px var(--white),0 0 0 4px var(--ink)}\n#cc-root .arrows button,#cc-root .lang button{text-align:center;line-height:1;margin:0}\n#cc-root .cal-row{align-items:start}\n/*cc-fix3*/\n.cal-list{display:none}\n@media (max-width: 760px){#cc-root .cal-list{display:grid;gap:8px;border-top:1px solid var(--ink);padding-top:14px}\n#cc-root .cal-list button{display:grid;grid-template-columns:12px minmax(0,1fr) auto;align-items:center;gap:12px;width:100%;text-align:left;background:var(--bg);border:1px solid var(--ink);padding:12px 14px;margin:0;cursor:pointer;border-radius:0}\n#cc-root .cal-list i{width:12px;height:12px;background:var(--red);display:block}\n#cc-root .cl-txt{display:grid;gap:2px;min-width:0}\n#cc-root .cl-date{font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--grey)}\n#cc-root .cl-title{font-family:var(--display);font-weight:800;font-size:17px;letter-spacing:-0.02em;line-height:1.15}\n#cc-root .cl-arrow{font-size:20px;line-height:1}}\n/*cc-fix4*/\n@media (max-width: 760px){#program .wrap{padding-block:48px 72px;gap:18px}#program h2{font-size:46px}#program .head p{display:none}#cc-root .cal-row{gap:10px}#cc-root .cal{padding:14px 14px 10px;gap:10px}#cc-root .cal-month{font-size:19px}#cc-root .arrows button{width:36px;height:36px}#cc-root .count{font-size:13px}#cc-root .grid7{gap:0 2px}#cc-root #calWeekdays>*{padding-bottom:4px;font-size:11px}#cc-root .day{height:32px;font-size:13px}#cc-root .day button{width:28px;height:28px;font-size:13px}#cc-root .cal-list{display:none}#cc-root .event{padding:16px;gap:12px}#cc-root .event .art{height:96px}#cc-root .event .art svg{height:84%}#cc-root .ev-title{font-size:28px}}\n</style>\n</head>\n<body>\n<div id=\"cc-root\">\n<header class=\"header\">\n<div class=\"wrap\">\n<a class=\"logo\" href=\"#top\" data-go=\"home\" aria-label=\"Culture Club, forside\"><i style=\"background:var(--red)\"></i><i style=\"background:var(--lemon)\"></i><i style=\"background:var(--blue)\"></i><span>culture club</span></a>\n<nav class=\"nav\" aria-label=\"Menu\">\n<a class=\"page-link\" href=\"#program\" data-go=\"program\" data-i18n=\"navProgram\">Program</a>\n<a class=\"page-link\" href=\"#merch\" data-go=\"merch\" data-i18n=\"navMerch\">Merch</a>\n<a class=\"page-link\" href=\"#om\" data-go=\"about\" data-i18n=\"navAbout\">Om os</a>\n<span class=\"divider\" aria-hidden=\"true\"></span>\n<div class=\"lang\" role=\"group\" aria-label=\"Sprog / Language\">\n<button type=\"button\" data-lang=\"da\" aria-pressed=\"true\">DA</button>\n<button type=\"button\" data-lang=\"en\" aria-pressed=\"false\">EN</button>\n</div>\n</nav>\n<div class=\"links-mobile\">\n<a href=\"#program\" data-go=\"program\" data-i18n=\"navProgram\">Program</a>\n<a href=\"#merch\" data-go=\"merch\" data-i18n=\"navMerch\">Merch</a>\n</div>\n</div>\n</header>\n<main id=\"top\">\n<div id=\"view-home\">\n<section class=\"hero\" id=\"om\">\n<div class=\"wrap\">\n<div>\n<p class=\"eyebrow\" data-i18n=\"eyebrow\">ISJ · A-klassens kulturklub</p>\n<h1>culture<br>club</h1>\n<h2 class=\"welcome\" data-i18n=\"welcome\">Velkommen til A-klassens Kulturklub!</h2>\n<div class=\"intro\" data-i18n-html=\"intro\"></div>\n<a class=\"btn\" href=\"#program\" data-go=\"program\"><span data-i18n=\"cta\">Se programmet</span><span aria-hidden=\"true\">→</span></a>\n</div>\n<div class=\"tiles\" aria-hidden=\"true\">\n<div class=\"tile tall\" style=\"background:var(--lemon)\" data-art=\"film\"></div>\n<div class=\"tile\" style=\"background:var(--red)\" data-art=\"ballet\"></div>\n<div class=\"tile\" style=\"background:var(--white)\" data-art=\"skate\"></div>\n</div>\n</div>\n</section>\n<div class=\"band\"><div class=\"wrap\"><p data-i18n=\"band\">Kunst, bøger, musik, teater, dans, film, sport &amp; meget mere</p></div></div>\n<section class=\"section\" id=\"program\" aria-labelledby=\"progTitle\">\n<div class=\"wrap\">\n<div class=\"label\"><span>01</span><span data-i18n=\"navProgram\">Program</span></div>\n<div class=\"head\">\n<h2 id=\"progTitle\" data-i18n=\"calTitle\">kalender</h2>\n<p data-i18n=\"calSub\">Tryk på pilene for at skifte måned og se, hvad der sker.</p>\n</div>\n<div class=\"cal-row\">\n<div class=\"cal\">\n<div class=\"cal-head\">\n<p class=\"cal-month\" id=\"calMonth\" aria-live=\"polite\"></p>\n<div class=\"arrows\">\n<button type=\"button\" id=\"prev\" aria-label=\"Forrige måned\"><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M15 5l-7 7 7 7\" stroke=\"#111\" stroke-width=\"2\" stroke-linecap=\"square\"/></svg></button>\n<button type=\"button\" id=\"next\" aria-label=\"Næste måned\"><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M9 5l7 7-7 7\" stroke=\"#111\" stroke-width=\"2\" stroke-linecap=\"square\"/></svg></button>\n</div>\n</div>\n<div class=\"count\"><i aria-hidden=\"true\"></i><span id=\"calCount\"></span></div>\n<div class=\"grid7\" id=\"calWeekdays\"></div>\n<div class=\"grid7\" id=\"calDays\"></div>\n<div class=\"cal-list\" id=\"calList\"></div>\n</div>\n<article class=\"event\" id=\"event\" aria-live=\"polite\"></article>\n</div>\n</div>\n</section>\n</div>\n<div id=\"view-merch\" hidden>\n<section class=\"section\" aria-labelledby=\"merchTitle\">\n<div class=\"wrap\">\n<div class=\"label\"><span>02</span><span>Merchandise</span></div>\n<div class=\"merch-head\">\n<h2 id=\"merchTitle\">merchandise</h2>\n<span class=\"tag\" data-i18n=\"soon\">Kommer snart</span>\n<p data-i18n=\"merchText\">Vi arbejder på noget hemmeligt. Mere kan vi ikke sige endnu.</p>\n</div>\n<div class=\"mystery\">\n<figure><div class=\"box\" style=\"background:var(--lemon)\" data-art=\"ghost\"></div><figcaption data-i18n=\"secret1\">Hemmelighed nr. 1</figcaption></figure>\n<figure><div class=\"box\" style=\"background:var(--blue)\" data-art=\"tote\"></div><figcaption data-i18n=\"secret2\">Hemmelighed nr. 2</figcaption></figure>\n<figure><div class=\"box\" style=\"background:var(--red)\" data-art=\"box\"></div><figcaption data-i18n=\"secret3\">Hemmelighed nr. 3</figcaption></figure>\n</div>\n</div>\n</section>\n</div>\n</main>\n<footer class=\"footer\">\n<div class=\"wrap\">\n<div>\n<div class=\"marks\" aria-hidden=\"true\"><i style=\"background:var(--red)\"></i><i style=\"background:var(--lemon)\"></i><i style=\"background:var(--blue)\"></i></div>\n<div class=\"word\">culture club</div>\n</div>\n<small data-i18n=\"footer\">A-klassens kulturklub · ISJ</small>\n</div>\n</footer>\n</div>\n<script>\n/* EVENTS: add new dates here. One block per event. date \"YYYY-MM-DD\". art: film, skate, ballet. link: null if none. */\nvar EVENTS = [\n{\ndate: \"2026-11-01\", art: \"film\", artBg: \"#F2DD4E\",\nlink: \"https://www.dfi.dk/cinemateket/biograf/events/event/arriettys-hemmelige-verden-1061326\",\nda: { title: \"Arriettys hemmelige verden\", text: \"Tur i Cinemateket for at se Arriettys hemmelige verden. Filmen varer ca. 90 minutter. Søskende og forældre er selvfølgelig velkomne.\", time: \"Mødetid 13.00, filmstart 13.30\", place: \"Foran Cinemateket\", price: \"50 kr. pr. deltager\", signup: \"Til Melissa (Luca's mor) på 26 25 54 45, senest 25/10 kl. 12. Beløbet overføres til Melissa ved tilmelding.\", linkLabel: \"Læs mere hos Cinemateket\" },\nen: { title: \"The Secret World of Arrietty\", text: \"A trip to Cinemateket to watch The Secret World of Arrietty. The film runs about 90 minutes. Siblings and parents are very welcome.\", time: \"Meet 13:00, film starts 13:30\", place: \"Outside Cinemateket\", price: \"DKK 50 per person\", signup: \"With Melissa (Luca's mum) on 26 25 54 45 by 25 Oct at 12:00. Pay Melissa when you sign up.\", linkLabel: \"More at Cinemateket\" }\n},\n{\ndate: \"2026-12-10\", art: \"skate\", artBg: \"#F7F6F2\",\nlink: null,\nda: { title: \"Skøjteløb og varm kakao\", text: \"Ekstra julestemning med en tur på isen for børn og forældre, efterfulgt af varm kakao. Vi mødes på Kgs. Nytorv efter skole.\", time: \"16.00 (efter skole)\", place: \"Kgs. Nytorv\", price: \"Egenbetaling: skøjteleje og kakao\", signup: \"Info om tilmelding følger.\" },\nen: { title: \"Ice skating and hot chocolate\", text: \"Extra Christmas spirit with a turn on the ice for kids and parents, followed by hot chocolate. We meet at Kgs. Nytorv after school.\", time: \"16:00 (after school)\", place: \"Kgs. Nytorv\", price: \"Pay your own skate hire and cocoa\", signup: \"Sign-up details coming soon.\" }\n},\n{\ndate: \"2027-01-30\", art: \"ballet\", artBg: \"#E8492F\",\nlink: \"https://www.kglteater.dk/ballet/2627/prinsessen-paa-aerten-en-pixiballet/\",\nda: { title: \"Prinsessen på Ærten\", text: \"En Pixiballet i Operaen. Vi ser forestillingen i foyeren.\", time: \"14.00\", place: \"Operaen, Foyeren\", price: \"Gratis\", signup: \"Til Ulrik (Herberts far) på 51 72 79 53, senest 6/12 kl. 12.\", linkLabel: \"Læs mere hos Det Kgl. Teater\" },\nen: { title: \"The Princess and the Pea\", text: \"A Pixi ballet for young audiences at the Opera, in the foyer.\", time: \"14:00\", place: \"The Opera, foyer\", price: \"Free\", signup: \"With Ulrik (Herbert's dad) on 51 72 79 53 by 6 Dec at 12:00.\", linkLabel: \"More at the Royal Danish Theatre\" }\n}\n];\nvar T = {\nda: {\nnavProgram: \"Program\", navMerch: \"Merch\", navAbout: \"Om os\",\neyebrow: \"ISJ · A-klassens kulturklub\",\nwelcome: \"Velkommen til A-klassens Kulturklub!\",\nintro: [\"Klubbens formål er at samle klassen om en masse sjove, varierede og inspirerende kulturoplevelser. Vi skal både udforske helt nye ting og vende tilbage til klassiske favoritter. Det vigtigste er, at alle har det sjovt, og at vi får prøvet noget nyt fælles.\", \"Hold øje med kalenderen. Aktiviteterne bliver løbende opdateret i kalenderen her på siden. Her finder du alt om de enkelte events, seneste frist for tilmelding og øvrige detaljer.\", \"Nogle arrangementer vil være helt gratis at deltage i, mens der ved andre vil være en mindre egenbetaling.\", \"Vi glæder os til en masse fantastiske oplevelser sammen!\"],\ncta: \"Se programmet\",\nband: \"Kunst, bøger, musik, teater, dans, film, sport & meget mere\",\ncalTitle: \"kalender\", calSub: \"Tryk på pilene for at skifte måned og se, hvad der sker.\",\ntime: \"Tid\", place: \"Sted\", price: \"Pris\", signup: \"Tilmelding\",\nprev: \"Forrige måned\", next: \"Næste måned\",\nmonths: [\"januar\",\"februar\",\"marts\",\"april\",\"maj\",\"juni\",\"juli\",\"august\",\"september\",\"oktober\",\"november\",\"december\"],\ndays: [\"søndag\",\"mandag\",\"tirsdag\",\"onsdag\",\"torsdag\",\"fredag\",\"lørdag\"],\nwd: [\"M\",\"T\",\"O\",\"T\",\"F\",\"L\",\"S\"],\ncount: function (n, m) { return n === 0 ? \"Ingen arrangementer i \" + m : n + (n === 1 ? \" arrangement i \" : \" arrangementer i \") + m; },\ndateLabel: function (d, withYear) { return cap(this.days[d.getDay()]) + \" \" + d.getDate() + \". \" + this.months[d.getMonth()] + (withYear ? \" \" + d.getFullYear() : \"\"); },\nemptyTitle: \"Intet i denne måned\", emptyText: \"Nye datoer kommer snart. Kig forbi igen.\",\nsoon: \"Kommer snart\", merchText: \"Vi arbejder på noget hemmeligt. Mere kan vi ikke sige endnu.\",\nsecret1: \"Hemmelighed nr. 1\", secret2: \"Hemmelighed nr. 2\", secret3: \"Hemmelighed nr. 3\",\nfooter: \"A-klassens kulturklub · ISJ\", dayAria: \"Se arrangement\"\n},\nen: {\nnavProgram: \"What's on\", navMerch: \"Merch\", navAbout: \"About\",\neyebrow: \"ISJ · Class A's culture club\",\nwelcome: \"Welcome to Class A's Culture Club!\",\nintro: [\"The club brings the class together around lots of fun, varied and inspiring cultural experiences. We'll explore brand new things and go back to classic favourites. Most important is that everyone has fun and that we try something new together.\", \"Keep an eye on the calendar. Activities are updated here on the site as we go. You'll find everything about each event, the sign-up deadline and other details.\", \"Some events are completely free, while others have a small fee.\", \"We look forward to lots of great experiences together!\"],\ncta: \"See what's on\",\nband: \"Art, books, music, theatre, dance, film, sport & much more\",\ncalTitle: \"calendar\", calSub: \"Use the arrows to switch month and see what's on.\",\ntime: \"Time\", place: \"Where\", price: \"Price\", signup: \"Sign up\",\nprev: \"Previous month\", next: \"Next month\",\nmonths: [\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],\ndays: [\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],\nwd: [\"M\",\"T\",\"W\",\"T\",\"F\",\"S\",\"S\"],\ncount: function (n, m) { return n === 0 ? \"No events in \" + m : n + (n === 1 ? \" event in \" : \" events in \") + m; },\ndateLabel: function (d, withYear) { return this.days[d.getDay()] + \" \" + d.getDate() + \" \" + this.months[d.getMonth()] + (withYear ? \" \" + d.getFullYear() : \"\"); },\nemptyTitle: \"Nothing this month\", emptyText: \"New dates are coming soon. Check back later.\",\nsoon: \"Coming soon\", merchText: \"We're working on something secret. That's all we can say for now.\",\nsecret1: \"Secret no. 1\", secret2: \"Secret no. 2\", secret3: \"Secret no. 3\",\nfooter: \"Class A's culture club · ISJ\", dayAria: \"See event\"\n}\n};\nfunction cap(s) { return s.charAt(0).toUpperCase() + s.slice(1); }\nvar K = 'stroke=\"#111111\" stroke-width=\"5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"';\nfunction Q(x, y, c) { return '<path d=\"M' + x + ' ' + y + ' q0 -11 11 -11 q11 0 11 11 q0 8 -11 12 v7\" fill=\"none\" stroke=\"' + c + '\" stroke-width=\"5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><circle cx=\"' + (x + 11) + '\" cy=\"' + (y + 27) + '\" r=\"3.5\" fill=\"' + c + '\"/>'; }\nvar holes = [0, 72, 144, 216, 288].map(function (a) { var r = a * Math.PI / 180; return '<circle cx=\"' + (86 + 24 * Math.cos(r)).toFixed(1) + '\" cy=\"' + (92 + 24 * Math.sin(r)).toFixed(1) + '\" r=\"8\" fill=\"#F2DD4E\" ' + K + '/>'; }).join('');\nvar ART = {\nfilm: '<path d=\"M112 120 Q140 150 182 140 L186 162 Q138 176 100 136 Z\" fill=\"#111111\"/><rect x=\"128\" y=\"143\" width=\"7\" height=\"7\" fill=\"#F2DD4E\" transform=\"rotate(20 131 146)\"/><rect x=\"146\" y=\"150\" width=\"7\" height=\"7\" fill=\"#F2DD4E\" transform=\"rotate(12 149 153)\"/><rect x=\"164\" y=\"152\" width=\"7\" height=\"7\" fill=\"#F2DD4E\"/><circle cx=\"86\" cy=\"92\" r=\"48\" fill=\"#FFFFFF\" ' + K + '/>' + holes + '<circle cx=\"86\" cy=\"92\" r=\"5\" fill=\"#111111\"/><path d=\"M160 40 l4 10 l10 4 l-10 4 l-4 10 l-4 -10 l-10 -4 l10 -4 z\" fill=\"#111111\"/>',\nskate: '<path d=\"M62 56 L102 56 L106 106 Q142 108 152 126 L152 138 L62 138 Z\" fill=\"#FFFFFF\" ' + K + '/><path d=\"M86 70 L102 70 M86 82 L103 82 M86 94 L104 94\" ' + K + '/><path d=\"M62 138 L152 138\" ' + K + '/><path d=\"M76 138 L76 156 M138 138 L138 156\" ' + K + '/><path d=\"M52 156 L160 156 Q172 156 170 144\" fill=\"none\" stroke=\"#2442D6\" stroke-width=\"6\" stroke-linecap=\"round\"/><path d=\"M160 46 v20 M150 56 h20 M153 49 l14 14 M167 49 l-14 14\" stroke=\"#2442D6\" stroke-width=\"3\" stroke-linecap=\"round\"/><path d=\"M36 92 v14 M29 99 h14 M31 94 l10 10 M41 94 l-10 10\" stroke=\"#2442D6\" stroke-width=\"3\" stroke-linecap=\"round\"/>',\nballet: '<path d=\"M78 58 L84 34 L98 50 L110 30 L120 50 L132 36 L130 58 Z\" fill=\"#F2DD4E\" ' + K + '/><rect x=\"58\" y=\"62\" width=\"88\" height=\"14\" fill=\"#FFFFFF\" ' + K + '/><rect x=\"52\" y=\"76\" width=\"96\" height=\"14\" fill=\"#F2DD4E\" ' + K + '/><rect x=\"56\" y=\"90\" width=\"92\" height=\"14\" fill=\"#2442D6\" ' + K + '/><rect x=\"50\" y=\"104\" width=\"98\" height=\"14\" fill=\"#FFFFFF\" ' + K + '/><rect x=\"54\" y=\"118\" width=\"94\" height=\"14\" fill=\"#F2DD4E\" ' + K + '/><rect x=\"50\" y=\"132\" width=\"100\" height=\"14\" fill=\"#FFFFFF\" ' + K + '/><path d=\"M44 164 L160 164\" ' + K + '/><circle cx=\"100\" cy=\"155\" r=\"8\" fill=\"#2FA35A\" ' + K + '/>',\nghost: '<path d=\"M100 47 q0 -15 12 -15 q11 0 10 11\" fill=\"none\" ' + K + '/><path d=\"M58 68 Q100 46 142 68 L150 152 Q140 140 130 154 Q120 140 110 154 Q100 140 90 154 Q80 140 70 154 Q60 140 50 152 Z\" fill=\"#FFFFFF\" ' + K + '/><ellipse cx=\"88\" cy=\"100\" rx=\"5.5\" ry=\"8\" fill=\"#111111\"/><ellipse cx=\"113\" cy=\"100\" rx=\"5.5\" ry=\"8\" fill=\"#111111\"/>' + Q(146, 38, '#111111'),\ntote: '<path d=\"M76 82 Q76 46 100 46 Q124 46 124 82\" fill=\"none\" stroke=\"#FFFFFF\" stroke-width=\"6\" stroke-linecap=\"round\"/><path d=\"M55 82 L145 82 L138 166 L62 166 Z\" fill=\"#F7F6F2\" ' + K + '/><path d=\"M92 112 v-8 a8 8 0 0 1 16 0 v8\" fill=\"none\" ' + K + '/><rect x=\"86\" y=\"112\" width=\"28\" height=\"22\" rx=\"3\" fill=\"#F2DD4E\" ' + K + '/><path d=\"M42 44 l4 10 l10 4 l-10 4 l-4 10 l-4 -10 l-10 -4 l10 -4 z\" fill=\"#F2DD4E\"/><path d=\"M160 140 l3 7 l7 3 l-7 3 l-3 7 l-3 -7 l-7 -3 l7 -3 z\" fill=\"#F2DD4E\"/>',\nbox: '<rect x=\"52\" y=\"96\" width=\"96\" height=\"66\" fill=\"#F2DD4E\" ' + K + '/><rect x=\"94\" y=\"96\" width=\"12\" height=\"66\" fill=\"#2442D6\"/><path d=\"M54 98 L146 86 L146 96 L54 106 Z\" fill=\"#111111\"/><circle cx=\"90\" cy=\"98\" r=\"5\" fill=\"#FFFFFF\"/><circle cx=\"109\" cy=\"96\" r=\"5\" fill=\"#FFFFFF\"/><circle cx=\"91\" cy=\"99\" r=\"2.2\" fill=\"#111111\"/><circle cx=\"110\" cy=\"97\" r=\"2.2\" fill=\"#111111\"/><path d=\"M44 84 L150 64 L156 82 L50 102 Z\" fill=\"#F2DD4E\" ' + K + '/>' + Q(58, 38, '#FFFFFF') + Q(132, 26, '#FFFFFF')\n};\nfunction svg(name) { return '<svg viewBox=\"0 0 200 200\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">' + ART[name] + '</svg>'; }\nfunction esc(s) { return String(s).replace(/[&<>\"]/g, function (c) { return { \"&\": \"&amp;\", \"<\": \"&lt;\", \">\": \"&gt;\", '\"': \"&quot;\" }[c]; }); }\nvar lang = \"da\";\ntry { var s = localStorage.getItem(\"cc-lang\"); lang = s === \"en\" ? \"en\" : \"da\"; } catch (e) {}\nfunction parse(d) { var p = d.split(\"-\"); return new Date(+p[0], +p[1] - 1, +p[2]); }\nvar evs = EVENTS.map(function (e) { var d = parse(e.date); return Object.assign({}, e, { d: d, key: d.getFullYear() * 12 + d.getMonth() }); }).sort(function (a, b) { return a.d - b.d; });\nvar minKey = evs.length ? evs[0].key : null, maxKey = evs.length ? evs[evs.length - 1].key : null;\nvar today = new Date(); today.setHours(0, 0, 0, 0);\nvar upcoming = evs.filter(function (e) { return e.d >= today; })[0] || evs[evs.length - 1];\nvar curKey = upcoming ? upcoming.key : today.getFullYear() * 12 + today.getMonth();\nvar selected = upcoming ? upcoming.date : null;\nfunction renderCalendar() {\nvar L = T[lang], y = Math.floor(curKey / 12), m = curKey % 12;\ndocument.getElementById(\"calMonth\").textContent = cap(L.months[m]) + \" \" + y;\nvar inMonth = evs.filter(function (e) { return e.key === curKey; });\ndocument.getElementById(\"calCount\").textContent = L.count(inMonth.length, L.months[m]);\ndocument.getElementById(\"calWeekdays\").innerHTML = L.wd.map(function (w) { return '<div class=\"wd\">' + w + '</div>'; }).join(\"\");\nif (!inMonth.some(function (e) { return e.date === selected; })) selected = inMonth.length ? inMonth[0].date : null;\nvar lead = (new Date(y, m, 1).getDay() + 6) % 7, dim = new Date(y, m + 1, 0).getDate(), html = \"\";\nfor (var i = 0; i < lead; i++) html += '<div class=\"day\"></div>';\nfor (var d = 1; d <= dim; d++) {\nvar ev = inMonth.filter(function (e) { return e.d.getDate() === d; })[0];\nhtml += ev ? '<div class=\"day\"><button type=\"button\" data-date=\"' + ev.date + '\" aria-pressed=\"' + (ev.date === selected) + '\" aria-label=\"' + esc(L.dayAria + \": \" + ev[lang].title) + '\">' + d + '</button></div>' : '<div class=\"day\">' + d + '</div>';\n}\nvar cells = lead + dim; while (cells % 7) { html += '<div class=\"day\"></div>'; cells++; }\ndocument.getElementById(\"calDays\").innerHTML = html;\ndocument.getElementById(\"calList\").innerHTML = inMonth.map(function (e) { return '<button type=\"button\" data-date=\"' + e.date + '\"><i aria-hidden=\"true\"></i><span class=\"cl-txt\"><span class=\"cl-date\">' + esc(L.dateLabel(e.d, e.d.getFullYear() !== today.getFullYear())) + '</span><span class=\"cl-title\">' + esc(e[lang].title) + '</span></span><span class=\"cl-arrow\" aria-hidden=\"true\">\\u2193</span></button>'; }).join(\"\");\nvar prev = document.getElementById(\"prev\"), next = document.getElementById(\"next\");\nprev.disabled = minKey === null || curKey <= minKey; next.disabled = maxKey === null || curKey >= maxKey;\nprev.setAttribute(\"aria-label\", L.prev); next.setAttribute(\"aria-label\", L.next);\nrenderEvent();\n}\nfunction renderEvent() {\nvar L = T[lang], box = document.getElementById(\"event\");\nvar ev = evs.filter(function (e) { return e.date === selected; })[0];\nif (!ev) { box.innerHTML = '<div class=\"empty\"><p class=\"ev-title\">' + esc(L.emptyTitle) + '</p><p class=\"ev-text\">' + esc(L.emptyText) + '</p></div>'; return; }\nvar c = ev[lang], withYear = ev.d.getFullYear() !== today.getFullYear();\nbox.innerHTML =\n'<div class=\"art\" style=\"background:' + ev.artBg + '\">' + svg(ev.art) + '</div>' +\n'<p class=\"ev-date\">' + esc(L.dateLabel(ev.d, withYear)) + '</p>' +\n'<h3 class=\"ev-title\">' + esc(c.title) + '</h3>' +\n'<p class=\"ev-text\">' + esc(c.text) + '</p>' +\n'<div class=\"meta\"><div><span class=\"k\">' + L.time + '</span><span class=\"v\">' + esc(c.time) + '</span></div><div><span class=\"k\">' + L.place + '</span><span class=\"v\">' + esc(c.place) + '</span></div><div><span class=\"k\">' + L.price + '</span><span class=\"v\">' + esc(c.price) + '</span></div></div>' +\n'<div class=\"signup\"><span class=\"k\">' + L.signup + '</span><span class=\"v\">' + esc(c.signup) + '</span></div>' +\n(ev.link ? '<a class=\"ev-link\" href=\"' + esc(ev.link) + '\" target=\"_blank\" rel=\"noopener\">' + esc(c.linkLabel) + '  ↗</a>' : '');\n}\nfunction applyLang() {\nvar L = T[lang];\ndocument.documentElement.lang = lang;\ndocument.querySelectorAll(\"[data-i18n]\").forEach(function (el) { var v = L[el.getAttribute(\"data-i18n\")]; if (typeof v === \"string\") el.textContent = v; });\ndocument.querySelectorAll(\"[data-i18n-html]\").forEach(function (el) { el.innerHTML = L[el.getAttribute(\"data-i18n-html\")].map(function (p) { return \"<p>\" + esc(p) + \"</p>\"; }).join(\"\"); });\ndocument.querySelectorAll(\".lang button\").forEach(function (b) { b.setAttribute(\"aria-pressed\", b.getAttribute(\"data-lang\") === lang); });\ntry { localStorage.setItem(\"cc-lang\", lang); } catch (e) {}\nrenderCalendar();\n}\nfunction show(view) {\nvar merch = view === \"merch\";\ndocument.getElementById(\"view-home\").hidden = merch;\ndocument.getElementById(\"view-merch\").hidden = !merch;\ndocument.querySelectorAll('[data-go=\"merch\"]').forEach(function (a) { if (merch) a.setAttribute(\"aria-current\", \"page\"); else a.removeAttribute(\"aria-current\"); });\n}\nfunction ccRoot() { return document.getElementById(\"cc-root\") || document.scrollingElement; }\nfunction go(target) {\nif (target === \"merch\") { show(\"merch\"); ccRoot().scrollTo(0, 0); return; }\nshow(\"home\");\nvar id = target === \"program\" ? \"program\" : target === \"about\" ? \"om\" : null;\nvar el = id && document.getElementById(id);\nvar R = ccRoot(); R.scrollTo({ top: el ? el.getBoundingClientRect().top - R.getBoundingClientRect().top + R.scrollTop : 0, behavior: \"smooth\" });\n}\ndocument.querySelectorAll(\"[data-art]\").forEach(function (el) { el.innerHTML = svg(el.getAttribute(\"data-art\")); });\ndocument.querySelectorAll(\".lang button\").forEach(function (b) { b.addEventListener(\"click\", function () { lang = b.getAttribute(\"data-lang\"); applyLang(); }); });\ndocument.getElementById(\"prev\").addEventListener(\"click\", function () { curKey--; renderCalendar(); });\ndocument.getElementById(\"next\").addEventListener(\"click\", function () { curKey++; renderCalendar(); });\ndocument.getElementById(\"calDays\").addEventListener(\"click\", function (e) { var b = e.target.closest(\"button[data-date]\"); if (!b) return; selected = b.getAttribute(\"data-date\"); renderCalendar(); if (window.matchMedia(\"(max-width: 760px)\").matches) scrollToEvent(); });\nfunction scrollToEvent() { var R = ccRoot(), el = document.getElementById(\"event\"); R.scrollTo({ top: el.getBoundingClientRect().top - R.getBoundingClientRect().top + R.scrollTop - 16, behavior: \"smooth\" }); }\ndocument.getElementById(\"calList\").addEventListener(\"click\", function (e) { var b = e.target.closest(\"button[data-date]\"); if (!b) return; selected = b.getAttribute(\"data-date\"); renderCalendar(); scrollToEvent(); });\ndocument.querySelectorAll(\"[data-go]\").forEach(function (a) { a.addEventListener(\"click\", function (e) { e.preventDefault(); go(a.getAttribute(\"data-go\")); }); });\napplyLang();\n</script>\n</body>\n</html>","embedURL":""}},"0:4":{"type":"FRAME","id":"0:4","name":"Desktop","absoluteBoundingBox":{"x":64.0,"y":100.0,"width":1280.0,"height":1080.0},"isolatedAbsoluteRenderBounds":{"x":64.0,"y":100.0,"width":1280.0,"height":1080.0},"relativeTransform":[[1.0,0.0,64.0],[0.0,1.0,100.0]],"size":{"x":1280.0,"y":1080.0},"fills":[{"blendMode":"NORMAL","type":"SOLID","color":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"visible":true,"opacity":1.0}],"strokeAlign":"INSIDE","strokes":[],"accessibleHTMLTag":"AUTO","isDecorativeImage":false,"ariaAttributes":{},"interactions":[],"clipsContent":true,"overflowDirection":"VERTICAL_SCROLLING","isBreakpointFrame":true,"children":["1:2"]},"1:2":{"type":"WIDGET","id":"1:2","name":"Embed 1","absoluteBoundingBox":{"x":64.0,"y":100.0,"width":1280.0,"height":1080.0},"isolatedAbsoluteRenderBounds":{"x":64.0,"y":100.0,"width":1280.0,"height":1080.0},"relativeTransform":[[1.0,0.0,0.0],[0.0,1.0,0.0]],"size":{"x":1280.0,"y":1080.0},"constraints":{"vertical":"TOP_BOTTOM","horizontal":"LEFT_RIGHT"},"constraintValues":{"left":{"pixelOffset":0.0,"sizeFraction":0.0},"right":{"pixelOffset":0.0,"sizeFraction":1.0},"top":{"pixelOffset":0.0,"sizeFraction":0.0},"bottom":{"pixelOffset":0.0,"sizeFraction":1.0}},"scrollBehavior":"FIXED","accessibleHTMLTag":"AUTO","isDecorativeImage":false,"ariaAttributes":{},"interactions":[],"syncedState":{"embedAllowFullscreen":"false","embedCodeType":"html","embedIframeHtml":"<!doctype html>\n<html lang=\"da\">\n<head>\n<meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, viewport-fit=cover\">\n<title>Culture Club · A-klassens kulturklub</title>\n<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n<link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/css2?family=Schibsted+Grotesk:wght@700;800;900&family=Instrument+Sans:wght@400;500;600;700&display=swap\">\n<style>\n:root {\n--bg: #F7F6F2; --ink: #111111; --grey: #555555; --soft: #C9C9C9; --rule: #111111;\n--blue: #2442D6; --red: #E8492F; --lemon: #F2DD4E; --white: #FFFFFF; --sand: #E4DED3;\n--display: \"Schibsted Grotesk\", \"Helvetica Neue\", Arial, sans-serif;\n--body: \"Instrument Sans\", \"Helvetica Neue\", Arial, sans-serif;\n--pad: clamp(20px, 7vw, 100px);\ncolor-scheme: light;\n}\n* { box-sizing: border-box; }\nhtml { scroll-behavior: smooth; }\nbody { margin: 0; background: var(--bg); color: var(--ink); font-family: var(--body); font-size: 17px; line-height: 1.55; -webkit-font-smoothing: antialiased; }\nimg, svg { max-width: 100%; display: block; }\na { color: inherit; }\nbutton { font: inherit; color: inherit; }\n:focus-visible { outline: 2px solid var(--blue); outline-offset: 3px; }\n.wrap { max-width: calc(1240px + 2 * var(--pad)); margin: 0 auto; padding-inline: var(--pad); }\n.header { border-bottom: 1px solid var(--rule); background: var(--bg); }\n.header .wrap { display: flex; align-items: center; justify-content: space-between; gap: 24px; padding-block: 26px; }\n.logo { display: inline-flex; align-items: center; gap: 4px; text-decoration: none; font-family: var(--display); font-weight: 900; font-size: 20px; letter-spacing: -0.03em; line-height: 1; }\n.logo i { width: 10px; height: 10px; display: block; }\n.logo span { margin-left: 4px; }\n.nav { display: flex; align-items: center; gap: 36px; }\n.nav a { text-decoration: none; font-weight: 500; font-size: 15px; padding-block: 10px; }\n.nav a[aria-current=\"page\"] { text-decoration: underline; text-underline-offset: 4px; }\n.divider { width: 1px; height: 22px; background: #BDBDBD; }\n.lang { display: inline-flex; border: 1px solid var(--ink); }\n.lang button { border: 0; background: transparent; padding: 9px 12px; font-size: 12px; font-weight: 600; letter-spacing: .04em; cursor: pointer; min-width: 44px; }\n.lang button[aria-pressed=\"true\"] { background: var(--ink); color: var(--white); }\n.links-mobile { display: none; }\n.hero .wrap { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: 56px; align-items: end; padding-block: 80px 100px; }\n.eyebrow { font-size: 12px; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; margin: 0 0 24px; }\nh1 { font-family: var(--display); font-weight: 900; font-size: clamp(84px, 12vw, 176px); line-height: .84; letter-spacing: -0.06em; margin: 0 0 32px; }\n.welcome { font-family: var(--display); font-weight: 700; font-size: clamp(22px, 2.4vw, 28px); line-height: 1.15; letter-spacing: -0.02em; margin: 0 0 16px; max-width: 560px; }\n.intro { max-width: 560px; color: #333; display: grid; gap: 12px; }\n.intro p { margin: 0; }\n.btn { display: inline-flex; align-items: center; gap: 16px; background: var(--ink); color: var(--white); text-decoration: none; font-weight: 600; font-size: 15px; padding: 15px 22px; margin-top: 28px; }\n.tiles { display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: 1fr 1fr; gap: 12px; aspect-ratio: 5 / 6; max-height: 620px; }\n.tile { display: grid; place-items: center; overflow: hidden; }\n.tile svg { width: 82%; height: auto; }\n.tile.tall { grid-row: span 2; }\n.band { background: var(--blue); color: var(--white); }\n.band .wrap { padding-block: 40px; }\n.band p { font-family: var(--display); font-weight: 700; font-size: clamp(24px, 3vw, 40px); line-height: 1.1; letter-spacing: -0.02em; margin: 0; max-width: 1000px; text-wrap: balance; }\n.section .wrap { padding-block: 96px 112px; display: grid; gap: 40px; }\n.label { display: flex; gap: 12px; border-top: 1px solid var(--rule); padding-top: 14px; font-size: 12px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; }\n.head { display: flex; justify-content: space-between; align-items: end; gap: 16px; flex-wrap: wrap; }\nh2 { font-family: var(--display); font-weight: 900; font-size: clamp(52px, 8vw, 120px); line-height: .9; letter-spacing: -0.05em; margin: 0; }\n.head p { margin: 0; max-width: 300px; color: var(--grey); font-size: 15px; }\n.cal-row { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 20px; align-items: stretch; }\n.cal { background: var(--white); border: 1px solid var(--ink); padding: 32px; display: flex; flex-direction: column; gap: 18px; }\n.cal-head { display: flex; justify-content: space-between; align-items: center; gap: 12px; }\n.cal-month { font-family: var(--display); font-weight: 700; font-size: 24px; letter-spacing: -0.02em; margin: 0; }\n.arrows { display: flex; }\n.arrows button { width: 44px; height: 44px; border: 1px solid var(--ink); background: var(--white); cursor: pointer; display: grid; place-items: center; }\n.arrows button + button { border-left: 0; }\n.arrows button:disabled { opacity: .3; cursor: default; }\n.count { display: flex; align-items: center; gap: 8px; font-weight: 600; font-size: 14px; }\n.count i { width: 10px; height: 10px; background: var(--red); display: block; }\n.grid7 { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 4px; text-align: center; }\n.wd { font-size: 12px; font-weight: 600; color: var(--grey); padding-bottom: 10px; border-bottom: 1px solid var(--ink); }\n.day { height: 46px; display: grid; place-items: center; font-size: 15px; color: var(--soft); font-variant-numeric: tabular-nums; }\n.day button { width: 40px; height: 40px; border: 0; background: var(--red); color: var(--ink); font-weight: 700; font-size: 15px; cursor: pointer; }\n.day button[aria-pressed=\"true\"] { background: var(--ink); color: var(--white); }\n.event { background: var(--blue); color: var(--white); padding: 32px; display: flex; flex-direction: column; gap: 16px; }\n.event .art { height: 220px; display: grid; place-items: center; }\n.event .art svg { height: 88%; width: auto; }\n.ev-date { font-size: 12px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; margin: 0; }\n.ev-title { font-family: var(--display); font-weight: 900; font-size: clamp(32px, 3.4vw, 44px); line-height: .95; letter-spacing: -0.04em; margin: 0; text-wrap: balance; }\n.ev-text { color: #E6EAFF; margin: 0; }\n.meta { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; border-top: 1px solid var(--white); padding-top: 12px; }\n.k { font-size: 11px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: #C9D1FF; display: block; margin-bottom: 4px; }\n.v { font-size: 14px; font-weight: 500; line-height: 1.35; }\n.signup { border-top: 1px solid var(--white); padding-top: 12px; }\n.signup .v { line-height: 1.4; }\n.ev-link { align-self: flex-start; background: var(--white); color: var(--ink); text-decoration: none; font-weight: 600; font-size: 14px; padding: 13px 18px; }\n.empty { display: grid; gap: 8px; }\n.tag { display: inline-block; background: var(--lemon); font-size: 12px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; padding: 6px 12px; }\n.merch-head { display: grid; gap: 18px; justify-items: start; }\n.merch-head p { margin: 0; max-width: 520px; color: #333; font-size: 18px; }\n.mystery { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }\n.mystery figure { margin: 0; display: grid; gap: 12px; }\n.mystery .box { aspect-ratio: 1 / 1; display: grid; place-items: center; }\n.mystery .box svg { width: 72%; height: auto; }\n.mystery figcaption { font-family: var(--display); font-weight: 700; font-size: 22px; letter-spacing: -0.02em; }\n.footer { background: var(--ink); color: var(--white); }\n.footer .wrap { padding-block: 56px; display: flex; justify-content: space-between; align-items: flex-end; gap: 24px; flex-wrap: wrap; }\n.footer .marks { display: flex; gap: 6px; margin-bottom: 14px; }\n.footer .marks i { width: 16px; height: 16px; display: block; }\n.footer .word { font-family: var(--display); font-weight: 900; font-size: clamp(52px, 7vw, 96px); line-height: .9; letter-spacing: -0.05em; }\n.footer small { font-size: 14px; color: #BDBDBD; }\n[hidden] { display: none !important; }\n@media (max-width: 760px) {\nbody { font-size: 16px; }\n.header .wrap { flex-wrap: wrap; padding-block: 18px 14px; row-gap: 14px; }\n.nav .page-link, .nav .divider { display: none; }\n.links-mobile { display: flex; gap: 28px; width: 100%; }\n.links-mobile a { text-decoration: none; font-weight: 500; font-size: 15px; padding-block: 6px; }\n.links-mobile a[aria-current=\"page\"] { text-decoration: underline; text-underline-offset: 4px; }\n.hero .wrap { grid-template-columns: minmax(0, 1fr); gap: 32px; padding-block: 36px 48px; }\nh1 { font-size: 88px; }\n.tiles { aspect-ratio: 1 / 1; }\n.band .wrap { padding-block: 28px; }\n.section .wrap { padding-block: 48px 56px; gap: 24px; }\n.cal-row { grid-template-columns: minmax(0, 1fr); gap: 16px; }\n.cal { padding: 16px; }\n.event { padding: 20px; }\n.event .art { height: 190px; }\n.meta { grid-template-columns: repeat(2, minmax(0, 1fr)); row-gap: 14px; }\n.meta > div:first-child { grid-column: span 2; }\n.mystery { grid-template-columns: minmax(0, 1fr); gap: 24px; }\n.mystery .box { aspect-ratio: 7 / 6; }\n.mystery figcaption { font-size: 18px; }\n}\n@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }\n#cc-root{position:absolute;inset:0;overflow-y:auto;overflow-x:hidden;background:var(--bg);-webkit-overflow-scrolling:touch;overscroll-behavior:contain}\n/*cc-fix2*/\n#cc-root .day button{display:grid;place-items:center;text-align:center;padding:0;margin:0;line-height:1;background:var(--red);color:var(--ink);border-radius:0}\n#cc-root .day button[aria-pressed=\"true\"]{background:var(--red);color:var(--ink);box-shadow:0 0 0 2px var(--white),0 0 0 4px var(--ink)}\n#cc-root .arrows button,#cc-root .lang button{text-align:center;line-height:1;margin:0}\n#cc-root .cal-row{align-items:start}\n/*cc-fix3*/\n.cal-list{display:none}\n@media (max-width: 760px){#cc-root .cal-list{display:grid;gap:8px;border-top:1px solid var(--ink);padding-top:14px}\n#cc-root .cal-list button{display:grid;grid-template-columns:12px minmax(0,1fr) auto;align-items:center;gap:12px;width:100%;text-align:left;background:var(--bg);border:1px solid var(--ink);padding:12px 14px;margin:0;cursor:pointer;border-radius:0}\n#cc-root .cal-list i{width:12px;height:12px;background:var(--red);display:block}\n#cc-root .cl-txt{display:grid;gap:2px;min-width:0}\n#cc-root .cl-date{font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--grey)}\n#cc-root .cl-title{font-family:var(--display);font-weight:800;font-size:17px;letter-spacing:-0.02em;line-height:1.15}\n#cc-root .cl-arrow{font-size:20px;line-height:1}}\n</style>\n</head>\n<body>\n<div id=\"cc-root\">\n<header class=\"header\">\n<div class=\"wrap\">\n<a class=\"logo\" href=\"#top\" data-go=\"home\" aria-label=\"Culture Club, forside\"><i style=\"background:var(--red)\"></i><i style=\"background:var(--lemon)\"></i><i style=\"background:var(--blue)\"></i><span>culture club</span></a>\n<nav class=\"nav\" aria-label=\"Menu\">\n<a class=\"page-link\" href=\"#program\" data-go=\"program\" data-i18n=\"navProgram\">Program</a>\n<a class=\"page-link\" href=\"#merch\" data-go=\"merch\" data-i18n=\"navMerch\">Merch</a>\n<a class=\"page-link\" href=\"#om\" data-go=\"about\" data-i18n=\"navAbout\">Om os</a>\n<span class=\"divider\" aria-hidden=\"true\"></span>\n<div class=\"lang\" role=\"group\" aria-label=\"Sprog / Language\">\n<button type=\"button\" data-lang=\"da\" aria-pressed=\"true\">DA</button>\n<button type=\"button\" data-lang=\"en\" aria-pressed=\"false\">EN</button>\n</div>\n</nav>\n<div class=\"links-mobile\">\n<a href=\"#program\" data-go=\"program\" data-i18n=\"navProgram\">Program</a>\n<a href=\"#merch\" data-go=\"merch\" data-i18n=\"navMerch\">Merch</a>\n</div>\n</div>\n</header>\n<main id=\"top\">\n<div id=\"view-home\">\n<section class=\"hero\" id=\"om\">\n<div class=\"wrap\">\n<div>\n<p class=\"eyebrow\" data-i18n=\"eyebrow\">ISJ · A-klassens kulturklub</p>\n<h1>culture<br>club</h1>\n<h2 class=\"welcome\" data-i18n=\"welcome\">Velkommen til A-klassens Kulturklub!</h2>\n<div class=\"intro\" data-i18n-html=\"intro\"></div>\n<a class=\"btn\" href=\"#program\" data-go=\"program\"><span data-i18n=\"cta\">Se programmet</span><span aria-hidden=\"true\">→</span></a>\n</div>\n<div class=\"tiles\" aria-hidden=\"true\">\n<div class=\"tile tall\" style=\"background:var(--lemon)\" data-art=\"film\"></div>\n<div class=\"tile\" style=\"background:var(--red)\" data-art=\"ballet\"></div>\n<div class=\"tile\" style=\"background:var(--white)\" data-art=\"skate\"></div>\n</div>\n</div>\n</section>\n<div class=\"band\"><div class=\"wrap\"><p data-i18n=\"band\">Kunst, bøger, musik, teater, dans, film, sport &amp; meget mere</p></div></div>\n<section class=\"section\" id=\"program\" aria-labelledby=\"progTitle\">\n<div class=\"wrap\">\n<div class=\"label\"><span>01</span><span data-i18n=\"navProgram\">Program</span></div>\n<div class=\"head\">\n<h2 id=\"progTitle\" data-i18n=\"calTitle\">kalender</h2>\n<p data-i18n=\"calSub\">Tryk på pilene for at skifte måned og se, hvad der sker.</p>\n</div>\n<div class=\"cal-row\">\n<div class=\"cal\">\n<div class=\"cal-head\">\n<p class=\"cal-month\" id=\"calMonth\" aria-live=\"polite\"></p>\n<div class=\"arrows\">\n<button type=\"button\" id=\"prev\" aria-label=\"Forrige måned\"><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M15 5l-7 7 7 7\" stroke=\"#111\" stroke-width=\"2\" stroke-linecap=\"square\"/></svg></button>\n<button type=\"button\" id=\"next\" aria-label=\"Næste måned\"><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M9 5l7 7-7 7\" stroke=\"#111\" stroke-width=\"2\" stroke-linecap=\"square\"/></svg></button>\n</div>\n</div>\n<div class=\"count\"><i aria-hidden=\"true\"></i><span id=\"calCount\"></span></div>\n<div class=\"grid7\" id=\"calWeekdays\"></div>\n<div class=\"grid7\" id=\"calDays\"></div>\n<div class=\"cal-list\" id=\"calList\"></div>\n</div>\n<article class=\"event\" id=\"event\" aria-live=\"polite\"></article>\n</div>\n</div>\n</section>\n</div>\n<div id=\"view-merch\" hidden>\n<section class=\"section\" aria-labelledby=\"merchTitle\">\n<div class=\"wrap\">\n<div class=\"label\"><span>02</span><span>Merchandise</span></div>\n<div class=\"merch-head\">\n<h2 id=\"merchTitle\">merchandise</h2>\n<span class=\"tag\" data-i18n=\"soon\">Kommer snart</span>\n<p data-i18n=\"merchText\">Vi arbejder på noget hemmeligt. Mere kan vi ikke sige endnu.</p>\n</div>\n<div class=\"mystery\">\n<figure><div class=\"box\" style=\"background:var(--lemon)\" data-art=\"ghost\"></div><figcaption data-i18n=\"secret1\">Hemmelighed nr. 1</figcaption></figure>\n<figure><div class=\"box\" style=\"background:var(--blue)\" data-art=\"tote\"></div><figcaption data-i18n=\"secret2\">Hemmelighed nr. 2</figcaption></figure>\n<figure><div class=\"box\" style=\"background:var(--red)\" data-art=\"box\"></div><figcaption data-i18n=\"secret3\">Hemmelighed nr. 3</figcaption></figure>\n</div>\n</div>\n</section>\n</div>\n</main>\n<footer class=\"footer\">\n<div class=\"wrap\">\n<div>\n<div class=\"marks\" aria-hidden=\"true\"><i style=\"background:var(--red)\"></i><i style=\"background:var(--lemon)\"></i><i style=\"background:var(--blue)\"></i></div>\n<div class=\"word\">culture club</div>\n</div>\n<small data-i18n=\"footer\">A-klassens kulturklub · ISJ</small>\n</div>\n</footer>\n</div>\n<script>\n/* EVENTS: add new dates here. One block per event. date \"YYYY-MM-DD\". art: film, skate, ballet. link: null if none. */\nvar EVENTS = [\n{\ndate: \"2026-11-01\", art: \"film\", artBg: \"#F2DD4E\",\nlink: \"https://www.dfi.dk/cinemateket/biograf/events/event/arriettys-hemmelige-verden-1061326\",\nda: { title: \"Arriettys hemmelige verden\", text: \"Tur i Cinemateket for at se Arriettys hemmelige verden. Filmen varer ca. 90 minutter. Søskende og forældre er selvfølgelig velkomne.\", time: \"Mødetid 13.00, filmstart 13.30\", place: \"Foran Cinemateket\", price: \"50 kr. pr. deltager\", signup: \"Til Melissa (Luca's mor) på 26 25 54 45, senest 25/10 kl. 12. Beløbet overføres til Melissa ved tilmelding.\", linkLabel: \"Læs mere hos Cinemateket\" },\nen: { title: \"The Secret World of Arrietty\", text: \"A trip to Cinemateket to watch The Secret World of Arrietty. The film runs about 90 minutes. Siblings and parents are very welcome.\", time: \"Meet 13:00, film starts 13:30\", place: \"Outside Cinemateket\", price: \"DKK 50 per person\", signup: \"With Melissa (Luca's mum) on 26 25 54 45 by 25 Oct at 12:00. Pay Melissa when you sign up.\", linkLabel: \"More at Cinemateket\" }\n},\n{\ndate: \"2026-12-10\", art: \"skate\", artBg: \"#F7F6F2\",\nlink: null,\nda: { title: \"Skøjteløb og varm kakao\", text: \"Ekstra julestemning med en tur på isen for børn og forældre, efterfulgt af varm kakao. Vi mødes på Kgs. Nytorv efter skole.\", time: \"16.00 (efter skole)\", place: \"Kgs. Nytorv\", price: \"Egenbetaling: skøjteleje og kakao\", signup: \"Info om tilmelding følger.\" },\nen: { title: \"Ice skating and hot chocolate\", text: \"Extra Christmas spirit with a turn on the ice for kids and parents, followed by hot chocolate. We meet at Kgs. Nytorv after school.\", time: \"16:00 (after school)\", place: \"Kgs. Nytorv\", price: \"Pay your own skate hire and cocoa\", signup: \"Sign-up details coming soon.\" }\n},\n{\ndate: \"2027-01-30\", art: \"ballet\", artBg: \"#E8492F\",\nlink: \"https://www.kglteater.dk/ballet/2627/prinsessen-paa-aerten-en-pixiballet/\",\nda: { title: \"Prinsessen på Ærten\", text: \"En Pixiballet i Operaen. Vi ser forestillingen i foyeren.\", time: \"14.00\", place: \"Operaen, Foyeren\", price: \"Gratis\", signup: \"Til Ulrik (Herberts far) på 51 72 79 53, senest 6/12 kl. 12.\", linkLabel: \"Læs mere hos Det Kgl. Teater\" },\nen: { title: \"The Princess and the Pea\", text: \"A Pixi ballet for young audiences at the Opera, in the foyer.\", time: \"14:00\", place: \"The Opera, foyer\", price: \"Free\", signup: \"With Ulrik (Herbert's dad) on 51 72 79 53 by 6 Dec at 12:00.\", linkLabel: \"More at the Royal Danish Theatre\" }\n}\n];\nvar T = {\nda: {\nnavProgram: \"Program\", navMerch: \"Merch\", navAbout: \"Om os\",\neyebrow: \"ISJ · A-klassens kulturklub\",\nwelcome: \"Velkommen til A-klassens Kulturklub!\",\nintro: [\"Klubbens formål er at samle klassen om en masse sjove, varierede og inspirerende kulturoplevelser. Vi skal både udforske helt nye ting og vende tilbage til klassiske favoritter. Det vigtigste er, at alle har det sjovt, og at vi får prøvet noget nyt fælles.\", \"Hold øje med kalenderen. Aktiviteterne bliver løbende opdateret i kalenderen her på siden. Her finder du alt om de enkelte events, seneste frist for tilmelding og øvrige detaljer.\", \"Nogle arrangementer vil være helt gratis at deltage i, mens der ved andre vil være en mindre egenbetaling.\", \"Vi glæder os til en masse fantastiske oplevelser sammen!\"],\ncta: \"Se programmet\",\nband: \"Kunst, bøger, musik, teater, dans, film, sport & meget mere\",\ncalTitle: \"kalender\", calSub: \"Tryk på pilene for at skifte måned og se, hvad der sker.\",\ntime: \"Tid\", place: \"Sted\", price: \"Pris\", signup: \"Tilmelding\",\nprev: \"Forrige måned\", next: \"Næste måned\",\nmonths: [\"januar\",\"februar\",\"marts\",\"april\",\"maj\",\"juni\",\"juli\",\"august\",\"september\",\"oktober\",\"november\",\"december\"],\ndays: [\"søndag\",\"mandag\",\"tirsdag\",\"onsdag\",\"torsdag\",\"fredag\",\"lørdag\"],\nwd: [\"M\",\"T\",\"O\",\"T\",\"F\",\"L\",\"S\"],\ncount: function (n, m) { return n === 0 ? \"Ingen arrangementer i \" + m : n + (n === 1 ? \" arrangement i \" : \" arrangementer i \") + m; },\ndateLabel: function (d, withYear) { return cap(this.days[d.getDay()]) + \" \" + d.getDate() + \". \" + this.months[d.getMonth()] + (withYear ? \" \" + d.getFullYear() : \"\"); },\nemptyTitle: \"Intet i denne måned\", emptyText: \"Nye datoer kommer snart. Kig forbi igen.\",\nsoon: \"Kommer snart\", merchText: \"Vi arbejder på noget hemmeligt. Mere kan vi ikke sige endnu.\",\nsecret1: \"Hemmelighed nr. 1\", secret2: \"Hemmelighed nr. 2\", secret3: \"Hemmelighed nr. 3\",\nfooter: \"A-klassens kulturklub · ISJ\", dayAria: \"Se arrangement\"\n},\nen: {\nnavProgram: \"What's on\", navMerch: \"Merch\", navAbout: \"About\",\neyebrow: \"ISJ · Class A's culture club\",\nwelcome: \"Welcome to Class A's Culture Club!\",\nintro: [\"The club brings the class together around lots of fun, varied and inspiring cultural experiences. We'll explore brand new things and go back to classic favourites. Most important is that everyone has fun and that we try something new together.\", \"Keep an eye on the calendar. Activities are updated here on the site as we go. You'll find everything about each event, the sign-up deadline and other details.\", \"Some events are completely free, while others have a small fee.\", \"We look forward to lots of great experiences together!\"],\ncta: \"See what's on\",\nband: \"Art, books, music, theatre, dance, film, sport & much more\",\ncalTitle: \"calendar\", calSub: \"Use the arrows to switch month and see what's on.\",\ntime: \"Time\", place: \"Where\", price: \"Price\", signup: \"Sign up\",\nprev: \"Previous month\", next: \"Next month\",\nmonths: [\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],\ndays: [\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],\nwd: [\"M\",\"T\",\"W\",\"T\",\"F\",\"S\",\"S\"],\ncount: function (n, m) { return n === 0 ? \"No events in \" + m : n + (n === 1 ? \" event in \" : \" events in \") + m; },\ndateLabel: function (d, withYear) { return this.days[d.getDay()] + \" \" + d.getDate() + \" \" + this.months[d.getMonth()] + (withYear ? \" \" + d.getFullYear() : \"\"); },\nemptyTitle: \"Nothing this month\", emptyText: \"New dates are coming soon. Check back later.\",\nsoon: \"Coming soon\", merchText: \"We're working on something secret. That's all we can say for now.\",\nsecret1: \"Secret no. 1\", secret2: \"Secret no. 2\", secret3: \"Secret no. 3\",\nfooter: \"Class A's culture club · ISJ\", dayAria: \"See event\"\n}\n};\nfunction cap(s) { return s.charAt(0).toUpperCase() + s.slice(1); }\nvar K = 'stroke=\"#111111\" stroke-width=\"5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"';\nfunction Q(x, y, c) { return '<path d=\"M' + x + ' ' + y + ' q0 -11 11 -11 q11 0 11 11 q0 8 -11 12 v7\" fill=\"none\" stroke=\"' + c + '\" stroke-width=\"5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><circle cx=\"' + (x + 11) + '\" cy=\"' + (y + 27) + '\" r=\"3.5\" fill=\"' + c + '\"/>'; }\nvar holes = [0, 72, 144, 216, 288].map(function (a) { var r = a * Math.PI / 180; return '<circle cx=\"' + (86 + 24 * Math.cos(r)).toFixed(1) + '\" cy=\"' + (92 + 24 * Math.sin(r)).toFixed(1) + '\" r=\"8\" fill=\"#F2DD4E\" ' + K + '/>'; }).join('');\nvar ART = {\nfilm: '<path d=\"M112 120 Q140 150 182 140 L186 162 Q138 176 100 136 Z\" fill=\"#111111\"/><rect x=\"128\" y=\"143\" width=\"7\" height=\"7\" fill=\"#F2DD4E\" transform=\"rotate(20 131 146)\"/><rect x=\"146\" y=\"150\" width=\"7\" height=\"7\" fill=\"#F2DD4E\" transform=\"rotate(12 149 153)\"/><rect x=\"164\" y=\"152\" width=\"7\" height=\"7\" fill=\"#F2DD4E\"/><circle cx=\"86\" cy=\"92\" r=\"48\" fill=\"#FFFFFF\" ' + K + '/>' + holes + '<circle cx=\"86\" cy=\"92\" r=\"5\" fill=\"#111111\"/><path d=\"M160 40 l4 10 l10 4 l-10 4 l-4 10 l-4 -10 l-10 -4 l10 -4 z\" fill=\"#111111\"/>',\nskate: '<path d=\"M62 56 L102 56 L106 106 Q142 108 152 126 L152 138 L62 138 Z\" fill=\"#FFFFFF\" ' + K + '/><path d=\"M86 70 L102 70 M86 82 L103 82 M86 94 L104 94\" ' + K + '/><path d=\"M62 138 L152 138\" ' + K + '/><path d=\"M76 138 L76 156 M138 138 L138 156\" ' + K + '/><path d=\"M52 156 L160 156 Q172 156 170 144\" fill=\"none\" stroke=\"#2442D6\" stroke-width=\"6\" stroke-linecap=\"round\"/><path d=\"M160 46 v20 M150 56 h20 M153 49 l14 14 M167 49 l-14 14\" stroke=\"#2442D6\" stroke-width=\"3\" stroke-linecap=\"round\"/><path d=\"M36 92 v14 M29 99 h14 M31 94 l10 10 M41 94 l-10 10\" stroke=\"#2442D6\" stroke-width=\"3\" stroke-linecap=\"round\"/>',\nballet: '<path d=\"M78 58 L84 34 L98 50 L110 30 L120 50 L132 36 L130 58 Z\" fill=\"#F2DD4E\" ' + K + '/><rect x=\"58\" y=\"62\" width=\"88\" height=\"14\" fill=\"#FFFFFF\" ' + K + '/><rect x=\"52\" y=\"76\" width=\"96\" height=\"14\" fill=\"#F2DD4E\" ' + K + '/><rect x=\"56\" y=\"90\" width=\"92\" height=\"14\" fill=\"#2442D6\" ' + K + '/><rect x=\"50\" y=\"104\" width=\"98\" height=\"14\" fill=\"#FFFFFF\" ' + K + '/><rect x=\"54\" y=\"118\" width=\"94\" height=\"14\" fill=\"#F2DD4E\" ' + K + '/><rect x=\"50\" y=\"132\" width=\"100\" height=\"14\" fill=\"#FFFFFF\" ' + K + '/><path d=\"M44 164 L160 164\" ' + K + '/><circle cx=\"100\" cy=\"155\" r=\"8\" fill=\"#2FA35A\" ' + K + '/>',\nghost: '<path d=\"M100 47 q0 -15 12 -15 q11 0 10 11\" fill=\"none\" ' + K + '/><path d=\"M58 68 Q100 46 142 68 L150 152 Q140 140 130 154 Q120 140 110 154 Q100 140 90 154 Q80 140 70 154 Q60 140 50 152 Z\" fill=\"#FFFFFF\" ' + K + '/><ellipse cx=\"88\" cy=\"100\" rx=\"5.5\" ry=\"8\" fill=\"#111111\"/><ellipse cx=\"113\" cy=\"100\" rx=\"5.5\" ry=\"8\" fill=\"#111111\"/>' + Q(146, 38, '#111111'),\ntote: '<path d=\"M76 82 Q76 46 100 46 Q124 46 124 82\" fill=\"none\" stroke=\"#FFFFFF\" stroke-width=\"6\" stroke-linecap=\"round\"/><path d=\"M55 82 L145 82 L138 166 L62 166 Z\" fill=\"#F7F6F2\" ' + K + '/><path d=\"M92 112 v-8 a8 8 0 0 1 16 0 v8\" fill=\"none\" ' + K + '/><rect x=\"86\" y=\"112\" width=\"28\" height=\"22\" rx=\"3\" fill=\"#F2DD4E\" ' + K + '/><path d=\"M42 44 l4 10 l10 4 l-10 4 l-4 10 l-4 -10 l-10 -4 l10 -4 z\" fill=\"#F2DD4E\"/><path d=\"M160 140 l3 7 l7 3 l-7 3 l-3 7 l-3 -7 l-7 -3 l7 -3 z\" fill=\"#F2DD4E\"/>',\nbox: '<rect x=\"52\" y=\"96\" width=\"96\" height=\"66\" fill=\"#F2DD4E\" ' + K + '/><rect x=\"94\" y=\"96\" width=\"12\" height=\"66\" fill=\"#2442D6\"/><path d=\"M54 98 L146 86 L146 96 L54 106 Z\" fill=\"#111111\"/><circle cx=\"90\" cy=\"98\" r=\"5\" fill=\"#FFFFFF\"/><circle cx=\"109\" cy=\"96\" r=\"5\" fill=\"#FFFFFF\"/><circle cx=\"91\" cy=\"99\" r=\"2.2\" fill=\"#111111\"/><circle cx=\"110\" cy=\"97\" r=\"2.2\" fill=\"#111111\"/><path d=\"M44 84 L150 64 L156 82 L50 102 Z\" fill=\"#F2DD4E\" ' + K + '/>' + Q(58, 38, '#FFFFFF') + Q(132, 26, '#FFFFFF')\n};\nfunction svg(name) { return '<svg viewBox=\"0 0 200 200\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">' + ART[name] + '</svg>'; }\nfunction esc(s) { return String(s).replace(/[&<>\"]/g, function (c) { return { \"&\": \"&amp;\", \"<\": \"&lt;\", \">\": \"&gt;\", '\"': \"&quot;\" }[c]; }); }\nvar lang = \"da\";\ntry { var s = localStorage.getItem(\"cc-lang\"); lang = s === \"en\" ? \"en\" : \"da\"; } catch (e) {}\nfunction parse(d) { var p = d.split(\"-\"); return new Date(+p[0], +p[1] - 1, +p[2]); }\nvar evs = EVENTS.map(function (e) { var d = parse(e.date); return Object.assign({}, e, { d: d, key: d.getFullYear() * 12 + d.getMonth() }); }).sort(function (a, b) { return a.d - b.d; });\nvar minKey = evs.length ? evs[0].key : null, maxKey = evs.length ? evs[evs.length - 1].key : null;\nvar today = new Date(); today.setHours(0, 0, 0, 0);\nvar upcoming = evs.filter(function (e) { return e.d >= today; })[0] || evs[evs.length - 1];\nvar curKey = upcoming ? upcoming.key : today.getFullYear() * 12 + today.getMonth();\nvar selected = upcoming ? upcoming.date : null;\nfunction renderCalendar() {\nvar L = T[lang], y = Math.floor(curKey / 12), m = curKey % 12;\ndocument.getElementById(\"calMonth\").textContent = cap(L.months[m]) + \" \" + y;\nvar inMonth = evs.filter(function (e) { return e.key === curKey; });\ndocument.getElementById(\"calCount\").textContent = L.count(inMonth.length, L.months[m]);\ndocument.getElementById(\"calWeekdays\").innerHTML = L.wd.map(function (w) { return '<div class=\"wd\">' + w + '</div>'; }).join(\"\");\nif (!inMonth.some(function (e) { return e.date === selected; })) selected = inMonth.length ? inMonth[0].date : null;\nvar lead = (new Date(y, m, 1).getDay() + 6) % 7, dim = new Date(y, m + 1, 0).getDate(), html = \"\";\nfor (var i = 0; i < lead; i++) html += '<div class=\"day\"></div>';\nfor (var d = 1; d <= dim; d++) {\nvar ev = inMonth.filter(function (e) { return e.d.getDate() === d; })[0];\nhtml += ev ? '<div class=\"day\"><button type=\"button\" data-date=\"' + ev.date + '\" aria-pressed=\"' + (ev.date === selected) + '\" aria-label=\"' + esc(L.dayAria + \": \" + ev[lang].title) + '\">' + d + '</button></div>' : '<div class=\"day\">' + d + '</div>';\n}\nvar cells = lead + dim; while (cells % 7) { html += '<div class=\"day\"></div>'; cells++; }\ndocument.getElementById(\"calDays\").innerHTML = html;\ndocument.getElementById(\"calList\").innerHTML = inMonth.map(function (e) { return '<button type=\"button\" data-date=\"' + e.date + '\"><i aria-hidden=\"true\"></i><span class=\"cl-txt\"><span class=\"cl-date\">' + esc(L.dateLabel(e.d, e.d.getFullYear() !== today.getFullYear())) + '</span><span class=\"cl-title\">' + esc(e[lang].title) + '</span></span><span class=\"cl-arrow\" aria-hidden=\"true\">\\u2193</span></button>'; }).join(\"\");\nvar prev = document.getElementById(\"prev\"), next = document.getElementById(\"next\");\nprev.disabled = minKey === null || curKey <= minKey; next.disabled = maxKey === null || curKey >= maxKey;\nprev.setAttribute(\"aria-label\", L.prev); next.setAttribute(\"aria-label\", L.next);\nrenderEvent();\n}\nfunction renderEvent() {\nvar L = T[lang], box = document.getElementById(\"event\");\nvar ev = evs.filter(function (e) { return e.date === selected; })[0];\nif (!ev) { box.innerHTML = '<div class=\"empty\"><p class=\"ev-title\">' + esc(L.emptyTitle) + '</p><p class=\"ev-text\">' + esc(L.emptyText) + '</p></div>'; return; }\nvar c = ev[lang], withYear = ev.d.getFullYear() !== today.getFullYear();\nbox.innerHTML =\n'<div class=\"art\" style=\"background:' + ev.artBg + '\">' + svg(ev.art) + '</div>' +\n'<p class=\"ev-date\">' + esc(L.dateLabel(ev.d, withYear)) + '</p>' +\n'<h3 class=\"ev-title\">' + esc(c.title) + '</h3>' +\n'<p class=\"ev-text\">' + esc(c.text) + '</p>' +\n'<div class=\"meta\"><div><span class=\"k\">' + L.time + '</span><span class=\"v\">' + esc(c.time) + '</span></div><div><span class=\"k\">' + L.place + '</span><span class=\"v\">' + esc(c.place) + '</span></div><div><span class=\"k\">' + L.price + '</span><span class=\"v\">' + esc(c.price) + '</span></div></div>' +\n'<div class=\"signup\"><span class=\"k\">' + L.signup + '</span><span class=\"v\">' + esc(c.signup) + '</span></div>' +\n(ev.link ? '<a class=\"ev-link\" href=\"' + esc(ev.link) + '\" target=\"_blank\" rel=\"noopener\">' + esc(c.linkLabel) + '  ↗</a>' : '');\n}\nfunction applyLang() {\nvar L = T[lang];\ndocument.documentElement.lang = lang;\ndocument.querySelectorAll(\"[data-i18n]\").forEach(function (el) { var v = L[el.getAttribute(\"data-i18n\")]; if (typeof v === \"string\") el.textContent = v; });\ndocument.querySelectorAll(\"[data-i18n-html]\").forEach(function (el) { el.innerHTML = L[el.getAttribute(\"data-i18n-html\")].map(function (p) { return \"<p>\" + esc(p) + \"</p>\"; }).join(\"\"); });\ndocument.querySelectorAll(\".lang button\").forEach(function (b) { b.setAttribute(\"aria-pressed\", b.getAttribute(\"data-lang\") === lang); });\ntry { localStorage.setItem(\"cc-lang\", lang); } catch (e) {}\nrenderCalendar();\n}\nfunction show(view) {\nvar merch = view === \"merch\";\ndocument.getElementById(\"view-home\").hidden = merch;\ndocument.getElementById(\"view-merch\").hidden = !merch;\ndocument.querySelectorAll('[data-go=\"merch\"]').forEach(function (a) { if (merch) a.setAttribute(\"aria-current\", \"page\"); else a.removeAttribute(\"aria-current\"); });\n}\nfunction ccRoot() { return document.getElementById(\"cc-root\") || document.scrollingElement; }\nfunction go(target) {\nif (target === \"merch\") { show(\"merch\"); ccRoot().scrollTo(0, 0); return; }\nshow(\"home\");\nvar id = target === \"program\" ? \"program\" : target === \"about\" ? \"om\" : null;\nvar el = id && document.getElementById(id);\nvar R = ccRoot(); R.scrollTo({ top: el ? el.getBoundingClientRect().top - R.getBoundingClientRect().top + R.scrollTop : 0, behavior: \"smooth\" });\n}\ndocument.querySelectorAll(\"[data-art]\").forEach(function (el) { el.innerHTML = svg(el.getAttribute(\"data-art\")); });\ndocument.querySelectorAll(\".lang button\").forEach(function (b) { b.addEventListener(\"click\", function () { lang = b.getAttribute(\"data-lang\"); applyLang(); }); });\ndocument.getElementById(\"prev\").addEventListener(\"click\", function () { curKey--; renderCalendar(); });\ndocument.getElementById(\"next\").addEventListener(\"click\", function () { curKey++; renderCalendar(); });\ndocument.getElementById(\"calDays\").addEventListener(\"click\", function (e) { var b = e.target.closest(\"button[data-date]\"); if (!b) return; selected = b.getAttribute(\"data-date\"); renderCalendar(); if (window.matchMedia(\"(max-width: 760px)\").matches) scrollToEvent(); });\nfunction scrollToEvent() { var R = ccRoot(), el = document.getElementById(\"event\"); R.scrollTo({ top: el.getBoundingClientRect().top - R.getBoundingClientRect().top + R.scrollTop - 16, behavior: \"smooth\" }); }\ndocument.getElementById(\"calList\").addEventListener(\"click\", function (e) { var b = e.target.closest(\"button[data-date]\"); if (!b) return; selected = b.getAttribute(\"data-date\"); renderCalendar(); scrollToEvent(); });\ndocument.querySelectorAll(\"[data-go]\").forEach(function (a) { a.addEventListener(\"click\", function (e) { e.preventDefault(); go(a.getAttribute(\"data-go\")); }); });\napplyLang();\n</script>\n</body>\n</html>","embedURL":""}}},"assetIdToGuid":{},"guidToUrl":{"0:3":"/"},"fonts":{},"assets":{},"stablePathToAssetInfo":{},"animateRootIds":[],"siteSettings":{"scalingMode":"REFLOW","blockSearchIndexing":true,"labs":{"E5FBBA911B2B7A09E649D4BE6CDF8591EAEFC881":false},"title":"Culture Club site"},"sourceCodeHash":""}