/* Four in a Row: the home screen, the oak board and its teal and plum discs. */
:root{--oak:#C99A5B;--oak-hi:#DDB57A;--oak-lo:#A97B40;--hole:#EFE5D3;
  --one:radial-gradient(circle at 34% 30%,#4FD0BF,#14897C 58%,#0C665D);
  --two:radial-gradient(circle at 34% 30%,#B58AE0,#6E40A6 58%,#4F2C7C);
  --cs:48px}

/* discs, anywhere */
.disc{display:block;border-radius:50%;flex:none;position:relative}
.disc.one{background:var(--one)}
.disc.two{background:var(--two)}
.disc::after{content:"";position:absolute;border-radius:50%;pointer-events:none}
.disc.one::after{inset:20%;border:max(1.5px,calc(var(--d,40px)*.06)) solid rgba(255,255,255,.32)}
.disc.two::after{inset:38%;background:rgba(255,255,255,.34)}

/* home */
.home{align-items:center;justify-content:center;text-align:center;padding:16px}
.home-in{display:flex;flex-direction:column;align-items:center;gap:14px;width:min(30em,100%)}
.logo{display:grid;grid-template-columns:repeat(4,22px);gap:5px;padding:8px;border-radius:12px;background:var(--oak);box-shadow:0 6px 18px rgba(150,100,40,.3)}
.logo i{width:22px;height:22px;border-radius:50%;background:var(--hole);box-shadow:inset 0 2px 3px rgba(80,50,10,.3);--d:22px}
.logo i.disc.one{background:var(--one)}.logo i.disc.two{background:var(--two)}
.home .title{font-size:clamp(2.1em,9vw,3.4em)}
.tagline{margin:0;color:var(--ink-soft);font-size:1.05em}
#levels .choice{min-width:4.6em;position:relative}
#levels .choice[data-won]::after{content:"✓";position:absolute;top:-.55em;right:-.4em;width:1.35em;height:1.35em;line-height:1.35em;border-radius:50%;
  background:#2E9E5B;color:#fff;font-size:.75em;font-weight:800;box-shadow:0 0 0 2px var(--paper)}
.go{display:flex;gap:.6em;flex-wrap:wrap;justify-content:center}
.links{display:flex;gap:.2em;flex-wrap:wrap;justify-content:center}
@media (max-height:540px){.logo{display:none}}
@media (max-height:430px){.tagline{display:none}.home-in{gap:8px}.home .title{font-size:2.1em}.foot{display:none}}

/* the game: a bar over the board (portrait) or a column beside it (wide) */
#game{align-items:stretch}
.side{display:grid;grid-template-columns:auto 1fr 1fr auto;grid-template-areas:"menu a b undo" "st st st st";gap:8px 10px;align-items:center;
  padding:max(10px,env(safe-area-inset-top)) 12px 0;width:min(100%,720px);margin:0 auto;flex:none}
.tools{display:contents}
#menu{grid-area:menu}#undo{grid-area:undo}#score-1{grid-area:a}#score-2{grid-area:b}.status{grid-area:st}
.score{display:flex;align-items:center;gap:.55em;padding:.4em .7em;border-radius:14px;background:var(--paper-hi);border:2px solid transparent;
  box-shadow:0 2px 8px rgba(28,37,48,.06);transition:border-color .2s,box-shadow .2s;min-width:0}
.score .disc{width:1.6em;height:1.6em;--d:1.6em;box-shadow:0 1px 3px rgba(0,0,0,.3)}
.score b{display:block;font-size:1.05em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.score span{min-width:0}
.score.turn{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.status{margin:0;text-align:center;font-weight:600;color:var(--ink-soft);min-height:1.45em;font-size:.95em}
.stage{flex:1;min-height:0;min-width:0;display:grid;place-items:center;padding:6px;position:relative}
@media (min-aspect-ratio:21/20){
  #game{flex-direction:row;justify-content:center}
  .side{display:flex;flex-direction:column;justify-content:center;gap:10px;width:clamp(150px,24vw,250px);margin:0;padding:12px 0 12px max(12px,env(safe-area-inset-left))}
  .tools{display:flex;justify-content:space-between}
  .stage{flex:0 1 auto;width:calc(var(--cs)*7.6)}
}

/* the board: an oak frame with 42 holes in front, discs falling behind it */
.board{position:relative;width:calc(var(--cs)*7);height:calc(var(--cs)*7.14);touch-action:manipulation;--d:calc(var(--cs)*.84)}
.back,.frame{position:absolute;left:calc(var(--cs)*-.12);top:calc(var(--cs)*.88);width:calc(var(--cs)*7.24);height:calc(var(--cs)*6.24)}
.back{background:var(--hole);border-radius:calc(var(--cs)*.22);box-shadow:inset 0 calc(var(--cs)*.06) calc(var(--cs)*.2) rgba(90,60,20,.25)}
.frame{z-index:3;pointer-events:none;display:block;overflow:visible;filter:drop-shadow(0 calc(var(--cs)*.12) calc(var(--cs)*.22) rgba(110,70,20,.3))}
.discs{position:absolute;inset:0;z-index:1}
.discs .disc,.ghost{position:absolute;width:var(--d);height:var(--d);left:calc(var(--cs)*(var(--c,0) + .08));top:calc(var(--cs)*(6 - var(--r,6) + .08));
  box-shadow:inset 0 calc(var(--cs)*-.04) calc(var(--cs)*.06) rgba(0,0,0,.25);will-change:transform}
.ghost{z-index:4;--r:6;opacity:.92;transition:left .11s ease-out,opacity .15s;pointer-events:none}
.ghost::before{content:"";position:absolute;left:50%;bottom:calc(var(--cs)*-.17);width:0;height:0;transform:translateX(-50%);
  border:calc(var(--cs)*.09) solid transparent;border-top-color:var(--ink-soft);border-bottom:0}
.land{position:absolute;z-index:2;width:var(--d);height:var(--d);border-radius:50%;left:calc(var(--cs)*(var(--c,0) + .08));top:calc(var(--cs)*(6 - var(--r,0) + .08));
  border:max(2px,calc(var(--cs)*.05)) dashed rgba(60,70,85,.38);pointer-events:none;transition:left .11s ease-out,top .11s ease-out}
.board.wait .ghost,.board.wait .land{opacity:0}
.cols{position:absolute;inset:0;z-index:5;display:grid;grid-template-columns:repeat(7,1fr)}
.col{border:0;margin:0;padding:0;background:none;border-radius:calc(var(--cs)*.2);min-width:0;touch-action:manipulation}
.col:focus{outline:none}
.col:focus-visible{box-shadow:inset 0 0 0 3px var(--accent)}
@media (hover:hover){.board:not(.wait) .col:hover{background:rgba(255,255,255,.12)}}
.col.full{cursor:not-allowed}
.board.shake{animation:shake .28s}
@keyframes shake{25%{transform:translateX(-4px)}75%{transform:translateX(4px)}}
.discs .disc.win{animation:glow .9s ease-in-out infinite alternate;z-index:2}
.discs .disc.win::before{content:"";position:absolute;inset:5%;border-radius:50%;border:max(3px,calc(var(--cs)*.07)) solid #fff;box-shadow:0 0 calc(var(--cs)*.14) #fff,inset 0 0 calc(var(--cs)*.12) rgba(255,255,255,.7)}
@keyframes glow{to{filter:brightness(1.18)}}
.board.over .discs .disc:not(.win){filter:saturate(.55) brightness(.92);transition:filter .4s}
.confetti{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:25}

/* the result card */
.result .final{display:flex;justify-content:center;align-items:center;gap:.5em;margin:.2em 0 .4em}
.result .final .disc{width:2.2em;height:2.2em;--d:2.2em;box-shadow:0 2px 6px rgba(0,0,0,.3)}
.how li{margin:.25em 0}
.how ul{padding-left:1.1em;margin:.2em 0}
.card .choices{margin-bottom:.6em}
@media (max-height:520px){
  .card{padding:.8em 1.1em .8em}
  .card h2{margin-bottom:.35em}
  .card .actions{flex-direction:row;flex-wrap:wrap;justify-content:center;margin-top:.5em}
  .card .pill{padding:.55em 1.4em}
  .result .final{margin:0 0 .2em}
  .result .final .disc{width:1.6em;height:1.6em}
}
.result .brand{margin:-.5em 0 .3em;font-weight:600;letter-spacing:.02em}
@media (max-height:520px){.result .brand{display:none}}
@media (max-width:460px){.side{gap:8px 6px;padding-left:8px;padding-right:8px}.score{padding:.4em .5em;gap:.4em}.score .disc{width:1.3em;height:1.3em}}
