Outiref

Code source de l'URL : http://suirodoku.com

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="preload" href="https://suirodoku.com/assets/fonts/inter-v19-latin-600.woff2" as="font" type="font/woff2" crossorigin fetchpriority="high">
<style>
@font-face{font-family:'Inter';font-weight:600;font-display:optional;src:url(https://suirodoku.com/assets/fonts/inter-v19-latin-600.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
</style>
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="referrer" content="strict-origin-when-cross-origin">
<meta name="description" content="Play Suirodoku free: the sudoku evolution with numbers AND colors. 81 unique pairs, 4 rules, exclusive techniques. No other puzzle like it.">
<meta name="robots" content="index,follow">
<link rel="preconnect" href="https://www.gstatic.com" crossorigin>
<link rel="preconnect" href="https://europe-west1-suirodoku-web.cloudfunctions.net" crossorigin>
<link rel="preload" href="https://suirodoku.com/shared/home-discover.css?v=3.2.0" as="style">
<link rel="preload" href="https://suirodoku.com/assets/fonts/inter-v19-latin-regular.woff2" as="font" type="font/woff2" crossorigin>
<link rel="preload" href="https://suirodoku.com/assets/fonts/inter-v19-latin-500.woff2" as="font" type="font/woff2" crossorigin>
<link rel="preload" href="https://suirodoku.com/assets/fonts/inter-v19-latin-700.woff2" as="font" type="font/woff2" crossorigin>
<link rel="preload" href="https://suirodoku.com/shared/home-i18n.js?v=2.1.0" as="script">
<link rel="preload" href="https://suirodoku.com/shared/grille.js?v=2.1.1" as="script">
<script>
(function(){'use strict';window.UNIFIED_CONFIG={PERFECT_GAME_BONUS:100,HINT_BASE_COST:6,HINT_EMPTY_CELL_MULTIPLIER:2,MIN_SAVE_TIME_SECONDS:60,MIN_REASONABLE_SCORE:-2000,MAX_REASONABLE_SCORE:60000,MAX_GAME_TIME_HOURS:2,CACHE_TIMEOUT:5*60*1000,PROPAGATION_DELAY:300,DIFFICULTIES:['easy','medium','hard','expert','master'],GLOBAL_RATING_DIVISOR:5,AVERAGE_ALPHA:.30,DIFFICULTY_CONFIG:{easy:{name:'Easy',hintsCount:74,bonus:0},medium:{name:'Medium',hintsCount:68,bonus:100},hard:{name:'Hard',hintsCount:60,bonus:200},expert:{name:'Expert',hintsCount:52,bonus:350},master:{name:'Master',hintsCount:44,bonus:500}},COLOR_MAP:{'V':'#BEA1E5','O':'#FFBB45','B':'#5DB2FF','R':'#FF8A7A','J':'#FFEB6A','T':'#64EAE6','M':'#FFA8CB','P':'#C9A387','G':'#5BD87A'},SELECTION_MODES:{sameColor:{id:'sameColor',name:'Same Color',icon:'color',requiresColor:true},sameNumber:{id:'sameNumber',name:'Same Number',icon:'number',requiresNumber:true},lineColumn:{id:'lineColumn',name:'Line & Column',icon:'line',alwaysAvailable:true},region3x3:{id:'region3x3',name:'3x3 Region',icon:'region',alwaysAvailable:true}},WIN_STREAK_BONUSES:{1:0,2:15,3:30,4:45,5:57,6:70,7:80,8:90,9:100,10:110,11:115,12:120,13:125,14:130,15:135,16:140,17:145,18:150,19:155,20:160},WIN_STREAK_MAX_BONUS:160,SCORE_SETTINGS:{ELEMENT_CORRECT_POINTS:5,ERROR_PENALTY:15},VALIDATION_RULES:{difficulty:v=>['easy','medium','hard','expert','master'].includes(v),score:v=>v>=-2000&&v<=60000,gameMode:v=>['ranked','practice'].includes(v),time:v=>v>=0&&v<=7200,email:v=>/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(v),gamertag:v=>/^[a-zA-Z0-9_-]{3,20}$/.test(v)}};window.GameUtils={formatTime(s){try{const m=Math.floor(s/60),sec=s%60;return`${m.toString().padStart(2,'0')}:${sec.toString().padStart(2,'0')}`}catch{return'00:00'}},getNumber(s){if(!s)return'';for(let i=0;i<s.length;i++){const c=s[i];if(!isNaN(c)&&c!==''&&c!==' '&&c!=='0')return c}return''},getColor(s){if(!s)return'';for(let i=0;i<s.length;i++){const c=s[i];if(isNaN(c)&&c!==''&&c!==' ')return c}return''},rearrangeString(s){return this.getNumber(s)+this.getColor(s)}}})();
</script>
<script>
(function(){'use strict';requestAnimationFrame(()=>{requestAnimationFrame(()=>{document.documentElement.classList.add('effects-ready')})})})();
</script>
<style>
:root{--header-padding:15px 30px;--header-font:16px;--header-logo-height:55px;--header-logo-max-width:275px;--header-height:70px;--grid-size:513px;--grid-size-desktop:513px;--grid-region-size:165px;--grid-cell-size:55px;--grid-gap-thin:1px;--grid-gap-thick:3px;--grid-gap-thick-desktop:3px;--grid-border:3px;--grid-border-desktop:3px;--grid-font:32px;--grid-font-desktop:32px;--controls-width:208px;--controls-margin:40px;--control-spacing:12px;--note-item-size:9.5px;--note-font:12px;--footer-font-slogan:20px;--footer-font-legal:14px;--footer-height:100px;--control-btn-width:66px;--control-btn-height:66px;--control-btn-font:28px;--control-btn-border:2px;--control-btn-radius:8px;--control-btn-margin:1px;--note-toggle-size:40px;--note-toggle-font:16px;--note-toggle-icon:22px;--spacing-xs:4px;--spacing-sm:8px;--spacing-md:12px;--spacing-lg:16px;--spacing-xl:20px;--spacing-2xl:24px;--spacing-3xl:32px;--spacing-4xl:40px;--btn-height:44px;--btn-padding:10px 20px;--btn-font:16px;--btn-radius:8px;--primary:#007aff;--primary-hover:#0056b3;--secondary:#4a5568;--secondary-hover:#2d3748;--text-primary:#1c1c1e;--text-secondary:#374151;--text-muted:#6b7280;--success:#28a745;--warning:#ff9500;--error:#ff3b30;--error-dark:#d70015;--error-glow:rgba(255,59,48,.8);--info:#007aff;--bg-primary:#fff;--bg-secondary:#f2f2f7;--border-dark:#484848;--shadow-2xl:0 25px 50px rgba(0,0,0,.3);--shadow-enabled:1;--animation-enabled:1;--transition:.2s ease;--transition-bounce:.3s cubic-bezier(.34,1.56,.64,1);--font-family:'Inter',-apple-system,BlinkMacSystemFont,'SF Pro Text',system-ui,sans-serif;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--zoom-factor:1;--compensation-factor:1}*{caret-color:transparent;user-select:none;-webkit-user-select:none}html{height:100%;overflow:hidden}body{width:100%;height:100%;margin:0;padding:0;display:flex;flex-direction:column;font-family:var(--font-family);color:var(--text-primary);background:linear-gradient(125deg,#fef7f0 0,#fffbf7 50%,#f9f4ef 100%);overflow:hidden}.main-scroll-container{position:fixed;top:var(--header-height);left:0;width:100vw;height:calc(100vh - var(--header-height));overflow-x:hidden;overflow-y:scroll}.main-scroll-container::-webkit-scrollbar{width:12px;background:transparent}.main-scroll-container::-webkit-scrollbar-track{background:transparent}.main-scroll-container::-webkit-scrollbar-thumb{background:rgba(0,0,0,.2);border-radius:6px;border:3px solid transparent;background-clip:padding-box}.main-scroll-container::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.35);border:3px solid transparent;background-clip:padding-box}@supports(overflow:overlay){.main-scroll-container{overflow-y:overlay}}body.page-ready,html.ready body{opacity:1;visibility:visible}html::before{content:"";position:fixed;inset:0;z-index:-3;background:linear-gradient(125deg,#fef7f0 0,#fffbf7 50%,#f9f4ef 100%);pointer-events:none}body::before,body::after{content:"";position:fixed!important;inset:0;z-index:-2;pointer-events:none;background:radial-gradient(650px 650px at 18% 25%,rgba(255,159,28,.12),transparent 58%),radial-gradient(850px 850px at 82% 15%,rgba(14,165,233,.16),transparent 62%),radial-gradient(720px 720px at 35% 85%,rgba(168,85,247,.13),transparent 60%);display:block;will-change:auto!important;contain:layout style!important}body::after{mix-blend-mode:soft-light;opacity:.75;background:radial-gradient(780px 780px at 25% 12%,rgba(34,197,94,.11),transparent 65%),radial-gradient(920px 920px at 75% 88%,rgba(239,68,68,.09),transparent 58%),radial-gradient(680px 680px at 60% 45%,rgba(99,102,241,.14),transparent 62%)}body[class*=difficulty-]::before,body[class*=difficulty-]::after{transition:none!important;animation:none!important}#header-container{position:fixed!important;top:0!important;left:0!important;right:0!important;z-index:2000!important;background:#fff;height:var(--header-height)}.suiro-header{display:flex;justify-content:space-between;align-items:center;padding:var(--header-padding);background:#fff;position:relative;box-shadow:0 4px 12px rgba(0,0,0,.08)!important;min-height:var(--header-height);font-family:var(--font-family);z-index:2000!important;overflow:visible;width:100%;border-bottom:1px solid #e5e7eb}.suiro-nav-left,.suiro-nav-right{display:flex;align-items:center;gap:16px;flex:0 0 auto}.suiro-logo{position:absolute!important;left:50%!important;transform:translateX(-50%)!important;cursor:pointer;transition:all .3s ease;padding:0;margin-top:7px;border-radius:8px;display:flex!important;align-items:center!important;justify-content:center!important;user-select:none;-webkit-user-select:none;overflow:visible!important;z-index:2001!important;will-change:transform}.suiro-logo:not(:hover),.suiro-nav-btn:not(:hover),.suiro-auth-btn:not(:hover){will-change:auto}.suiro-logo .suiro-logo-container{position:static!important;transform:none!important;left:auto!important;right:auto!important;margin:0!important;padding:0!important;display:inline-block!important;background:0 0;border:none;cursor:pointer;border-radius:8px;transition:all .3s ease}.suiro-logo .suiro-logo-svg{height:var(--header-logo-height)!important;max-width:var(--header-logo-max-width)!important;width:auto!important;image-rendering:-webkit-optimize-contrast;image-rendering:optimize-contrast}.suiro-nav-menu{display:flex!important;align-items:center;gap:12px;visibility:visible!important;opacity:1!important}.suiro-nav-btn,.suiro-auth-btn{background:transparent!important;border:2px solid #d1d5db!important;font-size:var(--header-font)!important;font-weight:600!important;color:#374151!important;cursor:pointer!important;padding:10px 20px!important;border-radius:6px!important;transition:all .3s ease!important;text-decoration:none!important;font-family:inherit!important;user-select:none;-webkit-user-select:none;white-space:nowrap!important;display:inline-block!important;visibility:visible!important;opacity:1!important;outline:0!important;will-change:transform}.suiro-auth-buttons{display:flex;align-items:center;gap:12px;min-width:150px;min-height:50px}.game-content-wrapper{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;flex:1;padding:20px 20px 120px 20px;box-sizing:border-box;min-height:100%;width:100vw}.game-main-area{display:flex;flex-direction:row;align-items:center;justify-content:center;gap:0;margin-top:10px;margin-bottom:30px;position:relative;min-height:513px;min-width:513px;height:513px;width:873px;padding-left:180px;padding-right:180px;contain:layout size}.action-buttons{position:absolute!important;left:calc(50% + var(--grid-size-desktop)/2 + 20px)!important;bottom:0!important;display:flex!important;flex-direction:row!important;gap:4px!important}#sudoku-container{position:relative!important;z-index:20!important;margin:0!important;width:var(--grid-size-desktop)!important;height:var(--grid-size-desktop)!important;min-width:513px!important;min-height:513px!important;border-width:var(--grid-border-desktop)!important;box-sizing:border-box!important;display:grid!important;grid-template-columns:repeat(3,1fr)!important;grid-template-rows:repeat(3,1fr)!important;gap:var(--grid-gap-thick-desktop)!important;background-color:var(--border-dark)!important;border:var(--grid-border-desktop) solid var(--border-dark)!important}.sudoku-region{position:relative;display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);gap:var(--grid-gap-thin);background-color:var(--border-dark);width:100%;height:100%;box-sizing:border-box}.sudoku-cell{background-color:#DFE9FF;border:none;display:flex;align-items:center;justify-content:center;font-size:var(--grid-font-desktop);font-weight:600;cursor:pointer;color:var(--text-primary);position:relative;width:100%;height:100%;box-sizing:border-box;z-index:10;font-family:var(--font-family)}.grid-loading-overlay{position:absolute;inset:0;background:#E6F0FF;z-index:1000;display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;pointer-events:none}.grid-loading-overlay.show{opacity:1!important;visibility:visible!important}button,.btn,.nav-btn{min-height:var(--btn-min-height,44px);min-width:var(--btn-min-width,44px)}body.zoom-compensated button,body.zoom-compensated .btn,body.zoom-compensated .nav-nav{min-height:var(--btn-min-height)!important;min-width:var(--btn-min-width)!important}
</style>
<link rel="preload" href="https://suirodoku.com/shared/interactions.css?v=2.1.0" as="style">
<link rel="stylesheet" href="https://suirodoku.com/shared/interactions.css?v=2.1.0">
<noscript><link rel="stylesheet" href="https://suirodoku.com/shared/interactions.css?v=2.1.0"></noscript>
<script>
(function(){const isMobile=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)||window.screen.width<=768||(window.innerWidth&&window.innerWidth<=768);const isAlreadyMobile=window.location.pathname.includes('/mobile/');if(isMobile&&!isAlreadyMobile){window.location.replace('/mobile/');return}})();
</script>
<meta name="google-site-verification" content="VpR1l00kS61Z4CsNEO4Y16ZluFTFwuLueK9yDavKr_k"/>
<link rel="alternate" media="only screen and (max-width: 768px)" href="https://suirodoku.com/mobile/">
<meta property="og:site_name" content="Suirodoku">
<meta property="og:locale" content="en_US">
<meta property="og:title" content="Suirodoku - Sudoku with Numbers &amp; Colors | Free Online">
<meta property="og:description" content="Play Suirodoku free: the sudoku evolution with numbers AND colors. 81 unique pairs, 4 rules, exclusive techniques.">
<meta property="og:type" content="website">
<meta property="og:url" content="https://suirodoku.com/">
<meta property="og:image" content="https://suirodoku.com/assets/images/og-image-1200x630.jpg">
<meta property="og:image:secure_url" content="https://suirodoku.com/assets/images/og-image-1200x630.jpg">
<meta property="og:image:type" content="image/jpeg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="og:image:alt" content="Suirodoku - Revolutionary Color Sudoku Game with numbers and colors">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Suirodoku - Sudoku with Numbers &amp; Colors | Free Online">
<meta name="twitter:description" content="Play Suirodoku free: the sudoku evolution with numbers AND colors. 81 unique pairs, 4 rules, exclusive techniques.">
<meta name="twitter:image" content="https://suirodoku.com/assets/images/twitter-card-1200x628.jpg">
<meta name="twitter:image:alt" content="Suirodoku - Revolutionary Color Sudoku Game with numbers and colors">
<link rel="alternate" hreflang="en" href="https://suirodoku.com/"/>
<link rel="alternate" hreflang="zh" href="https://suirodoku.com/lang/zh/"/>
<link rel="alternate" hreflang="es" href="https://suirodoku.com/lang/es/"/>
<link rel="alternate" hreflang="hi" href="https://suirodoku.com/lang/hi/"/>
<link rel="alternate" hreflang="fr" href="https://suirodoku.com/lang/fr/"/>
<link rel="alternate" hreflang="ar" href="https://suirodoku.com/lang/ar/"/>
<link rel="alternate" hreflang="pt" href="https://suirodoku.com/lang/pt/"/>
<link rel="alternate" hreflang="ru" href="https://suirodoku.com/lang/ru/"/>
<link rel="alternate" hreflang="de" href="https://suirodoku.com/lang/de/"/>
<link rel="alternate" hreflang="ja" href="https://suirodoku.com/lang/ja/"/>
<link rel="alternate" hreflang="bn" href="https://suirodoku.com/lang/bn/"/>
<link rel="alternate" hreflang="id" href="https://suirodoku.com/lang/id/"/>
<link rel="alternate" hreflang="ko" href="https://suirodoku.com/lang/ko/"/>
<link rel="alternate" hreflang="tr" href="https://suirodoku.com/lang/tr/"/>
<link rel="alternate" hreflang="vi" href="https://suirodoku.com/lang/vi/"/>
<link rel="alternate" hreflang="it" href="https://suirodoku.com/lang/it/"/>
<link rel="alternate" hreflang="pl" href="https://suirodoku.com/lang/pl/"/>
<link rel="alternate" hreflang="th" href="https://suirodoku.com/lang/th/"/>
<link rel="alternate" hreflang="uk" href="https://suirodoku.com/lang/uk/"/>
<link rel="alternate" hreflang="fa" href="https://suirodoku.com/lang/fa/"/>
<link rel="alternate" hreflang="nl" href="https://suirodoku.com/lang/nl/"/>
<link rel="alternate" hreflang="cs" href="https://suirodoku.com/lang/cs/"/>
<link rel="alternate" hreflang="he" href="https://suirodoku.com/lang/he/"/>
<link rel="alternate" hreflang="ms" href="https://suirodoku.com/lang/ms/"/>
<link rel="alternate" hreflang="tl" href="https://suirodoku.com/lang/tl/"/>
<link rel="alternate" hreflang="ur" href="https://suirodoku.com/lang/ur/"/>
<link rel="alternate" hreflang="sr" href="https://suirodoku.com/lang/sr/"/>
<link rel="alternate" hreflang="sl" href="https://suirodoku.com/lang/sl/"/>
<link rel="alternate" hreflang="sk" href="https://suirodoku.com/lang/sk/"/>
<link rel="alternate" hreflang="et" href="https://suirodoku.com/lang/et/"/>
<link rel="alternate" hreflang="ro" href="https://suirodoku.com/lang/ro/"/>
<link rel="alternate" hreflang="no" href="https://suirodoku.com/lang/no/"/>
<link rel="alternate" hreflang="el" href="https://suirodoku.com/lang/el/"/>
<link rel="alternate" hreflang="lt" href="https://suirodoku.com/lang/lt/"/>
<link rel="alternate" hreflang="lv" href="https://suirodoku.com/lang/lv/"/>
<link rel="alternate" hreflang="hu" href="https://suirodoku.com/lang/hu/"/>
<link rel="alternate" hreflang="hr" href="https://suirodoku.com/lang/hr/"/>
<link rel="alternate" hreflang="sw" href="https://suirodoku.com/lang/sw/"/>
<link rel="alternate" hreflang="am" href="https://suirodoku.com/lang/am/"/>
<link rel="alternate" hreflang="mr" href="https://suirodoku.com/lang/mr/"/>
<link rel="alternate" hreflang="te" href="https://suirodoku.com/lang/te/"/>
<link rel="alternate" hreflang="ta" href="https://suirodoku.com/lang/ta/"/>
<link rel="alternate" hreflang="gu" href="https://suirodoku.com/lang/gu/"/>
<link rel="alternate" hreflang="ml" href="https://suirodoku.com/lang/ml/"/>
<link rel="alternate" hreflang="kn" href="https://suirodoku.com/lang/kn/"/>
<link rel="alternate" hreflang="or" href="https://suirodoku.com/lang/or/"/>
<link rel="alternate" hreflang="pa" href="https://suirodoku.com/lang/pa/"/>
<link rel="alternate" hreflang="az" href="https://suirodoku.com/lang/az/"/>
<link rel="alternate" hreflang="fi" href="https://suirodoku.com/lang/fi/"/>
<link rel="alternate" hreflang="da" href="https://suirodoku.com/lang/da/"/>
<link rel="alternate" hreflang="sv" href="https://suirodoku.com/lang/sv/"/>
<link rel="alternate" hreflang="x-default" href="https://suirodoku.com/"/>
<link rel="canonical" href="https://suirodoku.com/"/>
<title>Suirodoku – Free Color Sudoku Online | Numbers &amp; Colors Puzzle</title>
<script>
window.difficultyStyleLoader={loaded:{},load:function(difficulty){if(this.loaded[difficulty])return;const link=document.createElement('link');link.rel='stylesheet';link.href=`https://suirodoku.com/shared/difficulty-${difficulty}.css?v=2.0.6`;document.head.appendChild(link);this.loaded[difficulty]=true}};if(document.readyState==='loading'){document.addEventListener('DOMContentLoaded',function(){const observer=new MutationObserver(function(mutations){mutations.forEach(function(mutation){if(mutation.attributeName==='class'){const classList=document.body.classList;['medium','hard','expert','master'].forEach(function(level){if(classList.contains('difficulty-'+level)){window.difficultyStyleLoader.load(level)}})}})});observer.observe(document.body,{attributes:true})})}
</script>
<script>
window.pageLoadStart=Date.now();window.firebaseOptimization={initialized:false,loadPromise:null,userInteracted:false,initWhenNeeded:function(){if(this.loadPromise)return this.loadPromise;if(this.initialized)return Promise.resolve();this.loadPromise=new Promise((resolve)=>{Promise.all([import('https://www.gstatic.com/firebasejs/10.7.1/firebase-app.js'),import('https://www.gstatic.com/firebasejs/10.7.1/firebase-auth.js')]).then(()=>{this.initialized=true;resolve()}).catch(()=>{this.loadPromise=null;this.initialized=false})});return this.loadPromise},getFirestore:function(){if(!this.firestorePromise){this.firestorePromise=this.initWhenNeeded().then(()=>import('https://www.gstatic.com/firebasejs/10.7.1/firebase-firestore.js'))}return this.firestorePromise},getFunctions:function(){if(!this.functionsPromise){this.functionsPromise=this.initWhenNeeded().then(()=>import('https://www.gstatic.com/firebasejs/10.7.1/firebase-functions.js'))}return this.functionsPromise}};if(document.readyState==='loading'){document.addEventListener('DOMContentLoaded',()=>{const events=['click','keydown','touchstart','scroll'];const startFirebase=()=>{if(window.firebaseOptimization.userInteracted)return;window.firebaseOptimization.userInteracted=true;setTimeout(()=>{window.firebaseOptimization.initWhenNeeded()},100);events.forEach(e=>document.removeEventListener(e,startFirebase,true))};events.forEach(e=>document.addEventListener(e,startFirebase,{passive:true,capture:true}))})}
</script>
<link rel="manifest" href="/manifest.json">
<meta name="theme-color" content="#ffffff">
<link rel="icon" type="image/x-icon" href="https://suirodoku.com/assets/icons/favicon.ico">
<link rel="icon" type="image/png" sizes="16x16" href="https://suirodoku.com/assets/icons/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="https://suirodoku.com/assets/icons/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="192x192" href="https://suirodoku.com/assets/icons/android-chrome-192x192.png">
<link rel="icon" type="image/png" sizes="512x512" href="https://suirodoku.com/assets/icons/android-chrome-512x512.png">
<link rel="apple-touch-icon" sizes="180x180" href="https://suirodoku.com/assets/icons/apple-touch-icon.png">
<meta name="mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="default">
<meta name="apple-mobile-web-app-title" content="Suirodoku">
<link rel="dns-prefetch" href="//www.gstatic.com">
<link rel="dns-prefetch" href="//www.google.com">
<link rel="dns-prefetch" href="//www.googletagmanager.com">
<link rel="dns-prefetch" href="//europe-west1-suirodoku-web.cloudfunctions.net">
<link rel="preload" href="https://suirodoku.com/assets/fonts/inter.css" as="style">
<noscript><link rel="stylesheet" href="https://suirodoku.com/assets/fonts/inter.css"></noscript>
<link rel="preload" href="https://suirodoku.com/shared/popup-manager.css?v=2.1.0" as="style">
<link rel="stylesheet" href="https://suirodoku.com/shared/popup-manager.css?v=2.1.0">
<noscript><link rel="stylesheet" href="https://suirodoku.com/shared/popup-manager.css?v=2.1.0"></noscript>
<style id="hud-fouc-prevention">.game-info,.game-stats,.action-buttons,.game-stats-container{opacity:0!important;visibility:hidden!important;pointer-events:none!important;transition:none!important}.game-info *,.game-stats *,.action-buttons *{opacity:0!important;visibility:hidden!important}</style>
<style id="game-fouc-prevention">#game-main-area,#sudoku-container,#desktop-controls-container,.action-buttons{opacity:0!important;visibility:hidden!important;transition:none!important}</style>
<style>:root{--header-height:70px;--font-family:'Inter',-apple-system,BlinkMacSystemFont,'SF Pro Text',system-ui,sans-serif}*{margin:0;padding:0;box-sizing:border-box}body{font-family:var(--font-family);line-height:1.4;margin:0;opacity:1!important;visibility:visible!important}body,body.difficulty-easy,body.page-ready,body.difficulty-easy.page-ready{transition:none!important;animation:none!important}body::before,body::after{position:fixed!important;will-change:auto!important;contain:layout style!important}body[class*="difficulty-"]::before,body[class*="difficulty-"]::after{transition:none!important;animation:none!important}#header-container{position:fixed;top:0;left:0;right:0;z-index:2000;background-color:#fff;min-height:var(--header-height)}.tutorial-container{margin-top:var(--header-height);min-height:calc(100vh - var(--header-height));max-width:1200px;margin-left:auto;margin-right:auto;padding:20px;opacity:1;visibility:visible}.skip-link{position:fixed;top:8px;left:8px;background:#000;color:#fff;padding:8px;text-decoration:none;border-radius:4px;z-index:10000;transform:translateY(-200%);transition:transform .2s ease}.skip-link:focus{transform:translateY(0)}.i18n-translated{contain:layout}.share-item{display:flex;align-items:center;justify-content:center}.share-item .share-btn{padding:8px 12px;font-size:13px}.share-item .share-btn-icon{width:16px;height:16px}</style>
<script type="application/ld+json">{"@context":"https://schema.org","@type":"WebApplication","@id":"https://suirodoku.com/#app","name":"Suirodoku","alternateName":"Color Sudoku","description":"Play Suirodoku free: a color sudoku with 81 unique number-color pairs. Learn Rainbow and Chromatic Circle techniques.","url":"https://suirodoku.com/","applicationCategory":"GameApplication","operatingSystem":"Web","offers":{"@type":"Offer","price":"0","priceCurrency":"USD"},"creator":{"@type":"Organization","@id":"https://suirodoku.com/#organization","name":"Suirodoku","url":"https://suirodoku.com"},"inLanguage":"en","isAccessibleForFree":true}</script>
<link rel="stylesheet" href="https://suirodoku.com/shared/home-discover.css?v=3.2.0">
<script defer src="https://suirodoku.com/shared/css-loader.js?v=2.1.0"></script>
<noscript>
<div style="text-align:center;padding:40px 20px;font-family:sans-serif;max-width:600px;margin:100px auto">
<p style="font-size:24px;font-weight:700;margin-bottom:20px">Suirodoku - Color Sudoku Online</p>
<p style="font-size:16px;color:#666;margin-bottom:30px">JavaScript is required to play Suirodoku, the free online color sudoku game with 81 unique number-color pairs.</p>
<p><a href="/tutorial/" style="color:#007aff">Learn how to play</a> | <a href="/articles/" style="color:#007aff">Strategy guides</a></p>
</div>
<style>body{opacity:1!important;visibility:visible!important}</style>
</noscript>
<!-- Google tag + Consent Mode v2 (EU detection + helper global) -->
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}

  (function () {
    // Liste complete des timezones EEE
    const EXTRA_EU_TZ = new Set([
      'Atlantic/Azores', 'Atlantic/Madeira', 'Atlantic/Canary', 'Africa/Ceuta'
    ]);

    function isLikelyEU(){
      try {
        const tz = Intl.DateTimeFormat().resolvedOptions().timeZone || '';
        return tz.startsWith('Europe/') || EXTRA_EU_TZ.has(tz);
      } catch {
        // Plus sur: considerer EU si detection echoue
        return true;
      }
    }

    function readCats(){
      try {
        const raw = localStorage.getItem('suirodoku_cookies_consent');
        if (!raw) return null;
        return JSON.parse(raw)?.categories || null;
      } catch {
        return null;
      }
    }

    const isEU = isLikelyEU();

    // Helper global reutilisable par tous les modules
    window.__suiroTracking = {
      isEU,
      readCats,
      canAnalytics() {
        const c = readCats();
        return c ? !!c.analytics : !isEU;
      },
      canMarketing() {
        const c = readCats();
        return c ? !!c.marketing : !isEU;
      }
    };

    const analyticsGranted = window.__suiroTracking.canAnalytics();
    const marketingGranted = window.__suiroTracking.canMarketing();

    gtag('consent','default',{
      analytics_storage: analyticsGranted ? 'granted' : 'denied',
      ad_storage:        marketingGranted ? 'granted' : 'denied',
      ad_user_data:      marketingGranted ? 'granted' : 'denied',
      ad_personalization:marketingGranted ? 'granted' : 'denied',
      functionality_storage: 'granted',
      wait_for_update: 500
    });

    // Charger gtag.js UNIQUEMENT si analytics autorise (evite JS inutilise)
    function loadGtag() {
      if (window.__gtagLoaded) return;
      window.__gtagLoaded = true;
      var s = document.createElement('script');
      s.async = true;
      s.src = 'https://www.googletagmanager.com/gtag/js?id=G-RPJXTCGLZN';
      document.head.appendChild(s);
      s.onload = function() {
        gtag('js', new Date());
        gtag('config', 'G-RPJXTCGLZN', { send_page_view: false });
        gtag('config', 'AW-881592571');
      };
    }

    if (analyticsGranted) {
      loadGtag();
    }

    // Ecouter l'acceptation des cookies
    window.addEventListener('cookiesAccepted', function(event) {
      if (event.detail?.categories?.analytics) {
        loadGtag();
      }
    });
  })();
</script>


</head>
<body role="main">
<h1 style="position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0">Suirodoku – Free Online Color Sudoku Game</h1>
<a href="#sudoku-container" class="skip-link" data-i18n="skip_links.skip_to_main_content">Skip to main content</a>
<div id="game-announcements" aria-live="polite" aria-atomic="true" style="position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0"></div>
<div id="game-alerts" role="alert" aria-live="assertive" aria-atomic="true" style="position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0"></div>
<div id="header-container">
<header class="suiro-header" data-hybrid="true">
<div class="suiro-nav-left"><nav class="suiro-nav-menu" id="nav-left-buttons"></nav></div>
<div class="suiro-logo" data-action="navigate" data-target="home" role="button" tabindex="0" aria-label="Back to home - Suirodoku Logo">
<div class="suiro-logo-container"><svg class="suiro-logo-svg" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 907.49 209"><defs><style>.cls-1{fill:#363636}.cls-2{fill:#b2b4b9}.cls-3{fill:#d6ecd6}.cls-4{fill:#e4def0}.cls-5{fill:#c4c4c5}.cls-6{fill:#fff}.cls-7{fill:#f2d8d4}.cls-8{fill:#d4e2f7}.cls-9{fill:#e6ded8}.cls-10{fill:#dbf2f2}.cls-11{fill:#f3e5ca}.cls-12{fill:#f6f3d4}.cls-13{fill:#f3e1ea}</style></defs><g><rect class="cls-12" x="72" y="72" width="65" height="65" transform="translate(209 0) rotate(90)"/><rect class="cls-7" x="72" y="5" width="65" height="65" transform="translate(142 -67) rotate(90)"/><rect class="cls-10" x="139" y="139" width="65" height="65" transform="translate(343 0) rotate(90)"/><rect class="cls-9" x="139" y="5" width="65" height="65" transform="translate(209 -134) rotate(90)"/><rect class="cls-4" x="139" y="72" width="65" height="65" transform="translate(276 -67) rotate(90)"/><rect class="cls-13" x="5" y="139" width="65" height="65"/><rect class="cls-8" x="72" y="139" width="65" height="65" transform="translate(276 67) rotate(90)"/><rect class="cls-11" x="5" y="5" width="65" height="65"/><rect class="cls-3" x="5" y="72" width="65" height="65"/><g><rect class="cls-5" width="209" height="6"/><rect class="cls-5" x="0" width="6" height="209"/><rect class="cls-5" x="5" y="68.5" width="204" height="5"/><rect class="cls-5" x="5" y="135.5" width="204" height="5"/><rect class="cls-5" x="5" y="203" width="204" height="6"/><rect class="cls-5" x="68.5" y="5" width="5" height="203"/><rect class="cls-5" x="203" y="5" width="6" height="203"/><rect class="cls-5" x="135.5" y="5" width="5" height="203"/></g></g><g><path class="cls-2" d="m103.09,121.89v-25.02c-1.55.72-4.38,1.31-6.05,1.45v-5.43c3.17-.58,6.38-2.39,8.3-4.49h5.14v33.49h-7.39Z"/><path class="cls-2" d="m158.83,190.27v-.47c0-5.83,2.62-10.56,9.86-15.84,4.72-3.45,6.15-4.64,6.15-7.57s-1.41-4.53-4.22-4.53c-3.28,0-4.46,2.01-4.92,4.92h-7.02c.48-5.77,4.26-10.58,11.95-10.58,8.6,0,11.54,5.12,11.54,10.13s-2.1,7.23-8.26,11.55c-4.13,2.9-5.78,4.8-6.35,6.31h15.85l-.91,6.07h-23.66Z"/><path class="cls-2" d="m91.98,30.16c.47-4.12,3.37-9.21,11.74-9.21,7.75,0,11.19,4.39,11.19,9.11,0,4.03-2.31,5.95-4.14,6.79v.15c2.17.8,5.44,2.87,5.44,8.07,0,4.84-2.93,10.56-12.55,10.56-8.96,0-12.01-5.41-12.35-9.84h7.08c.46,2.29,2.03,4.26,5.48,4.26s5.03-2.16,5.03-5.11c0-3.1-1.58-4.97-5.49-4.97h-3.01v-5.61h2.65c3.34,0,4.69-1.11,4.69-3.91,0-2.3-1.37-3.85-4.25-3.85-3.39,0-4.21,1.89-4.57,3.55h-6.93Z"/><path class="cls-2" d="m38.65,55.01v-7.52h-15.13v-6.34l13.96-19.6h7.93v20.05h4.03l-.67,5.89h-3.36v7.52h-6.76Zm0-19.36c0-3.63,0-5.65.15-7.75-1.33,2.8-5.69,9.17-8.83,13.71h8.69v-5.96Z"/><path class="cls-2" d="m46.96,162.15h-13.4c-.22,1.78-.79,5-1.02,6.37,1.26-1.04,3.15-1.78,6.02-1.78,6.6,0,10.32,4.77,10.32,11.13s-3.53,12.41-12.58,12.41c-6.62,0-11.48-3.39-12.22-9.37h7.26c.64,2.31,2.25,3.8,5.11,3.8,3.45,0,5.11-2.55,5.11-6.24,0-3.49-1.29-5.97-5.13-5.97-3.11,0-4.37,1.35-5.13,3.34l-6.57-.85c.89-4.25,2.33-14.18,2.87-18.77h20.38l-1.03,5.94Z"/><path class="cls-2" d="m108.44,164.66c-.41-1.65-1.36-3.23-4.28-3.23-4.48,0-5.65,4.21-5.85,8.71,1.41-1.72,3.78-3.1,7.58-3.1,6.13,0,10.48,4.52,10.48,11.1,0,7.14-4.57,12.45-12.28,12.45-9.7,0-12.94-7.47-12.94-16.93,0-8.71,3.08-17.75,13.34-17.75,7.27,0,10.66,4.55,10.99,8.75h-7.04Zm.66,14.08c0-3.18-1.18-6.03-5.2-6.03-3.25,0-5.16,1.9-5.16,5.78,0,2.71,1.3,6.31,5.17,6.31,3.55,0,5.18-2.67,5.18-6.06Z"/><path class="cls-2" d="m182.62,21.56v5.4c-5.3,7.5-10.49,18.36-11.8,28.06h-7.48c1.32-9.84,7.31-21.64,11.87-27.47h-15.75v-5.98h23.17Z"/><path class="cls-2" d="m23.66,112.62c0-4.27,2.99-6.89,5.47-8.01-2.57-1.59-4.13-3.6-4.13-6.99,0-5.68,4.16-9.44,11.69-9.44,6.88,0,11.41,3.58,11.41,9.35,0,3.85-1.98,5.74-4.26,6.72,2.41.89,5.45,3.71,5.45,8.14,0,6.9-5.52,10.47-13.14,10.47-6.84,0-12.49-3.61-12.49-10.23Zm18.36-.33c0-3.31-2.28-4.85-5.54-4.85-3.64,0-5.51,1.97-5.51,4.8,0,2.97,2.23,4.95,5.63,4.95,3.14,0,5.42-1.49,5.42-4.9Zm-10.11-14.42c0,2.26,1.62,3.78,4.68,3.78s4.6-1.14,4.6-3.76-1.67-4.11-4.65-4.11-4.63,1.44-4.63,4.08Z"/><path class="cls-2" d="m166.31,113.8c.63,1.96,1.82,3.22,4.63,3.22,4.72,0,5.24-5.73,5.44-9.45-1.41,1.93-4.06,2.81-6.99,2.81-6.92,0-10.84-4.73-10.84-10.75,0-6.56,4.57-11.56,12.32-11.56,9.46,0,12.69,7.3,12.69,15.57,0,9.41-2.41,19.05-12.93,19.05-7.79,0-10.97-4.75-11.57-8.88h7.27Zm-.42-14.54c0,3.4,1.98,5.49,5.12,5.49s4.98-1.65,4.98-5.34c0-2.25-.93-5.7-5.08-5.7-3.37,0-5.02,2.42-5.02,5.54Z"/></g><g><g><path class="cls-1" d="m215.9,149.9c-12.26,0-23.89-2.96-34.55-8.79l-2.6-1.42v-36.52l7.21,3.56c6.59,3.25,12.45,5.66,17.43,7.17,4.76,1.45,9.16,2.18,13.07,2.18,4.3,0,5.76-.87,6.1-1.14.66-.51.88-.96.88-1.76,0-.47,0-.66-.83-1.06-1.43-.69-4.49-1.81-10.89-3.22-6.56-1.47-12.21-3.17-16.82-5.05-5.17-2.11-9.66-5.58-13.33-10.3-3.83-4.92-5.78-11.5-5.78-19.57,0-7.23,1.78-13.71,5.29-19.24,3.53-5.56,8.76-9.94,15.56-13.02,6.55-2.96,14.45-4.46,23.49-4.46,11.8,0,23.09,2.91,33.56,8.65l2.6,1.42v36.04l-7.11-3.3c-6.44-2.99-12.17-5.29-17.02-6.82-4.57-1.44-8.86-2.17-12.74-2.17-4.3,0-5.76.87-6.1,1.14-.56.43-.88.88-.88,1.9,0,.32,0,.5.87.91,1.47.69,4.47,1.79,10.42,3.09,6.63,1.46,12.37,3.15,17.08,5.04,5.28,2.11,9.85,5.6,13.58,10.38,3.88,4.97,5.85,11.58,5.85,19.65,0,7.23-1.81,13.73-5.37,19.32-3.58,5.61-8.81,9.99-15.57,13.02-6.5,2.91-14.37,4.39-23.41,4.39Z"/><path class="cls-6" d="m220.13,42.26c11,0,21.38,2.68,31.16,8.04v25.24c-6.68-3.1-12.55-5.45-17.62-7.05-5.08-1.6-9.82-2.4-14.24-2.4s-7.29.73-9.17,2.19c-1.88,1.46-2.82,3.41-2.82,5.85s1.25,4.25,3.74,5.43c2.49,1.18,6.32,2.33,11.49,3.45,6.39,1.41,11.82,3.01,16.29,4.79,4.46,1.79,8.29,4.72,11.49,8.81,3.19,4.09,4.79,9.61,4.79,16.57,0,6.3-1.53,11.84-4.58,16.64-3.06,4.79-7.52,8.51-13.4,11.14-5.88,2.63-13,3.95-21.36,3.95-11.47,0-22.19-2.73-32.15-8.18v-25.52c6.86,3.38,12.92,5.88,18.19,7.47,5.26,1.6,10.1,2.4,14.52,2.4s7.28-.73,9.17-2.19c1.88-1.46,2.82-3.36,2.82-5.71,0-2.54-1.22-4.39-3.67-5.57-2.45-1.17-6.44-2.37-11.99-3.6-6.3-1.41-11.63-3.01-16-4.79-4.37-1.78-8.13-4.7-11.28-8.74-3.15-4.04-4.72-9.54-4.72-16.5,0-6.3,1.5-11.82,4.51-16.57,3.01-4.75,7.47-8.46,13.4-11.14,5.92-2.68,13.06-4.02,21.43-4.02m0-10c-9.76,0-18.35,1.65-25.55,4.91-7.7,3.48-13.66,8.5-17.72,14.9-4.02,6.35-6.07,13.72-6.07,21.92,0,9.21,2.3,16.83,6.84,22.65.18.23.35.45.53.67l-4.41-2.18v47.53l5.2,2.85c11.41,6.24,23.84,9.41,36.95,9.41,9.74,0,18.3-1.62,25.45-4.82,7.66-3.43,13.63-8.44,17.74-14.89,4.08-6.41,6.15-13.81,6.15-22.01,0-9.21-2.33-16.85-6.91-22.72-.27-.34-.54-.68-.81-1.01l3.78,1.75v-46.83l-5.19-2.85c-11.22-6.15-23.32-9.27-35.97-9.27h0Z"/></g><g><path class="cls-1" d="m304.31,149.06c-11.41,0-21.31-3.45-29.44-10.26-8.39-7.03-12.65-18.97-12.65-35.49v-41.8h36.79v43.63c0,9.81,3.44,9.81,5.29,9.81,1.95,0,5.58,0,5.58-9.81v-43.63h36.79v41.8c0,16.52-4.28,28.47-12.73,35.5-8.17,6.8-18.14,10.25-29.64,10.25Z"/><path class="cls-6" d="m341.67,66.51v36.8c0,15.04-3.64,25.59-10.93,31.65-7.29,6.06-16.1,9.09-26.44,9.09s-18.99-3.03-26.23-9.09c-7.24-6.06-10.86-16.61-10.86-31.65v-36.8h26.79v38.63c0,9.87,3.43,14.81,10.29,14.81s10.58-4.94,10.58-14.81v-38.63h26.79m10-10h-46.79v48.63c0,2.22-.23,3.6-.44,4.38-.21-.82-.42-2.2-.42-4.38v-48.63h-46.79v46.8c0,18.07,4.86,31.3,14.44,39.32,9.05,7.58,20.03,11.43,32.65,11.43s23.74-3.84,32.83-11.41c9.64-8.02,14.53-21.26,14.53-39.34v-46.8h0Z"/></g><g><path class="cls-1" d="m352.32,147.93V61.51h10.56c-2.38-.93-4.54-2.31-6.47-4.14-3.93-3.73-5.92-8.49-5.92-14.12s2.03-10.27,6.02-14.01c3.91-3.66,8.68-5.51,14.2-5.51s10.25,1.79,14.14,5.31c3.98,3.6,6.09,8.37,6.09,13.79,0,5.69-1.97,10.52-5.87,14.35-1.96,1.93-4.17,3.38-6.61,4.34h10.65v86.42h-36.79Z"/><path class="cls-6" d="m370.72,28.72c4.23,0,7.83,1.34,10.79,4.02,2.96,2.68,4.44,6.04,4.44,10.08,0,4.32-1.46,7.92-4.37,10.79-2.91,2.87-6.53,4.3-10.86,4.3s-7.94-1.38-10.86-4.16c-2.92-2.77-4.37-6.27-4.37-10.5s1.48-7.59,4.44-10.36c2.96-2.77,6.56-4.16,10.79-4.16m13.4,37.79v76.42h-26.79v-76.42h26.79m-13.4-47.79c-6.73,0-12.83,2.37-17.62,6.86-4.98,4.66-7.61,10.77-7.61,17.66,0,4.91,1.29,9.41,3.76,13.27h-1.93v96.42h46.79V56.51h-2.07c2.57-3.98,3.91-8.62,3.91-13.69,0-6.87-2.67-12.92-7.73-17.5-4.77-4.32-10.82-6.6-17.49-6.6h0Z"/></g><g><path class="cls-1" d="m396.46,147.93V61.51h35.52v3.02c.89-.49,1.81-.94,2.76-1.35,4.55-1.95,9.72-2.94,15.36-2.94h5v34.39l-5.27-.28c-.7-.04-1.38-.06-2.05-.06-4.69,0-8.32.96-10.79,2.84-2.49,1.9-3.75,5.83-3.75,11.68v39.12h-36.79Z"/><path class="cls-6" d="m450.1,65.24v24.11c-.79-.04-1.57-.06-2.32-.06-5.85,0-10.45,1.29-13.83,3.87-3.81,2.92-5.71,8.13-5.71,15.65v34.12h-26.79v-76.42h25.52v8.74c2.54-3.29,5.78-5.78,9.73-7.47,3.95-1.69,8.41-2.54,13.4-2.54m10-10h-10c-4.66,0-9.06.61-13.12,1.83v-.56h-45.52v96.42h46.79v-44.12c0-4.68.96-7.08,1.79-7.71,1.55-1.18,4.23-1.81,7.75-1.81.57,0,1.17.02,1.78.05l10.54.57v-44.66h0Z"/></g><g><path class="cls-1" d="m497.9,149.2c-8.95,0-16.99-1.83-23.89-5.43-7.04-3.68-12.57-8.99-16.42-15.78-3.8-6.7-5.73-14.57-5.73-23.4s1.93-16.69,5.73-23.35c3.85-6.75,9.38-12.01,16.43-15.64,6.89-3.55,14.92-5.35,23.86-5.35s17.1,1.8,23.95,5.36c7.01,3.64,12.49,8.91,16.29,15.66,3.75,6.66,5.65,14.5,5.65,23.32s-1.9,16.68-5.64,23.38c-3.8,6.8-9.28,12.12-16.28,15.8-6.86,3.61-14.92,5.44-23.97,5.44Zm0-56.12c-2.74,0-4.84.9-6.61,2.83-1.86,2.02-2.77,4.86-2.77,8.67s.91,6.84,2.79,8.91c1.78,1.96,3.87,2.87,6.59,2.87s4.77-.9,6.49-2.84c1.85-2.08,2.75-5,2.75-8.94s-.89-6.67-2.73-8.7c-1.73-1.91-3.8-2.8-6.51-2.8Z"/><path class="cls-6" d="m497.9,65.24c8.27,0,15.49,1.6,21.64,4.79,6.16,3.2,10.9,7.75,14.24,13.68,3.33,5.92,5,12.88,5,20.87s-1.67,14.97-5,20.94c-3.34,5.97-8.09,10.58-14.24,13.82-6.16,3.24-13.37,4.87-21.64,4.87s-15.37-1.62-21.57-4.87c-6.2-3.24-11-7.85-14.38-13.82-3.38-5.97-5.08-12.95-5.08-20.94s1.69-14.95,5.08-20.87c3.38-5.92,8.18-10.48,14.38-13.68,6.2-3.2,13.4-4.79,21.57-4.79m0,56.12c4.14,0,7.54-1.5,10.22-4.51,2.68-3.01,4.02-7.1,4.02-12.27s-1.34-9.09-4.02-12.06c-2.68-2.96-6.09-4.44-10.22-4.44s-7.57,1.48-10.29,4.44c-2.73,2.96-4.09,6.98-4.09,12.06s1.36,9.26,4.09,12.27c2.73,3.01,6.16,4.51,10.29,4.51m0-66.12c-9.75,0-18.54,1.99-26.15,5.9-7.92,4.08-14.14,10.01-18.49,17.6-4.24,7.42-6.39,16.12-6.39,25.83s2.15,18.41,6.38,25.87c4.33,7.64,10.54,13.61,18.45,17.75,7.62,3.98,16.44,6,26.21,6s18.72-2.02,26.3-6.02c7.87-4.14,14.03-10.13,18.31-17.79,4.16-7.45,6.28-16.14,6.28-25.82s-2.12-18.36-6.29-25.78c-4.29-7.62-10.46-13.55-18.35-17.64-7.57-3.93-16.4-5.92-26.25-5.92h0Zm0,56.12c-1.32,0-2.05-.31-2.88-1.23-1-1.1-1.5-2.97-1.5-5.55s.49-4.24,1.44-5.28c.71-.77,1.42-1.22,2.94-1.22s2.13.4,2.81,1.15c.95,1.05,1.43,2.85,1.43,5.35,0,2.62-.5,4.51-1.49,5.61-.67.76-1.31,1.16-2.76,1.16h0Z"/></g><g><path class="cls-1" d="m583.77,149.2c-7.46,0-14.4-1.87-20.6-5.57-6.23-3.7-11.22-9.03-14.83-15.84-3.57-6.71-5.38-14.52-5.38-23.21s1.81-16.47,5.39-23.1c3.61-6.7,8.6-11.97,14.82-15.67,6.21-3.69,13.14-5.57,20.6-5.57,5.67,0,10.69,1.02,15.02,3.04v-29.97h36.79v114.62h-33.12v-3.52c-5.01,3.18-11.25,4.79-18.69,4.79Zm6.06-56.12c-2.83,0-5,.92-6.83,2.9-1.91,2.07-2.84,4.93-2.84,8.74s.93,6.81,2.83,8.88c1.82,1.98,3.99,2.9,6.83,2.9s5.15-.92,6.97-2.9c1.91-2.07,2.84-4.98,2.84-8.88s-.94-6.64-2.88-8.71c-1.88-2-4.08-2.93-6.93-2.93Z"/><path class="cls-6" d="m630.58,38.31v104.62h-23.12v-11.14c-4.51,8.27-12.41,12.41-23.69,12.41-6.58,0-12.6-1.62-18.05-4.87-5.45-3.24-9.78-7.87-12.97-13.89-3.2-6.01-4.79-12.97-4.79-20.87s1.6-14.81,4.79-20.73c3.19-5.92,7.52-10.5,12.97-13.75,5.45-3.24,11.47-4.87,18.05-4.87,8.55,0,15.23,2.59,20.02,7.76v-34.69h26.79m-40.75,83.19c4.32,0,7.87-1.5,10.65-4.51,2.77-3.01,4.16-7.1,4.16-12.27s-1.41-9.12-4.23-12.13c-2.82-3.01-6.35-4.51-10.58-4.51s-7.73,1.51-10.5,4.51c-2.77,3.01-4.16,7.05-4.16,12.13s1.39,9.26,4.16,12.27c2.77,3.01,6.28,4.51,10.5,4.51m50.75-93.19h-46.79v28c-3.12-.71-6.46-1.07-10.02-1.07-8.38,0-16.17,2.11-23.16,6.27-7,4.16-12.61,10.08-16.66,17.59-3.98,7.36-5.99,15.94-5.99,25.48s2.01,18.12,5.96,25.56c4.05,7.62,9.66,13.61,16.69,17.79,6.99,4.16,14.78,6.27,23.16,6.27,5.29,0,9.81-.75,13.69-2.01v.74h43.12V28.31h0Zm-50.75,83.19c-1.64,0-2.42-.49-3.15-1.29-1.01-1.09-1.51-2.94-1.51-5.49,0-3.71,1.14-4.94,1.51-5.35.73-.8,1.52-1.29,3.15-1.29s2.5.52,3.28,1.35c.38.4,1.52,1.63,1.52,5.28,0,2.55-.51,4.4-1.51,5.49-.73.79-1.54,1.29-3.29,1.29h0Z"/></g><g><path class="cls-1" d="m684.72,149.2c-8.95,0-16.99-1.83-23.89-5.43-7.04-3.68-12.57-8.99-16.42-15.78-3.8-6.7-5.73-14.58-5.73-23.4s1.93-16.69,5.73-23.35c3.86-6.75,9.38-12.01,16.43-15.64,6.89-3.55,14.92-5.35,23.86-5.35s17.1,1.8,23.95,5.36c7.01,3.64,12.49,8.91,16.29,15.66,3.75,6.66,5.65,14.5,5.65,23.32s-1.9,16.68-5.64,23.38c-3.8,6.8-9.28,12.12-16.28,15.8-6.86,3.61-14.92,5.44-23.97,5.44Zm0-56.12c-2.74,0-4.84.9-6.61,2.83-1.86,2.02-2.77,4.86-2.77,8.67s.91,6.84,2.79,8.91c1.78,1.96,3.87,2.87,6.59,2.87s4.77-.9,6.49-2.84c1.85-2.08,2.75-5,2.75-8.94s-.89-6.67-2.73-8.7c-1.73-1.91-3.8-2.8-6.51-2.8Z"/><path class="cls-6" d="m684.72,65.24c8.27,0,15.49,1.6,21.64,4.79,6.16,3.2,10.9,7.75,14.24,13.68,3.33,5.92,5,12.88,5,20.87s-1.67,14.97-5,20.94c-3.34,5.97-8.09,10.58-14.24,13.82-6.16,3.24-13.37,4.87-21.64,4.87s-15.37-1.62-21.57-4.87c-6.2-3.24-11-7.85-14.38-13.82-3.38-5.97-5.08-12.95-5.08-20.94s1.69-14.95,5.08-20.87c3.38-5.92,8.18-10.48,14.38-13.68,6.2-3.2,13.4-4.79,21.57-4.79m0,56.12c4.14,0,7.54-1.5,10.22-4.51,2.68-3.01,4.02-7.1,4.02-12.27s-1.34-9.09-4.02-12.06c-2.68-2.96-6.09-4.44-10.22-4.44s-7.57,1.48-10.29,4.44c-2.73,2.96-4.09,6.98-4.09,12.06s1.36,9.26,4.09,12.27c2.73,3.01,6.16,4.51,10.29,4.51m0-66.12c-9.75,0-18.54,1.99-26.15,5.9-7.92,4.08-14.14,10.01-18.49,17.6-4.24,7.43-6.39,16.12-6.39,25.83s2.15,18.41,6.38,25.87c4.33,7.64,10.54,13.61,18.45,17.75,7.62,3.98,16.44,6,26.2,6s18.72-2.02,26.3-6.02c7.87-4.14,14.03-10.13,18.31-17.79,4.16-7.45,6.28-16.14,6.28-25.82s-2.12-18.36-6.29-25.78c-4.29-7.62-10.46-13.55-18.35-17.64-7.57-3.93-16.4-5.92-26.25-5.92h0Zm0,56.12c-1.32,0-2.05-.31-2.88-1.23-1-1.1-1.5-2.97-1.5-5.55s.49-4.24,1.44-5.28c.71-.77,1.42-1.22,2.94-1.22s2.13.4,2.81,1.15c.95,1.05,1.43,2.85,1.43,5.35,0,2.62-.5,4.51-1.49,5.61-.67.76-1.31,1.16-2.76,1.16h0Z"/></g><g><polygon class="cls-1" points="785.21 147.93 770.66 125.45 770.66 147.93 733.87 147.93 733.87 33.31 770.66 33.31 770.66 80.63 782.96 61.65 825.39 61.65 797.5 103.01 828.13 147.93 785.21 147.93"/><path class="cls-6" d="m765.66,38.31v59.22l20.02-30.88h30.31l-24.53,36.38,27.21,39.9h-30.74l-22.28-34.4v34.4h-26.79V38.31h26.79m10-10h-46.79v124.62h46.79v-10.56l3.88,6,2.96,4.56h55.1l-10.66-15.63-23.39-34.3,20.74-30.76,10.51-15.59h-54.55l-2.96,4.56-1.63,2.52V28.31h0Z"/></g><g><path class="cls-1" d="m860.13,149.06c-11.41,0-21.31-3.45-29.44-10.26-8.39-7.03-12.65-18.97-12.65-35.49v-41.8h36.79v43.63c0,9.81,3.44,9.81,5.29,9.81,1.95,0,5.57,0,5.57-9.81v-43.63h36.79v41.8c0,16.52-4.28,28.47-12.73,35.5-8.17,6.8-18.15,10.25-29.64,10.25Z"/><path class="cls-6" d="m897.49,66.51v36.8c0,15.04-3.64,25.59-10.93,31.65-7.29,6.06-16.1,9.09-26.44,9.09s-18.99-3.03-26.23-9.09c-7.24-6.06-10.86-16.61-10.86-31.65v-36.8h26.79v38.63c0,9.87,3.43,14.81,10.29,14.81s10.57-4.94,10.57-14.81v-38.63h26.79m10-10h-46.79v48.63c0,2.22-.23,3.59-.44,4.38-.21-.82-.42-2.2-.42-4.38v-48.63h-46.79v46.8c0,18.07,4.86,31.3,14.44,39.32,9.05,7.58,20.04,11.43,32.65,11.43s23.74-3.84,32.83-11.41c9.64-8.03,14.53-21.26,14.53-39.34v-46.8h0Z"/></g><path class="cls-1" d="m727.14,195.62c-1.43-1.42-2.14-3.21-2.14-5.35s.71-3.96,2.14-5.31c1.42-1.35,3.18-2.02,5.27-2.02s3.84.68,5.27,2.02c1.42,1.35,2.14,3.12,2.14,5.31s-.71,3.92-2.14,5.35c-1.43,1.43-3.18,2.14-5.27,2.14s-3.85-.71-5.27-2.14Z"/><path class="cls-1" d="m755.63,195.09c-3.36-1.83-6-4.37-7.9-7.6-1.91-3.23-2.86-6.86-2.86-10.88s.95-7.57,2.86-10.81c1.91-3.23,4.54-5.77,7.9-7.6,3.36-1.83,7.13-2.75,11.3-2.75,3.56,0,6.72.51,9.47,1.53v10.77c-2.14-1.07-4.51-1.6-7.1-1.6-3.31,0-6.12.9-8.44,2.71-2.32,1.81-3.48,4.39-3.48,7.75s1.17,6.01,3.51,7.79c2.34,1.78,5.14,2.67,8.4,2.67,2.7,0,5.07-.51,7.1-1.53v10.77c-2.75,1.02-5.91,1.53-9.47,1.53-4.18,0-7.94-.92-11.3-2.75Z"/><path class="cls-1" d="m792.21,195.12c-3.26-1.76-5.79-4.23-7.6-7.41-1.81-3.18-2.71-6.89-2.71-11.11s.9-7.93,2.71-11.11c1.81-3.18,4.34-5.64,7.6-7.37,3.26-1.73,7-2.6,11.23-2.6s7.97.87,11.23,2.6c3.26,1.73,5.78,4.19,7.56,7.37,1.78,3.18,2.67,6.89,2.67,11.11s-.89,7.93-2.67,11.11c-1.78,3.18-4.3,5.65-7.56,7.41-3.26,1.76-7,2.63-11.23,2.63s-7.97-.88-11.23-2.63Zm18.06-10.58c1.81-1.99,2.71-4.63,2.71-7.94s-.89-5.94-2.67-7.91c-1.78-1.96-4.07-2.94-6.87-2.94s-5.11.98-6.91,2.94c-1.81,1.96-2.71,4.6-2.71,7.91s.9,5.96,2.71,7.94c1.81,1.99,4.11,2.98,6.91,2.98s5.03-.99,6.84-2.98Z"/><path class="cls-1" d="m892.8,160.07c2.8,3.08,4.2,7.6,4.2,13.56v23.52h-11.91v-22c0-3-.57-5.29-1.72-6.87-1.15-1.58-2.81-2.37-5-2.37s-4.06.84-5.31,2.52c-1.25,1.68-1.87,4.15-1.87,7.41v21.31h-11.91v-22c0-6.16-2.22-9.24-6.65-9.24-2.34,0-4.14.84-5.38,2.52-1.25,1.68-1.87,4.15-1.87,7.41v21.31h-11.92v-41.09h11.38v4.58c2.85-3.46,6.64-5.19,11.38-5.19,2.6,0,4.96.56,7.1,1.68,2.14,1.12,3.87,2.78,5.19,4.96,1.58-2.19,3.51-3.84,5.8-4.96,2.29-1.12,4.76-1.68,7.41-1.68,4.58,0,8.27,1.54,11.07,4.62Z"/></g></svg></div>
</div>
<div class="suiro-nav-right"><div class="suiro-auth-buttons" id="auth-buttons-container"></div></div>
</header>
</div>
<div class="main-scroll-container">
<div class="game-content-wrapper">
<div class="game-info" id="game-info" style="min-height:80px">
<div class="game-stats-container">
<div class="game-stats" role="region" aria-label="Game statistics" data-i18n-aria="aria_labels.game_statistics">
<div class="stat-item ranked-indicator" id="trophy-indicator" style="display:none">
<div class="stat-label" data-i18n="hud.ranked">Ranked</div>
<div class="stat-value trophy-icon" id="trophy-icon-container"></div>
</div>
<div class="stat-item"><div class="stat-label" data-i18n="hud.score">Score</div><div class="stat-value score" id="score-display" aria-live="polite">0</div></div>
<div class="stat-item level-item"><div class="stat-label" data-i18n="hud.level">Level</div><div class="stat-value" id="difficulty-display" aria-live="polite" data-difficulty="easy" data-i18n="difficulty.easy">Easy</div></div>
<div class="stat-item"><div class="stat-label" data-i18n="hud.errors">Errors</div><div class="stat-value" id="errors-count" aria-live="polite">0/5</div></div>
<div class="stat-item"><div class="stat-label" data-i18n="hud.time">Time</div><div class="stat-value" id="game-time" aria-live="polite">00:00</div></div>
<div class="stat-item hint-item">
<div class="stat-label" data-i18n="hud.hint">Hint</div>
<div class="stat-value hint-icon" role="button" tabindex="0" aria-label="Get hint for selected cell" data-i18n-aria="aria_labels.get_hint_selected_cell">
<img src="/assets/emoji/ampoule.svg" alt="Hint" loading="lazy" style="width:37px;height:37px;">
</div>
</div>
<div class="stat-item share-item" id="share-button-container">
<div class="stat-label" data-i18n="hud.share">Share</div>
<div class="stat-value share-icon" id="share-icon-container" role="button" tabindex="0" aria-label="Share puzzle">
<img src="/assets/emoji/share.svg" alt="Share" loading="lazy" style="width:28px;height:28px;cursor:pointer;">
</div>
</div>
</div>
<div style="display:none"><button id="hint-btn" title="Hint for selected cell" data-i18n-title="aria_labels.hint_for_selected_cell"></button></div>
</div>
</div>
<div class="game-main-area" id="game-main-area" style="min-height:513px;min-width:873px;height:513px;">
<div class="action-buttons" role="group" aria-label="Game actions" data-i18n-aria="aria_labels.game_actions">
<button id="correct-btn" title="Correct the error" data-i18n="hud.correct" data-i18n-title="aria_labels.correct_error">Correct</button>
<button id="reveal-btn" title="Complete the entire grid" data-i18n="hud.reveal" data-i18n-title="aria_labels.complete_entire_grid">Reveal</button>
</div>
<div id="sudoku-container" role="grid" aria-label="Suirodoku 9x9 grid" style="width:513px;height:513px;min-width:513px;min-height:513px;box-sizing:border-box;"><div class="sudoku-region" data-region="0" role="row"><div class="sudoku-cell" data-row="0" data-col="0" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="0" data-col="1" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="0" data-col="2" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="1" data-col="0" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="1" data-col="1" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="1" data-col="2" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="2" data-col="0" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="2" data-col="1" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="2" data-col="2" role="gridcell" tabindex="-1"></div></div><div class="sudoku-region" data-region="1" role="row"><div class="sudoku-cell" data-row="0" data-col="3" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="0" data-col="4" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="0" data-col="5" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="1" data-col="3" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="1" data-col="4" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="1" data-col="5" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="2" data-col="3" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="2" data-col="4" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="2" data-col="5" role="gridcell" tabindex="-1"></div></div><div class="sudoku-region" data-region="2" role="row"><div class="sudoku-cell" data-row="0" data-col="6" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="0" data-col="7" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="0" data-col="8" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="1" data-col="6" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="1" data-col="7" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="1" data-col="8" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="2" data-col="6" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="2" data-col="7" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="2" data-col="8" role="gridcell" tabindex="-1"></div></div><div class="sudoku-region" data-region="3" role="row"><div class="sudoku-cell" data-row="3" data-col="0" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="3" data-col="1" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="3" data-col="2" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="4" data-col="0" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="4" data-col="1" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="4" data-col="2" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="5" data-col="0" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="5" data-col="1" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="5" data-col="2" role="gridcell" tabindex="-1"></div></div><div class="sudoku-region" data-region="4" role="row"><div class="sudoku-cell" data-row="3" data-col="3" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="3" data-col="4" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="3" data-col="5" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="4" data-col="3" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="4" data-col="4" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="4" data-col="5" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="5" data-col="3" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="5" data-col="4" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="5" data-col="5" role="gridcell" tabindex="-1"></div></div><div class="sudoku-region" data-region="5" role="row"><div class="sudoku-cell" data-row="3" data-col="6" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="3" data-col="7" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="3" data-col="8" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="4" data-col="6" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="4" data-col="7" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="4" data-col="8" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="5" data-col="6" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="5" data-col="7" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="5" data-col="8" role="gridcell" tabindex="-1"></div></div><div class="sudoku-region" data-region="6" role="row"><div class="sudoku-cell" data-row="6" data-col="0" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="6" data-col="1" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="6" data-col="2" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="7" data-col="0" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="7" data-col="1" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="7" data-col="2" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="8" data-col="0" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="8" data-col="1" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="8" data-col="2" role="gridcell" tabindex="-1"></div></div><div class="sudoku-region" data-region="7" role="row"><div class="sudoku-cell" data-row="6" data-col="3" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="6" data-col="4" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="6" data-col="5" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="7" data-col="3" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="7" data-col="4" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="7" data-col="5" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="8" data-col="3" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="8" data-col="4" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="8" data-col="5" role="gridcell" tabindex="-1"></div></div><div class="sudoku-region" data-region="8" role="row"><div class="sudoku-cell" data-row="6" data-col="6" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="6" data-col="7" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="6" data-col="8" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="7" data-col="6" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="7" data-col="7" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="7" data-col="8" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="8" data-col="6" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="8" data-col="7" role="gridcell" tabindex="-1"></div><div class="sudoku-cell" data-row="8" data-col="8" role="gridcell" tabindex="-1"></div></div><div class="grid-loading-overlay show" id="grid-loading-overlay"><div class="loading-content"><div class="loading-title" data-i18n="loading.loading_game"></div><div class="progress-bar"><div class="progress-fill" id="grid-progress-fill"></div></div><div class="progress-step" id="grid-progress-step" data-i18n="loading.initializing"></div></div></div></div>
</div>
<!-- MINIBOARD PLACEHOLDER - Reserve space to prevent CLS -->
<div id="home-miniboard-container" class="home-miniboard-container" style="min-height:420px;width:100%;max-width:969px;margin:30px auto 0;"></div>
<!-- DISCOVER SECTION - SEO optimized static content -->
<section class="discover-suirodoku" id="discover-suirodoku">
<div class="discover-hero">
<p class="discover-tagline"><span data-i18n-discover="hero_tagline_1">Sudoku was the training.</span><br><span class="discover-tagline-bold" data-i18n-discover="hero_tagline_2">Suirodoku is the real game.</span></p>
</div>
<div class="discover-section discover-what-is">
<div class="discover-content">
<h2><img src="/assets/emoji/emoji-grille.svg" alt="" class="discover-emoji emoji-title" width="48" height="48"> <span data-i18n-discover="what_is_title">What is Suirodoku?</span></h2>
<p data-i18n-discover="what_is_text">Suirodoku is a free online color sudoku game that merges numbers and colors into a single puzzle. Each cell combines a number (1-9) and a color (among 9), creating an entirely new brain training experience where both dimensions are intertwined. This innovative logic puzzle creates 81 unique number-color pairs.</p>
</div>
<div class="discover-image">
<img src="/assets/images/what-is-suirodoku-320.webp" srcset="/assets/images/what-is-suirodoku-320.webp 320w, /assets/images/what-is-suirodoku-600.webp 600w" sizes="320px" alt="Color sudoku grid showing 81 unique number-color pairs in Suirodoku game" class="discover-img discover-img-square" loading="lazy" decoding="async" width="320" height="320">
</div>
</div>
<div class="discover-section discover-rules reverse">
<div class="discover-content">
<h2><img src="/assets/emoji/emoji-cible.svg" alt="" class="discover-emoji emoji-title" width="48" height="48"> <span data-i18n-discover="rules_title">4 Rules, 1 Ultimate Challenge</span></h2>
<p data-i18n-discover="rules_intro">Suirodoku adds a revolutionary 4th dimension to classic Sudoku:</p>
<ul class="discover-rules-list">
<li><span class="rule-icon">&rarr;</span> <span data-i18n-discover="rule_line">Each <strong>row</strong> contains numbers 1-9 and all 9 colors</span></li>
<li><span class="rule-icon">&darr;</span> <span data-i18n-discover="rule_column">Each <strong>column</strong> contains numbers 1-9 and all 9 colors</span></li>
<li><span class="rule-icon">&#9638;</span> <span data-i18n-discover="rule_region">Each <strong>3&#215;3 region</strong> contains numbers 1-9 and all 9 colors</span></li>
<li><span class="rule-icon">&#9733;</span> <span data-i18n-discover="rule_color">Each <strong>color</strong> contains numbers 1-9 (the 4th rule!)</span></li>
</ul>
<p class="discover-cta"><a href="/tutorial/" class="discover-link"><span data-i18n-discover="cta_tutorial">Learn how to play Suirodoku</span> &rarr;</a></p>
</div>
<div class="discover-image">
<img src="/assets/images/4-rules-320.webp" srcset="/assets/images/4-rules-320.webp 320w, /assets/images/4-rules-600.webp 600w" sizes="320px" alt="4 rules of color sudoku: row, column, region and color constraints" class="discover-img discover-img-square no-shadow" loading="lazy" decoding="async" width="320" height="320">
</div>
</div>
<div class="discover-section discover-pairs">
<div class="discover-pairs-top">
<div class="discover-content">
<h2><img src="/assets/emoji/emoji-aimant.svg" alt="" class="discover-emoji emoji-title" width="48" height="48"> <span data-i18n-discover="pairs_title">81 Unique Pairs</span></h2>
<p data-i18n-discover="pairs_text">Unlike traditional Sudoku where each number appears 9 times, Suirodoku guarantees that each number-color combination is <strong>unique</strong>. A completed grid is a harmonious work with no repetition - the ultimate logic puzzle challenge.</p>
</div>
<div class="discover-image">
<img src="/assets/images/81-pairs-320.webp" srcset="/assets/images/81-pairs-320.webp 320w, /assets/images/81-pairs-600.webp 600w" sizes="320px" alt="81 unique number-color pairs showing all combinations in color sudoku" class="discover-img discover-img-square no-shadow" loading="lazy" decoding="async" width="320" height="320">
</div>
</div>
<div class="discover-highlight"><div class="highlight-item"><img src="/assets/emoji/emoji-carte-as-pique.svg" alt="" class="discover-emoji emoji-highlight" width="32" height="32"><span data-i18n-discover="pairs_highlight_cells">81 cells.</span></div><div class="highlight-item"><img src="/assets/emoji/emoji-carte-as-coeur.svg" alt="" class="discover-emoji emoji-highlight" width="32" height="32"><span data-i18n-discover="pairs_highlight_combinations">81 combinations.</span></div><div class="highlight-item"><img src="/assets/emoji/emoji-carte-as-trefle.svg" alt="" class="discover-emoji emoji-highlight" width="32" height="32"><span data-i18n-discover="pairs_highlight_duplicates">0 duplicates.</span></div><div class="highlight-item"><img src="/assets/emoji/emoji-carte-as-carreau.svg" alt="" class="discover-emoji emoji-highlight" width="32" height="32"><span data-i18n-discover="pairs_highlight_solution">1 solution.</span></div></div>
</div>
<div class="discover-section discover-techniques full-width">
<h2><img src="/assets/emoji/emoji-eclair-jaune.svg" alt="" class="discover-emoji emoji-title" width="48" height="48"> <span data-i18n-discover="techniques_title">Exclusive Techniques</span></h2>
<p class="discover-techniques-intro" data-i18n-discover="techniques_intro">Master advanced sudoku strategies that exist nowhere else:</p>
<div class="discover-techniques-grid">
<div class="discover-technique-card">
<h3 data-i18n-discover="rainbow_title">Rainbow Technique</h3>
<p data-i18n-discover="rainbow_text">Track each number across all 9 colors to identify the missing color. <strong>The number reveals the color.</strong><br>A revolutionary sudoku solving strategy.</p>
<a href="/articles/rainbow-technique.html" class="technique-img-link"><img src="/assets/images/rainbow-technique-400.webp" srcset="/assets/images/rainbow-technique-400.webp 400w, /assets/images/rainbow-technique-600.webp 600w" sizes="400px" alt="Rainbow technique for solving hard color sudoku puzzles" class="discover-img-small" loading="lazy" decoding="async" width="400" height="267"></a>
<a href="/articles/rainbow-technique.html" class="technique-link"><span data-i18n-discover="rainbow_link">Learn more</span> &rarr;</a>
</div>
<div class="discover-technique-card">
<h3 data-i18n-discover="chromatic_title">Chromatic Circle</h3>
<p data-i18n-discover="chromatic_text">Track each color across all 9 numbers to identify the missing number. <strong>The color reveals the number.</strong><br>An advanced brain training method.</p>
<a href="/articles/chromatic-circle-technique.html" class="technique-img-link"><img src="/assets/images/chromatic-circle-400.webp" srcset="/assets/images/chromatic-circle-400.webp 400w, /assets/images/chromatic-circle-600.webp 600w" sizes="400px" alt="Chromatic circle method for difficult sudoku challenges" class="discover-img-small" loading="lazy" decoding="async" width="400" height="267"></a>
<a href="/articles/chromatic-circle-technique.html" class="technique-link"><span data-i18n-discover="chromatic_link">Learn more</span> &rarr;</a>
</div>
</div>
<p class="discover-cta"><a href="/articles/" class="discover-link"><span data-i18n-discover="cta_articles">Read all strategy guides</span> &rarr;</a></p>
</div>
<div class="discover-section discover-comparison full-width">
<h2 data-i18n-discover="comparison_title">Sudoku vs Suirodoku</h2>
<div class="comparison-grid">
<div class="comparison-card comparison-sudoku">
<h3 data-i18n-discover="sudoku_name">Sudoku</h3>
<ul>
<li><span class="check-icon">&#9675;</span><span data-i18n-discover="sudoku_point_1">3 constraints</span></li>
<li><span class="check-icon">&#9675;</span><span data-i18n-discover="sudoku_point_2">Numbers only</span></li>
<li><span class="check-icon">&#9675;</span><span data-i18n-discover="sudoku_point_3">Each number repeated 9 times</span></li>
<li><span class="check-icon">&#9675;</span><span data-i18n-discover="sudoku_point_4">Classic techniques</span></li>
</ul>
</div>
<div class="comparison-vs"><span>VS</span></div>
<div class="comparison-card comparison-suirodoku">
<h3 data-i18n-discover="suirodoku_name">Suirodoku</h3>
<ul>
<li><span class="check-icon">&#10003;</span><span data-i18n-discover="suirodoku_point_1">4 constraints (+ colors)</span></li>
<li><span class="check-icon">&#10003;</span><span data-i18n-discover="suirodoku_point_2">Numbers AND colors intertwined</span></li>
<li><span class="check-icon">&#10003;</span><span data-i18n-discover="suirodoku_point_3">81 unique pairs</span></li>
<li><span class="check-icon">&#10003;</span><span data-i18n-discover="suirodoku_point_4">Exclusive techniques</span></li>
</ul>
</div>
</div>
<p class="discover-cta"><a href="/leaderboard/" class="discover-link"><span data-i18n-discover="cta_leaderboard">Join global rankings</span> &rarr;</a></p>
</div>
<section class="discover-section discover-faq full-width" id="faq" aria-labelledby="faq-title">
<h2 id="faq-title" data-i18n-discover="faq_title">Frequently Asked Questions</h2>
<div class="faq-list">
<details class="faq-item">
<summary data-i18n-discover="faq_q1">What is Suirodoku?</summary>
<div class="faq-answer">
<p data-i18n-discover="faq_a1">Suirodoku is a color sudoku where each cell combines a number (1-9) and a color (9 colors), creating 81 unique number-color pairs.</p>
</div>
</details>
<details class="faq-item">
<summary data-i18n-discover="faq_q2">What are the rules of Suirodoku?</summary>
<div class="faq-answer">
<p data-i18n-discover="faq_a2">Like Sudoku, each row/column/3&times;3 region must contain numbers 1-9. In addition, each row/column/region must contain all 9 colors, and each color must contain numbers 1-9.</p>
</div>
</details>
<details class="faq-item">
<summary data-i18n-discover="faq_q3">Is Suirodoku free to play?</summary>
<div class="faq-answer">
<p data-i18n-discover="faq_a3">Yes. You can play Suirodoku for free online in your browser.</p>
</div>
</details>
<details class="faq-item">
<summary data-i18n-discover="faq_q4">What are Rainbow and Chromatic Circle techniques?</summary>
<div class="faq-answer">
<p data-i18n-discover="faq_a4">Rainbow tracks a number across all 9 colors to find the missing color. Chromatic Circle tracks a color across all 9 numbers to find the missing number.</p>
</div>
</details>
</div>
</section>
</section>
</div>
</div>
<script async src="https://suirodoku.com/shared/footer.js?v=2.1.0"></script>
<noscript><style>body{opacity:1!important;visibility:visible!important}</style></noscript>
<script defer src="https://suirodoku.com/shared/header.js?v=2.1.0"></script>
<script defer src="https://suirodoku.com/shared/grille.js?v=2.1.1"></script>
<script defer src="https://suirodoku.com/modules/core-toast-enhanced.js?v=2.1.0"></script>
<script defer src="https://suirodoku.com/modules/core-stubs.js?v=2.1.0"></script>
<script defer src="https://suirodoku.com/shared/home-i18n.js?v=2.1.0"></script>
<script defer src="https://suirodoku.com/shared/hud-core.js?v=2.1.0"></script>
<script defer src="https://suirodoku.com/modules/game-engine.js?v=2.1.0"></script>
<script defer src="https://suirodoku.com/modules/ui-components.js?v=2.1.0"></script>
<script defer src="https://suirodoku.com/shared/abandon-manager.js?v=2.1.0"></script>
<script defer src="https://suirodoku.com/modules/app-bootstrap.js?v=2.1.0"></script>

<script defer src="https://suirodoku.com/shared/popup-manager.js?v=2.1.0"></script>
<script defer src="https://suirodoku.com/shared/share-config.js?v=2.1.0"></script>
<script defer src="https://suirodoku.com/shared/share-i18n.js?v=2.1.0"></script>
<script defer src="https://suirodoku.com/shared/share-encoder.js?v=2.1.0"></script>
<script defer src="https://suirodoku.com/shared/share-image.js?v=2.1.0"></script>
<script defer src="https://suirodoku.com/shared/share-platforms.js?v=2.1.0"></script>
<script defer src="https://suirodoku.com/shared/share-ui.js?v=2.1.0"></script>
<script defer src="https://suirodoku.com/shared/share-manager.js?v=2.1.0"></script>
<script defer src="https://suirodoku.com/shared/notes-manager.js?v=2.1.0"></script>
<script defer src="https://suirodoku.com/modules/game-completion.js?v=2.1.0"></script>
<script async src="https://suirodoku.com/shared/cookies-consent.js?v=2.1.0"></script>
<script async src="https://suirodoku.com/modules/data-services.js?v=2.1.0"></script>
<script async src="https://suirodoku.com/shared/recaptcha-service.js?v=2.1.0"></script>
<script>
const RECAPTCHA_SITE_KEY='6LdriaorAAAAADt7K044sa6CYHCOdtfVgxmZv00r';window.addEventListener('error',function(e){if(e.message&&e.message.includes('recaptcha')){e.preventDefault();return false}});
</script>
<script>
(function(){var s=document.createElement('script');s.src='https://suirodoku.com/shared/home-miniboard.js?v=2.1.0';s.async=true;document.body.appendChild(s)})();
</script>
<script defer src="https://suirodoku.com/shared/home-discover.js?v=2.1.0"></script>
<script>
(function(){var s=document.createElement('script');s.src='https://suirodoku.com/shared/pwa-install.js?v=2.1.0';s.async=true;document.body.appendChild(s)})();
</script>
<script>
(function(){function initShareButton(){var iconContainer=document.getElementById('share-icon-container');if(!iconContainer||iconContainer.dataset.initialized)return;iconContainer.dataset.initialized='true';var handleClick=function(e){e.stopPropagation();var isMobile=/Android|iPhone|iPad|iPod/i.test(navigator.userAgent);if(isMobile&&navigator.share&&window.ShareManager){var gameData=window.ShareUI?window.ShareUI.getCurrentGameData():(window.ShareManager.getCurrentGameData?window.ShareManager.getCurrentGameData():null);if(gameData&&gameData.grid){var gridToShare=gameData.grid||gameData.originalPuzzle||gameData.initialGrid;window.ShareManager.shareNative(gridToShare,gameData.difficulty,gameData.solution,gameData.notes);return}}if(window.ShareManager&&window.ShareManager.toggleShareMenu){window.ShareManager.toggleShareMenu(iconContainer)}else if(window.ShareUI&&window.ShareUI.toggleShareMenu){window.ShareUI.toggleShareMenu(iconContainer)}};iconContainer.addEventListener('click',handleClick);iconContainer.addEventListener('keypress',function(e){if(e.key==='Enter'||e.key===' '){e.preventDefault();handleClick(e)}})}if(document.readyState==='loading'){document.addEventListener('DOMContentLoaded',function(){setTimeout(initShareButton,100)})}else{setTimeout(initShareButton,100)}window.addEventListener('sharedGridLoaded',function(e){var detail=e.detail;if(detail&&detail.grid&&detail.isShared){window.sharedGridData=detail}})})();
</script>
<script>
if('serviceWorker' in navigator){window.addEventListener('load',function(){navigator.serviceWorker.register('/sw.js').then(function(reg){reg.addEventListener('updatefound',function(){var newWorker=reg.installing;newWorker.addEventListener('statechange',function(){if(newWorker.state==='installed'&&navigator.serviceWorker.controller){}})})}).catch(function(err){})})}
</script>
<script async src="https://suirodoku.com/shared/game-controls-tracking.js?v=2.1.0"></script>
<script>
// Marketing scripts (enhanced-conversions + facebook-pixel) - charger uniquement si marketing autorise
(function(){
  function loadMarketingScripts() {
    if (window.__marketingScriptsLoaded) return;
    window.__marketingScriptsLoaded = true;
    var ec = document.createElement('script');
    ec.src = '/shared/enhanced-conversions.js?v=2.1.0';
    ec.async = true;
    document.body.appendChild(ec);
    var fb = document.createElement('script');
    fb.src = '/shared/facebook-pixel.js?v=2.1.0';
    fb.async = true;
    document.body.appendChild(fb);
  }
  var checkTracking = setInterval(function() {
    if (!window.__suiroTracking) return;
    clearInterval(checkTracking);
    if (window.__suiroTracking.canMarketing()) {
      if (window.__suiroTracking.isEU) {
        loadMarketingScripts();
      } else {
        var armed = true;
        var onFirstInteract = function() {
          if (!armed) return;
          armed = false;
          ['pointerdown','keydown','scroll','mousemove','touchstart'].forEach(function(ev) {
            window.removeEventListener(ev, onFirstInteract);
          });
          loadMarketingScripts();
        };
        ['pointerdown','keydown','scroll','mousemove','touchstart'].forEach(function(ev) {
          window.addEventListener(ev, onFirstInteract, { passive: true });
        });
      }
    }
    window.addEventListener('cookiesAccepted', function(event) {
      if (event.detail?.categories?.marketing) {
        loadMarketingScripts();
      }
    });
  }, 100);
  setTimeout(function() { clearInterval(checkTracking); }, 5000);
})();
</script>

<script type="application/ld+json">
{"@context":"https://schema.org","@type":"FAQPage","mainEntity":[{"@type":"Question","name":"What is Suirodoku?","acceptedAnswer":{"@type":"Answer","text":"Suirodoku is a color sudoku where each cell combines a number (1-9) and a color (9 colors), creating 81 unique number-color pairs."}},{"@type":"Question","name":"What are the rules of Suirodoku?","acceptedAnswer":{"@type":"Answer","text":"Like Sudoku, each row/column/3\u00d73 region must contain numbers 1-9. In addition, each row/column/region must contain all 9 colors, and each color must contain numbers 1-9."}},{"@type":"Question","name":"Is Suirodoku free to play?","acceptedAnswer":{"@type":"Answer","text":"Yes. You can play Suirodoku for free online in your browser."}},{"@type":"Question","name":"What are Rainbow and Chromatic Circle techniques?","acceptedAnswer":{"@type":"Answer","text":"Rainbow tracks a number across all 9 colors to find the missing color. Chromatic Circle tracks a color across all 9 numbers to find the missing number."}}]}
</script>
</body>
</html>