/* DIS SON ANTS · the front door of dissonance.craitr.no (Fri 9 Oct 2026, Neko, front-door lane).
   Type after Tora's latest prototype (kk26, 6 Oct): Poppins for the text (her body face, OFL 1.1, fonts/Poppins-OFL.txt) and,
   for display, Michroma (Vernon Adams, OFL 1.1, fonts/Michroma-OFL.txt) standing in for her Dark Nexis, which is licensed for
   personal use only and so is never served here. THE SWAP: the day a web licence for Dark Nexis exists, add its @font-face below
   and change the ONE variable --f-display to "DarkNexis", "Michroma", sans-serif. Nothing else names the display face. */
@font-face{font-family:"Poppins";src:url("fonts/poppins-light.woff2?v=20261009a") format("woff2");font-weight:300;font-style:normal;font-display:swap}
@font-face{font-family:"Poppins";src:url("fonts/poppins-regular.woff2?v=20261009a") format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Poppins";src:url("fonts/poppins-medium.woff2?v=20261009a") format("woff2");font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:"Poppins";src:url("fonts/poppins-semibold.woff2?v=20261009a") format("woff2");font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:"Michroma";src:url("fonts/michroma-400.woff2?v=20261009a") format("woff2");font-weight:400;font-style:normal;font-display:swap}
/* @font-face{font-family:"DarkNexis";src:url("fonts/DarkNexis.woff2") format("woff2");font-display:swap}   <- only with a web licence */

:root{
  --f-display:"Michroma","Arial Black",sans-serif;
  --f-text:"Poppins","Helvetica Neue",Arial,sans-serif;
}
/* colours live on the front's own boxes: index.html's inline :root keeps the fly's --ink/--line for the map and fly-mode */
#door,#tapsound{
  --paper:#000; --ink:#fff; --muted:#c8c8c8; --quiet:#8e8e8e; --line:#2e2e2e; --line2:#555;
  /* the credits are a Winamp 2 playlist: the base skin's own colours */
  --wa-bg:#000; --wa-text:#00e000; --wa-cur:#fff; --wa-sel:#0000c6; --wa-frame:#2b2b3a; --wa-frame2:#4d4d68; --wa-title:#b8b8d0;
}

/* ---------- the front (inside #door, which scrolls on its own; the fly's pages below keep body overflow hidden) ---------- */
html.direct #door{display:none}
#door{position:fixed;inset:0;overflow:auto;overscroll-behavior:contain;background:var(--paper);color:var(--ink);font:400 15px/1.7 var(--f-text);
  -webkit-font-smoothing:antialiased;transition:opacity .9s ease;display:block;padding:0}
#door.gone{opacity:0;pointer-events:none}
#door a{color:inherit}
.fr{width:min(1180px,calc(100% - 32px));margin-inline:auto}
.fr-top{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:18px 0 0;font:500 11px/1.4 var(--f-text);letter-spacing:.08em;text-transform:uppercase;color:var(--quiet)}
.fr-top a{text-decoration:none;color:var(--muted)}
.fr-top a:hover{color:var(--ink);text-decoration:underline;text-underline-offset:4px}

