/* Figlo game visual polish
   This layer intentionally avoids board geometry. Keep layout-critical rules
   (grid sizing, dimensions, gaps and board positioning) in the game styles. */

:root{
  --game-bg:#0F0F14;
  --game-surface:#191A23;
  --game-surface-raised:#1D1E28;
  --game-surface-hover:#222430;
  --game-border:rgba(255,255,255,.075);
  --game-border-strong:rgba(255,255,255,.13);
  --game-text:#F7F6FA;
  --game-muted:#9B9DAC;
  --game-dim:#737584;
  --game-purple:#8E6CFF;
  --game-purple-strong:#7652FF;
  --game-gold:#FFBD3D;
  --game-success:#54D68B;
  --game-error:#EF6A73;
}

/* Shared chrome: visual properties only. */
body.game-korony,
body.game-duet,
body.game-bloki,
body.game-latarnie{
  background:var(--game-bg);
  color:var(--game-text);
}

body.game-korony .game-topbar,
body.game-duet .game-topbar,
body.game-bloki .game-topbar,
body.game-latarnie .game-topbar{
  border-color:var(--game-border);
}

body.game-korony .icon-button,
body.game-duet .back,
body.game-duet .icon-btn,
body.game-bloki .back,
body.game-bloki .icon-btn,
body.game-latarnie .back,
body.game-latarnie .icon-btn{
  background:var(--game-surface);
  border-color:var(--game-border);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.025);
  transition:background-color 140ms ease,border-color 140ms ease,box-shadow 140ms ease,color 140ms ease;
}

body.game-korony .icon-button:hover,
body.game-duet .back:hover,
body.game-duet .icon-btn:hover,
body.game-bloki .back:hover,
body.game-bloki .icon-btn:hover,
body.game-latarnie .back:hover,
body.game-latarnie .icon-btn:hover{
  background:var(--game-surface-hover);
  border-color:var(--game-border-strong);
}

body.game-duet .eyebrow,
body.game-bloki .eyebrow,
body.game-latarnie .eyebrow{
  color:#9C83FF;
}

body.game-duet .game-meta div,
body.game-bloki .game-meta div,
body.game-latarnie .game-meta div{
  background:var(--game-surface);
  border-color:var(--game-border);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.018);
}

body.game-korony .game-meta{
  background:var(--game-surface);
  border-color:var(--game-border);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.018);
}

body.game-korony .game-meta>div+div{
  border-color:var(--game-border);
}

body.game-korony .game-meta small,
body.game-duet .game-meta span,
body.game-bloki .game-meta span,
body.game-latarnie .game-meta span{
  color:var(--game-muted);
}

body.game-duet .panel-card,
body.game-bloki .panel-card,
body.game-latarnie .panel-card,
body.game-korony .tools-content,
body.game-korony .hint-card{
  background:rgba(25,26,35,.78);
  border-color:var(--game-border);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.018);
}

body.game-duet .panel-card>button,
body.game-duet .panel-card summary,
body.game-bloki .panel-card>button,
body.game-bloki .panel-card summary,
body.game-latarnie .panel-card>button,
body.game-latarnie .panel-card summary{
  background:#20222C;
  border-color:var(--game-border);
  transition:background-color 140ms ease,border-color 140ms ease,box-shadow 140ms ease;
}

body.game-duet .panel-card>button:hover,
body.game-duet .panel-card summary:hover,
body.game-bloki .panel-card>button:hover,
body.game-bloki .panel-card summary:hover,
body.game-latarnie .panel-card>button:hover,
body.game-latarnie .panel-card summary:hover{
  background:#252733;
  border-color:var(--game-border-strong);
}

body.game-korony .controls button,
body.game-korony .control-toggle{
  background:var(--game-surface);
  border-color:var(--game-border);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.018);
}

body.game-korony .controls button:hover,
body.game-korony .control-toggle:hover{
  background:var(--game-surface-hover);
  border-color:var(--game-border-strong);
}

body.game-korony .feedback,
body.game-duet .feedback,
body.game-bloki .feedback,
body.game-latarnie .feedback{
  background:rgba(25,26,35,.72);
  border-color:var(--game-border);
  color:#C6C8D3;
}

body.game-korony .feedback.success,
body.game-duet .feedback.success,
body.game-bloki .feedback.success,
body.game-latarnie .feedback.success{
  color:#A7EFC5;
}

body.game-korony .feedback.error,
body.game-duet .feedback.error,
body.game-bloki .feedback.error,
body.game-latarnie .feedback.error{
  color:#FFB2BA;
}

body.game-korony .mobile-controls,
body.game-duet .mobile-controls,
body.game-bloki .mobile-controls,
body.game-latarnie .mobile-controls{
  background:#15161E;
  border-color:var(--game-border);
  box-shadow:0 -10px 28px rgba(0,0,0,.16);
}

