/* Local, prize-free demo games. All selectors stay within the demo module. */
.ng-demo{--demo-edge:#79538a;--demo-accent:#cfb0eb;--demo-gold:#e5c589;--demo-text:#f8f0ff;--demo-muted:#c4b6ce;color:var(--demo-text);width:100%;min-width:0;line-height:1.6}
.ng-demo *{box-sizing:border-box}
.ng-demo-notice{margin:0 0 16px!important;border:1px solid #836451;border-radius:12px;background:#60442b2e;color:#f0d39e;font-size:12px;padding:9px 12px;text-align:center;overflow-wrap:anywhere}
.ng-demo-instruction{font-size:13px;color:var(--demo-muted);margin:0 0 16px!important;overflow-wrap:anywhere}
.ng-demo-stats{display:flex;flex-wrap:wrap;justify-content:center;gap:7px;margin:0 0 16px}
.ng-demo-stats>span{min-width:72px;flex:1 1 72px;padding:9px 7px;border:1px solid #6c4a7b;border-radius:12px;background:linear-gradient(135deg,#44304f,#2b2035);font-size:11px;text-align:center;color:var(--demo-muted)}
.ng-demo-stats strong{display:block;font-size:17px;line-height:1.45;color:var(--demo-gold);font-variant-numeric:tabular-nums;white-space:nowrap}
.ng-demo button{font:inherit;touch-action:manipulation;-webkit-tap-highlight-color:transparent}
.ng-demo button:focus-visible{outline:3px solid #f3d8ff;outline-offset:3px}
.ng-demo-status{font-size:13px;min-height:44px;margin:15px 0 6px!important;color:#ebd9f7;text-align:center;overflow-wrap:anywhere}
.ng-demo-actions{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:10px;margin-top:10px}
.ng-demo-primary,.ng-demo-secondary{min-height:44px;padding:9px 18px;border-radius:13px;font-size:14px!important;font-weight:700!important;line-height:1.5!important;max-width:100%;white-space:normal;overflow-wrap:anywhere}
.ng-demo-primary{border:1px solid #e5b8f2!important;background:linear-gradient(135deg,#ddbef3,#ac7bc9);color:#21142b!important;box-shadow:0 4px 15px #08031044}
.ng-demo-secondary{border:1px solid #896298!important;color:#eddef6!important;background:#39283f}
.ng-demo-best{flex-basis:100%;text-align:center;font-size:12px;color:var(--demo-gold)}
.ng-demo-storage{color:#a593b3;text-align:center;margin:17px 0 0!important;font-size:11px;overflow-wrap:anywhere}
.ng-demo-note{color:#c9b6d6;padding:20px;text-align:center}
.ng-memory-board{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;max-width:360px;margin:auto}
.ng-memory-card{min-width:0;min-height:46px;aspect-ratio:1;border:1px solid #9363a6!important;border-radius:13px;background:linear-gradient(145deg,#58396b,#30213e);color:#d3ace6;font-size:clamp(20px,7vw,35px)!important;line-height:1;box-shadow:inset 0 1px 0 #e6c9f125,0 3px 8px #0f071c33;transition:background .15s,border-color .15s,transform .15s}
.ng-memory-card:not([aria-disabled=true]):hover{border-color:#dfb9f6!important;transform:translateY(-1px)}
.ng-memory-card.is-open{background:linear-gradient(140deg,#f0d9fa,#c9a5dd);color:#372044;border-color:#f4e1ff!important}
.ng-memory-card.is-matched{background:linear-gradient(140deg,#493648,#2e3039);border-color:#ccb77d!important;box-shadow:inset 0 0 0 1px #ccb77d33;cursor:default}
.ng-reaction-pad{display:flex;width:100%;min-height:182px;flex-direction:column;align-items:center;justify-content:center;gap:9px;padding:22px 12px;border:1px solid #9565aa!important;border-radius:20px;background:radial-gradient(circle at 50% 30%,#604177,#32203f);color:#f6e8ff!important;text-align:center;box-shadow:inset 0 1px 0 #ffffff1a;user-select:none;-webkit-user-select:none}
.ng-reaction-pad strong{font-size:24px;line-height:1.5}
.ng-reaction-pad span{font-size:13px;line-height:1.5;overflow-wrap:anywhere}
.ng-reaction-pad.is-waiting{background:linear-gradient(140deg,#71364e,#432333);border-color:#b87082!important}
.ng-reaction-pad.is-ready{background:linear-gradient(140deg,#3e8067,#214c3e);border-color:#a7e2bc!important;box-shadow:0 0 24px #72c89d29;color:#fff!important}
.ng-reaction-pad.is-early{background:linear-gradient(140deg,#765337,#4b3526);border-color:#d3a676!important}
.ng-reaction-pad.is-result{background:linear-gradient(140deg,#5c457a,#342640);border-color:#c2a3da!important}
.ng-reaction-results{margin:12px 0 0;padding:0;list-style:none;display:grid;gap:6px}
.ng-reaction-results li{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;border-radius:8px;background:#ffffff06;padding:7px 11px;font-size:12px;color:#c8b5d6}
.ng-reaction-results strong{font-variant-numeric:tabular-nums;color:#eed7fc}
.ng-puzzle-board{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;width:100%;max-width:330px;margin:auto;padding:9px;background:#140d1d;border:1px solid #6a487d;border-radius:18px}
.ng-puzzle-tile{aspect-ratio:1;min-width:0;min-height:48px;border:1px solid #9466a9!important;border-radius:12px;background:linear-gradient(135deg,#775290,#4c325c);color:#fff4ff!important;font-size:clamp(25px,9vw,42px)!important;font-weight:700!important;line-height:1;font-variant-numeric:tabular-nums;box-shadow:0 3px 0 #24132e,inset 0 1px 0 #ffffff22;transition:background .12s}
.ng-puzzle-tile.is-movable{border-color:#e0c287!important;background:linear-gradient(135deg,#936da1,#674974)}
.ng-puzzle-tile.is-empty{background:#24162e;border:1px dashed #654577!important;opacity:1;box-shadow:inset 0 2px 10px #00000033}
@media(max-width:359px){.ng-memory-board{gap:7px}.ng-memory-card{border-radius:10px}.ng-demo-stats{gap:5px}.ng-demo-stats>span{min-width:60px;font-size:10px}.ng-demo-stats strong{font-size:15px}.ng-reaction-pad{min-height:158px}.ng-reaction-pad strong{font-size:21px}.ng-demo-primary,.ng-demo-secondary{padding:9px 13px}}
@media(prefers-reduced-motion:reduce){.ng-demo *{transition:none!important}}
