:root{--color-bg:#100a05;--color-bg-2:#1a120a;--color-bg-3:#241b10;--color-fg:#f4e9d2;--color-fg-dim:#a59880;--color-fg-faint:#5c5043;--phase-1:#e8c882;--phase-2:#ed7e2f;--phase-3:#a25530;--success:#d4c44a;--danger:#e85040;--border:#3a2c1c;--border-strong:#5c4530;--font-mono:"JetBrains Mono", "Cascadia Code", "Menlo", "Consolas", monospace;--font-sans:"Inter", system-ui, sans-serif;--font-arabic:"IBM Plex Sans Arabic", "Cairo", "Tajawal", system-ui, sans-serif;--space-1:4px;--space-2:8px;--space-3:16px;--space-4:24px;--space-5:32px;--space-6:48px;--t-fast:.1s ease;--t:.16s cubic-bezier(.2, .8, .2, 1)}*{box-sizing:border-box}html,body{background:var(--color-bg);color:var(--color-fg);font-family:var(--font-mono);-webkit-font-smoothing:antialiased;min-height:100vh;margin:0;padding:0;line-height:1.5}[dir=rtl] body{font-family:var(--font-arabic)}body:before{content:"";pointer-events:none;z-index:0;background-image:repeating-linear-gradient(#0000 0 2px,#ffd2a004 3px);position:fixed;inset:0}a{color:var(--phase-1);transition:color var(--t-fast);text-decoration:none}a:hover{color:var(--color-fg)}::selection{background:var(--phase-1);color:var(--color-bg)}#app{z-index:2;flex-direction:column;min-height:100vh;display:flex;position:relative}.bg-decor{pointer-events:none;z-index:1;color:var(--color-fg-faint);font-family:var(--font-mono);-webkit-user-select:none;user-select:none;position:fixed;inset:0;overflow:hidden}.bg-decor pre{white-space:pre;letter-spacing:.02em;margin:0;font-weight:400;line-height:1.4;position:absolute}.bg-cat{top:96px;opacity:.32;width:110px;height:auto;image-rendering:pixelated;image-rendering:crisp-edges;inset-inline-end:32px}.bg-memory-tl{top:96px;opacity:.1;font-size:11px;inset-inline-start:24px;-webkit-mask-image:linear-gradient(90deg,#000 0% 30%,#0000 100%);mask-image:linear-gradient(90deg,#000 0% 30%,#0000 100%)}.bg-memory-br{bottom:64px;opacity:.1;text-align:end;font-size:11px;inset-inline-end:24px;-webkit-mask-image:linear-gradient(270deg,#000 0% 30%,#0000 100%);mask-image:linear-gradient(270deg,#000 0% 30%,#0000 100%)}@media (max-width:1300px){.bg-cat{opacity:.18;width:80px}.bg-memory-tl,.bg-memory-br{opacity:.05}}@media (max-width:1080px){.bg-decor{display:none}}.site-header{background:var(--color-bg-2);border-bottom:2px solid var(--phase-1);z-index:10;position:sticky;top:0}.header-inner{max-width:1100px;padding:var(--space-3) var(--space-4);justify-content:space-between;align-items:center;margin:0 auto;display:flex}.brand{align-items:center;gap:var(--space-3);color:var(--color-fg);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;font-size:.95rem;font-weight:700;display:flex}.brand:hover{color:var(--color-fg)}.brand-cat{color:var(--phase-1);border:2px solid var(--phase-1);letter-spacing:.12em;background:0 0;align-items:center;padding:3px 9px;font-size:.72em;font-weight:700;display:inline-flex}.brand-text{color:var(--color-fg)}.lang-toggle{background:var(--color-bg);color:var(--color-fg);border:2px solid var(--border);cursor:pointer;font-family:var(--font-mono);letter-spacing:.05em;transition:var(--t-fast);padding:5px 14px;font-size:.82rem;font-weight:600}.lang-toggle:hover{border-color:var(--phase-1);color:var(--phase-1)}.lang-toggle:active{transform:translate(1px,1px)}#view{width:100%;max-width:1100px;padding:var(--space-5) var(--space-4) var(--space-6);flex:1;margin:0 auto}.status-bar{background:var(--color-bg-2);border-top:2px solid var(--border);font-family:var(--font-mono);color:var(--color-fg-dim);z-index:9;font-size:.78rem;position:sticky;bottom:0}.status-bar-inner{gap:var(--space-4);max-width:1100px;padding:var(--space-2) var(--space-4);text-transform:uppercase;letter-spacing:.08em;margin:0 auto;display:flex}.status-slot{align-items:center;gap:6px;display:flex}.status-slot-label{color:var(--color-fg-faint)}.status-slot-value{color:var(--color-fg);font-weight:600}.status-slot.score .status-slot-value{color:var(--phase-1)}.status-slot.solved .status-slot-value{color:var(--success)}.status-spacer{flex:1}.status-cursor{color:var(--phase-1);animation:1s steps(2,end) infinite blink}@keyframes blink{0%,50%{opacity:1}51%,to{opacity:0}}.hero{border:2px solid var(--phase-1);background:var(--color-bg-2);padding:var(--space-5) var(--space-4);margin-bottom:var(--space-6);position:relative}.hero:before{content:"┌─ welcome, intruder ──────";top:-10px;background:var(--color-bg);font-family:var(--font-mono);color:var(--phase-1);letter-spacing:.05em;padding:0 8px;font-size:.75rem;position:absolute;inset-inline-start:var(--space-3)}.hero-grid{gap:var(--space-2);text-align:center;grid-template-columns:1fr;display:grid}.hero-pre{font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--color-fg-dim);font-size:.78rem}.hero h1{font-family:var(--font-mono);letter-spacing:.02em;text-transform:uppercase;color:var(--phase-1);margin:0;font-size:2.4rem;font-weight:700;line-height:1.05}[dir=rtl] .hero h1{letter-spacing:0}.hero-sub{color:var(--color-fg-dim);margin:var(--space-2) auto 0;max-width:540px;font-size:.95rem;font-family:var(--font-sans)}[dir=rtl] .hero-sub{font-family:var(--font-arabic)}.phase{margin-bottom:var(--space-6)}.phase-header{align-items:center;gap:var(--space-3);margin-bottom:var(--space-4);display:flex}.phase-num{font-family:var(--font-mono);letter-spacing:.12em;color:var(--phase-color);background:var(--color-bg);border:2px solid var(--phase-color);text-transform:uppercase;justify-content:center;align-items:center;padding:4px 12px;font-size:.85rem;font-weight:700;display:inline-flex}.phase-text{flex:1}.phase-text h2{font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase;color:var(--color-fg);margin:0;font-size:1.05rem;font-weight:700}.phase-sub{color:var(--color-fg-dim);font-size:.82rem;font-family:var(--font-sans);letter-spacing:0;text-transform:none;margin:2px 0 0}[dir=rtl] .phase-sub{font-family:var(--font-arabic)}.phase-rule{background:var(--phase-color);flex-shrink:0;width:80px;height:2px}.phase[data-phase="1"]{--phase-color:var(--phase-1)}.phase[data-phase="2"]{--phase-color:var(--phase-2)}.phase[data-phase="3"]{--phase-color:var(--phase-3)}.level-grid{gap:var(--space-3);grid-template-columns:repeat(auto-fill,minmax(220px,1fr));display:grid}.level-card{--card-color:var(--phase-1);min-height:130px;padding:var(--space-3);background:var(--color-bg-2);border:2px solid var(--border);color:var(--color-fg);font-family:var(--font-mono);transition:transform var(--t), border-color var(--t), box-shadow var(--t);flex-direction:column;justify-content:space-between;text-decoration:none;display:flex;position:relative}.level-card[data-phase="1"]{--card-color:var(--phase-1)}.level-card[data-phase="2"]{--card-color:var(--phase-2)}.level-card[data-phase="3"]{--card-color:var(--phase-3)}.level-card:hover{color:var(--color-fg)}.level-card.unlocked:hover{border-color:var(--card-color);box-shadow:6px 6px 0 var(--card-color);transform:translate(-3px,-3px)}.level-card.unlocked:hover .level-num,.level-card.unlocked:hover .level-title{color:var(--card-color)}.level-card.locked{opacity:.4;cursor:not-allowed;pointer-events:none}.level-card.solved{border-color:var(--success)}.level-card.solved .level-num{color:var(--success)}.level-card.solved:hover{box-shadow:6px 6px 0 var(--success)}.level-card.boss{border-width:2px;border-color:var(--card-color);min-height:140px}.level-card.boss .level-num{color:var(--card-color)}.level-card.mega{border-width:3px;border-color:var(--phase-3);background:var(--color-bg-3);grid-column:span 2;min-height:160px}.level-card.mega .level-num{color:var(--phase-3);font-size:2rem}.level-card.mega .level-title{font-size:1.3rem}.level-card-header{justify-content:space-between;align-items:flex-start;display:flex}.level-num{font-family:var(--font-mono);color:var(--color-fg-dim);letter-spacing:.03em;transition:color var(--t);font-size:1.4rem;font-weight:700}.level-title{font-family:var(--font-mono);letter-spacing:.02em;text-transform:uppercase;margin-top:var(--space-3);transition:color var(--t);font-size:1rem;font-weight:600}.level-card-footer{margin-top:var(--space-2);font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--color-fg-faint);justify-content:space-between;align-items:center;font-size:.7rem;display:flex}.level-badge{color:var(--card-color);font-weight:700}.level-card.solved .level-badge{color:var(--success)}.level-points{color:var(--color-fg-faint)}.level-status{font-family:var(--font-mono);color:var(--color-fg-faint);font-size:1rem;font-weight:700}.level-status.solved-marker{color:var(--success)}.level-status.lock-marker{color:var(--color-fg-faint);opacity:.5}.level-page{gap:var(--space-4);flex-direction:column;display:flex}.level-header{gap:var(--space-3);border-bottom:2px solid var(--border);padding-bottom:var(--space-3);flex-direction:column;display:flex}.back-link{font-family:var(--font-mono);color:var(--color-fg-dim);text-transform:uppercase;letter-spacing:.06em;align-self:flex-start;font-size:.82rem}.back-link:hover{color:var(--phase-1)}.level-title-row{align-items:baseline;gap:var(--space-3);display:flex}.level-tag{font-family:var(--font-mono);color:var(--phase-1);border:2px solid var(--phase-1);background:var(--color-bg);letter-spacing:.04em;padding:4px 12px;font-size:1rem;font-weight:700}.level-title-row h1{font-family:var(--font-mono);letter-spacing:.02em;text-transform:uppercase;color:var(--color-fg);margin:0;font-size:1.6rem;font-weight:700}.todo-panel{padding:var(--space-5);background:var(--color-bg-2);border:2px dashed var(--border-strong);font-family:var(--font-mono);position:relative}.todo-panel:before{content:"┌─ todo ──";top:-10px;background:var(--color-bg);color:var(--color-fg-faint);letter-spacing:.06em;padding:0 8px;font-size:.72rem;position:absolute;inset-inline-start:var(--space-3)}.todo-title{margin:0 0 var(--space-2);color:var(--color-fg);font-size:.9rem}.todo-meta{color:var(--color-fg-faint);margin:0;font-size:.8rem}.todo-meta code{color:var(--phase-1)}.level-message{padding:var(--space-6) var(--space-4);text-align:center;color:var(--color-fg-dim);border:2px dashed var(--border);font-family:var(--font-mono)}.level-message p{margin:0 0 var(--space-3)}[dir=rtl] code,[dir=rtl] .mono,[dir=rtl] .level-num,[dir=rtl] .level-tag,[dir=rtl] .back-link,[dir=rtl] .brand-cat,[dir=rtl] .status-bar{direction:ltr;unicode-bidi:isolate}.share-modal{z-index:60;-webkit-backdrop-filter:blur(8px);opacity:0;padding:var(--space-4);background:#0a0806f0;justify-content:center;align-items:center;transition:opacity .24s;display:flex;position:fixed;inset:0;overflow-y:auto}.share-modal.open{opacity:1}.share-modal-inner{align-items:center;gap:var(--space-4);width:100%;max-width:700px;padding:var(--space-4);flex-direction:column;display:flex}.share-modal-title{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--phase-2);padding:var(--space-2) var(--space-4);border:2px solid var(--phase-2);font-size:1.2rem;font-weight:700}.share-card-host{width:100%;max-width:480px;padding:var(--space-3);background:var(--color-bg-2);border:2px solid var(--border);justify-content:center;display:flex}.share-card-canvas{image-rendering:auto;max-width:100%;height:auto;display:block;box-shadow:0 8px 32px #00000080}.share-card-loading,.share-card-error{padding:var(--space-5);text-align:center;font-family:var(--font-mono);color:var(--color-fg-dim)}.share-card-error{color:var(--danger)}.share-buttons{gap:var(--space-2);flex-wrap:wrap;justify-content:center;width:100%;max-width:480px;display:flex}.share-btn{background:var(--color-bg);border:2px solid var(--border);color:var(--color-fg);font-family:var(--font-mono);letter-spacing:.08em;cursor:pointer;text-transform:uppercase;transition:var(--t-fast);padding:9px 14px;font-size:.78rem;font-weight:700}.share-btn:hover{border-color:var(--phase-2);color:var(--phase-2)}.share-btn:active{transform:translate(1px,1px)}.share-btn-png{border-color:var(--phase-2);color:var(--phase-2)}.share-btn-png:hover{background:var(--phase-2);color:var(--color-bg)}.share-btn-copy{border-color:var(--success);color:var(--success)}.share-btn-copy:hover{background:var(--success);color:var(--color-bg)}.share-btn-native{border-color:var(--phase-1);color:var(--phase-1)}.share-btn-native:hover{background:var(--phase-1);color:var(--color-bg)}.share-btn-linkedin{color:#5b8bd4;border-color:#0a66c2}.share-btn-linkedin:hover{color:var(--color-fg);background:#0a66c2}.share-btn-twitter{border-color:var(--color-fg-dim);color:var(--color-fg)}.share-btn-twitter:hover{background:var(--color-fg);color:var(--color-bg)}.share-feedback{font-family:var(--font-mono);min-height:1.2em;color:var(--color-fg-dim);text-align:center;font-size:.85rem}.share-feedback[data-kind=success]{color:var(--success)}.share-feedback[data-kind=fail]{color:var(--danger)}.share-feedback[data-kind=info]{color:var(--phase-2)}.share-continue-btn{background:var(--color-bg);border:2px solid var(--phase-2);color:var(--phase-2);font-family:var(--font-mono);letter-spacing:.1em;cursor:pointer;text-transform:uppercase;transition:var(--t-fast);margin-top:var(--space-2);padding:10px 24px;font-size:.95rem;font-weight:700}.share-continue-btn:hover{background:var(--phase-2);color:var(--color-bg)}@media (max-width:600px){.share-card-host{max-width:100%}.share-btn{padding:8px 10px;font-size:.72rem}}.cert-page{gap:var(--space-4);flex-direction:column;display:flex}.cert-name-section{padding:var(--space-5) var(--space-4) var(--space-4);background:var(--color-bg-2);border:2px solid var(--phase-2);font-family:var(--font-mono);position:relative}.cert-name-section .panel-label{color:var(--phase-2)}.cert-name-blurb{margin:0 0 var(--space-3);font-family:var(--font-sans);color:var(--color-fg-dim);font-size:.95rem}[dir=rtl] .cert-name-blurb{font-family:var(--font-arabic)}.cert-name-form{gap:var(--space-2);flex-wrap:wrap;display:flex}.cert-name-input{background:var(--color-bg);border:2px solid var(--border);min-width:200px;color:var(--color-fg);font-family:var(--font-mono);transition:border-color var(--t-fast);flex:280px;padding:10px 14px;font-size:1rem}.cert-name-input:focus{border-color:var(--phase-2);outline:none}.cert-name-submit{background:var(--color-bg);border:2px solid var(--phase-2);color:var(--phase-2);font-family:var(--font-mono);letter-spacing:.1em;cursor:pointer;text-transform:uppercase;transition:var(--t-fast);padding:10px 22px;font-size:.88rem;font-weight:700}.cert-name-submit:hover{background:var(--phase-2);color:var(--color-bg)}.cert-name-submit:active{transform:translate(1px,1px)}.cert-canvas-host{padding:var(--space-3);background:var(--color-bg-2);border:2px solid var(--border);justify-content:center;display:flex;overflow-x:auto}.cert-canvas{image-rendering:auto;max-width:100%;height:auto;display:block;box-shadow:0 8px 32px #00000080}.cert-loading,.cert-error{padding:var(--space-5);text-align:center;font-family:var(--font-mono);color:var(--color-fg-dim)}.cert-error{color:var(--danger)}.cert-meta{gap:var(--space-5);padding:var(--space-3);background:var(--color-bg-2);border:2px dashed var(--border);font-family:var(--font-mono);flex-wrap:wrap;font-size:.9rem;display:flex}[dir=rtl] .cert-meta{text-align:start;direction:ltr}.cert-meta-row{gap:var(--space-2);display:flex}.cert-meta-label{color:var(--color-fg-faint);letter-spacing:.06em;text-transform:uppercase}.cert-meta-value{color:var(--phase-2);font-weight:700}.cert-actions{gap:var(--space-3);flex-wrap:wrap;display:flex}.cert-btn{background:var(--color-bg);border:2px solid var(--border);color:var(--color-fg);font-family:var(--font-mono);letter-spacing:.08em;cursor:pointer;text-transform:uppercase;transition:var(--t-fast);padding:10px 20px;font-size:.88rem;font-weight:700}.cert-btn:hover:not(:disabled){border-color:var(--phase-2);color:var(--phase-2)}.cert-btn:active:not(:disabled){transform:translate(1px,1px)}.cert-btn:disabled{opacity:.4;cursor:not-allowed}.cert-btn-png{border-color:var(--phase-2);color:var(--phase-2)}.cert-btn-png:hover:not(:disabled){background:var(--phase-2);color:var(--color-bg)}.cert-btn-pdf{border-color:var(--success);color:var(--success)}.cert-btn-pdf:hover:not(:disabled){background:var(--success);color:var(--color-bg)}.cert-btn-rename{border-color:var(--color-fg-faint);color:var(--color-fg-dim);margin-inline-start:auto;padding:8px 14px;font-size:.78rem}.cert-btn-rename:hover:not(:disabled){border-color:var(--color-fg-dim);color:var(--color-fg);background:0 0}.level-download{padding:var(--space-4);background:var(--color-bg-2);border:2px solid var(--phase-2);font-family:var(--font-mono);position:relative}.level-download .panel-label{color:var(--phase-2)}.dl-body{gap:var(--space-3);flex-direction:column;display:flex}.dl-link{align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);background:var(--color-bg);border:2px solid var(--phase-2);color:var(--phase-2);font-family:var(--font-mono);letter-spacing:.02em;transition:transform var(--t), background var(--t), color var(--t), box-shadow var(--t);align-self:flex-start;font-size:.95rem;font-weight:700;text-decoration:none;display:inline-flex}.dl-link:hover{color:var(--color-bg);background:var(--phase-2);box-shadow:6px 6px 0 var(--phase-2);transform:translate(-3px,-3px)}.dl-icon{font-size:1.2em}.dl-size{color:var(--color-fg-faint);font-size:.85em;font-weight:400}.dl-note{font-family:var(--font-sans);color:var(--color-fg-dim);margin:0;font-size:.88rem;line-height:1.5}[dir=rtl] .dl-note{font-family:var(--font-arabic)}.level-flag-input{padding:var(--space-4);background:var(--color-bg-2);border:2px solid var(--success);font-family:var(--font-mono);position:relative}.level-flag-input .panel-label{color:var(--success)}.flag-form{gap:var(--space-2);flex-wrap:wrap;display:flex}.flag-input{background:var(--color-bg);border:2px solid var(--border);min-width:200px;color:var(--color-fg);font-family:var(--font-mono);transition:border-color var(--t-fast);flex:280px;padding:10px 14px;font-size:.95rem}[dir=rtl] .flag-input{text-align:start;direction:ltr}.flag-input::placeholder{color:var(--color-fg-faint)}.flag-input:focus{border-color:var(--success);outline:none}.flag-input:disabled{opacity:.75;cursor:not-allowed;border-color:var(--success);color:var(--success)}.flag-submit{background:var(--color-bg);border:2px solid var(--success);color:var(--success);font-family:var(--font-mono);letter-spacing:.1em;cursor:pointer;text-transform:uppercase;transition:var(--t-fast);padding:10px 22px;font-size:.85rem;font-weight:700}.flag-submit:hover:not(:disabled){background:var(--success);color:var(--color-bg)}.flag-submit:active:not(:disabled){transform:translate(1px,1px)}.flag-submit:disabled{opacity:.45;cursor:not-allowed}.flag-feedback{margin-top:var(--space-2);font-family:var(--font-mono);letter-spacing:.02em;min-height:1.2em;font-size:.85rem}.flag-feedback[data-kind=success]{color:var(--success)}.flag-feedback[data-kind=fail]{color:var(--danger)}[dir=rtl] .flag-feedback{text-align:start;direction:ltr}.sim-level .level-header{border-bottom:2px solid var(--border);padding-bottom:var(--space-3)}.sim-level .level-title-row{align-items:center}.level-solved-mark{font-family:var(--font-mono);color:var(--success);margin-inline-start:var(--space-2);font-size:.85rem;font-weight:700}.level-boss-mark{font-family:var(--font-mono);color:var(--phase-3);letter-spacing:.14em;text-transform:uppercase;border:1px solid var(--phase-3);margin-inline-start:var(--space-2);padding:3px 8px;font-size:.72rem;font-weight:700}.level-brief,.level-source,.level-objective{padding:var(--space-4) var(--space-4) var(--space-3);background:var(--color-bg-2);border:2px solid var(--border);font-family:var(--font-mono);position:relative}.level-source{border-color:var(--phase-3)}.level-source .panel-label{color:var(--phase-3)}.c-source{font-family:var(--font-mono);color:var(--color-fg);white-space:pre;letter-spacing:0;background:0 0;margin:0;padding:0;font-size:.88rem;line-height:1.55;overflow-x:auto}[dir=rtl] .c-source{text-align:start;direction:ltr}.c-source code{font-family:inherit}.c-keyword{color:var(--phase-1);font-weight:600}.c-string{color:var(--success)}.c-number{color:var(--phase-2)}.c-comment{color:var(--color-fg-faint);font-style:italic}.panel-label{top:-10px;background:var(--color-bg);color:var(--color-fg-faint);letter-spacing:.14em;padding:0 8px;font-size:.72rem;font-weight:700;position:absolute;inset-inline-start:var(--space-3)}.level-objective .panel-label{color:var(--phase-2)}.level-objective{border-color:var(--phase-2)}.panel-body{font-family:var(--font-sans);color:var(--color-fg);margin:0;font-size:.95rem;line-height:1.6}[dir=rtl] .panel-body{font-family:var(--font-arabic)}.objective-body{font-family:var(--font-mono);color:var(--phase-2);font-weight:600}[dir=rtl] .objective-body{font-family:var(--font-arabic)}.level-actions{gap:var(--space-3);margin-top:var(--space-3);display:flex}.level-action-btn{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--color-fg-dim);background:var(--color-bg-2);border:2px solid var(--border);transition:var(--t-fast);padding:10px 20px;font-size:.88rem;font-weight:700;display:inline-block}.level-action-btn:hover{border-color:var(--phase-1);color:var(--phase-1)}.level-action-btn.primary{color:var(--success);border-color:var(--success)}.level-action-btn.primary:hover{background:var(--success);color:var(--color-bg)}.sim-stage{gap:var(--space-3);font-family:var(--font-mono);flex-direction:column;display:flex}.sim-board{background:var(--color-bg-2);border:2px solid var(--border);padding:var(--space-4);position:relative}.sim-frame-label{top:-10px;background:var(--color-bg);color:var(--phase-1);letter-spacing:.06em;gap:var(--space-3);padding:0 8px;font-size:.74rem;display:flex;position:absolute;inset-inline-start:var(--space-3)}.frame-label-base{color:var(--color-fg-faint)}.sim-regions{gap:var(--space-2);flex-direction:column;display:flex}.sim-region{border:2px solid var(--border);padding:var(--space-2) var(--space-3) var(--space-3);background:var(--color-bg);transition:border-color var(--t), box-shadow var(--t);position:relative}.sim-region.hidden{display:none}.sim-region.kind-buffer{border-color:var(--phase-1)}.sim-region.kind-local{border-color:var(--phase-2)}.sim-region.kind-saved_rbp{border-color:var(--color-border-strong)}.sim-region.kind-saved_rip{border-color:var(--phase-3)}.region-label{color:var(--color-fg-dim);margin-bottom:var(--space-2);letter-spacing:.04em;justify-content:space-between;align-items:center;font-size:.78rem;display:flex}.region-name{font-weight:700}.kind-buffer .region-name{color:var(--phase-1)}.kind-local .region-name{color:var(--phase-2)}.kind-saved_rip .region-name{color:var(--phase-3)}.region-addr{color:var(--color-fg-faint);font-size:.74rem}.region-bytes{flex-wrap:wrap;gap:4px;display:flex}.byte{background:var(--color-bg-2);border:1px solid var(--color-border);min-width:30px;color:var(--color-fg-dim);font-family:var(--font-mono);letter-spacing:.02em;transition:background var(--t-fast), color var(--t-fast), border-color var(--t-fast), transform var(--t-fast);justify-content:center;align-items:center;padding:6px 4px;font-size:.85rem;font-weight:600;display:inline-flex}.byte[data-state=initial]{color:var(--color-fg-faint)}.byte[data-state=modified]{background:var(--phase-1);color:var(--color-bg);border-color:var(--phase-1)}.byte[data-state=spilled]{background:var(--danger);color:var(--color-bg);border-color:var(--danger)}.byte.fx-flash{animation:.24s ease-out byteFlash}@keyframes byteFlash{0%{filter:brightness(1.5);transform:scale(1.4)}to{filter:brightness();transform:scale(1)}}.sim-region.fx-pulse{animation:.42s ease-out regionPulse}@keyframes regionPulse{0%{box-shadow:0 0 0 0 var(--phase-1)}60%{box-shadow:0 0 0 8px #0000}to{box-shadow:0 0 #0000}}.sim-region.fx-shake{animation:.32s cubic-bezier(.36,.07,.19,.97) both shake}@keyframes shake{10%,90%{transform:translate(-1px)}20%,80%{transform:translate(2px)}30%,50%,70%{transform:translate(-3px)}40%,60%{transform:translate(3px)}}.sim-panel{gap:var(--space-2);flex-direction:column;display:flex}.sim-controls{gap:var(--space-2);padding:var(--space-3);background:var(--color-bg-2);border:2px solid var(--border);flex-wrap:wrap;display:flex}.sim-input{background:var(--color-bg);border:2px solid var(--border);min-width:200px;color:var(--color-fg);font-family:var(--font-mono);transition:border-color var(--t-fast);flex:280px;padding:8px 12px;font-size:.92rem}[dir=rtl] .sim-input{text-align:start;direction:ltr}.sim-input::placeholder{color:var(--color-fg-faint)}.sim-input:focus{border-color:var(--phase-1);outline:none}.sim-mode{background:var(--color-bg);color:var(--phase-1);border:2px solid var(--phase-1);font-family:var(--font-mono);letter-spacing:.06em;cursor:pointer;padding:6px 10px;font-size:.85rem;font-weight:700}.sim-mode:disabled{opacity:.4;cursor:not-allowed}.sim-btn{background:var(--color-bg);border:2px solid var(--border);color:var(--color-fg);font-family:var(--font-mono);letter-spacing:.08em;cursor:pointer;transition:var(--t-fast);text-transform:uppercase;padding:8px 16px;font-size:.85rem;font-weight:700}.sim-btn:hover{border-color:var(--phase-1);color:var(--phase-1)}.sim-btn:active{transform:translate(1px,1px)}.sim-btn:disabled{opacity:.4;cursor:not-allowed;transform:none}.sim-run{border-color:var(--phase-2);color:var(--phase-2)}.sim-run:hover:not(:disabled){background:var(--phase-2);color:var(--color-bg)}.sim-step{border-color:var(--phase-1);color:var(--phase-1)}.sim-step:hover:not(:disabled){background:var(--phase-1);color:var(--color-bg)}.sim-helper{border-color:var(--success);color:var(--success)}.sim-helper:hover:not(:disabled){background:var(--success);color:var(--color-bg)}.sim-preview{font-family:var(--font-mono);color:var(--color-fg-faint);min-height:22px;padding:0 var(--space-1);font-size:.82rem}[dir=rtl] .sim-preview{text-align:start;direction:ltr}.sim-status{font-family:var(--font-mono);padding:var(--space-3);background:var(--color-bg-2);border:2px dashed var(--border);min-height:48px;color:var(--color-fg-dim);letter-spacing:.01em;font-size:.88rem}.sim-status[data-kind=info]{color:var(--color-fg-dim)}.sim-status[data-kind=warn]{border-color:var(--phase-2);color:var(--phase-2)}.sim-status[data-kind=fail]{border-color:var(--danger);color:var(--danger)}.sim-status[data-kind=success]{border-color:var(--success);color:var(--success)}[dir=rtl] .sim-status{text-align:start;direction:ltr}.companion{bottom:56px;z-index:8;align-items:flex-end;gap:var(--space-2);pointer-events:none;display:flex;position:fixed;inset-inline-end:24px}.companion-sprite{width:132px;height:auto;image-rendering:pixelated;image-rendering:crisp-edges;pointer-events:auto;filter:drop-shadow(0 6px 14px #00000073);flex-shrink:0;animation:2.4s ease-in-out infinite companionBob}@keyframes companionBob{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}.companion-bubble{min-width:200px;max-width:360px;padding:var(--space-3) var(--space-4) var(--space-4) var(--space-3);background:var(--color-bg-2);border:2px solid var(--phase-2);pointer-events:auto;cursor:pointer;margin-bottom:24px;animation:.22s cubic-bezier(.2,.7,.2,1) bubbleRise;position:relative;box-shadow:0 8px 24px #0006}.companion-bubble[hidden]{display:none}@keyframes bubbleRise{0%{opacity:0;transform:translateY(6px)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}.companion-bubble:after{content:"";bottom:28px;border-style:solid;border-width:8px 0 8px 12px;border-color:transparent transparent transparent var(--phase-2);width:0;height:0;position:absolute;inset-inline-end:-12px}[dir=rtl] .companion-bubble:after{border-width:8px 12px 8px 0;border-color:transparent var(--phase-2) transparent transparent;inset-inline:-12px auto}.companion-bubble:before{content:"┌─ cookie ─";top:-10px;background:var(--color-bg);font-family:var(--font-mono);color:var(--phase-2);letter-spacing:.06em;padding:0 8px;font-size:.7rem;position:absolute;inset-inline-start:var(--space-3)}.companion-text{font-family:var(--font-sans);color:var(--color-fg);white-space:pre-wrap;min-height:2.2em;font-size:.92rem;line-height:1.5}[dir=rtl] .companion-text{font-family:var(--font-arabic)}.companion-next{bottom:6px;color:var(--phase-2);font-family:var(--font-mono);cursor:pointer;background:0 0;border:none;padding:2px 6px;font-size:1rem;font-weight:700;animation:1.4s ease-in-out infinite nextPulse;position:absolute;inset-inline-end:var(--space-3)}@keyframes nextPulse{0%,to{opacity:.45}50%{opacity:1}}@media (max-width:1100px){.companion-sprite{width:100px}.companion-bubble{min-width:160px;max-width:280px}}@media (max-width:820px){.companion{display:none}}.dialogue{align-items:flex-end;gap:var(--space-3);margin:var(--space-3) 0;cursor:pointer;animation:.32s cubic-bezier(.2,.7,.2,1) both dialogueRise;display:flex}@keyframes dialogueRise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.dialogue-sprite{width:96px;height:auto;image-rendering:pixelated;image-rendering:crisp-edges;flex-shrink:0;animation:2.4s ease-in-out infinite dialogueBob}@keyframes dialogueBob{0%,to{transform:translateY(0)}50%{transform:translateY(-2px)}}.dialogue-box{padding:var(--space-3) var(--space-4) var(--space-3) var(--space-3);background:var(--color-bg-2);border:2px solid var(--phase-2);font-family:var(--font-mono);flex:1;min-height:80px;position:relative}.dialogue-box:before{content:"┌─ cookie ─";top:-10px;background:var(--color-bg);color:var(--phase-2);letter-spacing:.06em;padding:0 8px;font-size:.72rem;position:absolute;inset-inline-start:var(--space-3)}.dialogue-text{font-family:var(--font-sans);color:var(--color-fg);white-space:pre-wrap;min-height:2.4em;font-size:.96rem;line-height:1.55}[dir=rtl] .dialogue-text{font-family:var(--font-arabic)}.dialogue-next{bottom:var(--space-2);color:var(--phase-2);font-family:var(--font-mono);cursor:pointer;background:0 0;border:none;padding:4px 8px;font-size:1rem;font-weight:700;animation:1.4s ease-in-out infinite nextPulse;position:absolute;inset-inline-end:var(--space-3)}.level-hints{padding:var(--space-4) var(--space-4) var(--space-3);background:var(--color-bg-2);border:2px solid var(--border);font-family:var(--font-mono);position:relative}.hints-list{gap:var(--space-2);flex-direction:column;display:flex}.hint-item{padding:var(--space-2) var(--space-3);background:var(--color-bg);border:2px solid var(--border);transition:border-color var(--t), opacity var(--t)}.hint-item.locked{opacity:.45}.hint-item.revealed{border-color:var(--phase-1)}.hint-header{margin-bottom:var(--space-2);justify-content:space-between;align-items:center;display:flex}.hint-tier{letter-spacing:.12em;color:var(--color-fg-dim);text-transform:uppercase;font-size:.78rem;font-weight:700}.hint-item.revealed .hint-tier{color:var(--phase-1)}.hint-cost{letter-spacing:.08em;color:var(--color-fg-faint);font-size:.74rem}.hint-item.revealed .hint-cost{color:var(--phase-1)}.hint-reveal{border:1px dashed var(--border-strong);width:100%;color:var(--color-fg-dim);font-family:var(--font-mono);letter-spacing:.1em;cursor:pointer;text-transform:uppercase;transition:var(--t-fast);background:0 0;padding:8px 12px;font-size:.82rem;font-weight:700}.hint-reveal:hover{border-color:var(--phase-1);color:var(--phase-1);background:var(--color-bg-2)}.hint-body{font-family:var(--font-sans);color:var(--color-fg);margin:0;font-size:.92rem;line-height:1.55}[dir=rtl] .hint-body{font-family:var(--font-arabic)}.hint-locked{font-family:var(--font-sans);color:var(--color-fg-faint);font-size:.85rem;font-style:italic}[dir=rtl] .hint-locked{font-family:var(--font-arabic)}.cutscene{z-index:50;-webkit-backdrop-filter:blur(6px);opacity:0;background:#0a0806f0;justify-content:center;align-items:center;transition:opacity .28s;display:flex;position:fixed;inset:0}.cutscene.open{opacity:1}.cutscene-inner{width:92%;max-width:720px;padding:var(--space-5) var(--space-4);align-items:center;gap:var(--space-4);flex-direction:column;display:flex}.cutscene-title{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--phase-2);border:2px solid var(--phase-2);padding:var(--space-2) var(--space-4);font-size:1.6rem;font-weight:700;animation:.52s cubic-bezier(.2,.7,.2,1) both cutsceneTitleIn}@keyframes cutsceneTitleIn{0%{opacity:0;transform:translateY(-12px)scale(.95)}to{opacity:1;transform:translateY(0)scale(1)}}.cutscene-stage{justify-content:center;width:100%;animation:.72s .2s both cutsceneStageIn;display:flex}@keyframes cutsceneStageIn{0%{opacity:0}to{opacity:1}}.cutscene-dialogue-host{width:100%}.cutscene-dialogue-host .dialogue{margin:0}.cutscene-dialogue-host .dialogue-sprite{width:128px}.cutscene-continue{background:var(--color-bg);border:2px solid var(--phase-2);color:var(--phase-2);font-family:var(--font-mono);letter-spacing:.1em;cursor:pointer;text-transform:uppercase;transition:var(--t-fast);padding:10px 24px;font-size:.95rem;font-weight:700;animation:.3s both cutsceneContinueIn}@keyframes cutsceneContinueIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.cutscene-continue:hover{background:var(--phase-2);color:var(--color-bg)}.solved-panel{margin-top:var(--space-3);padding:var(--space-4);background:var(--color-bg-2);border:2px solid var(--success);text-align:center;font-family:var(--font-mono);animation:.42s cubic-bezier(.2,.7,.2,1) both solvedRise}@keyframes solvedRise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.solved-title{letter-spacing:.24em;color:var(--success);margin-bottom:var(--space-3);font-size:.78rem;font-weight:700}.solved-flag{font-family:var(--font-mono);color:var(--success);background:var(--color-bg);border:2px dashed var(--success);margin-bottom:var(--space-3);letter-spacing:.02em;-webkit-user-select:all;user-select:all;padding:8px 18px;font-size:1.15rem;font-weight:700;display:inline-block}.solved-message{color:var(--color-fg-dim);max-width:540px;font-size:.92rem;font-family:var(--font-sans);margin:0 auto}[dir=rtl] .solved-message{font-family:var(--font-arabic)}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (max-width:720px){.hero h1{font-size:1.8rem}.level-card.mega{grid-column:span 1}#view{padding:var(--space-4) var(--space-3)}.status-bar-inner{gap:var(--space-2);font-size:.7rem}}