body.game-korony button:focus-visible,
body.game-korony a:focus-visible,
body.game-duet button:focus-visible,
body.game-duet a:focus-visible,
body.game-bloki button:focus-visible,
body.game-bloki a:focus-visible,
body.game-latarnie button:focus-visible,
body.game-latarnie a:focus-visible{
  outline-color:#A98FFF;
}

@media(prefers-reduced-motion:reduce){
  body.game-korony *,
  body.game-korony *::before,
  body.game-korony *::after,
  body.game-duet *,
  body.game-duet *::before,
  body.game-duet *::after,
  body.game-bloki *,
  body.game-bloki *::before,
  body.game-bloki *::after,
  body.game-latarnie *,
  body.game-latarnie *::before,
  body.game-latarnie *::after{
    animation-duration:.01ms!important;
    animation-iteration-count:1!important;
    transition-duration:.01ms!important;
    scroll-behavior:auto!important;
  }
}

/* Duet: preserve the 6x6 geometry, add depth to the two-symbol language. */
body.game-duet .duet-board{
  background:#242733;
  border-color:rgba(255,255,255,.14);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.03),0 16px 38px rgba(0,0,0,.18);
}

body.game-duet .duet-cell{
  background:#181A23;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.018);
  transition:background-color 140ms ease,box-shadow 140ms ease,filter 140ms ease;
}

body.game-duet .duet-cell:not(.given):hover{
  background:#1D202B;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.055),inset 0 1px 0 rgba(255,255,255,.025);
}

body.game-duet .duet-cell.given{
  background:#222530;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.025);
}

body.game-duet .symbol{
  filter:drop-shadow(0 5px 9px rgba(0,0,0,.28));
}

body.game-duet .symbol.a{
  border-color:#9B7EFF;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.06);
}

body.game-duet .symbol.a::after{
  background:#9B7EFF;
  box-shadow:0 0 10px rgba(142,108,255,.16);
}

body.game-duet .symbol.b{
  background:#F5B93F;
  box-shadow:inset 1px 1px 0 rgba(255,255,255,.18),0 5px 12px rgba(0,0,0,.18);
}

body.game-duet .duet-cell:not(.given):active .symbol.b{
  transform:rotate(45deg) scale(.92);
}

body.game-duet .relation{
  background:#F3F2F6;
  border-color:#5A5D6A;
  box-shadow:0 3px 10px rgba(0,0,0,.34),inset 0 1px 0 rgba(255,255,255,.7);
}

body.game-duet .duet-cell.conflict{
  background:#291D23;
  box-shadow:inset 0 0 0 3px var(--game-error);
}

body.game-duet .duet-cell.hint{
  box-shadow:inset 0 0 0 3px #A98FFF,0 0 14px rgba(142,108,255,.18);
}

/* Latarnie: make illumination feel warm and physical, not neon. */
body.game-latarnie .latarnie-board{
  background:#20232E;
  border-color:rgba(255,255,255,.13);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.025),0 18px 42px rgba(0,0,0,.2);
}

body.game-latarnie .latarnia-cell{
  background:#151824;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.03),inset 0 1px 0 rgba(255,255,255,.015);
}

body.game-latarnie .latarnia-cell:hover{
  background:#1A1E2B;
}

