:root{--cream:#f7f3ea;--ink:#253d36;--muted:#7d8478;--red:#c9003c;--line:#e4e4d8;--serif:Georgia,'Times New Roman',serif;font-family:'Avenir Next',Avenir,'Segoe UI',sans-serif;color:var(--ink);background:var(--cream);font-synthesis:none}
*{box-sizing:border-box}body{margin:0}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;border:0;color:inherit}button:focus-visible,a:focus-visible,canvas:focus-visible{outline:3px solid #c99431;outline-offset:4px}button:disabled{cursor:default;opacity:.45}[hidden]{display:none!important}.app{min-height:100svh;display:flex;flex-direction:column;max-width:1800px;margin:auto}header{height:96px;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:24px 5%;border-bottom:1px solid var(--line)}.brand{width:170px;display:block}.brand img{width:100%;height:auto;display:block}.edition{font-size:10px;letter-spacing:2px;font-weight:600;color:#6a756b}.badge{display:flex;align-items:center;gap:8px;font-size:10px;border:1px solid #d7ddcf;padding:9px 12px;border-radius:20px;white-space:nowrap}.badge span,.dot{width:6px;height:6px;display:inline-block;background:#8a9e6b;border-radius:100%}main{display:flex;flex:1;min-height:660px}.sidebar{padding:65px 35px 38px 6%;width:39%;min-width:370px;max-width:560px;z-index:2}.eyebrow{font-size:9px;letter-spacing:1.6px;font-weight:700;color:#7e896c}.eyebrow span{color:#be974f;font-size:19px;margin-right:7px}h1{font-family:var(--serif);font-size:clamp(54px,5.5vw,88px);font-weight:400;line-height:1.02;letter-spacing:-4px;margin:27px 0 23px}h1 em{color:var(--red);font-weight:400}p.lead{font-size:15px;line-height:1.7;max-width:335px;color:#717a6e;margin:0 0 32px}.choose-label{display:flex;justify-content:space-between;font-size:12px;font-weight:600;max-width:400px;margin-bottom:12px}.choose-label span+span{color:#8b9282;font-size:10px;font-weight:400}.characters{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin-bottom:20px;max-width:400px}.character{position:relative;border-radius:16px;background:#ebe8dd;border:2px solid transparent;height:110px;overflow:hidden;transition:transform .2s,border-color .2s;min-width:0;padding:0}.character img{height:100%;width:100%;object-fit:cover;object-position:50% 25%;transform:scale(1.8);transform-origin:50% 22%;pointer-events:none}.character:first-child img{transform:scale(2.4);transform-origin:52% 22%}.character span{position:absolute;bottom:5px;left:7px;font-size:9px;background:#ffffffb3;padding:3px 5px;border-radius:6px}.character i{position:absolute;top:5px;right:5px;border-radius:50%;background:var(--red);color:white;font-size:9px;font-style:normal;width:17px;height:17px;display:none;place-items:center}.character.selected{border-color:var(--red);box-shadow:0 0 0 3px #c9003c0b;transform:translateY(-3px)}.character.selected i{display:grid}.primary{background:var(--red);color:white;border-radius:14px;width:100%;min-height:55px;display:flex;align-items:center;justify-content:space-between;text-align:left;padding:16px 22px;font-size:14px;font-weight:650;box-shadow:0 7px 17px #c9003c12;transition:background .15s,transform .15s}.primary:hover{background:#ac0033;transform:translateY(-1px)}.primary b{font-size:22px;font-weight:400}.intro-foot{display:flex;justify-content:space-between;font-size:9px;color:#8a9184;margin-top:14px;gap:8px}.world{position:relative;flex:1;overflow:hidden;background:radial-gradient(ellipse at 52% 49%,#fff9e8 0,#eeeedd 53%,#e7ede2 100%);border-radius:35px 0 0 35px;margin:24px 0 24px 12px;min-width:0;min-height:550px}.world canvas{height:100%;width:100%;position:absolute;inset:0;display:block;touch-action:none;outline:none}.scene-label{position:absolute;left:30px;right:30px;top:27px;font-size:8px;font-weight:650;letter-spacing:1.7px;display:flex;align-items:center;gap:8px;z-index:1;pointer-events:none;color:#667660}.scene-year{margin-left:auto;color:#9b9d86}.toast{position:absolute;bottom:70px;left:50%;transform:translateX(-50%);background:#fffdf6eb;box-shadow:0 8px 25px #41553512;border:1px solid #ffffff;border-radius:13px;padding:13px 17px;text-align:center;font-size:12px;line-height:1.4;width:max-content;max-width:87%;pointer-events:none;color:#52644a;transition:opacity .2s}.legend{position:absolute;bottom:27px;left:0;right:0;display:flex;justify-content:center;gap:20px;font-size:9px;color:#67765c;pointer-events:none}.legend span{display:flex;align-items:center;gap:6px}.legend i{height:9px;width:9px;border-radius:50%;display:block}.red{background:#c9003c}.blue{background:#4b8ead}.snow-decoration{position:absolute;top:72px;right:25px;color:#d0d4bf;font-size:30px}.loading{position:absolute;inset:0;display:grid;place-items:center;background:#eef0e5;font-size:14px;z-index:2}.loading.error{padding:30px;text-align:center;line-height:1.8}footer{min-height:48px;display:flex;justify-content:space-between;align-items:center;gap:20px;padding:10px 5%;font-size:9px;color:#939887}.game-ui h2{font:400 46px/1.06 var(--serif);letter-spacing:-1.6px;margin:18px 0 15px}.back{background:none;padding:0;font-size:11px;color:#8a9380;margin-bottom:35px}.mission-text{color:#7e8777;line-height:1.6;font-size:14px}.stats{display:flex;border-block:1px solid var(--line);padding:19px 0;margin:26px 0;gap:40px}.stats div{display:flex;flex-direction:column;gap:4px}.stats strong{font-size:24px;font-weight:500}.stats span{font-size:10px;color:#89917e}.recipe{display:flex;align-items:center;justify-content:space-around;max-width:320px;margin-bottom:23px}.recipe div{display:flex;flex-direction:column;align-items:center;gap:8px;font-size:9px;color:#8b917f}.recipe i{font-style:normal;width:25px;height:25px;border-radius:6px;display:grid;place-items:center;font-size:18px}.recipe .wood{background:#be9763;border:3px solid #e8d4aa}.recipe .paint{background:#c9003c;color:#fff}.recipe .target{border:1px dashed #ba8d47;color:#ba8d47}.recipe b{font-weight:400;color:#b7baa6;margin-bottom:15px}.control-area{display:flex;gap:28px;align-items:center}.dpad{display:grid;grid-template-columns:repeat(3,50px);grid-template-rows:repeat(3,45px);gap:4px;touch-action:none;user-select:none}.dpad button{background:#fffdf6;border:1px solid #dedfd1;border-radius:11px;font-size:24px;box-shadow:0 3px 0 #dedfd1;touch-action:none;user-select:none}.dpad button:active,.dpad button.active{background:#e7ebdd;transform:translateY(2px);box-shadow:none}.up{grid-area:1/2}.left{grid-area:2/1}.right{grid-area:2/3}.down{grid-area:3/2}.center{grid-area:2/2;display:grid;place-items:center;color:#d1b77b;font-size:24px}.actions{display:flex;flex-direction:column;gap:9px}.actions button{background:transparent;text-align:left;font-size:22px;padding:0;display:flex;align-items:center;gap:10px}.actions span{font-size:11px;color:#88917c}.keyboard-note{font-size:9px;color:#969c8d;margin-top:22px}.playing .sidebar{padding-top:35px}.playing .world{margin-left:0}dialog{border:0;border-radius:28px;background:var(--cream);color:var(--ink);padding:35px;max-width:410px;width:calc(100% - 40px);text-align:center;box-shadow:0 20px 80px #243d3633}dialog::backdrop{background:#20382e75;backdrop-filter:blur(7px)}.win-stars{color:#c59c47;font-size:38px;margin-bottom:22px}dialog h2{font:400 39px/1.1 var(--serif);letter-spacing:-1px}dialog p:not(.eyebrow){font-size:14px;color:#7b8774;line-height:1.6}dialog .primary{margin-top:25px}.text-button{font-size:11px;color:#838e7a;background:none;margin-top:20px}
@media(min-width:1450px){.sidebar{padding-left:7%}.world{margin-right:30px;border-radius:35px}main{min-height:760px}}
@media(max-width:900px){header{padding:20px 4%;height:80px}.edition{display:none}.sidebar{padding-left:4%;padding-right:24px;min-width:320px;width:40%}h1{font-size:63px}.character{height:94px}.control-area{gap:19px}.stats{gap:28px}.world{margin:18px 0;min-height:580px}.scene-label{left:18px;right:18px;font-size:6px;letter-spacing:1px}.game-ui h2{font-size:40px}}
@media(max-width:650px){.app{height:100svh;min-height:690px}header{height:66px;min-height:66px;padding:14px 20px}.brand{width:126px}.badge{font-size:8px;padding:7px 9px}.badge span{height:5px;width:5px}main{min-height:0;flex:1;flex-direction:column}.sidebar{width:100%;max-width:none;min-width:0;order:2;padding:19px 22px 14px}.intro .eyebrow{display:none}h1{font-size:38px;letter-spacing:-1.5px;line-height:1;margin:0 0 10px}h1 br{display:none}h1 em{margin-left:5px}.lead{display:none}.choose-label{font-size:10px;margin-top:14px;margin-bottom:9px;max-width:none}.characters{max-width:none;gap:10px;margin-bottom:12px}.character{height:80px;border-radius:12px}.primary{min-height:47px;padding:12px 17px;font-size:13px;border-radius:12px}.intro-foot{font-size:8px;margin-top:10px}.world{order:1;min-height:280px;flex:1;margin:10px 12px 0;border-radius:24px}.scene-label{top:18px;left:18px;right:18px;font-size:6px}.scene-year{font-size:7px}.toast{bottom:22px;font-size:10px;padding:10px 13px}.legend{display:none}.snow-decoration{font-size:22px;top:42px;right:19px}footer{min-height:30px;justify-content:center;padding:7px 12px;font-size:7px}footer span:first-child{display:none}.playing .sidebar{padding:13px 20px 12px}.playing .world{margin:10px 12px 0;min-height:310px}.game-ui{display:grid;grid-template-columns:1fr 1fr;column-gap:18px}.back{grid-column:1/-1;position:absolute;top:82px;left:31px;margin:0;z-index:3;font-size:8px;background:#f5f5e9e6;padding:7px 10px;border-radius:8px}.playing .scene-label{display:none}.game-ui .eyebrow{grid-column:1/-1;font-size:7px;margin-bottom:5px}.game-ui h2{grid-column:1/-1;font-size:25px;margin:0;letter-spacing:-.6px}.mission-text{grid-column:1/-1;font-size:10px;margin:6px 0 9px;line-height:1.5}.stats{grid-column:1;grid-row:4;margin:0;padding:10px 0;gap:20px;align-self:start}.stats strong{font-size:18px}.stats span{font-size:8px}.recipe{display:none}.control-area{display:contents}.dpad{grid-column:2;grid-row:4/6;grid-template-columns:repeat(3,43px);grid-template-rows:repeat(3,37px);gap:3px;justify-self:end}.dpad button{font-size:21px;border-radius:9px}.actions{grid-column:1;grid-row:5;flex-direction:row;gap:15px;margin-top:12px;align-self:start}.actions button{flex-direction:column;gap:2px;font-size:20px}.actions span{font-size:8px}.keyboard-note{display:none}.playing footer{min-height:22px}.playing .toast{bottom:14px}.center{font-size:18px}}
@media(max-height:750px) and (max-width:650px){.app{min-height:620px}.world{min-height:235px}.sidebar{padding-top:14px;padding-bottom:7px}.character{height:63px}h1{font-size:32px}.choose-label{margin-top:10px}.playing .world{min-height:270px}.game-ui h2{font-size:23px}.dpad{grid-template-rows:repeat(3,34px)}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
/* Keep the complete faces visible in the compact character selector. */
.character img{position:absolute;top:0;left:0;width:100%;height:auto;object-fit:contain;transform:scale(1.3);transform-origin:50% 0}
.character:first-child img{transform:scale(2);transform-origin:52% 0}

@media(max-width:650px){.dpad{grid-template-columns:repeat(3,46px);grid-template-rows:repeat(3,44px)}}

.loading{background:#f1f0e8d9;backdrop-filter:blur(3px);padding:30px;text-align:center;line-height:1.7}.loading>div{max-width:290px}.loading .primary{margin-top:18px;justify-content:center}.loading.error{background:#f1f0e8ed}

/* Named characters and independently switchable audio. */
.character .character-caption{left:0;bottom:0;width:100%;padding:6px 5px;display:flex;justify-content:center;align-items:baseline;gap:5px;border-radius:0;background:#fffaf1eb;color:var(--ink)}
.character-caption small{font-size:9px;color:#7d8478}.character-caption strong{font-size:12px;font-weight:650}
.header-tools{display:flex;gap:15px;align-items:center}.audio-controls{display:flex;gap:6px}.audio-toggle{display:flex;align-items:center;gap:6px;min-height:44px;padding:8px 11px;background:#fffdf6;border:1px solid #d7ddcf;border-radius:12px;font-size:11px;white-space:nowrap}.audio-toggle>span:first-child{font-size:19px;color:#8d7443}.audio-toggle b{font-weight:500;color:#59795a}.audio-toggle[aria-pressed="false"]{background:transparent;color:#838b7f}.audio-toggle[aria-pressed="false"] b{color:#939887}.audio-toggle[aria-pressed="false"]>span:first-child{opacity:.45}.audio-toggle:hover{border-color:#9aa98e}.audio-toggle:disabled{opacity:.5}
@media(max-width:1150px){.header-tools .badge{display:none}.edition{font-size:8px;letter-spacing:1px}}
@media(max-width:650px){header{gap:8px;padding-inline:16px}.header-tools{gap:0}.audio-controls{gap:5px}.audio-toggle{min-height:44px;padding:7px 9px;font-size:10px;gap:4px}.audio-toggle>span:first-child{font-size:17px}.character .character-caption{padding:5px 3px;gap:4px}.character-caption strong{font-size:11px}.character-caption small{font-size:8px}}
@media(max-width:360px){.brand{width:108px}.audio-toggle{padding-inline:6px}.characters{gap:7px}.character-caption strong{font-size:10px}}

/* Selection is a separate screen; playing always gives its space to the game. */
.playing #intro{display:none!important}
.app:not(.playing) #game-ui,.app:not(.playing) #back{display:none!important}
.world .back{position:absolute;top:10px;left:12px;margin:0;z-index:3;min-height:44px;padding:10px 13px;border-radius:12px;background:#fffaf0ed;color:#53664e;font-size:11px}
.playing .scene-label{display:none}
.playing .snow-decoration{display:none}

@media(max-width:650px),(max-width:950px) and (max-height:600px){
  .app.playing{height:100svh;height:100dvh;min-height:0}
  .playing header{height:56px;min-height:56px;padding:6px 14px;gap:8px}
  .playing .brand{width:116px}
  .playing .edition,.playing .badge,.playing footer{display:none}
  .playing .legend{display:none}
  .playing main{min-height:0;flex:1;flex-direction:column}
  .playing .world{order:1;min-height:0;flex:1;margin:4px 8px 0;border-radius:20px}
  .playing .sidebar{order:2;width:100%;min-width:0;max-width:none;flex:0 0 auto;padding:10px 14px max(10px,env(safe-area-inset-bottom))}
  .playing .game-ui{display:grid;grid-template-columns:1fr auto;gap:0 14px}
  .game-ui .eyebrow,.game-ui .recipe,.game-ui .keyboard-note{display:none}
  .game-ui h2{grid-column:1/-1;grid-row:1;font-size:23px;letter-spacing:-.6px;margin:0;line-height:1.15}
  .game-ui .mission-text{grid-column:1/-1;grid-row:2;font-size:11px;line-height:1.4;margin:4px 0 7px}
  .game-ui .stats{grid-column:1;grid-row:3;margin:0;padding:11px 0;gap:18px;align-self:start}
  .game-ui .stats strong{font-size:19px}
  .game-ui .stats span{font-size:9px}
  .game-ui .control-area{display:contents}
  .game-ui .dpad{grid-column:2;grid-row:3/5;grid-template-columns:repeat(3,44px);grid-template-rows:repeat(3,44px);gap:4px;justify-self:end}
  .game-ui .dpad button{font-size:23px;border-radius:10px}
  .game-ui .center{font-size:20px}
  .game-ui .actions{grid-column:1;grid-row:4;flex-direction:row;gap:6px;margin:6px 0 0;align-self:end}
  .game-ui .actions button{min-width:44px;min-height:44px;flex-direction:column;justify-content:center;gap:1px;font-size:21px}
  .game-ui .actions span{font-size:9px}
  .playing .toast{bottom:10px;max-width:calc(100% - 24px);font-size:10px;padding:9px 12px}
}
@media(max-width:360px){
  .playing .brand{width:104px}
  .playing header{padding-inline:10px}
  .playing .sidebar{padding-inline:10px}
  .playing .game-ui{column-gap:8px}
  .game-ui h2{font-size:21px}
  .game-ui .stats{gap:12px}
}
@media(max-width:950px) and (max-height:600px) and (orientation:landscape){
  .playing header{height:50px;min-height:50px}
  .playing main{flex-direction:row}
  .playing .world{margin:4px 0 max(8px,env(safe-area-inset-bottom)) max(8px,env(safe-area-inset-left))}
  .playing .sidebar{width:230px;overflow-y:auto;padding:8px max(12px,env(safe-area-inset-right)) 8px 12px}
  .playing .game-ui{grid-template-columns:1fr 44px;column-gap:8px}
  .game-ui h2{font-size:20px}
  .game-ui .mission-text{font-size:10px;margin:3px 0 5px}
  .game-ui .stats{grid-column:1/-1;grid-row:3;justify-content:space-between;padding:5px 0}
  .game-ui .dpad{grid-column:1;grid-row:4;justify-self:center;margin-top:6px}
  .game-ui .actions{grid-column:2;grid-row:4;flex-direction:column;gap:4px;margin-top:6px}
}

/* On phones, swiping controls the character; utilities stay in a small menu. */
.mobile-tools{display:none}
@media(max-width:650px),(max-width:950px) and (max-height:600px){
  .playing .game-ui .control-area{display:none}
  .playing .game-ui{display:block}
  .playing .game-ui .stats{margin:6px 0 0;padding:7px 0 0;border-bottom:0;gap:22px}
  .playing .stats div{flex-direction:row;align-items:baseline;gap:5px}
  .playing .stats strong{font-size:15px}
  .playing .sidebar{padding-top:8px;padding-bottom:max(8px,env(safe-area-inset-bottom))}
  .playing .mobile-tools{display:block;position:absolute;top:10px;right:12px;z-index:4}
  .mobile-tools summary{list-style:none;display:grid;place-items:center;width:44px;height:44px;border-radius:12px;background:#fffaf0ed;color:#53664e;font-size:28px;cursor:pointer;user-select:none}
  .mobile-tools summary::-webkit-details-marker{display:none}
  .mobile-tools summary:focus-visible{outline:3px solid #c99431;outline-offset:3px}
  .mobile-tools[open] summary{background:#e7ebdd}
  .mobile-actions{position:absolute;top:50px;right:0;min-width:155px;padding:5px;background:#fffaf5;border:1px solid var(--line);border-radius:14px;box-shadow:0 8px 24px #253d3624}
  .mobile-actions button{display:flex;align-items:center;gap:12px;width:100%;min-height:44px;padding:8px 12px;border-radius:9px;background:transparent;text-align:left;font-size:23px}
  .mobile-actions span{font-size:12px;white-space:nowrap}
  .mobile-actions button:hover{background:#e7ebdd}
}
@media(max-width:950px) and (max-height:600px) and (orientation:landscape){
  .playing .sidebar{width:190px}
  .playing .game-ui .stats{flex-wrap:wrap;gap:10px 16px}
}

/* Timed campaign and shared scores, keeping the mobile play area clear. */
.challenge-note{font-size:11px;color:#6c7866;line-height:1.5;margin:12px 0}
.intro-links{display:flex;gap:8px}.secondary{background:#fffdf7;border:1px solid var(--line);border-radius:10px;padding:10px 13px;min-height:44px;font-size:12px}.intro-links .secondary{flex:1}
.run-hud{position:absolute;top:10px;left:50%;transform:translateX(-50%);z-index:3;display:flex;flex-direction:column;align-items:center;border-radius:12px;background:#fffdf5f2;padding:6px 14px;pointer-events:none;box-shadow:0 3px 16px #40543810}
.run-hud strong{font-size:21px;line-height:1.1;font-variant-numeric:tabular-nums;letter-spacing:1px}.run-hud span{font-size:9px;margin-top:3px}.run-hud.urgent{background:#c9003c;color:white}
.dialog-close{position:absolute;right:12px;top:10px;background:transparent;font-size:25px;width:44px;height:44px}
dialog{max-height:calc(100dvh - 28px);overflow-y:auto}dialog h2{margin:17px 0}.level-picker{display:grid;grid-template-columns:1fr 1fr;gap:8px;text-align:left;margin-top:20px}.level-picker button{background:#fffdf7;border:1px solid var(--line);border-radius:10px;min-height:50px;padding:10px;text-align:left;font-size:12px;line-height:1.35}.level-picker button:hover{border-color:var(--red)}
.result-points{display:block;color:var(--red);font-size:60px;line-height:1.1;font-variant-numeric:tabular-nums}.result-points::after{content:' Punkte';font-size:14px}#score-form{text-align:left;margin-top:20px}#score-form label{font-size:12px;font-weight:600}#player-name{display:block;width:100%;border:1px solid #cdd2c6;border-radius:10px;min-height:48px;margin-top:8px;padding:10px 12px;background:white;color:var(--ink);font:inherit;font-size:16px}dialog .privacy-note{font-size:11px;line-height:1.5}.form-message{font-size:12px;line-height:1.5;color:#9b2547}.score-list{list-style:none;margin:12px 0 20px;padding:0;text-align:left}.score-list li{display:flex;gap:12px;align-items:center;padding:13px 0;border-bottom:1px solid var(--line);font-size:13px}.score-list .rank{font-size:12px;color:#8a917e}.score-list li>div{flex:1;min-width:0}.score-list strong{display:block;overflow-wrap:anywhere}.score-list small{display:block;font-size:10px;color:#7b8774;margin-top:5px}.score-list li>b{font-variant-numeric:tabular-nums;color:var(--red)}.score-rules{text-align:left;font-size:12px;margin-top:20px}.score-rules summary{cursor:pointer;min-height:44px;padding-top:12px}dialog .score-rules p{font-size:12px}
@media(max-width:650px),(max-width:950px) and (max-height:600px){
 .playing .run-hud{padding:5px 10px;top:10px}.playing .run-hud strong{font-size:18px}.playing .run-hud span{font-size:8px}
 .playing .back{font-size:9px;max-width:110px}.playing .stats{justify-content:space-between;gap:10px!important}.playing .stats strong{font-size:13px}.playing .stats span{font-size:8px}
 .challenge-note{font-size:10px;margin:9px 0}.intro-links .secondary{font-size:11px;padding:8px}.intro-foot{font-size:8px}
 dialog{padding:27px 22px;width:calc(100% - 24px)}dialog h2{font-size:31px}.level-picker{gap:6px}
}
@media(max-width:360px){.playing .run-hud{left:54%;padding-inline:7px}.playing .back{max-width:100px}.playing .mobile-tools{right:8px}}
