:root{color-scheme:dark;--kk-gold:#f4d093;--kk-text:#fff4e0;--kk-scale:.7}
*{box-sizing:border-box}body{margin:0;background:#07131e;color:var(--kk-text);font:16px/1.5 system-ui,-apple-system,"Segoe UI",sans-serif}h1,h2,p{margin:0}[hidden]{display:none!important}a{color:#93e6dd}button,a,canvas{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;color:var(--kk-text);background:linear-gradient(#164048,#06212a);border:2px solid #c3985d;border-radius:8px;padding:12px 16px;box-shadow:inset 0 0 0 3px #08252b,inset 0 0 0 4px #688278,0 4px 8px #0008}button:hover{filter:brightness(1.15)}button:disabled{opacity:.55;cursor:default}button:focus-visible,a:focus-visible,canvas:focus-visible{outline:3px solid #87ffee;outline-offset:3px}.kk-skip{position:absolute;left:12px;top:-80px;z-index:20;background:#092029;padding:12px}.kk-skip:focus{top:10px}.kk-nav{display:flex;justify-content:space-between;gap:15px;max-width:1800px;margin:auto;padding:12px 20px;font-size:.85rem}.kk-nav a{text-decoration:none}.kk-nav span{color:#bbd1d3}main{max-width:1832px;margin:auto;padding:0 12px}.kk-island{position:relative;margin:auto;max-width:1800px}.kk-stage{position:relative;width:calc(1800px * var(--kk-scale));height:calc(1000px * var(--kk-scale));max-width:100%;margin:auto;overflow:hidden;border-radius:9px;box-shadow:0 8px 28px #0008}.kk-scene{position:relative;isolation:isolate;width:1800px;height:1000px;transform:scale(var(--kk-scale));transform-origin:top left;background:#80603a url('assets/strandbahn-szene-v2.png') center/100% 100% no-repeat;font-family:Georgia,"Times New Roman",serif}.kk-game-grid,.kk-board-column{display:contents}.kk-board-wrap{position:absolute;inset:0;z-index:1}.kk-board-wrap canvas{display:block;width:100%;height:100%;touch-action:none;cursor:crosshair;user-select:none}.kk-sign{position:absolute;left:29%;top:1.5%;width:42%;height:12.2%;display:flex;justify-content:center;align-items:center;text-align:center;color:var(--kk-gold);z-index:3;pointer-events:none;text-shadow:0 3px 2px #281305,0 0 4px #160d06}.kk-sign h1{font:700 62px/1 Georgia,serif;letter-spacing:.01em;text-transform:uppercase;white-space:nowrap}.kk-sign .kk-eyebrow{font:21px/1.15 Georgia,serif;letter-spacing:.12em;margin-bottom:5px}.kk-subtitle{font:30px/1.2 Georgia,serif;letter-spacing:.035em;margin-top:5px}.kk-sign-ornament{display:none}.kk-eyebrow{font:700 11px/1.3 system-ui,sans-serif;text-transform:uppercase;letter-spacing:.13em;color:var(--kk-gold)}.kk-season-strip{position:absolute;top:15%;left:27%;width:46%;z-index:3;display:flex;gap:5px 18px;flex-wrap:wrap;justify-content:center;align-items:center;font:14px/1.4 system-ui,sans-serif;text-align:center;text-shadow:0 1px 3px #000;background:#06282dbb;border:1px solid #e3c28550;border-radius:20px;padding:4px 12px;pointer-events:none}.kk-plaque{position:absolute;z-index:3;color:#fff7e6;min-width:0;text-shadow:0 2px 2px #001214;pointer-events:none}.kk-plaque h2{font:normal 26px/1.15 Georgia,serif;text-transform:uppercase;color:var(--kk-gold)}.kk-scoreboard{left:11.05%;top:10.8%;width:12.7%;height:46.3%;display:flex;flex-direction:column;justify-content:space-around;text-align:center;transform:perspective(1000px) rotateY(5deg) rotateZ(-.8deg)}.kk-score-section{padding:11px 0 14px;border-bottom:1px solid #d5ae687f}.kk-score-section:last-of-type{border:0}.kk-score-section h2{font-size:25px}.kk-score{display:block;font:700 72px/1.15 Georgia,serif;color:#fffaf0;margin-top:4px}.kk-throw{display:block;font:normal 51px/1.25 Georgia,serif;white-space:nowrap;margin-top:7px}.kk-throw small{font-size:inherit}.kk-last-hit{display:block;font:normal 32px/1.18 Georgia,serif;margin-top:12px;min-height:38px}.kk-best{display:block;font:normal 51px/1.2 Georgia,serif;margin-top:7px}.kk-coconuts,.kk-series,.kk-plaque-note{display:none}.kk-rankings{left:76.15%;top:11.15%;width:14.85%;height:59.5%;display:flex;flex-direction:column;transform:perspective(1300px) rotateY(-5deg) rotateZ(.8deg)}.kk-rankings h2{text-align:center;font-size:29px;white-space:nowrap}.kk-rankings>section{min-width:0}.kk-rankings>section:not(.kk-season-ranking){order:2;border-top:2px solid #ba8f51;margin-top:19px;padding-top:17px}.kk-season-ranking{order:1}.kk-rank-subtitle{text-align:center;font:12px/1.4 system-ui,sans-serif;color:#ebd9b4;margin:6px 0 12px}.kk-rank-list{list-style:none;padding:0;margin:0}.kk-rank-list li{display:flex;align-items:center;gap:12px;border-bottom:1px solid #7d9b8766;font:22px/1.25 Georgia,serif;min-height:33px;padding:4px 2px}.kk-place{flex-shrink:0;width:22px;color:var(--kk-gold);font-variant-numeric:tabular-nums}.kk-rank-name{flex:1;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.kk-rank-list strong{font-weight:normal;font-variant-numeric:tabular-nums}.kk-rank-list li.is-me{background:#ddc1732d;outline:1px solid #d0b275}.kk-rank-note{display:none}.kk-meter-panel{position:absolute;left:26%;top:87.1%;width:29%;height:9.5%;z-index:4;color:#ffe3ad}.kk-meter-label{display:flex;justify-content:space-between;gap:8px;font:14px/1.4 system-ui,sans-serif;text-shadow:0 1px 3px #000}.kk-meter{height:35px;border:3px solid #cfab6c;border-radius:22px;overflow:hidden;margin:5px 0 9px;background:repeating-linear-gradient(90deg,#071e25 0,#071e25 9.6%,#63706a 9.6%,#63706a 10%);box-shadow:0 0 0 2px #33200d,inset 0 3px 5px #0009}.kk-meter span{display:block;height:100%;width:65%;background:linear-gradient(90deg,#0795a5,#4ee8e4 60%,#e8b458 80%,#ffec9c);box-shadow:0 0 14px #71e7d4;border-right:2px solid #fff1c0}.kk-meter-panel p{text-align:center;font:23px/1.2 Georgia,serif;text-shadow:0 2px 2px #231407}.kk-meter-panel strong{font-weight:normal}.kk-controls{position:absolute;left:60.6%;top:88.3%;width:17.4%;z-index:4}.kk-control-buttons{display:flex;gap:10px}.kk-control-buttons button{width:104px;min-width:0;height:76px;padding:8px 3px;font:20px/1.2 Georgia,serif;white-space:normal}.kk-message{position:absolute;right:0;top:87px;width:980px;text-align:center;color:#fae7be;font:13px/1.3 system-ui,sans-serif;text-shadow:0 1px 3px #000;pointer-events:none}.kk-welcome-note{position:absolute;z-index:2;left:1.55%;top:23.5%;width:5.3%;font:bold 25px/1.3 Georgia,serif;text-align:center;color:#3f260f;text-shadow:0 1px #e4bd83;transform:rotate(-2deg);pointer-events:none}.kk-crate-note{position:absolute;z-index:2;left:13%;top:76.5%;width:9%;font:bold 29px/1.2 Georgia,serif;text-align:center;color:#35200c;text-shadow:0 1px #cfa56a;transform:rotate(-19deg);pointer-events:none}.kk-hit-flash{position:absolute;top:53%;left:32%;right:32%;text-align:center;pointer-events:none;color:#fff1c4;font:700 43px/1.15 Georgia,serif;text-shadow:0 3px 5px #331904,0 0 18px #271506;opacity:0;transition:opacity .2s;z-index:4}.kk-hit-flash.is-visible{opacity:1}.kk-overlay{position:absolute;inset:20% 33% 19%;display:flex;justify-content:center;align-items:center;z-index:5}.kk-overlay-card{width:100%;padding:35px 38px;background:radial-gradient(ellipse at top,#204c44f5,#071f2afa);border:2px solid #d5b77b;border-radius:20px;box-shadow:0 15px 50px #0008;text-align:center}.kk-overlay-card .kk-eyebrow{font-size:15px}.kk-overlay-card h2{font:bold 38px/1.2 Georgia,serif;color:#fff0d0;margin:17px 0}.kk-overlay-card>p:not(.kk-eyebrow){font:20px/1.55 system-ui,sans-serif;color:#d8e6dd;margin-bottom:23px}.kk-overlay-card button{display:block;width:100%;margin-top:12px;font:21px/1.4 system-ui,sans-serif}.kk-primary{background:linear-gradient(#ffe0a3,#e2b457);color:#172d2b;font-weight:700!important;border-color:#ffecbd;box-shadow:0 5px 25px #dfc18535,inset 0 1px #fff7}.kk-stats{max-width:1300px;margin:auto;background:#08232b;padding:12px 20px;border:1px solid #80693c;display:flex;align-items:center;gap:24px}.kk-stats h2{font-size:17px}.kk-stats p:not(.kk-eyebrow){font-size:11px;color:#d1dcd6}.kk-stats dl{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;flex:1;margin:0}.kk-stats dl div{text-align:center;border:1px solid #426c6a;border-radius:8px;padding:5px}.kk-stats dt{text-transform:uppercase;font-size:10px}.kk-stats dd{font-size:20px;color:var(--kk-gold);font-weight:700;margin:0}.kk-information{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:35px;max-width:1370px;margin:45px auto 35px;padding:0 12px;color:#bfcecd;font-size:.91rem}.kk-information h2{color:#eddab5;font:1.4rem Georgia,serif;margin:8px 0 14px}.kk-information p{margin:12px 0}.kk-information ol{padding-left:22px}.kk-information li{margin-bottom:9px}.kk-site-footer{display:flex;flex-wrap:wrap;justify-content:center;gap:20px;padding:20px;font-size:.8rem;color:#98aaa9}.is-embed main{padding:0}.is-embed .kk-nav,.is-embed .kk-information,.is-embed .kk-site-footer,.is-embed .kk-skip{display:none}.is-embed .kk-stage{box-shadow:none}.kk-island noscript p{padding:20px;background:#09232b}
/* Live type is fitted inside the painted frames, including multiline results. */
.kk-score-section{flex:1;min-height:0;padding:10px 0}
.kk-score-section:nth-child(4){border-bottom:0}
.kk-score-section h2{font-size:22px}
.kk-score{font-size:66px}.kk-throw,.kk-best{font-size:45px}
.kk-last-hit{font-size:28px;margin-top:9px;min-height:0}
.kk-rank-list li{font-size:21px;line-height:1.22;min-height:32px;padding:3px 2px}
.kk-rankings>section:not(.kk-season-ranking){margin-top:12px;padding-top:12px}
.kk-season-strip{top:97.8%;font-size:12px;line-height:1.3;padding:2px 10px;left:25%;width:54%;border:0;background:#09282ad9}
.kk-welcome-note{font-size:23px;left:1.25%;width:5.8%;top:24%}
.kk-message{top:77px}
@media(max-width:1000px){.kk-information{grid-template-columns:1fr}.kk-stats{gap:12px}.kk-stats>div{max-width:38%}}
/* Phones use a cropped view of the same perspective lane, with real panels in
   document flow. IDs, keyboard controls and scoring stay identical. */
@media(max-width:700px){
main{padding:0 5px}.kk-nav{padding:11px;font-size:12px}.kk-nav span{display:none}.kk-stage{width:100%!important;height:auto!important;border-radius:8px;overflow:hidden}.kk-scene{width:100%;height:auto;transform:none;display:flex;flex-direction:column;background:#09252c;font-family:system-ui,sans-serif}.kk-sign{position:relative;left:auto;top:auto;width:100%;height:auto;min-height:84px;order:0;padding:12px 8px;background:#57391e url('assets/strandbahn-szene-v2.png') 50% 0/235% auto no-repeat}.kk-sign h1{font-size:clamp(27px,7vw,42px)}.kk-sign .kk-eyebrow{font-size:10px;margin-bottom:3px}.kk-subtitle{font-size:17px;margin-top:4px}.kk-season-strip{position:relative;left:auto;top:auto;order:1;width:auto;margin:8px;gap:3px 10px;font-size:10px;padding:4px 8px;background:#09252c;border-color:#b09a6059}.kk-season-strip span:first-child{flex-basis:100%}.kk-scoreboard{position:relative;left:auto;top:auto;order:2;width:auto;height:auto;margin:0 8px 8px;transform:none;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));background:linear-gradient(#173e3d,#08272f);border:1px solid #ad8b50;border-radius:6px}.kk-score-section{padding:8px 3px;border:0;border-right:1px solid #b09a604d}.kk-score-section h2{font-size:10px}.kk-score{font-size:30px;line-height:1.2;margin-top:4px}.kk-throw{font-size:23px;line-height:1.4;margin-top:6px}.kk-last-hit{font-size:12px;margin-top:7px;min-height:30px;line-height:1.2}.kk-best{font-size:26px;margin-top:6px}.kk-board-column{display:flex;flex-direction:column;order:3;min-width:0}.kk-board-wrap{position:relative;inset:auto;aspect-ratio:1.15;overflow:hidden;background-image:url('assets/strandbahn-szene-v2.png');background-size:180% auto;background-position:center 83%;background-repeat:no-repeat}.kk-board-wrap canvas{position:absolute;width:180%;height:auto;left:-40%;top:-16%;max-width:none}.kk-meter-panel{position:relative;left:auto;top:auto;width:auto;height:auto;margin:8px 13px 0}.kk-meter-label{font-size:10px}.kk-meter{height:20px;border-width:2px;margin:4px 0 6px}.kk-meter-panel p{font-size:15px}.kk-controls{position:relative;left:auto;top:auto;order:4;width:auto;margin:10px 8px 12px;display:flex;flex-direction:column-reverse;gap:8px}.kk-control-buttons{justify-content:center;gap:8px}.kk-control-buttons button{width:auto;flex:1;height:auto;min-height:44px;padding:9px 5px;font-size:14px}.kk-message{position:static;width:auto;font:11px/1.4 system-ui,sans-serif;min-height:30px}.kk-rankings{position:relative;left:auto;top:auto;order:5;width:auto;height:auto;transform:none;margin:0 9px 12px;padding:20px;background:radial-gradient(ellipse at top,#183f3b,#06212a);border:2px solid #b18d4f;outline:1px solid #756949;outline-offset:-6px;border-radius:8px}.kk-rankings h2{font-size:23px}.kk-rank-subtitle{font-size:11px;margin-bottom:10px}.kk-rank-list li{font-size:16px;min-height:33px;padding:6px 3px}.kk-rankings>section:not(.kk-season-ranking){margin-top:19px;padding-top:18px}.kk-overlay{inset:4% 5%;padding:0}.kk-overlay-card{padding:17px 19px;border-radius:14px;max-width:440px}.kk-overlay-card .kk-eyebrow{font-size:10px}.kk-overlay-card h2{font-size:23px;line-height:1.1;margin:10px 0}.kk-overlay-card>p:not(.kk-eyebrow){font-size:12px;line-height:1.45;margin-bottom:12px}.kk-overlay-card button{font-size:14px;padding:10px;min-height:40px;margin-top:8px}.kk-hit-flash{top:42%;left:8%;right:8%;font-size:27px}.kk-welcome-note,.kk-crate-note{display:none}.kk-stats{flex-direction:column;align-items:stretch;padding:14px;gap:10px}.kk-stats>div{max-width:none}.kk-stats dl{gap:5px}.kk-stats dl div{padding:5px 2px}.kk-information{gap:18px;margin-top:28px}
}
@media(max-width:700px){
.kk-sign{background-size:330% auto}
.kk-overlay-card h2{font-size:21px;overflow-wrap:anywhere;hyphens:auto}
/* The photograph and canvas have identical bounds, also when cropped. */
.kk-board-wrap{background:none}
.kk-board-wrap::before{content:"";position:absolute;left:-40%;top:-16%;width:180%;aspect-ratio:1.8;background:url('assets/strandbahn-szene-v2.png') center/100% 100% no-repeat}
}
@media(prefers-reduced-motion:reduce){button,.kk-hit-flash{transition:none}}
