/* EZEMN clickable demo — shared styles */
:root{
  --bg:#0a0c14; --bg2:#0f121d; --panel:#151a29; --panel2:#1b2132; --panel3:#222a40;
  --border:rgba(255,255,255,.09); --border2:rgba(255,255,255,.14);
  --text:#eef1f8; --muted:#9aa3b8; --muted2:#6b7488;
  --primary:#7c6cf0; --primary2:#9b8bf5; --primaryd:#5b49d6;
  --accent:#f472b6;
  --green:#34d399; --greenbg:rgba(52,211,153,.14);
  --amber:#fbbf24; --amberbg:rgba(251,191,36,.14);
  --blue:#60a5fa; --pink:#f472b6; --red:#f87171;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--text);font-family:'Inter',system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.5;-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}
img{max-width:100%}

/* Demo banner */
.demobar{background:linear-gradient(90deg,var(--primary),var(--accent));color:#fff;font-size:.78rem;font-weight:600;text-align:center;padding:.4rem 1rem;display:flex;align-items:center;justify-content:center;gap:1rem;flex-wrap:wrap}
.demobar a{text-decoration:underline;font-weight:700}
.demobar .tag{background:rgba(0,0,0,.25);padding:.1rem .55rem;border-radius:999px;letter-spacing:.05em;text-transform:uppercase;font-size:.68rem}

/* App shell */
.shell{display:grid;grid-template-columns:230px 1fr;min-height:calc(100vh - 32px)}
.side{background:#0b0e18;border-right:1px solid var(--border);padding:1.1rem .8rem;display:flex;flex-direction:column;gap:.12rem;position:sticky;top:0;height:100vh;overflow:auto}
.brand{display:flex;align-items:center;gap:.55rem;padding:.3rem .5rem 1.1rem;font-weight:800;letter-spacing:-.01em;font-size:1.05rem}
.brand .logo{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;flex:none;overflow:hidden}.brand .logo img{width:100%;height:100%;display:block}
.brand .pill{font-size:.6rem;background:rgba(255,255,255,.1);padding:.12rem .45rem;border-radius:6px;color:var(--muted);font-weight:700;letter-spacing:.06em}
.navh{font-size:.66rem;text-transform:uppercase;letter-spacing:.07em;color:var(--muted2);font-weight:700;padding:.9rem .65rem .35rem}
.nav-i{display:flex;align-items:center;gap:.65rem;padding:.55rem .65rem;border-radius:9px;color:var(--muted);font-size:.88rem;font-weight:500;transition:.15s}
.nav-i .ico{width:18px;text-align:center;flex:none;opacity:.9}
.nav-i.active{background:color-mix(in srgb,var(--primary) 18%,transparent);color:var(--text);font-weight:600}
.nav-i:hover:not(.active){background:rgba(255,255,255,.05);color:var(--text)}
.side-foot{margin-top:auto;display:flex;align-items:center;gap:.55rem;padding:.7rem .5rem;border-top:1px solid var(--border);font-size:.82rem;color:var(--muted)}
.avatar{width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,var(--primary),var(--accent));display:grid;place-items:center;font-weight:700;font-size:.8rem;color:#fff;flex:none}

.main{padding:1.5rem 1.8rem 3rem;overflow:hidden;max-width:100%}
.topbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1.5rem;flex-wrap:wrap}
.topbar h1{margin:0;font-size:1.4rem;letter-spacing:-.02em}
.topbar .sub{color:var(--muted);font-size:.86rem;margin-top:.2rem}
.searchbox{background:var(--panel2);border:1px solid var(--border);border-radius:9px;padding:.45rem .8rem;font-size:.82rem;color:var(--muted2);min-width:200px}

/* Buttons */
.btn{background:var(--primary);color:#fff;border:none;border-radius:10px;padding:.6rem 1rem;font-size:.85rem;font-weight:600;font-family:inherit;cursor:pointer;display:inline-flex;align-items:center;gap:.45rem;transition:.15s}
.btn:hover{background:var(--primaryd)}
.btn.ghost{background:transparent;border:1px solid var(--border2);color:var(--text)}
.btn.ghost:hover{border-color:var(--primary);background:color-mix(in srgb,var(--primary) 10%,transparent)}
.btn.sm{padding:.42rem .75rem;font-size:.8rem}
.btn.lg{padding:.8rem 1.4rem;font-size:.95rem}
.btn.block{width:100%;justify-content:center}

/* Cards / grid */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;margin-bottom:1.4rem}
.stat{background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:1.1rem}
.stat .k{color:var(--muted);font-size:.78rem;display:flex;align-items:center;gap:.4rem}
.stat .v{font-size:1.6rem;font-weight:800;margin:.4rem 0 .2rem;letter-spacing:-.02em}
.stat .d{font-size:.74rem;font-weight:600}
.up{color:var(--green)}.down{color:var(--red)}
.ic{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;flex:none;font-size:.95rem}
.ic.p{background:color-mix(in srgb,var(--primary) 20%,transparent);color:var(--primary2)}
.ic.g{background:var(--greenbg);color:var(--green)}
.ic.b{background:rgba(96,165,250,.16);color:var(--blue)}
.ic.a{background:var(--amberbg);color:var(--amber)}
.grid2{display:grid;grid-template-columns:1.55fr 1fr;gap:1rem}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}
.card{background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:1.2rem}
.card h3{margin:0 0 1rem;font-size:1rem;display:flex;align-items:center;justify-content:space-between}
.card h3 .link{color:var(--primary2);font-size:.78rem;font-weight:600}

/* Charts */
.chart{display:flex;align-items:flex-end;gap:.55rem;height:150px;padding-top:.5rem}
.bar{flex:1;display:flex;flex-direction:column;align-items:center;gap:.45rem;height:100%;justify-content:flex-end}
.bar i{width:100%;max-width:30px;border-radius:6px 6px 0 0;background:linear-gradient(180deg,var(--primary2),var(--primary));display:block}
.bar b{font-size:.68rem;color:var(--muted2);font-weight:500}

/* Lists / tables */
.list{display:flex;flex-direction:column}
.row{display:flex;align-items:center;gap:.7rem;padding:.65rem 0;border-bottom:1px solid var(--border);font-size:.86rem}
.row:last-child{border-bottom:none}
.row .nm{font-weight:600}
.row .meta{color:var(--muted);font-size:.76rem}
.rule-row{display:flex;align-items:center;justify-content:space-between;padding:.6rem 0;border-bottom:1px solid var(--border);font-size:.86rem}
.rule-row:last-child{border-bottom:none}
table{width:100%;border-collapse:collapse;font-size:.85rem}
th{text-align:left;color:var(--muted);font-weight:600;font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;padding:.55rem .6rem;border-bottom:1px solid var(--border)}
td{padding:.65rem .6rem;border-bottom:1px solid var(--border)}
tr:last-child td{border-bottom:none}
tbody tr{transition:.12s}
tbody tr:hover{background:rgba(255,255,255,.025)}
.ck{width:16px;height:16px;border-radius:4px;border:1.5px solid var(--border2);display:inline-block;vertical-align:middle}
.progress{height:7px;background:var(--panel3);border-radius:5px;overflow:hidden;margin-top:.4rem}
.progress i{display:block;height:100%;background:linear-gradient(90deg,var(--primary),var(--accent))}

/* Pills */
.pill{font-size:.68rem;font-weight:700;padding:.2rem .55rem;border-radius:999px;letter-spacing:.02em;display:inline-block}
.pill.ok{background:var(--greenbg);color:var(--green)}
.pill.pend{background:var(--amberbg);color:var(--amber)}
.pill.new{background:color-mix(in srgb,var(--primary) 18%,transparent);color:var(--primary2)}
.pill.off{background:rgba(255,255,255,.08);color:var(--muted)}
.pill.lock{background:rgba(248,113,113,.14);color:var(--red)}

/* Public / learner top nav */
.pubnav{display:flex;align-items:center;justify-content:space-between;padding:.9rem 1.6rem;border-bottom:1px solid var(--border);background:var(--bg2);position:sticky;top:0;z-index:10}
.pubnav .brand{padding:0;font-size:1rem}
.pubnav .links{display:flex;gap:1.4rem;font-size:.86rem;color:var(--muted)}
.pubnav .links a:hover{color:var(--text)}
.pubwrap{max-width:1080px;margin:0 auto;padding:0 1.2rem}

/* Field inputs */
.field{margin-bottom:.85rem}
.field label{display:block;font-size:.74rem;color:var(--muted);margin-bottom:.32rem;font-weight:600}
.input{background:var(--panel2);border:1px solid var(--border);border-radius:9px;padding:.55rem .75rem;font-size:.85rem;color:var(--text);width:100%}
.input.ph{color:var(--muted2)}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:.85rem}
.full{grid-column:1/-1}