body.game-latarnie .latarnia-cell.is-lit{
  background:radial-gradient(circle at 50% 45%,#FFF9C9 0%,#F8DE78 44%,#BE8E2D 100%);
  box-shadow:inset 0 0 16px rgba(255,246,176,.15),inset 0 0 0 1px rgba(255,255,255,.08);
}

body.game-latarnie .latarnia-cell.has-bulb{
  background:radial-gradient(circle at 50% 42%,#FFFBD7 0%,#FFD965 42%,#D99C26 100%);
  box-shadow:inset 0 0 18px rgba(255,255,255,.15),0 0 22px rgba(255,193,61,.34);
}

body.game-latarnie .bulb{
  color:#17130B;
  text-shadow:0 1px 0 rgba(255,255,255,.25),0 0 9px rgba(255,232,132,.34);
  animation:lantern-bulb-in 220ms cubic-bezier(.2,.85,.3,1);
}

body.game-latarnie .cross{
  color:#707483;
}

body.game-latarnie .latarnia-wall{
  background:linear-gradient(180deg,#05060A 0%,#0B0D13 100%);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.025),inset 0 8px 18px rgba(0,0,0,.22);
}

body.game-latarnie .latarnia-wall.satisfied{
  color:#77D9B2;
  text-shadow:0 0 10px rgba(95,208,162,.12);
}

body.game-latarnie .latarnia-wall.over{
  color:#FF7A86;
}

body.game-latarnie .latarnia-cell.conflict{
  box-shadow:inset 0 0 0 3px var(--game-error),0 0 12px rgba(239,106,115,.12);
}

body.game-latarnie .latarnia-cell.hint-target,
body.game-latarnie .latarnia-wall.hint-target{
  box-shadow:0 0 0 2px #A98FFF,0 0 16px rgba(169,143,255,.28);
}

@keyframes lantern-bulb-in{
  0%{opacity:.35;transform:scale(.72);filter:brightness(1.35)}
  68%{opacity:1;transform:scale(1.08);filter:brightness(1.12)}
  100%{opacity:1;transform:scale(1);filter:brightness(1)}
}

/* Korony: coherent jewel palette and stronger crown reward, no grid changes. */
body.game-korony .board{
  background:#111219;
  border-color:#111219;
  box-shadow:0 18px 42px rgba(0,0,0,.18),inset 0 1px 0 rgba(255,255,255,.02);
}

body.game-korony .cell::before{
  border-color:rgba(15,15,20,.28);
}

body.game-korony .cell::after{
  border-color:#15161D;
}

body.game-korony .r0{background:#8270B5}
body.game-korony .r1{background:#C28A5A}
body.game-korony .r2{background:#6388BC}
body.game-korony .r3{background:#A4B45F}
body.game-korony .r4{background:#BD6258}
body.game-korony .r5{background:#6FA074}
body.game-korony .r6{background:#908A86}
body.game-korony .r7{background:#AE708F}
body.game-korony .r8{background:#609B92}

body.game-korony .x-mark{
  background:rgba(15,15,20,.62);
  border-color:rgba(255,255,255,.16);
  color:#C6B8FF;
  text-shadow:0 1px 2px rgba(0,0,0,.8);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.04),0 3px 8px rgba(15,15,20,.22);
}

body.game-korony .crown{
  background:#F6BE48;
  border-color:rgba(15,15,20,.7);
  color:#111218;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.26),0 2px 0 rgba(15,15,20,.42),0 5px 13px rgba(15,15,20,.28);
  filter:drop-shadow(0 0 7px rgba(255,189,61,.18));
  animation:crown-polish-in 220ms cubic-bezier(.2,.85,.3,1);
}

body.game-korony .hint-candidate{
  box-shadow:inset 0 0 0 4px #9E82FF,0 0 16px rgba(142,108,255,.28);
}

body.game-korony .bad,
body.game-korony .hint-error{
  box-shadow:inset 0 0 0 4px var(--game-error);
}

@keyframes crown-polish-in{
  0%{opacity:.42;transform:scale(.82);filter:drop-shadow(0 0 0 rgba(255,189,61,0))}
  62%{opacity:1;transform:scale(1.055);filter:drop-shadow(0 0 10px rgba(255,189,61,.28))}
  100%{opacity:1;transform:scale(1);filter:drop-shadow(0 0 7px rgba(255,189,61,.18))}
}

/* Bloki: more object-like placements, less outline-on-outline noise. */
body.game-bloki .bloki-board{
  background:#2D303B;
  border-color:rgba(255,255,255,.14);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.025),0 18px 42px rgba(0,0,0,.18);
}

body.game-bloki .bloki-cell{
  background:#171921;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.012);
}

body.game-bloki .bloki-cell:nth-child(odd){
  background:#191B24;
}

body.game-bloki .clue-cell{
  background:#1E202A!important;
}

body.game-bloki .clue-token{
  background:color-mix(in srgb,var(--clue) 22%,#1B1D27);
  border-color:color-mix(in srgb,var(--clue) 88%,#fff 12%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.12),0 0 0 3px color-mix(in srgb,var(--clue) 7%,transparent);
}

body.game-bloki .clue-token::before,
body.game-bloki .clue-token::after{
  background:color-mix(in srgb,var(--clue) 18%,#1B1D27);
  border-color:color-mix(in srgb,var(--clue) 82%,#fff 18%);
}

body.game-bloki .clue-area{
  color:#F5F2FF;
  text-shadow:0 1px 3px rgba(0,0,0,.42);
}

body.game-bloki .block-placement{
  background:color-mix(in srgb,var(--block,#8E6CFF) 34%,#171820);
  border-color:color-mix(in srgb,var(--block,#8E6CFF) 84%,#fff 16%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.13),inset 0 0 0 1px rgba(0,0,0,.12),0 5px 14px rgba(0,0,0,.16);
}

body.game-bloki .block-placement.preview,
body.game-bloki .block-placement.draft{
  background:rgba(255,189,61,.10);
  border-color:#EFB94E;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.035);
  opacity:.72;
}

body.game-bloki .preview-count{
  background:#12131A;
  border-color:#EFB94E;
  color:#FFF5D2;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.05),0 4px 14px rgba(0,0,0,.3);
}

body.game-bloki .bloki-legend{
  background:rgba(21,22,29,.68);
  border-color:var(--game-border);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.015);
}

body.game-bloki .legend-grid span{
  color:#C5C7D2;
}

body.game-bloki .legend-shape,
body.game-bloki .legend-shape.any,
body.game-bloki .legend-shape.any::before,
body.game-bloki .legend-shape.any::after{
  border-color:#9D83FF;
  background:rgba(142,108,255,.18);
}

body.game-bloki .block-placement.hint-highlight{
  background:rgba(255,255,255,.045);
  box-shadow:0 0 0 999px rgba(7,8,12,.68),inset 0 0 0 2px rgba(255,255,255,.78),0 0 18px color-mix(in srgb,var(--block,#8E6CFF) 42%,transparent);
}

/* Completion: one shared system, one signature moment per game. */
body.game-korony .completion,
body.game-duet .completion,
body.game-bloki .completion,
body.game-latarnie .completion{
  background:rgba(5,5,8,.84);
  backdrop-filter:blur(5px);
}

body.game-korony .completion-card,
body.game-duet .completion-card,
body.game-bloki .completion-card,
body.game-latarnie .completion-card{
  background:linear-gradient(180deg,#1B1C26 0%,#171821 100%);
  border-color:rgba(255,255,255,.12);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.035),0 26px 80px rgba(0,0,0,.42);
  animation:completion-card-in 280ms cubic-bezier(.2,.85,.3,1);
}

body.game-korony .completion-stats div,
body.game-duet .completion-stats div,
body.game-bloki .completion-stats div,
body.game-latarnie .completion-stats div{
  background:#111219;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.025);
}

body.game-korony .completion .primary,
body.game-duet .completion .primary,
body.game-bloki .completion .primary,
body.game-latarnie .completion .primary{
  background:linear-gradient(180deg,#7652FF 0%,#6540EE 100%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.16),0 8px 20px rgba(108,64,255,.18);
}

body.game-korony .completion-card>button,
body.game-duet .completion-card>button,
body.game-bloki .completion-card>button,
body.game-latarnie .completion-card>button{
  border-color:rgba(255,255,255,.16);
  background:rgba(255,255,255,.015);
}

body.game-korony .success-mark,
body.game-duet .success-mark,
body.game-bloki .success-mark,
body.game-latarnie .success-mark{
  position:relative;
  font-size:0;
  animation:completion-mark-in 420ms cubic-bezier(.2,.9,.25,1);
}

body.game-korony .success-mark{
  background:linear-gradient(180deg,#FFD267 0%,#EAA72E 100%);
  color:#17130B;
  box-shadow:0 0 0 6px rgba(255,189,61,.07),0 0 28px rgba(255,189,61,.18);
}
body.game-korony .success-mark::before{
  content:"♛";
  font-size:29px;
  line-height:1;
}

body.game-duet .success-mark{
  background:linear-gradient(135deg,#8E6CFF 0 50%,#F3B63E 50% 100%);
  color:#12131A;
  box-shadow:0 0 0 6px rgba(142,108,255,.06),0 0 24px rgba(142,108,255,.12);
}
body.game-duet .success-mark::before{
  content:"● ◆";
  font-size:15px;
  letter-spacing:.08em;
  line-height:1;
}

body.game-latarnie .success-mark{
  background:radial-gradient(circle at 50% 42%,#FFFBD3 0%,#FFD85E 48%,#CE9424 100%);
  color:#17130B;
  box-shadow:0 0 0 7px rgba(255,198,61,.06),0 0 34px rgba(255,198,61,.28);
}
body.game-latarnie .success-mark::before{
  content:"✦";
  font-size:27px;
  line-height:1;
  text-shadow:0 0 9px rgba(255,255,255,.45);
}

body.game-bloki .success-mark{
  background:linear-gradient(180deg,#9C82FF 0%,#7552EF 100%);
  color:#fff;
  box-shadow:0 0 0 6px rgba(142,108,255,.07),0 0 25px rgba(142,108,255,.16);
}
body.game-bloki .success-mark::before{
  content:"▦";
  font-size:25px;
  line-height:1;
}

@keyframes completion-card-in{
  0%{opacity:0;transform:translateY(10px);filter:brightness(.92)}
  100%{opacity:1;transform:translateY(0);filter:brightness(1)}
}

@keyframes completion-mark-in{
  0%{opacity:0;transform:scale(.72)}
  65%{opacity:1;transform:scale(1.08)}
  100%{opacity:1;transform:scale(1)}
}
