
.sudoku-page{--light:#edf7ff;--soft:#cde8ff;--mid:#68afe8;--dark:#337ab8;--deep:#1b4f81;--ink:#183652;width:min(1360px,calc(100% - 40px));max-width:1360px;margin:28px auto 58px;color:#24364b;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans KR",sans-serif}
.sudoku-theme-red{--light:#ffe7eb;--soft:#ffcbd3;--mid:#ee7181;--dark:#bf3f58;--deep:#78283b;--ink:#4a2230}.sudoku-theme-orange{--light:#fff0df;--soft:#ffd9af;--mid:#f59a47;--dark:#c96122;--deep:#7b3913;--ink:#4c2a16}.sudoku-theme-yellow{--light:#fff8d8;--soft:#ffe99b;--mid:#eac246;--dark:#a97d17;--deep:#674a0d;--ink:#473913}.sudoku-theme-green{--light:#eafaf0;--soft:#c9efd7;--mid:#61c287;--dark:#2b895a;--deep:#175b3b;--ink:#173a2b}.sudoku-theme-blue{--light:#edf7ff;--soft:#cde8ff;--mid:#68afe8;--dark:#337ab8;--deep:#1b4f81;--ink:#183652}.sudoku-theme-indigo{--light:#f1f2ff;--soft:#d9ddff;--mid:#8994dc;--dark:#5662ae;--deep:#343d79;--ink:#292f55}.sudoku-theme-purple{--light:#faf1ff;--soft:#ead5ff;--mid:#b07bdb;--dark:#7948aa;--deep:#4e2d77;--ink:#38224a}
.sudoku-dashboard{display:grid;grid-template-columns:minmax(300px,1.25fr) minmax(560px,2.5fr) 84px;gap:10px;align-items:stretch;padding:10px 14px;margin-bottom:18px;border:1px solid #d5e1ef;border-radius:18px;background:linear-gradient(180deg,#fff 0%,#f8fbff 100%);box-shadow:0 5px 18px rgba(39,79,124,.08)}
.sudoku-brand{display:flex;align-items:center;gap:11px;min-width:0}.sudoku-logo{width:74px;height:74px;flex:0 0 74px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(145deg,#fff,var(--light));box-shadow:0 2px 12px rgba(28,68,112,.12)}.sudoku-logo svg{width:58px;height:58px;fill:none;stroke:var(--deep);stroke-width:3;stroke-linecap:round;stroke-linejoin:round}.sudoku-logo svg .thin{stroke-width:1.1;opacity:.38}.sudoku-kicker{font-size:9.5px;letter-spacing:.14em;font-weight:900;color:var(--dark)}.sudoku-brand h2{margin:2px 0 3px;font-size:22px;color:#102b50;font-weight:900;white-space:nowrap}.sudoku-brand h2 small{font-size:.5em;color:#6b7f96}.sudoku-brand p{margin:0;color:#516c88;font-size:11px;font-weight:700;white-space:nowrap}
.sudoku-history{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;align-self:stretch}.sudoku-stat-card{display:grid;grid-template-columns:40px minmax(0,1fr);align-items:center;gap:8px;min-height:72px;padding:8px 10px;background:#fff;border:1px solid #d7e2ef;border-radius:12px;box-shadow:0 3px 11px rgba(36,72,110,.07)}.sudoku-stat-icon{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:var(--light);border:1px solid var(--soft);color:var(--dark);font-weight:950}.sudoku-stat-card>div{display:flex;flex-direction:column;gap:1px;min-width:0}.sudoku-stat-title{font-size:11px;color:#334e6b;font-weight:850;white-space:nowrap}.sudoku-stat-card span:not(.sudoku-stat-icon):not(.sudoku-stat-title){font-size:11.5px;color:#27445f;white-space:nowrap}.sudoku-stat-card i{display:inline-block;min-width:29px;font-style:normal;font-size:10px;color:#8394a8;font-weight:850}
.sudoku-user-actions{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:8px}.sudoku-login-user{font-size:11px;color:#1d3656;font-weight:900}.sudoku-home{width:42px;height:42px;border-radius:11px;background:#fff;border:1px solid #c8d9ec;display:grid;place-items:center;color:#1461e8;box-shadow:0 3px 10px rgba(30,73,121,.08)}.sudoku-home svg{width:25px;height:25px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.sudoku-content-ad{margin:18px 0 20px}
.sudoku-levels{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:7px;margin-bottom:12px;border:1px solid var(--mid);border-radius:15px;background:linear-gradient(135deg,var(--soft),var(--light))}.sudoku-level{border:1px solid transparent;background:transparent;border-radius:11px;padding:10px;color:var(--deep);font-weight:900;cursor:pointer}.sudoku-level small{display:block;margin-top:2px;font-size:10px;font-weight:700;opacity:.8}.sudoku-level.is-active{background:linear-gradient(145deg,#fff,var(--light));border-color:var(--dark);box-shadow:0 4px 11px rgba(30,55,75,.08)}
.sudoku-toolbar{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;margin-bottom:13px;padding:10px 14px;border:1px solid color-mix(in srgb,var(--mid) 38%,#c7d7e8);border-radius:16px;background:radial-gradient(circle at 2% 8%,color-mix(in srgb,var(--light) 42%,transparent),transparent 30%),linear-gradient(110deg,var(--light),#fff 48%,var(--light))}.sudoku-toolbar>div:first-child{display:flex;flex-direction:column;gap:2px}.sudoku-toolbar strong{font-size:16px;color:var(--deep)}.sudoku-toolbar>div:first-child span{font-size:11px;color:var(--dark);font-weight:750}.sudoku-toolbar-right{display:flex;gap:8px;align-items:center}.sudoku-time{padding:7px 10px;border-radius:10px;background:#fff;border:1px solid var(--soft);font-size:12px;color:var(--deep)}#newSudokuBtn{border:1px solid var(--dark);background:var(--dark);color:#fff;border-radius:10px;padding:8px 13px;font-weight:850;cursor:pointer}
.sudoku-workspace{display:grid;grid-template-columns:minmax(0,610px) minmax(390px,1fr);gap:18px;align-items:start}.sudoku-board-card,.sudoku-keypad-card{min-width:0;border:1px solid #b9cde5;border-radius:16px;background:linear-gradient(135deg,#f9fcff,#eef5ff 65%,#f8fbff);box-shadow:0 7px 22px rgba(35,76,122,.06)}.sudoku-board-card{padding:12px}.sudoku-keypad-card{padding:14px;position:sticky;top:88px}
.sudoku-board{display:grid;grid-template-columns:repeat(9,1fr);grid-template-rows:repeat(9,1fr);width:min(100%,570px);aspect-ratio:1/1;margin:0 auto;border:3px solid var(--deep);border-radius:10px;overflow:hidden;background:#fff;box-shadow:0 5px 18px rgba(31,69,108,.10)}
.sudoku-cell{position:relative;min-width:0;min-height:0;padding:0;border:0;border-right:1px solid #aebfd2;border-bottom:1px solid #aebfd2;background:linear-gradient(145deg,#fff,#f9fbfe);cursor:pointer;overflow:hidden;transition:background .18s ease,transform .18s ease,box-shadow .18s ease}.sudoku-cell:nth-child(9n){border-right:0}.sudoku-cell:nth-child(n+73){border-bottom:0}.sudoku-cell[data-col="2"],.sudoku-cell[data-col="5"]{border-right:3px solid var(--deep)}.sudoku-cell[data-row="2"],.sudoku-cell[data-row="5"]{border-bottom:3px solid var(--deep)}
.sudoku-cell.is-given{background:linear-gradient(145deg,color-mix(in srgb,var(--light) 64%,white),#fff);cursor:default}.sudoku-cell.is-selected{z-index:2;background:linear-gradient(145deg,#fff,var(--soft));box-shadow:inset 0 0 0 3px color-mix(in srgb,var(--mid) 72%,white)}.sudoku-cell.is-peer:not(.is-selected){background:color-mix(in srgb,var(--light) 50%,white)}.sudoku-cell.is-same .cell-value{color:var(--dark);text-shadow:0 0 10px var(--soft)}
.cell-value{position:absolute;inset:0;display:grid;place-items:center;z-index:2;color:#17324e;font-size:clamp(20px,2.6vw,34px);font-weight:900;line-height:1;pointer-events:none}.sudoku-cell.is-given .cell-value{color:var(--deep)}.sudoku-cell.is-wrong .cell-value{color:#d93745!important;text-shadow:0 0 12px rgba(217,55,69,.18)}.sudoku-cell.is-wrong{background:linear-gradient(145deg,#fff1f1,#ffe7e8)!important}
.sudoku-page.is-person-mode .cell-value{font-size:clamp(12px,1.55vw,21px);letter-spacing:-.04em;word-break:keep-all}.sudoku-page.is-person-mode .sudoku-cell[data-value="9"] .cell-value{font-size:clamp(10px,1.35vw,18px)}
.cell-notes{position:absolute;inset:2px;z-index:1;pointer-events:none;color:#64788e;font-size:clamp(6px,.66vw,9px);font-weight:800}.note-slot{position:absolute;width:18%;height:22%;display:grid;place-items:center;line-height:1}.note-slot.n0{left:3%;top:2%}.note-slot.n1{left:23%;top:2%}.note-slot.n2{right:23%;top:2%}.note-slot.n3{right:3%;top:2%}.note-slot.n4{left:3%;bottom:2%}.note-slot.n5{left:23%;bottom:2%}.note-slot.n6{right:23%;bottom:2%}.note-slot.n7{right:3%;bottom:2%}
.sudoku-cell.is-unit-complete{z-index:4;animation:unitBounce .72s cubic-bezier(.2,.8,.2,1)}.sudoku-cell.is-unit-complete:after{content:"";position:absolute;inset:-30% -65%;z-index:5;background:linear-gradient(105deg,transparent 38%,rgba(255,255,255,.15) 43%,rgba(255,255,255,.92) 50%,rgba(255,255,255,.16) 57%,transparent 62%);transform:translateX(-85%) rotate(4deg);animation:unitShine .82s ease}.sudoku-cell.is-unit-complete .cell-value{animation:valueGlow .72s ease}
@keyframes unitBounce{0%,100%{transform:translateY(0)}38%{transform:translateY(-5px)}68%{transform:translateY(1px)}}@keyframes unitShine{0%{transform:translateX(-85%) rotate(4deg)}100%{transform:translateX(85%) rotate(4deg)}}@keyframes valueGlow{0%,100%{text-shadow:none}50%{text-shadow:0 0 16px var(--mid)}}
.sudoku-message{margin-top:10px;padding:9px 12px;border-radius:10px;border:1px solid var(--soft);background:linear-gradient(145deg,#fff,var(--light));color:var(--deep);font-size:12px;font-weight:750}.sudoku-message.is-error{background:#fff0f0;border-color:#e0b9bd;color:#98565b}.sudoku-message.is-success{background:#edf8f2;border-color:#b5dbc5;color:#39735a}
.sudoku-side-title{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid var(--soft)}.sudoku-side-title strong{font-size:16px;color:#29445f}.sudoku-side-title span{font-size:10.5px;color:#8091a5;font-weight:800}.sudoku-keypad{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.sudoku-key{position:relative;min-height:64px;border:1px solid var(--mid);border-radius:13px;background:radial-gradient(circle at 28% 22%,rgba(255,255,255,.85),transparent 22%),linear-gradient(145deg,#fff,var(--light) 55%,var(--soft));box-shadow:inset 0 1px 0 rgba(255,255,255,.8),0 4px 10px rgba(31,65,96,.08);color:var(--deep);font-size:22px;font-weight:950;cursor:pointer;transition:transform .14s ease,opacity .2s ease}.sudoku-key:hover:not(:disabled){transform:translateY(-2px)}.sudoku-key small{display:block;margin-top:2px;font-size:10px;color:var(--dark);font-weight:850}.sudoku-key:disabled{opacity:.28;cursor:not-allowed;filter:grayscale(.45)}.sudoku-key.is-complete:after{content:"완료";position:absolute;right:5px;top:5px;padding:2px 4px;border-radius:999px;background:var(--dark);color:#fff;font-size:7px}
.sudoku-tools{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:11px}.sudoku-tool-btn{min-height:44px;border:1px solid #a8bed7;border-radius:11px;background:#fff;color:#395a7d;font-size:12px;font-weight:900;cursor:pointer}.sudoku-tool-btn small{font-size:9px;margin-left:4px}.sudoku-tool-btn.is-active{background:linear-gradient(145deg,var(--mid),var(--dark));border-color:var(--deep);color:#fff}.person-legend{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;margin-bottom:10px}.person-legend.is-hidden{display:none}.person-legend span{padding:5px 4px;border:1px solid var(--soft);border-radius:8px;background:rgba(255,255,255,.75);font-size:9px;color:var(--deep);text-align:center;font-weight:800}.sudoku-help{margin-top:12px;padding:11px;border:1px solid var(--soft);border-radius:12px;background:rgba(255,255,255,.68)}.sudoku-help strong{font-size:12px;color:var(--deep)}.sudoku-help p{margin:5px 0 0;font-size:10px;line-height:1.5;color:#60758a}
.sudoku-celebration{position:fixed;inset:0;z-index:99999;display:none;align-items:center;justify-content:center;pointer-events:none;background:rgba(10,20,35,.16);backdrop-filter:blur(2px);overflow:hidden}.sudoku-celebration.is-show{display:flex}.sudoku-celebration strong{position:relative;z-index:3;font-size:clamp(52px,9vw,120px);color:#fff;text-shadow:0 5px 30px rgba(0,0,0,.35);animation:perfectPop .8s ease both}.sudoku-petals{position:absolute;inset:-15%;background-image:radial-gradient(ellipse at center,#fff 0 32%,#ffadc6 35% 60%,transparent 62%),radial-gradient(ellipse at center,#fff 0 32%,#ffd76e 35% 60%,transparent 62%),radial-gradient(ellipse at center,#fff 0 32%,#a8e6cf 35% 60%,transparent 62%),radial-gradient(ellipse at center,#fff 0 32%,#cdb7ff 35% 60%,transparent 62%);background-size:34px 46px,42px 38px,36px 52px,45px 42px;background-position:3% -10%,26% -18%,58% -12%,86% -20%;animation:petalFall 2.8s linear infinite;opacity:.92}@keyframes perfectPop{from{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}@keyframes petalFall{from{background-position:3% -10%,26% -18%,58% -12%,86% -20%}to{background-position:12% 110%,18% 118%,68% 112%,78% 120%}}
html.bp-dark .sudoku-dashboard,body.bp-dark .sudoku-dashboard,html[data-theme="dark"] .sudoku-dashboard{background:linear-gradient(180deg,#151f2e,#111b29)!important;border-color:#36506d!important}html.bp-dark .sudoku-stat-card,body.bp-dark .sudoku-stat-card,html[data-theme="dark"] .sudoku-stat-card{background:#172436!important;border-color:#36506d!important;box-shadow:none!important}html.bp-dark .sudoku-brand h2,html.bp-dark .sudoku-stat-card span:not(.sudoku-stat-icon),html.bp-dark .sudoku-side-title strong,body.bp-dark .sudoku-brand h2,body.bp-dark .sudoku-stat-card span:not(.sudoku-stat-icon),body.bp-dark .sudoku-side-title strong,html[data-theme="dark"] .sudoku-brand h2,html[data-theme="dark"] .sudoku-stat-card span:not(.sudoku-stat-icon),html[data-theme="dark"] .sudoku-side-title strong{color:#eef6ff!important}html.bp-dark .sudoku-brand p,html.bp-dark .sudoku-login-user,body.bp-dark .sudoku-brand p,body.bp-dark .sudoku-login-user,html[data-theme="dark"] .sudoku-brand p,html[data-theme="dark"] .sudoku-login-user{color:#9eb0c3!important}html.bp-dark .sudoku-levels,body.bp-dark .sudoku-levels,html[data-theme="dark"] .sudoku-levels{background:#111d2c!important;border-color:#314a63!important}html.bp-dark .sudoku-level,body.bp-dark .sudoku-level,html[data-theme="dark"] .sudoku-level{color:#a9bbcc!important}html.bp-dark .sudoku-level.is-active,body.bp-dark .sudoku-level.is-active,html[data-theme="dark"] .sudoku-level.is-active{background:#17283b!important;border-color:#405f7e!important;color:#eef6ff!important}html.bp-dark .sudoku-toolbar,body.bp-dark .sudoku-toolbar,html[data-theme="dark"] .sudoku-toolbar{background:#111d2c!important;border-color:#31465f!important}html.bp-dark .sudoku-toolbar strong,body.bp-dark .sudoku-toolbar strong,html[data-theme="dark"] .sudoku-toolbar strong{color:#e2ebf5!important}html.bp-dark .sudoku-toolbar span,body.bp-dark .sudoku-toolbar span,html[data-theme="dark"] .sudoku-toolbar span{color:#97a6b9!important}html.bp-dark .sudoku-board-card,html.bp-dark .sudoku-keypad-card,body.bp-dark .sudoku-board-card,body.bp-dark .sudoku-keypad-card,html[data-theme="dark"] .sudoku-board-card,html[data-theme="dark"] .sudoku-keypad-card{background:#151f2e!important;border-color:#36506d!important;box-shadow:none!important}html.bp-dark .sudoku-board,body.bp-dark .sudoku-board,html[data-theme="dark"] .sudoku-board{background:#101a28;border-color:#5b7898}html.bp-dark .sudoku-cell,body.bp-dark .sudoku-cell,html[data-theme="dark"] .sudoku-cell{background:#111c2a;border-color:#405570}html.bp-dark .sudoku-cell[data-col="2"],html.bp-dark .sudoku-cell[data-col="5"],html.bp-dark .sudoku-cell[data-row="2"],html.bp-dark .sudoku-cell[data-row="5"],body.bp-dark .sudoku-cell[data-col="2"],body.bp-dark .sudoku-cell[data-col="5"],body.bp-dark .sudoku-cell[data-row="2"],body.bp-dark .sudoku-cell[data-row="5"],html[data-theme="dark"] .sudoku-cell[data-col="2"],html[data-theme="dark"] .sudoku-cell[data-col="5"],html[data-theme="dark"] .sudoku-cell[data-row="2"],html[data-theme="dark"] .sudoku-cell[data-row="5"]{border-color:#6c88a8}html.bp-dark .sudoku-cell.is-given,body.bp-dark .sudoku-cell.is-given,html[data-theme="dark"] .sudoku-cell.is-given{background:#172638}html.bp-dark .sudoku-cell.is-selected,body.bp-dark .sudoku-cell.is-selected,html[data-theme="dark"] .sudoku-cell.is-selected{background:#203956!important;box-shadow:inset 0 0 0 3px #5684b5}html.bp-dark .sudoku-cell.is-peer,body.bp-dark .sudoku-cell.is-peer,html[data-theme="dark"] .sudoku-cell.is-peer{background:#152538}html.bp-dark .cell-value,body.bp-dark .cell-value,html[data-theme="dark"] .cell-value{color:#eef6ff}html.bp-dark .cell-notes,body.bp-dark .cell-notes,html[data-theme="dark"] .cell-notes{color:#9fb3c7}html.bp-dark .sudoku-key,html.bp-dark .sudoku-tool-btn,html.bp-dark .sudoku-help,html.bp-dark .person-legend span,body.bp-dark .sudoku-key,body.bp-dark .sudoku-tool-btn,body.bp-dark .sudoku-help,body.bp-dark .person-legend span,html[data-theme="dark"] .sudoku-key,html[data-theme="dark"] .sudoku-tool-btn,html[data-theme="dark"] .sudoku-help,html[data-theme="dark"] .person-legend span{background:#111c2a!important;border-color:#405570!important;color:#e5eef7!important}html.bp-dark .sudoku-message,body.bp-dark .sudoku-message,html[data-theme="dark"] .sudoku-message{background:#111c2a;border-color:#405570;color:#dbe7f2}
@media(max-width:1050px){.sudoku-dashboard{grid-template-columns:1fr}.sudoku-user-actions{flex-direction:row;justify-content:flex-end}.sudoku-workspace{grid-template-columns:minmax(0,1fr) minmax(320px,390px)}.sudoku-keypad-card{position:static}}
@media(max-width:760px){.sudoku-page{width:calc(100% - 24px);max-width:none;margin-top:16px}.sudoku-history{grid-template-columns:1fr}.sudoku-levels{grid-template-columns:1fr}.sudoku-level small{display:inline;margin-left:6px}.sudoku-workspace{grid-template-columns:1fr}.sudoku-board-card{padding:6px}.sudoku-keypad-card{padding:10px}.sudoku-key{min-height:54px}.sudoku-toolbar{grid-template-columns:1fr}.sudoku-toolbar-right{justify-content:flex-end}.sudoku-brand p{white-space:normal}}

/* 2026-08-14: remove redundant 1·name legend; keypad itself is the only selector */
.person-legend{display:none!important}
.sudoku-key:disabled,
.sudoku-key.is-complete{
    opacity:.28!important;
    filter:grayscale(1)!important;
    cursor:not-allowed!important;
    transform:none!important;
    box-shadow:none!important;
}

/* 2026-08-14 names-only person mode */
.sudoku-key small{display:none!important}
.sudoku-page.is-person-mode .sudoku-key{
    font-size:18px!important;
    font-weight:900!important;
    line-height:1.15!important;
    word-break:keep-all!important;
}
.sudoku-page.is-person-mode .cell-value{
    font-size:clamp(13px,1.55vw,19px)!important;
    letter-spacing:-.04em!important;
    word-break:keep-all!important;
}

/* 2026-08-15: PERFECT celebration stays inside the 9x9 board only */
.sudoku-board-stage{
    position:relative;
    width:100%;
    aspect-ratio:1/1;
    overflow:hidden;
    border-radius:16px;
}
.sudoku-board-stage .sudoku-board{
    width:100%;
    height:100%;
}
.sudoku-board-stage .sudoku-celebration{
    position:absolute!important;
    inset:0!important;
    z-index:50!important;
    display:none;
    align-items:center;
    justify-content:center;
    pointer-events:none;
    overflow:hidden;
    border-radius:inherit;
    background:rgba(10,20,35,.10)!important;
    backdrop-filter:blur(1.5px);
}
.sudoku-board-stage .sudoku-celebration.is-show{display:flex!important}
.sudoku-board-stage .sudoku-celebration strong{
    position:relative;
    z-index:3;
    font-size:clamp(34px,6vw,72px)!important;
}
.sudoku-board-stage .sudoku-petals{
    position:absolute;
    inset:-20% 0 0;
}

/* 2026-08-14 Elegant board-only party popper celebration */
.sudoku-board-stage .sudoku-celebration{
    background:linear-gradient(180deg,rgba(255,255,255,.06),rgba(10,20,35,.08))!important;
    backdrop-filter:blur(.7px)!important;
}
.sudoku-board-stage .sudoku-celebration strong{
    position:relative;
    z-index:10;
    padding:.18em .34em;
    border-radius:16px;
    background:rgba(255,255,255,.82);
    color:var(--deep);
    text-shadow:none!important;
    box-shadow:0 10px 35px rgba(25,45,70,.16);
    animation:partyPerfectPop .75s cubic-bezier(.17,.84,.3,1.2) both;
}
.party-burst{
    position:absolute;
    bottom:8%;
    width:26%;
    height:28%;
    z-index:4;
    opacity:0;
}
.party-burst-left{left:3%;transform:rotate(26deg)}
.party-burst-right{right:3%;transform:scaleX(-1) rotate(26deg)}
.party-burst:before{
    content:"";
    position:absolute;
    left:4%;
    bottom:0;
    width:34%;
    height:48%;
    clip-path:polygon(0 100%,100% 68%,48% 0);
    background:linear-gradient(145deg,var(--mid),var(--dark));
    border-radius:10px;
    box-shadow:0 5px 15px rgba(20,40,65,.18);
}
.party-burst:after{
    content:"";
    position:absolute;
    left:28%;
    bottom:34%;
    width:72%;
    height:68%;
    background:
      radial-gradient(circle at 20% 78%,var(--mid) 0 3px,transparent 4px),
      radial-gradient(circle at 38% 55%,#fff 0 3px,transparent 4px),
      radial-gradient(circle at 60% 32%,var(--dark) 0 3px,transparent 4px),
      radial-gradient(circle at 82% 14%,var(--mid) 0 2px,transparent 3px);
}
.sudoku-celebration.is-show .party-burst{
    animation:partyBurst .72s cubic-bezier(.17,.84,.3,1.12) .12s both;
}
.party-confetti,.party-sparkles{
    position:absolute;
    inset:0;
    z-index:5;
    pointer-events:none;
}
.party-confetti{
    background:
      linear-gradient(18deg,transparent 48%,var(--mid) 49% 52%,transparent 53%) 8% -12%/44px 70px,
      linear-gradient(-22deg,transparent 48%,var(--dark) 49% 52%,transparent 53%) 31% -18%/56px 84px,
      linear-gradient(34deg,transparent 48%,var(--soft) 49% 52%,transparent 53%) 61% -14%/48px 74px,
      linear-gradient(-17deg,transparent 48%,var(--mid) 49% 52%,transparent 53%) 86% -16%/52px 82px;
    opacity:0;
}
.sudoku-celebration.is-show .party-confetti{
    animation:partyConfettiFall 2.2s ease-out .05s both;
}
.party-sparkles{
    background:
      radial-gradient(circle at 18% 22%,rgba(255,255,255,.95) 0 2px,transparent 3px),
      radial-gradient(circle at 34% 12%,var(--soft) 0 3px,transparent 4px),
      radial-gradient(circle at 52% 19%,rgba(255,255,255,.9) 0 2px,transparent 3px),
      radial-gradient(circle at 69% 11%,var(--mid) 0 3px,transparent 4px),
      radial-gradient(circle at 84% 24%,rgba(255,255,255,.95) 0 2px,transparent 3px);
    opacity:0;
}
.sudoku-celebration.is-show .party-sparkles{
    animation:partySparkle 1.25s ease-out .18s both;
}
@keyframes partyBurst{
    0%{opacity:0;transform:translateY(18px) scale(.72) rotate(26deg)}
    45%{opacity:1;transform:translateY(-3px) scale(1.06) rotate(26deg)}
    100%{opacity:.95;transform:translateY(0) scale(1) rotate(26deg)}
}
@keyframes partyConfettiFall{
    0%{opacity:0;background-position:8% -34%,31% -38%,61% -32%,86% -36%}
    15%{opacity:1}
    100%{opacity:.78;background-position:8% 112%,31% 118%,61% 108%,86% 115%}
}
@keyframes partySparkle{
    0%{opacity:0;transform:scale(.8)}
    35%{opacity:1;transform:scale(1.05)}
    100%{opacity:0;transform:scale(1.18)}
}
@keyframes partyPerfectPop{
    0%{opacity:0;transform:scale(.72) translateY(8px)}
    60%{opacity:1;transform:scale(1.06) translateY(-2px)}
    100%{opacity:1;transform:scale(1) translateY(0)}
}


/* 2026-08-14: current-game information panel */
.sudoku-game-info{
    margin-top:12px;
    padding:13px;
    border:1px solid color-mix(in srgb,var(--mid) 52%,#d5e1ef);
    border-radius:14px;
    background:linear-gradient(145deg,color-mix(in srgb,var(--light) 55%,#fff),#fff 58%,color-mix(in srgb,var(--light) 28%,#fff));
    box-shadow:0 5px 16px rgba(35,76,122,.055);
    color:var(--ink);
}
.sudoku-game-info-title{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-bottom:9px;margin-bottom:10px;border-bottom:1px solid color-mix(in srgb,var(--soft) 75%,transparent)}
.sudoku-game-info-title strong{font-size:14px;color:var(--deep);font-weight:950}
.sudoku-game-info-title span{padding:3px 8px;border:1px solid var(--soft);border-radius:999px;background:color-mix(in srgb,var(--light) 72%,#fff);color:var(--dark);font-size:10px;font-weight:900}
.sudoku-game-info-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;margin-bottom:11px}
.sudoku-game-info-item{position:relative;display:grid;grid-template-columns:30px 1fr;grid-template-rows:auto auto;column-gap:7px;align-items:center;min-width:0;padding:5px 9px}
.sudoku-game-info-item:not(:last-child):after{content:"";position:absolute;right:0;top:12%;bottom:12%;width:1px;background:color-mix(in srgb,var(--soft) 72%,transparent)}
.sudoku-game-info-icon{grid-row:1/3;width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:color-mix(in srgb,var(--light) 75%,#fff);border:1px solid var(--soft);color:var(--dark);font-size:16px;font-weight:950}
.sudoku-game-info-label{min-width:0;color:color-mix(in srgb,var(--ink) 70%,#73869a);font-size:9px;font-weight:850;white-space:nowrap}
.sudoku-game-info-item b{color:var(--deep);font-size:17px;line-height:1.05;font-weight:950}
.sudoku-game-progress{padding:10px 11px;border:1px solid color-mix(in srgb,var(--soft) 75%,#d7e2ef);border-radius:12px;background:rgba(255,255,255,.58)}
.sudoku-game-progress-head,.sudoku-game-progress-meta{display:flex;align-items:center;justify-content:space-between;gap:10px}
.sudoku-game-progress-head{margin-bottom:7px;color:color-mix(in srgb,var(--ink) 74%,#6f8296);font-size:10px;font-weight:850}
.sudoku-game-progress-head b{color:var(--deep);font-size:13px}
.sudoku-game-progress-track{height:8px;overflow:hidden;border-radius:999px;background:color-mix(in srgb,var(--soft) 55%,#eef3f8)}
.sudoku-game-progress-track i{display:block;width:0;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--mid),var(--dark));transition:width .25s ease}
.sudoku-game-progress-meta{margin-top:7px;color:color-mix(in srgb,var(--ink) 68%,#72869b);font-size:9px;font-weight:800}
.sudoku-game-progress-meta b{color:var(--deep);font-size:10px}
.sudoku-game-info-tip{margin-top:10px;padding:8px 10px;border:1px solid color-mix(in srgb,var(--soft) 78%,transparent);border-radius:10px;background:color-mix(in srgb,var(--light) 48%,#fff);color:color-mix(in srgb,var(--ink) 78%,#536a80);font-size:9.5px;line-height:1.45;font-weight:750;text-align:center}

html.bp-dark .sudoku-game-info,body.bp-dark .sudoku-game-info,html[data-theme="dark"] .sudoku-game-info{
    background:linear-gradient(145deg,#151f2e,#111b29)!important;
    border-color:color-mix(in srgb,var(--dark) 62%,#36506d)!important;
    box-shadow:none!important;
    color:#dce8f4!important;
}
html.bp-dark .sudoku-game-info-title,body.bp-dark .sudoku-game-info-title,html[data-theme="dark"] .sudoku-game-info-title{border-bottom-color:color-mix(in srgb,var(--dark) 40%,#36506d)!important}
html.bp-dark .sudoku-game-info-title strong,body.bp-dark .sudoku-game-info-title strong,html[data-theme="dark"] .sudoku-game-info-title strong,
html.bp-dark .sudoku-game-info-item b,body.bp-dark .sudoku-game-info-item b,html[data-theme="dark"] .sudoku-game-info-item b,
html.bp-dark .sudoku-game-progress-head b,body.bp-dark .sudoku-game-progress-head b,html[data-theme="dark"] .sudoku-game-progress-head b,
html.bp-dark .sudoku-game-progress-meta b,body.bp-dark .sudoku-game-progress-meta b,html[data-theme="dark"] .sudoku-game-progress-meta b{color:color-mix(in srgb,var(--soft) 82%,#fff)!important}
html.bp-dark .sudoku-game-info-title span,body.bp-dark .sudoku-game-info-title span,html[data-theme="dark"] .sudoku-game-info-title span,
html.bp-dark .sudoku-game-info-icon,body.bp-dark .sudoku-game-info-icon,html[data-theme="dark"] .sudoku-game-info-icon{background:color-mix(in srgb,var(--deep) 32%,#152334)!important;border-color:color-mix(in srgb,var(--dark) 55%,#405570)!important;color:color-mix(in srgb,var(--soft) 80%,#fff)!important}
html.bp-dark .sudoku-game-info-label,body.bp-dark .sudoku-game-info-label,html[data-theme="dark"] .sudoku-game-info-label,
html.bp-dark .sudoku-game-progress-head,body.bp-dark .sudoku-game-progress-head,html[data-theme="dark"] .sudoku-game-progress-head,
html.bp-dark .sudoku-game-progress-meta,body.bp-dark .sudoku-game-progress-meta,html[data-theme="dark"] .sudoku-game-progress-meta{color:#9fb1c4!important}
html.bp-dark .sudoku-game-info-item:not(:last-child):after,body.bp-dark .sudoku-game-info-item:not(:last-child):after,html[data-theme="dark"] .sudoku-game-info-item:not(:last-child):after{background:color-mix(in srgb,var(--dark) 45%,#3a4e65)!important}
html.bp-dark .sudoku-game-progress,body.bp-dark .sudoku-game-progress,html[data-theme="dark"] .sudoku-game-progress{background:#111c2a!important;border-color:color-mix(in srgb,var(--dark) 48%,#405570)!important}
html.bp-dark .sudoku-game-progress-track,body.bp-dark .sudoku-game-progress-track,html[data-theme="dark"] .sudoku-game-progress-track{background:#243448!important}
html.bp-dark .sudoku-game-info-tip,body.bp-dark .sudoku-game-info-tip,html[data-theme="dark"] .sudoku-game-info-tip{background:#111c2a!important;border-color:color-mix(in srgb,var(--dark) 45%,#405570)!important;color:#c7d5e3!important}

@media(max-width:1360px){.sudoku-game-info-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.sudoku-game-info-item:nth-child(2):after{display:none}.sudoku-game-info-item:nth-child(-n+2){margin-bottom:5px}}
@media(max-width:760px){.sudoku-game-info{padding:11px}.sudoku-game-info-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.sudoku-game-info-item{padding:6px 7px}}

.sudoku-stat-icon svg{width:28px;height:28px;fill:none;stroke:currentColor;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
.sudoku-stat-card:nth-child(1) .sudoku-stat-icon{color:#27ada2}
.sudoku-stat-card:nth-child(2) .sudoku-stat-icon{color:#e7a11b}
.sudoku-stat-card:nth-child(3) .sudoku-stat-icon{color:#ec991a}

/* v6 color image icons */

.sudoku-stat-icon{width:38px!important;height:38px!important;background:transparent!important;border:0!important;display:grid!important;place-items:center!important}
.sudoku-stat-icon img{display:block!important;width:36px!important;height:36px!important;object-fit:contain!important;max-width:none!important}
.sudoku-stat-icon svg{display:none!important}

/* v7: Sudoku icons match other games — no white circular badge */
.sudoku-stat-icon{
  width:30px!important;height:30px!important;
  display:grid!important;place-items:center!important;
  background:transparent!important;border:0!important;border-radius:0!important;
  box-shadow:none!important;
}
.sudoku-stat-icon img{width:28px!important;height:28px!important;display:block!important;object-fit:contain!important;filter:none!important}
.sudoku-stat-icon svg{display:none!important}
html.bp-dark .sudoku-stat-icon,
body.bp-dark .sudoku-stat-icon,
html[data-theme="dark"] .sudoku-stat-icon{background:transparent!important;border:0!important}


/* =========================================================
   2026-08-16 - Sudoku board outer corners / border refinement
   stage와 board의 radius를 동일하게 맞춰 네 모서리에서
   외곽선이 얇아지거나 잘려 보이지 않도록 합니다.
   ========================================================= */
.sudoku-board-stage{
    border-radius:14px!important;
}
.sudoku-board-stage .sudoku-board{
    box-sizing:border-box!important;
    border:4px solid var(--deep)!important;
    border-radius:14px!important;
    overflow:hidden!important;
    background:#fff;
}
/* 내부 3x3 구분선과 외곽선이 자연스럽게 이어지도록 유지 */
.sudoku-board-stage .sudoku-cell[data-col="2"],
.sudoku-board-stage .sudoku-cell[data-col="5"]{
    border-right-width:3px!important;
}
.sudoku-board-stage .sudoku-cell[data-row="2"],
.sudoku-board-stage .sudoku-cell[data-row="5"]{
    border-bottom-width:3px!important;
}

html.bp-dark .sudoku-board-stage .sudoku-board,
body.bp-dark .sudoku-board-stage .sudoku-board,
html[data-theme="dark"] .sudoku-board-stage .sudoku-board{
    border-color:var(--deep)!important;
}