/* Toggle */
.toggle{width:40px;height:23px;border-radius:999px;background:var(--primary);position:relative;flex:none;cursor:pointer}
.toggle::after{content:'';position:absolute;right:3px;top:3px;width:17px;height:17px;border-radius:50%;background:#fff;transition:.15s}
.toggle.off{background:var(--panel3)}
.toggle.off::after{right:auto;left:3px}

/* Builder */
.builder{display:grid;grid-template-columns:240px 1fr 230px;gap:0;border:1px solid var(--border);border-radius:14px;overflow:hidden;background:var(--panel)}
.b-col{padding:1.1rem}
.b-left{background:#0b0e18;border-right:1px solid var(--border)}
.b-right{background:#0b0e18;border-left:1px solid var(--border)}
.b-h{font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted2);font-weight:700;margin:.2rem 0 .7rem}
.blockitem{display:flex;align-items:center;gap:.55rem;padding:.55rem .65rem;border:1px solid var(--border);border-radius:9px;margin-bottom:.5rem;font-size:.82rem;background:var(--panel);cursor:grab}
.blockitem:hover{border-color:var(--primary)}
.blockitem .gr{margin-left:auto;color:var(--muted2)}
.canvas{background:repeating-linear-gradient(45deg,#0d111c,#0d111c 12px,#0c0f19 12px,#0c0f19 24px);border-radius:12px;padding:1rem;min-height:440px;display:flex;flex-direction:column;gap:.7rem}
.cblock{background:var(--panel);border:1px solid var(--border2);border-radius:12px;padding:1rem 1.1rem;position:relative}
.cblock.sel{border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 18%,transparent)}
.cblock .tagy{position:absolute;top:-10px;left:12px;background:var(--primary);color:#fff;font-size:.64rem;font-weight:700;padding:.1rem .5rem;border-radius:6px}
.mod{background:var(--panel);border:1px solid var(--border);border-radius:10px;margin-bottom:.6rem;overflow:hidden}
.mod-h{padding:.55rem .7rem;font-weight:700;font-size:.82rem;background:var(--panel2);display:flex;align-items:center;gap:.4rem}
.lesson{padding:.45rem .7rem .45rem 1.3rem;font-size:.8rem;color:var(--muted);display:flex;align-items:center;gap:.5rem;border-top:1px solid var(--border)}
.lesson.act{color:var(--text);background:color-mix(in srgb,var(--primary) 8%,transparent)}
.lesson .gr{margin-left:auto;color:var(--muted2)}
.swatches{display:flex;gap:.4rem}
.sw{width:26px;height:26px;border-radius:7px;border:2px solid transparent;cursor:pointer}
.sw.on{border-color:#fff}

/* Type grid */
.type-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:.9rem;margin:1rem 0 1.4rem}
.type-card{background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:1.1rem;cursor:pointer;transition:.15s}
.type-card:hover{border-color:var(--primary)}
.type-card.sel{border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 18%,transparent)}
.type-card .tic{font-size:1.7rem;margin-bottom:.45rem}
.type-card .nm{font-weight:700;font-size:.92rem}
.type-card .ds{color:var(--muted);font-size:.76rem;margin-top:.25rem}

/* Public event hero / tickets */
.hero{background:linear-gradient(135deg,color-mix(in srgb,var(--primary) 28%,transparent),color-mix(in srgb,var(--accent) 22%,transparent)),radial-gradient(circle at 80% 20%,rgba(96,165,250,.25),transparent 55%);padding:3rem 2rem;border-radius:18px;margin:1.5rem 0}
.hero .kl{font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;color:var(--primary2);font-weight:700}
.hero h1{font-size:2.4rem;margin:.5rem 0 .6rem;letter-spacing:-.02em;line-height:1.08}
.hero .meta{display:flex;flex-wrap:wrap;gap:1.4rem;color:var(--muted);font-size:.9rem}
.hero .meta b{color:var(--text);font-weight:700}
.tickets{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin:1.5rem 0}
.tk{background:var(--panel);border:1px solid var(--border);border-radius:16px;padding:1.3rem}
.tk.feat{border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 14%,transparent)}
.tk .nm{font-weight:700;font-size:1rem}
.tk .pr{font-size:1.9rem;font-weight:800;margin:.5rem 0;letter-spacing:-.02em}
.tk .pr small{font-size:.8rem;color:var(--muted);font-weight:500}
.tk ul{margin:.5rem 0 1.1rem;padding-left:1.1rem;color:var(--muted);font-size:.82rem}
.tk li{margin:.3rem 0}
.stepper{display:inline-flex;align-items:center;gap:.7rem;background:var(--panel2);border:1px solid var(--border);border-radius:9px;padding:.3rem .6rem}
.stepper b{min-width:14px;text-align:center}

/* Summary */
.sumrow{display:flex;justify-content:space-between;font-size:.88rem;padding:.4rem 0;color:var(--muted)}
.sumrow.total{color:var(--text);font-weight:800;font-size:1.1rem;border-top:1px solid var(--border);margin-top:.4rem;padding-top:.7rem}
.pay-el{background:var(--panel2);border:1px solid var(--border);border-radius:9px;padding:.7rem;display:flex;align-items:center;gap:.6rem;font-size:.85rem;color:var(--muted)}

/* QR ticket */
.tk-card{background:#fff;color:#0b0e16;border-radius:20px;overflow:hidden;box-shadow:0 25px 50px -20px rgba(0,0,0,.6);max-width:380px;margin:0 auto}
.tk-top{background:linear-gradient(135deg,var(--primary),var(--accent));padding:1.3rem 1.4rem;color:#fff}
.tk-top .ev{font-weight:800;font-size:1.25rem}
.tk-top .dt{opacity:.92;font-size:.85rem;margin-top:.25rem}
.tk-body{padding:1.5rem;text-align:center}
.qrbox{width:200px;height:200px;margin:.4rem auto 1rem;background:#fff;border-radius:12px;padding:8px;border:1px solid #e5e7eb}
.tk-name{font-weight:800;font-size:1.2rem}
.tk-sub{color:#6b7280;font-size:.84rem}
.tk-divider{border:none;border-top:2px dashed #e5e7eb;margin:0}
.tk-foot{display:flex;justify-content:space-between;padding:1rem 1.4rem;font-size:.76rem;color:#6b7280}
.tk-foot b{color:#0b0e16;display:block;font-size:.86rem}
.chip{font-size:.72rem;font-weight:700;padding:.2rem .65rem;border-radius:999px;background:#eef2ff;color:#4f46e5;display:inline-block;margin-top:.4rem}

/* Scanner */
.scan-view{position:relative;border-radius:18px;background:linear-gradient(160deg,#11161f,#0a0d14);overflow:hidden;display:grid;place-items:center;min-height:300px}
.reticle{width:220px;height:220px;position:relative}
.corner{position:absolute;width:40px;height:40px}
.corner.tl{top:0;left:0;border-top:3px solid var(--green);border-left:3px solid var(--green);border-radius:12px 0 0 0}
.corner.tr{top:0;right:0;border-top:3px solid var(--green);border-right:3px solid var(--green);border-radius:0 12px 0 0}
.corner.bl{bottom:0;left:0;border-bottom:3px solid var(--green);border-left:3px solid var(--green);border-radius:0 0 0 12px}
.corner.br{bottom:0;right:0;border-bottom:3px solid var(--green);border-right:3px solid var(--green);border-radius:0 0 12px 0}
.scanline{position:absolute;left:6px;right:6px;height:2px;background:var(--green);box-shadow:0 0 14px var(--green);top:50%;animation:scan 2.4s ease-in-out infinite}
@keyframes scan{0%,100%{top:12%}50%{top:88%}}
.scan-result{background:var(--greenbg);border:1px solid rgba(52,211,153,.4);border-radius:14px;padding:1rem;display:flex;align-items:center;gap:.8rem;margin-top:1rem}
.scan-result .tick{width:44px;height:44px;border-radius:50%;background:var(--green);display:grid;place-items:center;flex:none}

/* Viewer */
.viewer{display:grid;grid-template-columns:270px 1fr;border:1px solid var(--border);border-radius:14px;overflow:hidden;background:var(--panel)}
.curriculum{border-right:1px solid var(--border);padding:1.2rem;background:#0b0e18}
.cur-item{display:flex;align-items:flex-start;gap:.55rem;padding:.55rem .45rem;border-radius:8px;font-size:.83rem;color:var(--muted)}
.cur-item.act{background:color-mix(in srgb,var(--primary) 12%,transparent);color:var(--text)}
.cur-item.done{color:var(--muted)}
.cur-item .st{flex:none}
.video-area{padding:1.4rem}
.vplayer{background:#000;border-radius:12px;aspect-ratio:16/9;position:relative;overflow:hidden;margin-bottom:1rem;display:grid;place-items:center}
.vplayer .play{font-size:3rem;opacity:.55;color:#fff;z-index:2}
.vplayer::after{content:'';position:absolute;inset:0;background:linear-gradient(135deg,color-mix(in srgb,var(--primary) 25%,transparent),color-mix(in srgb,var(--accent) 25%,transparent))}
.vcontrols{position:absolute;bottom:0;left:0;right:0;padding:.8rem;background:linear-gradient(transparent,rgba(0,0,0,.85));display:flex;align-items:center;gap:.7rem;font-size:.78rem;color:#fff;z-index:3}
.vbar{flex:1;height:4px;background:rgba(255,255,255,.3);border-radius:2px}
.vbar i{display:block;height:100%;width:62%;background:var(--primary);border-radius:2px}

/* Quiz */
.opt{display:flex;align-items:center;gap:.6rem;padding:.7rem .9rem;border:1px solid var(--border);border-radius:10px;margin-top:.5rem;font-size:.88rem;cursor:pointer;transition:.12s}
.opt:hover{border-color:var(--border2)}
.opt.sel{border-color:var(--primary);background:color-mix(in srgb,var(--primary) 10%,transparent)}
.opt .rd{width:18px;height:18px;border-radius:50%;border:2px solid var(--border2);flex:none}
.opt.sel .rd{border-color:var(--primary);background:var(--primary);box-shadow:inset 0 0 0 3px var(--panel)}

/* Course cards */
.course-card{background:var(--panel);border:1px solid var(--border);border-radius:14px;overflow:hidden}
.course-card .thumb{height:100px;background:linear-gradient(135deg,color-mix(in srgb,var(--primary) 35%,transparent),color-mix(in srgb,var(--accent) 30%,transparent))}
.course-card .body{padding:1rem}
.course-card .title{font-weight:700;font-size:.95rem}
.course-card .meta{color:var(--muted);font-size:.78rem;margin:.35rem 0 .6rem}

/* Certificate */
.cert{background:linear-gradient(135deg,#fff,#f0f4ff);color:#0b0e16;border-radius:16px;padding:2rem;text-align:center;border:2px solid #c7d2fe;max-width:380px;margin:0 auto}
.cert .seal{width:60px;height:60px;border-radius:50%;background:linear-gradient(135deg,var(--primary),var(--accent));margin:0 auto 1rem;display:grid;place-items:center;font-size:1.5rem}

.twocol{display:grid;grid-template-columns:1fr 1fr;gap:1.2rem;align-items:start}
.flow-foot{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-top:1.4rem;flex-wrap:wrap}
.muted{color:var(--muted)}
.center{display:flex;justify-content:center}
section.pad{padding-bottom:1.5rem}

@media(max-width:900px){
  .shell{grid-template-columns:1fr}
  .side{display:none}
  .builder{grid-template-columns:1fr}
  .b-left,.b-right{display:none}
  .viewer{grid-template-columns:1fr}
  .curriculum{display:none}
  .stats{grid-template-columns:repeat(2,1fr)}
  .grid2,.grid3,.tickets,.twocol,.form-grid,.type-grid{grid-template-columns:1fr}
  .hero h1{font-size:1.7rem}
}
