@font-face{font-family:Bowlby;src:url('../../assets/bowlby.ttf')}@font-face{font-family:DM;src:url('../../assets/dm-sans.ttf')}
:root{font-family:DM,Arial,sans-serif;color:#302e27;background:#eee3c9;color-scheme:light;--paper:#f6edd6;--ink:#302e27;--rust:#b63528;--sage:#566e53}
*{box-sizing:border-box}body{margin:0;padding:clamp(0px,2vw,26px);background:radial-gradient(ellipse at top,#fff8e5,#e7d7b6);min-height:100dvh}button,input{font:inherit}button{cursor:pointer;color:inherit;touch-action:manipulation}button:disabled{cursor:default;opacity:.45}button:focus-visible,input:focus-visible,canvas:focus-visible{outline:3px solid #276e60;outline-offset:4px}button{min-height:42px}button,input{-webkit-tap-highlight-color:transparent}.game-shell{width:min(1120px,100%);margin:auto;background:var(--paper);border:2px solid var(--ink);border-radius:25px;overflow:hidden;box-shadow:0 5px 0 var(--ink),0 17px 45px #5b432d24}.game-heading{display:flex;justify-content:space-between;gap:20px;align-items:center;padding:20px 28px 18px}.title-lockup{display:flex;align-items:center;gap:17px}.game-number{width:52px;height:52px;border:2px solid var(--ink);border-radius:50%;display:grid;place-items:center;font-size:22px;font-weight:800;box-shadow:inset 0 0 0 4px var(--paper),inset 0 0 0 5px #a2936a;transform:rotate(-12deg)}.eyebrow{font-size:9px;font-weight:800;letter-spacing:1.6px;margin:0}h1,h2{font-family:Bowlby,Impact,sans-serif;font-weight:400}h1{font-size:33px;letter-spacing:-1.1px;line-height:1.15;margin:5px 0 0}.game-actions{display:flex;gap:8px;align-items:center}.game-actions button,.text-button{background:transparent;border:1px solid #95846a5c;border-radius:99px;font-size:11px;font-weight:700;padding:8px 15px}.game-actions button:hover,.text-button:hover{background:#e4d5b4}.game-actions #fullscreen{font-size:25px;min-width:42px;padding:0 7px}.scorebar{background:#3c4738;color:#fff2d4;display:grid;grid-template-columns:1.6fr 1fr 1fr 1fr;align-items:center;padding:12px 28px;gap:12px;border-top:2px solid var(--ink);border-bottom:2px solid var(--ink)}.scorebar>div{display:flex;gap:11px;align-items:center;justify-content:flex-end}.scorebar span{font-size:9px;letter-spacing:1px;font-weight:700;white-space:nowrap}.scorebar b{font-size:20px;min-width:22px;font-variant-numeric:tabular-nums}.scorebar .tower-label{justify-content:flex-start;flex-direction:column;align-items:flex-start;gap:3px}.tower-label b{font-size:10px;margin-left:6px}.tower-label strong{font-size:12px}.canvas-wrap{position:relative;background:#dad6b4;isolation:isolate}canvas{display:block;width:100%;height:auto;touch-action:none}.canvas-wrap:after{content:"";position:absolute;inset:0;box-shadow:inset 0 0 35px #55371926;pointer-events:none;z-index:1}.game-bottom{display:flex;gap:18px;align-items:center;justify-content:space-between;padding:14px 26px 10px;border-top:2px solid var(--ink)}.game-bottom p{font-size:12px;line-height:1.5;margin:0;font-weight:600}.text-button{white-space:nowrap;border:0;font-size:11px;min-height:36px;padding:6px 0}.text-button span{font-size:19px;margin-left:6px}.text-button:hover{background:transparent;color:var(--rust)}.launch-controls{display:flex;gap:32px;align-items:center;padding:3px 28px 20px}.launch-controls label{display:flex;flex-direction:column;gap:9px;flex:1}.launch-controls label>span{display:flex;align-items:center;justify-content:space-between;font-size:9px;font-weight:800;letter-spacing:1px}.launch-controls output{font-size:12px;letter-spacing:0;font-weight:800}input[type=range]{width:100%;accent-color:var(--rust);cursor:pointer;height:20px;margin:0}.primary{background:var(--rust);border:2px solid var(--ink);border-radius:99px;box-shadow:0 3px 0 var(--ink);padding:13px 25px;color:#fff5de;font-weight:800;font-size:14px;min-height:48px;transition:transform .16s,background .16s;white-space:nowrap}.primary span{margin-left:22px}.primary:hover:not(:disabled){background:#9e2b22;transform:translateY(-2px)}.primary:active:not(:disabled){transform:translateY(2px);box-shadow:0 1px 0 var(--ink)}.launch-controls .primary{min-width:195px}.key-help{border-top:1px dashed #867a614d;display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap;margin:0;padding:12px 28px;font-size:9px;color:#76684e;line-height:1.5}.key-help span:first-child{font-weight:800;letter-spacing:1px}.game-overlay{position:absolute;inset:0;display:grid;place-items:center;text-align:center;background:#392e1638;backdrop-filter:blur(2px);z-index:3;padding:20px}.game-overlay[hidden]{display:none}.result-card{border:2px solid var(--ink);background:#f9eecfee;border-radius:40px;padding:34px 40px 25px;box-shadow:0 5px 0 var(--ink),0 15px 60px #503b3133;max-width:520px;transform:rotate(-1deg)}.result-card h2{color:var(--rust);font-size:clamp(30px,4vw,50px);line-height:1.15;margin:15px 0 10px;letter-spacing:-1px}.result-card p{font-size:15px;line-height:1.55;margin:0 0 20px}.result-card .result-note{font-size:10px;margin:20px 0 0;color:#776549}.game-shell:fullscreen{border:0;border-radius:0;box-shadow:none;max-width:none;height:100dvh;overflow:auto;display:flex;flex-direction:column;justify-content:center}.game-shell:fullscreen .canvas-wrap{width:min(1100px,100%);align-self:center}.game-shell:fullscreen .game-heading,.game-shell:fullscreen .scorebar,.game-shell:fullscreen .game-bottom,.game-shell:fullscreen .launch-controls,.game-shell:fullscreen .key-help{width:min(1100px,100%);align-self:center}
@media(max-width:650px){body{padding:0;background:var(--paper)}.game-shell{border:0;border-radius:0;box-shadow:none;min-height:100dvh}.game-heading{padding:18px 16px 15px;gap:10px}.game-number{display:none}.eyebrow{font-size:6px;letter-spacing:1px}h1{font-size:25px;margin-top:6px}.game-actions{gap:5px}.game-actions button{font-size:9px;padding:7px 9px}.game-actions #fullscreen{display:none}.scorebar{grid-template-columns:1.35fr 1fr .8fr .8fr;gap:6px;padding:10px 14px}.scorebar>div{flex-direction:column;gap:2px;align-items:center}.scorebar span{font-size:7px;letter-spacing:.5px}.scorebar b{font-size:17px}.tower-label strong{font-size:9px;line-height:1.2}.tower-label b{font-size:8px}.game-bottom{padding:13px 15px 10px;gap:9px;align-items:flex-start}.game-bottom p{font-size:10px;max-width:230px}.text-button{font-size:9px;min-height:30px;padding:0}.text-button span{font-size:15px}.launch-controls{padding:4px 17px 21px;gap:17px;flex-wrap:wrap}.launch-controls label{min-width:40%}.launch-controls .primary{width:100%;min-height:48px;margin-top:0}.key-help{padding:12px 17px;font-size:8px;gap:8px}.key-help span:last-child{display:none}.game-overlay{padding:8px}.result-card{padding:16px 22px 14px;border-radius:25px;max-width:90%}.result-card .eyebrow{font-size:7px}.result-card h2{font-size:25px;margin:6px 0}.result-card p{font-size:10px;margin:0 0 10px}.result-card .primary{padding:8px 18px;min-height:40px;font-size:11px}.result-card .result-note{display:none}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
.title-mascot{height:68px;width:64px;object-fit:contain;margin:-9px 0 -7px;transform:rotate(-8deg)}@media(max-width:650px){.title-mascot{height:48px;width:42px;margin:0 -7px 0 0}.title-lockup{gap:12px}}
@media(min-width:651px){body{padding:14px}.game-shell{width:min(1120px,100%,calc((100dvh - 356px)*1.89655));min-width:610px}.game-shell:fullscreen{width:100%;min-width:0}.game-shell:fullscreen .canvas-wrap{width:min(1100px,100%,calc((100dvh - 328px)*1.89655))}}
@media(min-width:651px) and (max-height:680px){.game-heading{padding-top:12px;padding-bottom:12px}h1{font-size:27px}.title-mascot{height:54px;width:51px}.scorebar{padding-top:8px;padding-bottom:8px}.game-bottom{padding-top:9px;padding-bottom:7px}.launch-controls{padding-bottom:13px}.key-help{display:none}.game-shell{width:min(1120px,100%,calc((100dvh - 270px)*1.89655));min-width:570px}}

/* A small progression label stays inside the existing cabinet height. */
#difficulty{font-size:7px;letter-spacing:.65px;opacity:.72;margin-left:9px}.level-total{opacity:.65;font-size:9px!important}.tower-label>span{display:flex;align-items:center}.game-actions #audio-controls{display:flex;gap:6px}.game-actions{gap:6px}.game-actions button{padding-inline:11px}.title-lockup{gap:12px}
@media(max-width:650px){.game-heading{flex-wrap:wrap;padding:12px 15px 10px}.title-lockup{flex:1}.game-actions{gap:5px}.game-actions #audio-controls{gap:4px}.game-actions button{font-size:8px;padding:5px 8px;min-height:34px}#difficulty{display:none}.title-mascot{height:45px;width:39px}h1{font-size:23px}.game-heading .eyebrow{font-size:5px}.game-actions #pause-game{padding-inline:8px}}
@media(min-width:651px) and (max-height:680px){.game-heading{gap:8px;padding-inline:18px}.game-actions button{font-size:9px;padding-inline:8px}.game-heading .eyebrow{font-size:7px}.title-lockup{gap:8px}.title-mascot{width:42px}.game-heading h1{font-size:24px}}

@media(max-width:650px){.game-heading{justify-content:center;gap:8px}.game-heading .title-lockup{flex-basis:100%;justify-content:center}.game-heading h1{white-space:nowrap;font-size:27px}.game-heading .eyebrow{font-size:6px}.game-heading .game-actions{justify-content:center;width:100%}.game-actions #pause-game{min-height:42px}}

/* The header vignette and secondary control use the cabinet's cream, rust and ink. */
#game-canvas{aspect-ratio:1100/580;height:auto}
#game-canvas:focus-visible{outline:3px solid #9b5032;outline-offset:-3px}
#game-canvas.pointer-focus:focus{outline:none}
.title-lockup .mascot-loop--header{display:block;flex:none;width:52px;height:58px;max-width:none;touch-action:auto}
.game-bottom{align-items:center;padding-block:10px}
.restart-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;flex:none;min-height:44px;padding:7px 13px 7px 9px;border:1.5px solid var(--ink);border-radius:999px;background:#f9efd6;color:#693e2c;box-shadow:0 2px 0 #59412d;font-size:10px;line-height:1;font-weight:800;letter-spacing:.7px;text-transform:uppercase;white-space:nowrap;transition:background .15s,transform .15s,box-shadow .15s}
.restart-icon{display:grid;place-items:center;width:25px;height:25px;border:1px solid #763824;border-radius:50%;background:#ad4c33;color:#fff1ce;box-shadow:inset 0 1px 0 #e4a779}
.restart-button:hover{background:#efdfb9;transform:translateY(-1px)}
.restart-button:active{transform:translateY(1px);box-shadow:0 1px 0 #59412d}
.restart-button:focus:not(:focus-visible){outline:none}
.restart-button:focus-visible{outline:3px solid #9b5032;outline-offset:4px}
@media(max-width:650px){.title-lockup .mascot-loop--header{width:44px;height:50px}.game-bottom{gap:12px}.game-bottom p{max-width:none;flex:1}.restart-button{font-size:9px;padding-right:11px;letter-spacing:.5px}}
@media(min-width:651px) and (max-height:680px){.title-lockup .mascot-loop--header{width:42px;height:48px}.game-bottom{padding-block:7px}}
@media(prefers-reduced-motion:reduce){.restart-button{transition:none}}

/* The status band is a row of individual raised cartoon cases. */
.scorebar{background:#d9d9b0;border:0;padding:9px 18px 13px;gap:9px;grid-template-columns:1.45fr .9fr 1.1fr .7fr}
.scorebar>div.hud-case{min-height:58px;padding:7px 12px;justify-content:center;flex-direction:column;gap:3px}
.scorebar .tower-label{border-radius:28px;align-items:flex-start}.scorebar .tower-label strong{font-size:12px}.scorebar .tower-label>span{font-size:8px}.scorebar .tower-label b{font-size:10px}.scorebar .level-total{font-size:8px!important}
.scorebar .throws-stat{background:#d9dba9}.scorebar b{font:400 23px/1 Bowlby,Impact,sans-serif;min-width:0}.scorebar .hud-stat-line{display:flex;gap:7px}.scorebar .hud-resources{display:flex}.scorebar .hud-stat-label{font-size:10px}
@media(max-width:650px){.scorebar{padding:8px 9px 12px;gap:5px;grid-template-columns:1.15fr .85fr 1.1fr .65fr}.scorebar>div.hud-case{min-height:59px;padding:6px 5px}.scorebar .tower-label strong{font-size:9px}.scorebar .tower-label>span{font-size:6px;letter-spacing:0}.scorebar .tower-label b{font-size:8px;margin-left:3px}.scorebar .level-total{font-size:6px!important}.scorebar .hud-stat-label{font-size:8px}.scorebar b{font-size:20px}.scorebar .hud-resources i{width:20px;height:24px;margin-left:-4px}.scorebar .hud-stat-line{gap:3px}.game-actions button{min-height:44px}}
@media(orientation:landscape) and (max-height:480px){body{padding:6px}.game-shell{width:100%;min-width:0;height:calc(100dvh - 16px);min-height:0;display:grid;grid-template-columns:minmax(0,1fr) 185px;grid-template-rows:54px 73px auto 1fr;border-radius:18px}.game-heading{grid-column:1/-1;padding:5px 12px;flex-wrap:nowrap;gap:10px}.game-heading .title-lockup{flex-basis:auto;justify-content:flex-start}.game-heading .game-actions{width:auto}.title-lockup .mascot-loop--header{width:35px;height:42px}.game-heading h1{font-size:22px}.game-heading .eyebrow{font-size:5px}.game-actions #fullscreen{display:none}.game-actions button{font-size:8px;padding:5px 8px}.scorebar{grid-column:1/-1;width:100%;padding:5px 10px 10px;gap:8px}.scorebar>div.hud-case{min-height:54px;padding:4px 8px}.scorebar .tower-label strong{font-size:10px}.scorebar .hud-stat-label{font-size:9px}.scorebar b{font-size:20px}.scorebar .hud-resources i{width:23px;height:23px}.canvas-wrap{grid-column:1;grid-row:3/5;align-self:center;width:100%;border-right:2px solid var(--ink)}.game-bottom{grid-column:2;grid-row:3;border-top:0;padding:5px 8px;gap:5px;flex-wrap:wrap;justify-content:center}.game-bottom p{font-size:9px;line-height:1.25;text-align:center;flex-basis:100%}.restart-button{min-height:44px;font-size:8px;padding:5px 10px}.restart-icon{width:21px;height:21px}.launch-controls{grid-column:2;grid-row:4;flex-wrap:wrap;gap:8px;padding:4px 10px 9px;align-self:center}.launch-controls label{min-width:100%;gap:2px}.launch-controls label>span{font-size:8px}.launch-controls output{font-size:10px}.launch-controls input{height:16px}.launch-controls .primary{width:100%;min-width:0;min-height:44px;font-size:11px;padding:7px 12px}.key-help{display:none}.result-card{padding:10px 15px}.result-card h2{font-size:21px}.result-card p{font-size:9px}.result-card .result-note{display:none}}

/* Short landscape keeps the complete yard below, never over, the status row. */
@media(orientation:landscape) and (max-height:480px){.canvas-wrap{width:min(100%,calc((100dvh - 150px)*1.89655));justify-self:center;border-right:0}}

/* Short host frames reserve room for the complete launch controls. */
@media(min-width:651px) and (min-height:481px) and (max-height:680px){.game-shell{width:min(1120px,100%,calc((100dvh - 292px)*1.89655));min-width:550px}}
@media(orientation:portrait) and (max-height:560px){.game-heading{padding:6px 8px;gap:6px;flex-wrap:nowrap;justify-content:space-between}.game-heading .title-lockup{flex-basis:auto;justify-content:flex-start;gap:4px}.game-heading .eyebrow{display:none}.game-heading h1{font-size:18px;margin:0}.title-lockup .mascot-loop--header{width:29px;height:38px}.game-heading .game-actions{width:auto;gap:4px}.game-actions button{font-size:8px;padding:5px 7px}.game-actions .arcade-audio-controls .arcade-audio-pill{min-width:76px;padding-inline:7px}.game-actions #pause-game{padding-inline:7px}.scorebar{padding-top:7px}.key-help{display:none}}

/* Touch pull-back uses a full thumb stroke, independent of the miniature yard. */
#touch-pull,#alternate-controls{display:none}
@media(max-width:650px),(pointer:coarse){
 .launch-controls{gap:10px;padding-top:4px}
 #touch-pull{display:block;position:relative;width:100%;height:172px;border:1.5px dashed #997e57;border-radius:20px;background:#eee0bd;touch-action:none;user-select:none;-webkit-user-select:none;overflow:hidden}
 #touch-readout{position:absolute;top:10px;left:10px;right:10px;text-align:center;font-size:10px;font-weight:800;pointer-events:none}
 #pull-handle{position:absolute;left:70%;top:32px;width:54px;height:54px;cursor:grab;touch-action:none;border-radius:50%;background:#f9edce;box-shadow:0 0 0 4px #a757302e}
 #pull-handle img{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none}
 .pulling #pull-handle{cursor:grabbing;box-shadow:0 0 0 4px #a7573060}
 .pull-guide{position:absolute;left:16%;top:56px;color:#806649;font-size:10px;font-weight:800;letter-spacing:1px;pointer-events:none}
 #touch-pull.unavailable{opacity:.5}
 #alternate-controls{display:block;width:100%;border:0;background:transparent;min-height:44px;font-size:11px;text-decoration:underline;color:#693e2c}
 .launch-controls:not(.show-sliders)>label,.launch-controls:not(.show-sliders)>#launch{display:none}
 .launch-controls.show-sliders #touch-pull{display:none}
 .launch-controls input[type=range]{height:32px}
}
@media(orientation:landscape) and (max-height:480px) and (pointer:coarse){
 .launch-controls{gap:2px;padding:2px 7px 5px;align-self:start}
 #touch-pull{height:160px}#touch-readout{font-size:8px;top:6px}#pull-handle{left:65%;top:26px;width:44px;height:44px}.pull-guide{left:6%;top:49px;font-size:7px}#alternate-controls{font-size:9px;min-height:36px}
 .game-bottom p{display:none}.game-bottom{padding:2px 6px}
}

#touch-pull.pointer-focus:focus{outline:none}
#touch-pull:focus-visible{outline:3px solid #9b5032;outline-offset:2px}
@media(orientation:landscape) and (max-height:480px) and (pointer:coarse){.game-shell{grid-template-rows:50px 65px 44px 1fr}.launch-controls{padding-bottom:0}.canvas-wrap{width:min(100%,calc((100dvh - 138px)*1.89655))}}

/* Portrait yard gains 41% vertical space; the renderer keeps uniform scaling. */
@media(max-width:650px) and (orientation:portrait){
 #game-canvas{aspect-ratio:1100/820}
 .game-heading{padding-top:8px;padding-bottom:7px;gap:4px}
 .scorebar>div.hud-case{min-height:50px}
 .game-bottom{padding-block:6px}
 .key-help{display:none}
}
