@import url('https://fonts.googleapis.com/css2?family=DM+Mono:ital,wght@0,400;0,500&family=DM+Sans:wght@300;400;500;600&display=swap');
.sdk*{box-sizing:border-box;margin:0;padding:0}
.sdk-wrap{font-family:'DM Sans',sans-serif;background:#08101e;padding:0 0 40px;border-radius:16px;overflow:hidden;color:#e2e8f0}/* HEADER */
.sdk-header{background:#0a1525;border-bottom:1px solid #1e3a5f;padding:24px;text-align:center}
.sdk-logo{max-width:180px;height:auto;display:block;margin:0 auto 20px}
.sdk-edition{font-size:10px;letter-spacing:.15em;color:#3b82f6;text-transform:uppercase;font-weight:600;margin-bottom:8px}
.sdk-date{font-size:18px;font-weight:600;color:#f0f6ff;letter-spacing:-.01em}
.sdk-date span{color:#3b82f6}/* CONTROLS */
.sdk-controls{padding:20px 24px 0;display:flex;flex-direction:column;gap:12px;align-items:center}
.sdk-diff{display:flex;background:#0f1e33;border-radius:10px;padding:4px;gap:4px}
.sdk-diff-btn{font-family:'DM Sans',sans-serif;font-size:12px;font-weight:600;padding:7px 22px;border-radius:7px;border:none;background:transparent;color:#4a6080;cursor:pointer;transition:all .18s;letter-spacing:.03em}
.sdk-diff-btn.active{background:#1d4ed8;color:#fff;box-shadow:0 2px 8px rgba(29,78,216,.4)}
.sdk-diff-btn:hover:not(.active){color:#93c5fd}
.sdk-btns{display:flex;gap:8px}
.sdk-btn{font-family:'DM Sans',sans-serif;font-size:12px;font-weight:600;padding:8px 18px;border-radius:8px;border:none;cursor:pointer;transition:all .18s;letter-spacing:.02em}
.sdk-btn-ghost{background:#0f1e33;color:#60a5fa;border:1px solid #1e3a5f}
.sdk-btn-ghost:hover{background:#1e3a5f}
.sdk-btn-reset{background:#0f1e33;color:#f87171;border:1px solid #2d1515}
.sdk-btn-reset:hover{background:#2d1515}/* GAME */
.sdk-game{display:flex;gap:20px;justify-content:center;align-items:flex-start;flex-wrap:wrap;padding:20px 24px 0}
.sdk-board-wrap{background:#0a1525;border:1px solid #1e3a5f;border-radius:12px;padding:14px}
.sdk-board{display:grid;grid-template-columns:repeat(9,1fr);gap:2px;border:2px solid #2563eb;border-radius:6px;overflow:hidden}
.sdk-cell{font-family:'DM Mono',monospace;font-size:clamp(13px,2.2vw,18px);font-weight:500;width:clamp(32px,5.5vw,50px);height:clamp(32px,5.5vw,50px);display:flex;align-items:center;justify-content:center;background:#06101c;color:#e2e8f0;border:none;cursor:pointer;transition:background .1s;outline:none;border-right:1px solid #0f1e33;border-bottom:1px solid #0f1e33}
.sdk-cell:nth-child(3n){border-right:1px solid #2563eb}
.sdk-cell:nth-child(n+19):nth-child(-n+27),.sdk-cell:nth-child(n+46):nth-child(-n+54){border-bottom:1px solid #2563eb}
.sdk-cell.given{color:#60a5fa;font-weight:600}
.sdk-cell.selected{background:#1d3a6e!important}
.sdk-cell.highlight{background:#0d1e35}
.sdk-cell.error{background:#2d0f0f!important;color:#f87171}
.sdk-cell.correct{background:#0d2218!important;color:#4ade80}
.sdk-cell:not(.given):hover{background:#0f1e33}/* SIDE */
.sdk-side{display:flex;flex-direction:column;gap:12px;min-width:160px}
.sdk-card{background:#0a1525;border:1px solid #1e3a5f;border-radius:12px;padding:14px}
.sdk-card-label{font-size:10px;color:#4a6080;letter-spacing:.12em;text-transform:uppercase;font-weight:600;margin-bottom:10px}
.sdk-numpad{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.sdk-num-btn{font-family:'DM Mono',monospace;font-size:16px;font-weight:500;padding:10px;border-radius:8px;border:1px solid #1e3a5f;background:#06101c;color:#60a5fa;cursor:pointer;transition:all .15s;text-align:center}
.sdk-num-btn:hover{background:#1e3a5f;transform:scale(1.05)}
.sdk-num-btn:active{transform:scale(.95)}
.sdk-stats{display:flex;flex-direction:column;gap:10px}
.sdk-stat{display:flex;justify-content:space-between;align-items:center}
.sdk-stat-label{font-size:11px;color:#4a6080;font-weight:500}
.sdk-stat-val{font-family:'DM Mono',monospace;font-size:18px;color:#60a5fa;font-weight:500}/* MSG */
.sdk-msg{margin:16px 24px 0;padding:12px 20px;border-radius:10px;font-size:13px;font-weight:600;display:none;text-align:center}
.sdk-msg.win{background:#0d2218;border:1px solid #166534;color:#4ade80;display:block}
.sdk-msg.info{background:#0f1e33;border:1px solid #1e3a5f;color:#60a5fa;display:block}/* LEADERBOARD */
.sdk-lb-wrap{padding:0 24px;margin-top:20px}
.sdk-lb{background:#0a1525;border:1px solid #1e3a5f;border-radius:12px;padding:20px}
.sdk-lb-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}
.sdk-lb-title{font-size:14px;font-weight:700;color:#f0f6ff;letter-spacing:-.01em}
.sdk-lb-sub{font-size:11px;color:#4a6080}
.sdk-lb-table{width:100%;border-collapse:collapse}
.sdk-lb-table th{font-size:10px;color:#4a6080;letter-spacing:.1em;text-transform:uppercase;font-weight:600;padding:0 8px 10px;text-align:left;white-space:nowrap}
.sdk-lb-table td{padding:10px 8px;border-top:1px solid #0f1e33;font-size:13px;color:#94a3b8;vertical-align:middle;white-space:nowrap}
.sdk-lb-table tr:first-child td{border-top:none}
.sdk-lb-table tr:hover td{background:#0d1a2d}
.sdk-rank{font-family:'DM Mono',monospace;font-size:15px}
.sdk-player{color:#e2e8f0;font-weight:500}
.sdk-mode{display:inline-block;font-size:10px;font-weight:700;padding:2px 7px;border-radius:4px;text-transform:uppercase;letter-spacing:.04em;margin-top:3px}
.sdk-mode.easy{background:#0d2218;color:#4ade80}
.sdk-mode.medium{background:#0f1e33;color:#60a5fa}
.sdk-mode.hard{background:#2d0f0f;color:#f87171}
.sdk-time-val{font-family:'DM Mono',monospace;color:#60a5fa;font-weight:500}
.sdk-miss-val{font-family:'DM Mono',monospace;color:#f87171}
.sdk-hints-val{font-family:'DM Mono',monospace;color:#a78bfa}
.sdk-date-val{font-size:11px;color:#4a6080;font-family:'DM Mono',monospace}
.sdk-lb-empty{text-align:center;color:#4a6080;font-size:13px;padding:24px 0}
.sdk-lb-loading{text-align:center;color:#4a6080;font-size:13px;padding:20px 0}/* SUBMIT */
.sdk-submit{margin-top:16px;padding-top:16px;border-top:1px solid #0f1e33}
.sdk-submit-label{font-size:10px;color:#4a6080;letter-spacing:.12em;text-transform:uppercase;font-weight:600;margin-bottom:10px}
.sdk-submit-row{display:flex;gap:8px}
.sdk-name-input{flex:1;font-family:'DM Sans',sans-serif;font-size:13px;background:#06101c;border:1px solid #1e3a5f;border-radius:8px;padding:9px 14px;color:#e2e8f0;outline:none;transition:border-color .2s}
.sdk-name-input::placeholder{color:#4a6080}
.sdk-name-input:focus{border-color:#3b82f6}
.sdk-submit-btn{font-family:'DM Sans',sans-serif;font-size:13px;font-weight:600;background:#1d4ed8;color:#fff;border:none;border-radius:8px;padding:9px 18px;cursor:pointer;transition:all .18s;white-space:nowrap}
.sdk-submit-btn:hover{background:#2563eb}
.sdk-submit-btn:disabled{opacity:.4;cursor:default}@media(max-width:600px){
.sdk-game{gap:14px;padding:16px 16px 0}
.sdk-lb-wrap{padding:0 16px}
.sdk-side{min-width:100%;flex-direction:row;flex-wrap:wrap}
.sdk-card{flex:1;min-width:140px}
.sdk-lb-table th:nth-child(5),.sdk-lb-table td:nth-child(5){display:none}
}
(function(){
var SCRIPT_URL='https://script.google.com/macros/s/AKfycbzsupDebN1w8jThpGbjR4UDv1mqMNHK-A2acaPbAMNKLwCt1-tG3Nf5hUr4cEfSlAYA/exec';
var WEEK='week_apr2_2026';
var sdk={board:[],solution:[],given:[],selected:null,errors:0,hints:3,timer:0,timerInt:null,difficulty:'easy',finished:false};var PUZZLES={
easy:[[5,3,0,0,7,0,0,0,0],[6,0,0,1,9,5,0,0,0],[0,9,8,0,0,0,0,6,0],[8,0,0,0,6,0,0,0,3],[4,0,0,8,0,3,0,0,1],[7,0,0,0,2,0,0,0,6],[0,6,0,0,0,0,2,8,0],[0,0,0,4,1,9,0,0,5],[0,0,0,0,8,0,0,7,9]],
medium:[[0,0,0,2,6,0,7,0,1],[6,8,0,0,7,0,0,9,0],[1,9,0,0,0,4,5,0,0],[8,2,0,1,0,0,0,4,0],[0,0,4,6,0,2,9,0,0],[0,5,0,0,0,3,0,2,8],[0,0,9,3,0,0,0,7,4],[0,4,0,0,5,0,0,3,6],[7,0,3,0,1,8,0,0,0]],
hard:[[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,3,0,8,5],[0,0,1,0,2,0,0,0,0],[0,0,0,5,0,7,0,0,0],[0,0,4,0,0,0,1,0,0],[0,9,0,0,0,0,0,0,0],[5,0,0,0,0,0,0,7,3],[0,0,2,0,1,0,0,0,0],[0,0,0,0,4,0,0,0,9]]
};
var SOLUTIONS={
easy:[[5,3,4,6,7,8,9,1,2],[6,7,2,1,9,5,3,4,8],[1,9,8,3,4,2,5,6,7],[8,5,9,7,6,1,4,2,3],[4,2,6,8,5,3,7,9,1],[7,1,3,9,2,4,8,5,6],[9,6,1,5,3,7,2,8,4],[2,8,7,4,1,9,6,3,5],[3,4,5,2,8,6,1,7,9]],
medium:[[4,3,5,2,6,9,7,8,1],[6,8,2,5,7,1,4,9,3],[1,9,7,8,3,4,5,6,2],[8,2,6,1,9,5,3,4,7],[3,7,4,6,8,2,9,1,5],[9,5,1,7,4,3,6,2,8],[5,1,9,3,2,6,8,7,4],[2,4,8,9,5,7,1,3,6],[7,6,3,4,1,8,2,5,9]],
hard:[[9,8,7,6,5,4,3,2,1],[2,4,6,1,7,3,9,8,5],[3,5,1,9,2,8,7,4,6],[1,2,8,5,3,7,6,9,4],[6,3,4,8,9,2,1,5,7],[7,9,5,4,6,1,8,3,2],[5,1,9,2,8,6,4,7,3],[4,7,2,3,1,9,5,6,8],[8,6,3,7,4,5,2,1,9]]
};function fmtTime(s){var m=Math.floor(s/60),ss=s%60;return(m<10?'0':'')+m+':'+(ss<10?'0':'')+ss;}
function fmtDate(ts){if(!ts||isNaN(ts))return'-';var d=new Date(Number(ts));return(d.getMonth()+1)+'/'+(d.getDate())+'/'+String(d.getFullYear()).slice(2);}
function esc(s){return String(s).replace(/[&"']/g,function(c){return({'&':'&','':'>','"':'"',"'":'''})[c];});}/* ---- Google Sheets ---- */
function fetchScores(cb){
fetch(SCRIPT_URL+'?week='+encodeURIComponent(WEEK))
.then(function(r){return r.json();})
.then(function(d){
d.sort(function(a,b){return Number(a.time)-Number(b.time);});
cb(d);
})
.catch(function(){cb([]);});
}function saveScore(name,cb){
fetch(SCRIPT_URL,{
method:'POST',
headers:{'Content-Type':'text/plain'},
body:JSON.stringify({
week:WEEK,name:name,
time:sdk.timer,
errors:sdk.errors,
difficulty:sdk.difficulty,
hintsLeft:sdk.hints,
score:0,
timestamp:Date.now()
})
})
.then(function(r){return r.json();})
.then(function(d){cb(d.result==='ok');})
.catch(function(){cb(false);});
}function renderLB(scores){
var el=document.getElementById('sdkLbList');
if(!scores.length){el.innerHTML='
';
el.innerHTML=html;
}function loadLB(){fetchScores(renderLB);}window.sdkSubmitScore=function(){
var nameEl=document.getElementById('sdkNameInput');
var name=(nameEl.value||'').trim();
if(!name){nameEl.focus();return;}
var btn=document.getElementById('sdkSubmitBtn');
btn.disabled=true;btn.textContent='Saving...';
saveScore(name,function(ok){
if(ok){
document.getElementById('sdkSubmitWrap').style.display='none';
showMsg('Score submitted! 🏆','info');
setTimeout(loadLB,1500);
}else{
btn.disabled=false;btn.textContent='Submit';
showMsg('Could not save. Please try again.','info');
}
});
};/* ---- Game ---- */
function init(){renderBoard();renderNumpad();startGame();loadLB();}function startGame(){
var p=PUZZLES[sdk.difficulty],s=SOLUTIONS[sdk.difficulty];
sdk.board=p.map(function(r){return r.slice();});
sdk.solution=s.map(function(r){return r.slice();});
sdk.given=p.map(function(r){return r.map(function(v){return v!==0;});});
sdk.selected=null;sdk.errors=0;sdk.hints=3;sdk.finished=false;
document.getElementById('sdkErrors').textContent='0';
document.getElementById('sdkHints').textContent='3';
document.getElementById('sdkMsg').className='sdk-msg';
document.getElementById('sdkSubmitWrap').style.display='none';
clearInterval(sdk.timerInt);sdk.timer=0;
document.getElementById('sdkTimer').textContent='00:00';
sdk.timerInt=setInterval(function(){if(!sdk.finished){sdk.timer++;document.getElementById('sdkTimer').textContent=fmtTime(sdk.timer);}},1000);
updateBoard();
}function renderBoard(){
var b=document.getElementById('sdkBoard');b.innerHTML='';
for(var i=0;i<81;i++){var c=document.createElement('div');c.className='sdk-cell';c.dataset.i=i;c.addEventListener('click',function(){sdkSelect(parseInt(this.dataset.i));});b.appendChild(c);}
}
function renderNumpad(){
var n=document.getElementById('sdkNumpad');n.innerHTML='';
for(var d=1;d<=9;d++){var b=document.createElement('div');b.className='sdk-num-btn';b.textContent=d;b.dataset.n=d;b.addEventListener('click',function(){sdkInput(parseInt(this.dataset.n));});n.appendChild(b);}
}window.sdkSetDiff=function(d){
sdk.difficulty=d;
document.querySelectorAll('.sdk-diff-btn').forEach(function(b){b.classList.toggle('active',b.textContent.toLowerCase()===d);});
startGame();
};
window.sdkReset=function(){
for(var i=0;i<9;i++)for(var j=0;j<9;j++){if(!sdk.given[i][j])sdk.board[i][j]=0;}
sdk.selected=null;sdk.errors=0;sdk.finished=false;
document.getElementById('sdkErrors').textContent='0';
document.getElementById('sdkMsg').className='sdk-msg';
document.getElementById('sdkSubmitWrap').style.display='none';
updateBoard();
};
function sdkSelect(idx){if(sdk.finished)return;sdk.selected=idx;updateBoard();}
window.sdkSelect=sdkSelect;
window.sdkInput=function(n){
if(sdk.finished||sdk.selected===null)return;
var r=Math.floor(sdk.selected/9),c=sdk.selected%9;
if(sdk.given[r][c])return;
sdk.board[r][c]=n;
if(sdk.solution[r][c]!==n){sdk.errors++;document.getElementById('sdkErrors').textContent=sdk.errors;}
updateBoard();
if(isSolved()){
sdk.finished=true;clearInterval(sdk.timerInt);
showMsg('🎉 Solved! Time: '+fmtTime(sdk.timer)+' · Mistakes: '+sdk.errors,'win');
document.getElementById('sdkSubmitWrap').style.display='block';
}
};
window.sdkHint=function(){
if(sdk.finished)return;
if(sdk.hints<=0){showMsg('No hints remaining.','info');return;}
var empties=[];
for(var i=0;i<81;i++){var r=Math.floor(i/9),c=i%9;if(sdk.board[r][c]===0)empties.push(i);}
if(!empties.length)return;
var idx=empties[Math.floor(Math.random()*empties.length)];
sdk.board[Math.floor(idx/9)][idx%9]=sdk.solution[Math.floor(idx/9)][idx%9];
sdk.hints--;document.getElementById('sdkHints').textContent=sdk.hints;
sdk.selected=idx;updateBoard();
};
window.sdkCheck=function(){
var wrong=0;
for(var i=0;i<9;i++)for(var j=0;j0)showMsg(wrong+' mistake(s) found. Keep trying!','info');
updateBoard();
};
function isSolved(){for(var i=0;i<9;i++)for(var j=0;j='1'&&e.key=0&&nx<81)sdkSelect(nx);}
});
init();
})();
Weekly Puzzle Edition
Thursday, April 2, 2026 · News Edition
Enter Number
⏱ Time00:00
✕ Mistakes0
💡 Hints3
🏆 This Week's Leaderboard
Ranked by fastest time
Loading scores...
Submit your score
No scores yet — be the first! 🎯
';return;}
var medals=['🥇','🥈','🥉'];
var html='| # | Player | Time | Mistakes | Hints Left | Date | ' +'
|---|---|---|---|---|---|
| '+(medals[i]||'#'+(i+1))+' | ' +''+esc(s.name)+' '+diff+' | '
+''+fmtTime(Number(s.time))+' | ' +''+Number(s.errors||0)+' | ' +''+Number(s.hintsLeft||0)+' | ' +''+fmtDate(s.timestamp)+' | ' +'

Meridian Source Staff