.fr-hero{padding:clamp(40px,9vh,110px) 0 0}
.fr-hero h1{font:400 clamp(44px,8.3vw,108px)/1.02 var(--f-display);letter-spacing:.01em;margin:0;text-transform:uppercase;white-space:nowrap}
.fr-hero h1 span{display:inline-block}
.fr-hero h1 .o{color:transparent;-webkit-text-stroke:1.5px var(--ink)}
@supports not (-webkit-text-stroke:1px #fff){.fr-hero h1 .o{color:var(--ink)}}
#hexhint{height:56px;width:100%;display:block;opacity:.9;margin:22px 0 4px}
.fr-lede{font:300 clamp(17px,1.6vw,21px)/1.5 var(--f-text);margin:6px 0 0;color:var(--muted)}
.fr-lede a{color:var(--ink);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:5px}

/* ---------- the two doors ---------- */
.fr-doors{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:clamp(30px,6vh,64px) 0 0}
.door{display:flex;flex-direction:column;gap:10px;text-align:left;cursor:pointer;padding:24px 26px 26px;min-height:220px;border:1.5px solid var(--ink);
  font:inherit;text-decoration:none;position:relative;transition:transform .15s ease,background .2s,color .2s}
.door .k{font:500 11px/1.4 var(--f-text);letter-spacing:.12em;text-transform:uppercase}
.door .t{font:400 clamp(30px,3.9vw,54px)/1.05 var(--f-display);text-transform:uppercase;letter-spacing:.01em;margin:6px 0 4px}
.door .d{font:400 14px/1.65 var(--f-text);max-width:34em}
.door .go{margin-top:auto;font:500 12px/1 var(--f-text);letter-spacing:.14em;text-transform:uppercase;display:flex;align-items:center;gap:10px}
.door .go i{display:inline-block;width:34px;height:1.5px;background:currentColor;position:relative;transition:width .2s}
.door .go i::after{content:"";position:absolute;right:0;top:-4px;width:8px;height:8px;border-top:1.5px solid currentColor;border-right:1.5px solid currentColor;transform:rotate(45deg)}
.door:hover .go i,.door:focus-visible .go i{width:54px}
.door:active{transform:translateY(1px)}
.door.on{background:var(--ink);color:var(--paper)}
.door.on .d{color:#2a2a2a}
.door.with{background:var(--paper);color:var(--ink)}
.door.with .t{color:transparent;-webkit-text-stroke:1.2px var(--ink)}
.door.with .d{color:var(--muted)}
.door.with:hover{background:#0d0d0d}
.door:focus-visible{outline:2px solid #00e000;outline-offset:4px}
.door[aria-busy="true"]{opacity:.6;cursor:progress}

/* ---------- the workshop + the credits ---------- */
.fr-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);gap:clamp(28px,5vw,72px);margin:clamp(56px,10vh,110px) 0 0;align-items:start}
.fr-about h2,.fr-credits h2{font:400 13px/1.5 var(--f-display);letter-spacing:.08em;text-transform:uppercase;margin:0 0 18px;padding-top:14px;border-top:1.5px solid var(--ink)}
.fr-about p{margin:0 0 14px;color:#ddd;font-size:15px;line-height:1.75}
.fr-about p.when{font:500 12px/1.6 var(--f-text);letter-spacing:.08em;text-transform:uppercase;color:var(--ink);margin-bottom:16px}
.fr-about ol{list-style:none;margin:6px 0 18px;padding:0;border-top:1px solid var(--line)}
.fr-about li{display:grid;grid-template-columns:3.2em 1fr;gap:8px;padding:9px 0;border-bottom:1px solid var(--line);font-size:14px;line-height:1.55;color:#ddd}
.fr-about li b{font:400 12px/1.9 var(--f-display);color:var(--ink)}
.fr-about li span em{font-style:normal;color:var(--quiet)}
.fr-about a{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:4px}
.fr-about .src{font-size:12px;color:var(--quiet)}

/* the credits: a Winamp 2 playlist window (CREDITS.M3U) + the ID3 tag of the row that plays */
.wa{background:var(--wa-frame);border:1px solid #000;box-shadow:inset 1px 1px 0 var(--wa-frame2),inset -1px -1px 0 #14141c;padding:0 5px 6px;user-select:none}
.wa-bar{display:flex;align-items:center;gap:8px;height:20px;font:600 9px/1 Tahoma,Verdana,var(--f-text);letter-spacing:.18em;color:var(--wa-title);text-transform:uppercase}
.wa-bar::before,.wa-bar::after{content:"";flex:1;height:7px;background:repeating-linear-gradient(to bottom,#7a7aa0 0 1px,transparent 1px 3px)}
.wa-disp{background:#000;border:1px solid #14141c;box-shadow:inset 1px 1px 0 #000,1px 1px 0 var(--wa-frame2);display:grid;grid-template-columns:auto 1fr;gap:10px;align-items:center;padding:7px 9px;margin-bottom:5px}
.wa-time{font:400 22px/1 var(--f-display);color:var(--wa-text);letter-spacing:.04em;min-width:4.2em;font-variant-numeric:tabular-nums}
.wa-marq{overflow:hidden;white-space:nowrap;font:500 13px/1.2 var(--f-text);color:var(--wa-text);letter-spacing:.06em;text-transform:uppercase;mask-image:linear-gradient(90deg,transparent,#000 4%,#000 96%,transparent)}
.wa-marq span{display:inline-block;padding-left:100%;animation:marq 16s linear infinite}
@keyframes marq{to{transform:translateX(-100%)}}
.wa-list{background:var(--wa-bg);border:1px solid #14141c;max-height:none;overflow:hidden;margin:0;padding:3px 0;list-style:none;font:400 14px/1.15 var(--f-text);counter-reset:none}
.wa-list li{margin:0}
.wa-grp{padding:9px 9px 4px;color:#7fbf7f;font:500 10.5px/1.35 var(--f-text);letter-spacing:.14em;text-transform:uppercase}
.wa-grp small{display:block;letter-spacing:.02em;text-transform:none;font:400 12px/1.45 var(--f-text);color:#4f9a4f;margin-top:2px}
.wa-row{display:grid;grid-template-columns:2.1em 1fr auto;gap:6px;align-items:baseline;width:100%;border:0;background:transparent;color:var(--wa-text);font:inherit;text-align:left;padding:4px 9px;cursor:pointer}
.wa-row .n{color:inherit;opacity:.9;font-variant-numeric:tabular-nums}
.wa-row .tag{font-size:12px;letter-spacing:.04em;color:inherit;opacity:.85;font-variant-numeric:tabular-nums}
.wa-row:hover{color:#7dff7d}
.wa-row.cur{color:var(--wa-cur)}
.wa-row.sel{background:var(--wa-sel)}
.wa-row:focus-visible{outline:1px dotted #fff;outline-offset:-2px}
#door a.wa-row{text-decoration:none;color:var(--wa-text)}
#door a.wa-row.cur{color:var(--wa-cur)}
.wa-id3{margin-top:6px;background:#000;border:1px solid #14141c;padding:10px 12px 12px;font:400 13px/1.5 var(--f-text);color:#d8d8d8;min-height:11.5em}
.wa-id3 .h{font:600 9px/1 Tahoma,Verdana,var(--f-text);letter-spacing:.18em;color:var(--wa-title);text-transform:uppercase;margin-bottom:8px}
.wa-id3 dl{display:grid;grid-template-columns:6.2em 1fr;gap:3px 10px;margin:0}
.wa-id3 dt{color:#7fbf7f;font-size:11px;letter-spacing:.1em;text-transform:uppercase;padding-top:2px}
.wa-id3 dd{margin:0;color:#eee}
.wa-id3 dd.title{color:#fff;font-weight:500}
.wa-foot{display:flex;justify-content:space-between;gap:10px;margin-top:6px;font:500 10px/1.3 Tahoma,Verdana,var(--f-text);letter-spacing:.08em;color:var(--wa-title);text-transform:uppercase}
.wa-foot button{background:#1c1c28;border:1px solid var(--wa-frame2);color:var(--wa-title);font:inherit;padding:3px 8px;cursor:pointer}
.wa-foot button:hover{color:#fff}

.fr-foot{margin:clamp(56px,10vh,110px) 0 0;padding:16px 0 26px;border-top:1px solid var(--line2);display:flex;flex-wrap:wrap;justify-content:space-between;gap:10px 24px;
  font:400 12px/1.6 var(--f-text);color:var(--quiet)}
.fr-foot a{color:var(--muted)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* the direct door (/fly): if the browser holds the sound back until a gesture, one tap lets it in */
#tapsound{position:fixed;left:50%;bottom:max(18px,4vh);transform:translateX(-50%);z-index:2147483000;display:flex;align-items:center;gap:12px;
  background:#000;color:#fff;border:1.5px solid #fff;padding:12px 18px;font:500 13px/1.2 var(--f-text);letter-spacing:.08em;text-transform:uppercase;cursor:pointer}
#tapsound b{font:400 15px/1 var(--f-display)}

@media (max-width:820px){
  .fr-doors{grid-template-columns:1fr}
  .door{min-height:0;padding:20px 20px 22px}
  .fr-grid{grid-template-columns:1fr}
}
@media (max-width:560px){
  .fr-hero h1{white-space:normal;font-size:clamp(46px,19vw,92px);line-height:1.04}
  .fr-hero h1 span{display:block}
  .fr-top{font-size:10px}
  .wa-row{grid-template-columns:1.9em 1fr auto;font-size:14px;padding:6px 8px}
  .wa-id3 dl{grid-template-columns:5.4em 1fr}
}
@media (prefers-reduced-motion: reduce){.wa-marq span{animation:none;padding-left:0}#door{transition:none}.door{transition:none}}
