@import"https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700;800&display=swap";:root{--bg-primary: #f8f5ec;--bg-secondary: #ffffff;--bg-tertiary: #f0ebd8;--text-primary: #1a1a1a;--text-secondary: #4a4a4a;--text-muted: #7a7a7a;--accent-primary: #D41159;--accent-secondary: #1A85FF;--accent-tertiary: #ffd700;--success: #00c853;--error: #ff3d00;--warning: #ffea00;--paper-border: 2px solid var(--text-primary);--paper-shadow: 4px 4px 0px rgba(0, 0, 0, .9);--glass-bg: var(--bg-secondary);--glass-border: rgba(0, 0, 0, .1);--glass-shadow: var(--paper-shadow);--overlay-bg: rgba(248, 245, 236, .85);--highlight-bg: rgba(0, 229, 255, .15);--success-bg: rgba(0, 200, 83, .15);--error-bg: rgba(255, 61, 0, .15);font-family:Outfit,system-ui,-apple-system,sans-serif;line-height:1.5;font-weight:500;color:var(--text-primary);background-color:var(--bg-primary);background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)' opacity='0.05'/%3E%3C/svg%3E");background-attachment:fixed;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*,*:before,*:after{box-sizing:border-box}body{margin:0;min-height:100vh;display:flex;flex-direction:column}#root{flex-grow:1;display:flex;flex-direction:column}.glass-panel{background:var(--bg-secondary);border:var(--paper-border);box-shadow:var(--paper-shadow);border-radius:8px}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.animate-fade-in{animation:fadeIn .4s ease-out forwards}@keyframes pulse{0%{transform:scale(1)}50%{transform:scale(1.05)}to{transform:scale(1)}}.animate-pulse{animation:pulse 2s infinite}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:var(--bg-primary)}::-webkit-scrollbar-thumb{background:var(--bg-tertiary);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--accent-primary)}h1,h2,h3,h4,h5,h6{margin-top:0;font-weight:700;letter-spacing:-.02em}h1{font-size:3.5rem;color:var(--text-primary)}.btn-primary{background:var(--bg-tertiary);color:var(--text-primary);border:var(--paper-border);padding:10px 20px;border-radius:6px;font-weight:600;cursor:pointer;transition:all .2s;box-shadow:2px 2px #000000e6;position:relative;overflow:hidden}.btn-primary:hover{transform:translate(-2px,-2px);box-shadow:4px 4px #000000e6}.btn-primary:active{transform:translate(2px,2px);box-shadow:0 0 #000000e6}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:var(--overlay-bg);z-index:1000;display:flex;justify-content:center;align-items:center;padding:20px}.modal-content{background:var(--bg-secondary);border:var(--paper-border);box-shadow:var(--paper-shadow);border-radius:8px;width:100%;max-width:700px;max-height:75vh;overflow-y:auto;position:relative;display:flex;flex-direction:column}.modal-content::-webkit-scrollbar{width:10px}.modal-content::-webkit-scrollbar-track{background:var(--bg-secondary);border-radius:0 8px 8px 0}.modal-content::-webkit-scrollbar-thumb{background:var(--text-muted);border-radius:4px}.modal-content::-webkit-scrollbar-thumb:hover{background:var(--text-primary)}.modal-header{padding:20px 24px;border-bottom:var(--paper-border);display:flex;justify-content:space-between;align-items:center;position:sticky;top:0;background:var(--bg-tertiary);z-index:10;border-top-left-radius:6px;border-top-right-radius:6px}.modal-header h2{margin:0;font-size:1.5rem;color:var(--text-primary)}.modal-close{background:transparent;border:none;color:var(--text-secondary);font-size:1.5rem;cursor:pointer;padding:4px;line-height:1;transition:color .2s}.modal-close:hover{color:var(--accent-primary)}.modal-body{padding:24px;text-align:left}.modal-body section{margin-bottom:32px}.modal-body h3{color:var(--accent-secondary);margin-bottom:16px;font-size:1.2rem}.modal-body ul{padding-left:20px;margin-bottom:16px}.modal-body li{margin-bottom:8px;color:var(--text-secondary)}.modal-body strong{color:var(--text-primary)}.mini-grid-container{display:flex;gap:20px;flex-wrap:wrap;margin-top:16px}.mini-hint-card{background:var(--bg-tertiary);border:1px solid var(--glass-border);border-radius:12px;padding:16px;display:flex;flex-direction:column;align-items:center;gap:12px;width:140px;text-align:center}.mini-hint-card span{font-size:.9rem;color:var(--text-primary);font-weight:500}.mini-grid{display:grid;gap:2px;background:var(--glass-border);border:2px solid var(--glass-border);border-radius:4px;overflow:hidden}.mini-cell{width:20px;height:20px;background:var(--bg-primary);display:flex;justify-content:center;align-items:center;font-size:12px}.mini-cell.room-a{background:#3498db33}.mini-cell.room-b{background:#e74c3c33}.mini-cell.highlight{background:#00e5ff33;border:1px solid var(--accent-secondary)}.spotlight{position:relative;z-index:1001!important;box-shadow:0 0 0 4px var(--accent-primary),0 0 20px 10px #00bfa580!important;animation:pulse-spotlight 1.5s infinite;border-radius:inherit}@keyframes pulse-spotlight{0%{box-shadow:0 0 0 0 var(--accent-primary),0 0 20px 10px #00bfa580}50%{box-shadow:0 0 0 4px var(--accent-primary),0 0 30px 15px #00bfa5b3}to{box-shadow:0 0 0 0 var(--accent-primary),0 0 20px 10px #00bfa580}}.error-shake{animation:shake .4s cubic-bezier(.36,.07,.19,.97) both;border:2px solid var(--danger)!important}@keyframes shake{10%,90%{transform:translate3d(-1px,0,0)}20%,80%{transform:translate3d(2px,0,0)}30%,50%,70%{transform:translate3d(-4px,0,0)}40%,60%{transform:translate3d(4px,0,0)}}.tutorial-dim-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:var(--overlay-bg);z-index:1000;pointer-events:none;transition:opacity .3s}.tutorial-active .glass-panel{backdrop-filter:none!important;-webkit-backdrop-filter:none!important;transform:none!important;animation:none!important}.hint-scroll-container::-webkit-scrollbar{width:10px}.hint-scroll-container::-webkit-scrollbar-track{background:var(--bg-primary);border-radius:4px}.hint-scroll-container::-webkit-scrollbar-thumb{background:var(--text-muted);border-radius:4px}.hint-scroll-container::-webkit-scrollbar-thumb:hover{background:var(--text-primary)}@keyframes fill-ring{0%{stroke-dasharray:0 100;opacity:.5}to{stroke-dasharray:100 100;opacity:1}}.long-press-ring{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) rotate(-90deg);width:90%;height:90%;pointer-events:none;z-index:10}.long-press-ring circle{fill:none;stroke:var(--accent-primary);stroke-width:6;stroke-dasharray:0 100;animation:fill-ring .4s linear forwards}.game{display:flex;flex-direction:column;gap:20px;max-width:1000px;margin:0 auto;padding:20px;width:100%}.game-header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.game-title{font-size:1.8rem;margin:0}.game-title-short{display:none}.game-goal{margin:4px 0 0;font-size:1rem;color:var(--text-secondary)}.game-toolbar{padding:16px;display:flex;gap:8px;flex-wrap:wrap;align-items:center}.game-columns{display:flex;gap:20px;flex-wrap:wrap;justify-content:center}.game-side{display:flex;flex-direction:column;gap:16px;flex:0 0 auto;width:300px;max-height:calc(100vh - 160px);max-height:calc(100dvh - 160px);overflow-y:auto;padding-right:12px}.game-board-col{flex:1 1 400px;max-width:550px;min-width:0}.playfield-grid,.playfield-cell{touch-action:manipulation;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}.hint-row{display:flex;align-items:flex-start;gap:8px;min-height:28px;cursor:pointer;line-height:1.3;font-size:.85rem}.hint-checkbox{width:20px;height:20px;flex-shrink:0;border:2px solid var(--text-primary);background:#fff;border-radius:4px;display:flex;justify-content:center;align-items:center;margin-top:1px;box-shadow:1px 1px #00000080}@media (max-width: 1000px){:root{background-attachment:scroll}.game-side{max-height:none;overflow-y:visible;padding-right:0}.hint-row{min-height:44px;align-items:center;font-size:.95rem}.hint-checkbox{width:24px;height:24px;margin-top:0}}@media (max-width: 700px){.game{padding:12px;gap:12px}.game-side{width:100%}.game-board-col{flex-basis:100%;max-width:none;order:-1}.game-title{display:none}.game-title-short{display:block;font-size:1.3rem;margin:0}.game-goal{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}.game-goal.expanded{white-space:normal}.game-toolbar{padding:10px;gap:6px}.game-toolbar .btn-primary{padding:8px 10px;font-size:.85rem;min-height:40px}.game-toolbar strong{display:none}.menu-panel{margin:1rem!important;padding:1.5rem!important}.menu-code-row{flex-wrap:wrap}.menu-code-row input{width:100%!important}h1{font-size:2.6rem}}.tutorial-overlay{position:fixed;bottom:30px;left:50%;background:var(--bg-secondary);border:var(--paper-border);box-shadow:var(--paper-shadow);padding:20px 30px;border-radius:16px;z-index:1100;max-width:600px;width:90%;display:flex;flex-direction:column;gap:16px;align-items:center;text-align:center;animation:slideUp .3s ease-out;-webkit-user-select:none;user-select:none}@keyframes slideUp{0%{transform:translate(-50%,100%);opacity:0}to{transform:translate(-50%);opacity:1}}.tutorial-message{font-size:1.2rem;color:var(--text-primary);line-height:1.5}.tutorial-icon{font-size:2rem;display:block;margin-bottom:8px}.tutorial-buttons{display:flex;gap:12px;justify-content:center}@media (max-width: 700px){.tutorial-overlay{top:8px;bottom:auto;left:8px;right:8px;width:auto;max-width:none;transform:none!important;animation:none;cursor:default!important;padding:10px 12px;gap:8px;align-items:stretch;text-align:left;border-radius:12px}.tutorial-message{font-size:.95rem;line-height:1.35;display:flex;gap:8px;align-items:flex-start}.tutorial-icon{font-size:1.3rem;display:inline;margin:0;flex-shrink:0}.tutorial-buttons{justify-content:flex-end;gap:8px}.tutorial-buttons .btn-primary{padding:6px 10px;font-size:.85rem}.tutorial-active{scroll-padding-top:120px}.spotlight{scroll-margin-top:130px;scroll-margin-bottom:24px}}
