Sudoku / index.html
nayohan's picture
Update space
ed7c9b4
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="์™œ ๊ทธ ์ˆซ์ž๊ฐ€ ๋“ค์–ด๊ฐ€๋Š”์ง€ ์„ค๋ช…ํ•ด ์ฃผ๋Š” ํ•™์Šตํ˜• ์ˆ˜๋„์ฟ  ๊ฒŒ์ž„">
<title>๋ฐฐ์šฐ๋ฉด์„œ ํ‘ธ๋Š” ์ˆ˜๋„์ฟ </title>
<link rel="stylesheet" href="style.css">
<script src="script.js" defer></script>
</head>
<body>
<header class="site-header">
<div class="header-copy">
<p class="eyebrow">Explainable Sudoku MVP</p>
<h1>๋ฐฐ์šฐ๋ฉด์„œ ํ‘ธ๋Š” ์ˆ˜๋„์ฟ </h1>
<p class="intro">์ •๋‹ต๋งŒ ๋งžํžˆ๋Š” ๋Œ€์‹ , ๋‹ค์Œ ํ•œ ์ˆ˜๊ฐ€ ์™œ ์„ฑ๋ฆฝํ•˜๋Š”์ง€ ๋ฐ”๋กœ ์„ค๋ช…ํ•ด ์ฃผ๋Š” ํ•™์Šตํ˜• ์ˆ˜๋„์ฟ ์ž…๋‹ˆ๋‹ค.</p>
</div>
<nav class="top-actions" aria-label="๊ฒŒ์ž„ ์กฐ์ž‘">
<button id="new-game-btn" type="button">์ƒˆ ํผ์ฆ</button>
<button id="hint-btn" type="button">ํžŒํŠธ ๋ณด๊ธฐ</button>
<button id="apply-hint-btn" type="button">ํžŒํŠธ ์ ์šฉ</button>
<button id="check-btn" type="button">์˜ค๋‹ต ํ™•์ธ</button>
<button id="reset-btn" type="button">์ดˆ๊ธฐํ™”</button>
</nav>
</header>
<main class="layout">
<section class="board-panel" aria-labelledby="board-title">
<div class="panel-head">
<div>
<h2 id="board-title">ํ˜„์žฌ ํผ์ฆ</h2>
<p id="puzzle-meta" class="muted">๋žœ๋ค ๋ณ€ํ˜• ํผ์ฆ์„ ์ค€๋น„ํ•˜๋Š” ์ค‘์ž…๋‹ˆ๋‹ค.</p>
</div>
<div class="status-wrap">
<span id="difficulty-badge" class="badge">์ž…๋ฌธ</span>
<p id="game-status" class="status" role="status" aria-live="polite" aria-atomic="true">ํผ์ฆ์„ ์ค€๋น„ํ•˜๋Š” ์ค‘์ž…๋‹ˆ๋‹ค.</p>
</div>
</div>
<article class="sudoku-shell" aria-label="์ˆ˜๋„์ฟ  ๋ณด๋“œ ์˜์—ญ">
<p id="sudoku-help" class="sr-only">๋ฐฉํ–ฅํ‚ค๋กœ ์นธ์„ ์ด๋™ํ•˜๊ณ  ์ˆซ์ž 1๋ถ€ํ„ฐ 9๊นŒ์ง€ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.</p>
<div id="sudoku-board" class="sudoku-board" role="grid" aria-describedby="sudoku-help"></div>
</article>
</section>
<aside class="side-panel">
<section class="info-card" aria-labelledby="hint-title">
<h2 id="hint-title">ํ•™์Šต ํžŒํŠธ</h2>
<p id="hint-message" class="hint-message" role="status" aria-live="polite" aria-atomic="true">ํžŒํŠธ ๋ณด๊ธฐ๋ฅผ ๋ˆ„๋ฅด๋ฉด ๋‹ค์Œ ๋…ผ๋ฆฌ ๋‹จ๊ณ„๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.</p>
</section>
<section class="info-card" aria-labelledby="analysis-title">
<h2 id="analysis-title">๋ถ„์„ ์š”์•ฝ</h2>
<dl class="stats-grid">
<div>
<dt>์ฑ„์›Œ์ง„ ์นธ</dt>
<dd id="filled-count">0</dd>
</div>
<div>
<dt>๋‚จ์€ ์นธ</dt>
<dd id="remaining-count">81</dd>
</div>
<div>
<dt>๋‹ค์Œ ๊ธฐ์ˆ </dt>
<dd id="next-technique">๋Œ€๊ธฐ ์ค‘</dd>
</div>
<div>
<dt>ํผ์ฆ ๋ถ„์„</dt>
<dd id="analysis-summary">์ดˆ๊ธฐ ๋ถ„์„์„ ์ค€๋น„ํ•˜๋Š” ์ค‘์ž…๋‹ˆ๋‹ค.</dd>
</div>
</dl>
</section>
<section class="info-card" aria-labelledby="log-title">
<h2 id="log-title">ํ’€์ด ๋กœ๊ทธ</h2>
<ol id="log-list" class="log-list" role="log" aria-live="polite" aria-relevant="additions text"></ol>
</section>
</aside>
</main>
<footer class="site-footer">
<p>ํ˜„์žฌ MVP๋Š” ๋‹จ์ผ ํ›„๋ณด์™€ ์ˆจ์€ ์‹ฑ๊ธ€ ๊ทœ์น™์„ ์ค‘์‹ฌ์œผ๋กœ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.</p>
</footer>
</body>
</html>