.navbar{z-index:1000;box-sizing:border-box;background:#000;border-bottom-right-radius:0;align-items:center;padding:.75rem 1rem;display:flex;position:fixed;top:0;left:0}.navbar-link{color:#fff;align-items:center;gap:.5rem;text-decoration:none;transition:opacity .2s;display:flex}.navbar-link:hover{opacity:.8}.navbar-logo{flex-shrink:0;width:20px;height:20px;display:block}.navbar-text{color:#fff;white-space:nowrap;font-size:1rem;font-weight:600}@media (max-width:768px){.navbar{padding:.6rem .8rem}.navbar-text{font-size:.9rem}.navbar-logo{width:18px;height:18px}}.visualize-page{background-color:#fff;flex-direction:column;min-height:100vh;display:flex}.visualize-header{color:#000;text-align:center;background:#fff;border-bottom:2px double #000;padding:2rem 1rem 1.5rem}.visualize-header h1{letter-spacing:.03em;text-transform:uppercase;margin:0;font-family:Georgia,Times New Roman,Times,serif;font-size:2.5rem;font-weight:700}.visualize-header .header-link{color:inherit;cursor:pointer;text-decoration:none;transition:opacity .2s}.visualize-header .header-link:hover{opacity:.6}.visualize-header .subtitle{color:#666;letter-spacing:.05em;text-transform:uppercase;margin:.5rem 0 0;font-family:Georgia,Times New Roman,Times,serif;font-size:.75rem;font-style:normal;font-weight:400}.controls{background:#fff;border-bottom:2px double #000;flex-direction:column;justify-content:center;align-items:center;gap:1rem;padding:1.5rem;display:flex}@media (min-width:768px){.controls{flex-direction:row;gap:1.5rem}}.date-navigation{background:#fff;border:none;align-items:center;gap:1rem;padding:.5rem 1.25rem;display:flex}.nav-button{color:#000;cursor:pointer;background:0 0;border:none;padding:.25rem .75rem;font-family:Georgia,Times New Roman,Times,serif;font-size:1.25rem;font-weight:400;line-height:1;transition:all .2s}.nav-button:hover:not(:disabled){color:#666;opacity:.7}.nav-button:disabled{color:#ccc;cursor:not-allowed;opacity:.3}.current-date{color:#121212;text-align:center;letter-spacing:.01em;text-transform:uppercase;min-width:250px;font-family:Georgia,Times New Roman,Times,serif;font-size:.875rem;font-weight:400;line-height:1.4}.today-indicator{text-align:center;background:linear-gradient(135deg,#f0f9ff 0%,#e0f2fe 100%);border-top:1px solid #38bdf8;border-bottom:1px solid #38bdf8;padding:.5rem 1rem}.today-badge{color:#0284c7;text-transform:uppercase;letter-spacing:.1em;background:#fff;border:1px solid #38bdf8;border-radius:3px;padding:.25rem .75rem;font-family:Georgia,Times New Roman,Times,serif;font-size:.7rem;font-weight:600;display:inline-block;box-shadow:0 1px 3px #0284c726}.difficulty-tabs{border:none;gap:0;display:flex;overflow:hidden}.tab{color:#666;cursor:pointer;text-transform:uppercase;letter-spacing:.05em;background:#fff;border:none;border-right:1px solid #ddd;padding:.5rem 1.25rem;font-family:Georgia,Times New Roman,Times,serif;font-size:.875rem;font-weight:400;line-height:1;transition:all .2s}.tab:last-child{border-right:none}.tab:hover{color:#000;background:0 0}.tab.active{color:#000;text-shadow:.5px 0;background:0 0;font-weight:400}.visualize-content{flex-direction:column;flex:1;justify-content:flex-start;align-items:center;gap:1.5rem;padding:1.5rem 1rem;display:flex}.visualization-description{text-align:center;background:#fff;width:100%;max-width:1200px;padding:0 2rem .75rem}.main-visualization-container{flex-direction:column;justify-content:flex-start;align-items:center;gap:1rem;width:100%;max-width:1200px;display:flex}@media (min-width:1024px){.main-visualization-container{flex-direction:row;justify-content:center;align-items:flex-start;gap:1.5rem}.board-section,.controls-section{flex:none}}.visualization-description h2{letter-spacing:.05em;text-transform:uppercase;color:#000;margin:0 0 .25rem;font-family:Georgia,Times New Roman,Times,serif;font-size:1.25rem;font-weight:700}.visualization-description p{color:#666;margin:0;font-family:Georgia,Times New Roman,Times,serif;font-size:.875rem;font-style:normal}.status{text-align:center;background:#fff;border:2px solid #000;max-width:500px;padding:2rem}.status.loading{flex-direction:column;align-items:center;gap:1rem;display:flex}.status.loading p{font-family:Georgia,Times New Roman,Times,serif;font-size:1rem;font-style:italic}.spinner{border:3px solid #e0e0e0;border-top-color:#000;border-radius:50%;width:40px;height:40px;animation:1s linear infinite spin}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.status.error{border:3px solid #8b0000}.status.error h3{color:#8b0000;text-transform:uppercase;letter-spacing:.05em;margin-top:0;font-family:Georgia,Times New Roman,Times,serif;font-weight:700}.status.error p{font-family:Georgia,Times New Roman,Times,serif}.board-section{flex:0 auto;justify-content:center;min-width:0;display:flex}.board-container{justify-content:center;align-items:center;display:flex}.pips-board{box-sizing:border-box}.cell{background-color:#e8e8e8;border-radius:0;min-width:35px;min-height:35px;position:relative}.empty-cell{background-color:#0000;border:none}.domino-left{background-color:#fff;border:2px solid #000;border-right:none;border-radius:0;position:relative}.domino-left:after{content:"";background-color:#999;width:1.5px;position:absolute;top:20%;bottom:20%;right:0}.domino-right{background-color:#fff;border:2px solid #000;border-left:none;border-radius:0;position:relative}.domino-top{background-color:#fff;border:2px solid #000;border-bottom:none;border-radius:0;position:relative}.domino-top:after{content:"";background-color:#999;height:1.5px;position:absolute;bottom:0;left:20%;right:20%}.domino-bottom{background-color:#fff;border:2px solid #000;border-top:none;border-radius:0;position:relative}.region-cell{z-index:0}.domino-left,.domino-right,.domino-top,.domino-bottom{z-index:2}.controls-section{flex-direction:column;flex-shrink:0;align-items:center;gap:1rem;width:100%;max-width:350px;display:flex}.stats-panel{background:#fafafa;border:1px solid #e0e0e0;border-radius:8px;flex-direction:column;gap:.75rem;width:100%;padding:1.25rem;display:flex;box-shadow:0 2px 4px #0000000d}.stat-item{justify-content:space-between;align-items:center;padding:.25rem 0;font-family:Georgia,Times New Roman,Times,serif;font-size:.875rem;display:flex}.stat-label{color:#666;font-weight:400}.stat-value{color:#000;font-size:1rem;font-weight:600}.solved-indicator{color:#047857;text-transform:uppercase;letter-spacing:.05em;background:linear-gradient(135deg,#f0fdf4 0%,#dcfce7 100%);border:1.5px solid #86efac;border-radius:6px;justify-content:center;margin-top:.25rem;padding:.75rem;font-size:.875rem;font-weight:600;box-shadow:0 2px 4px #10b98126}.control-buttons{justify-content:stretch;gap:.75rem;width:100%;display:flex}.control-button{cursor:pointer;text-transform:uppercase;letter-spacing:.05em;border:none;border-radius:8px;flex:1;justify-content:center;align-items:center;padding:12px 20px;font-family:Georgia,Times New Roman,Times,serif;font-size:.8rem;font-weight:600;transition:all .2s;display:inline-flex;box-shadow:0 2px 4px #0000001a}.solve-button{color:#fff;background-color:#000}.solve-button:hover:not(:disabled){background-color:#222;box-shadow:0 3px 6px #00000026}.solve-button:disabled{color:#ccc;cursor:not-allowed;background-color:#666;box-shadow:0 2px 4px #0000000d}.play-pause-button{color:#fff;background-color:#000}.play-pause-button:hover:not(:disabled){background-color:#222;box-shadow:0 3px 6px #00000026}.play-pause-button:disabled{color:#ccc;cursor:not-allowed;background-color:#666;box-shadow:0 2px 4px #0000000d}.reset-button{color:#000;background-color:#fff;border:2px solid #e0e0e0}.reset-button:hover:not(:disabled){background-color:#f8f8f8;border-color:#ccc;box-shadow:0 3px 6px #0000001a}.reset-button:disabled{opacity:.5;cursor:not-allowed}.speed-control{background:#fafafa;border:1px solid #e0e0e0;border-radius:8px;flex-direction:column;gap:.75rem;width:100%;padding:1rem;display:flex;box-shadow:0 2px 4px #0000000d}.speed-control label{color:#333;text-align:center;font-family:Georgia,Times New Roman,Times,serif;font-size:.875rem;font-weight:500}.speed-slider{appearance:none;cursor:pointer;background:linear-gradient(90deg,#e0e0e0 0% 100%);border-radius:3px;outline:none;width:100%;height:6px}.speed-slider::-webkit-slider-thumb{appearance:none;cursor:pointer;background:#000;border-radius:50%;width:18px;height:18px;transition:all .2s;box-shadow:0 2px 4px #0003}.speed-slider::-webkit-slider-thumb:hover{background:#222;transform:scale(1.1);box-shadow:0 3px 6px #0000004d}.speed-slider::-moz-range-thumb{cursor:pointer;background:#000;border:none;border-radius:50%;width:18px;height:18px;transition:all .2s;box-shadow:0 2px 4px #0003}.speed-slider::-moz-range-thumb:hover{background:#222;transform:scale(1.1);box-shadow:0 3px 6px #0000004d}.back-link{color:#666;text-transform:uppercase;letter-spacing:.05em;cursor:pointer;text-align:center;background:#fff;border:2px solid #e0e0e0;border-radius:8px;justify-content:center;align-items:center;width:100%;padding:10px 20px;font-family:Georgia,Times New Roman,Times,serif;font-size:.75rem;font-weight:500;text-decoration:none;transition:all .2s;display:inline-flex;box-shadow:0 2px 4px #0000000d}.back-link:hover{color:#000;background:#f8f8f8;border-color:#ccc;box-shadow:0 3px 6px #0000001a}.app-footer{text-align:center;background:#fff;border-top:2px double #000;margin-top:auto;padding:1.5rem}.app-footer p{color:#666;margin:.5rem 0;font-family:Georgia,Times New Roman,Times,serif;font-size:.875rem;font-style:normal}.app-footer a,.app-footer .footer-link{color:#000;border-bottom:1px solid #0000;font-weight:400;text-decoration:none;transition:border-color .2s}.app-footer a:hover,.app-footer .footer-link:hover{border-bottom-color:#000}@media (max-width:768px){.visualize-header h1{font-size:1.75rem}.visualize-header .subtitle{font-size:.7rem}.visualize-content{padding:1rem}.visualization-description{padding:.75rem 1rem}.visualization-description h2{font-size:1.25rem}.visualization-description p{font-size:.85rem}.controls-section{max-width:100%}.date-navigation{width:100%}.current-date{flex:1;min-width:auto;font-size:.75rem}.today-indicator{padding:.4rem .75rem}.today-badge{padding:.2rem .6rem;font-size:.65rem}.difficulty-tabs{width:100%}.tab{flex:1;padding:.5rem .75rem;font-size:.75rem}.control-buttons{flex-direction:column}.control-button{width:100%}}
