
:root{
  --ind:#4f46e5; --ind2:#7c3aed; --bg:#f8fafc; --card:#fff; --tx:#0f172a; --mut:#64748b;
  --bd:#e2e8f0; --ok:#16a34a; --warn:#d97706; --err:#dc2626;
}
*{box-sizing:border-box}
body{margin:0;font-family:system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;color:var(--tx);background:var(--bg);line-height:1.55}
a{color:var(--ind);text-decoration:none}
code{background:#eef2ff;padding:2px 6px;border-radius:6px;font-size:.9em}
.wrap{max-width:1080px;margin:0 auto;padding:0 20px}
.muted{color:var(--mut)} .small{font-size:.85em} .center{text-align:center}
.btn{display:inline-block;border:0;border-radius:10px;padding:10px 18px;font-size:.95rem;font-weight:600;cursor:pointer;background:#e2e8f0;color:var(--tx)}
.btn.primary{background:linear-gradient(135deg,var(--ind),var(--ind2));color:#fff}
.btn.ghost{background:transparent;border:1px solid var(--bd);color:var(--tx)}
.btn.sm{padding:7px 12px;font-size:.85rem}
.btn.lg{padding:14px 26px;font-size:1.05rem}
.btn:disabled{opacity:.6;cursor:wait}
.card{background:var(--card);border:1px solid var(--bd);border-radius:14px;padding:20px}
.logo{font-weight:800;font-size:1.25rem;color:var(--tx)}
.logo span{background:linear-gradient(135deg,var(--ind),var(--ind2));-webkit-background-clip:text;background-clip:text;color:transparent}
.logo.big{font-size:2.2rem;margin:0 0 8px}
h1{font-size:1.9rem;margin:0 0 10px} h2{font-size:1.4rem;margin:18px 0 10px}
h3{margin:0 0 6px}
.row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.tag{font-size:.8rem;color:var(--mut);background:#f1f5f9;padding:3px 8px;border-radius:99px;white-space:nowrap}
.loading{padding:60px;text-align:center;color:var(--mut)}
#toast{position:fixed;bottom:18px;left:50%;transform:translateX(-50%) translateY(80px);background:#0f172a;color:#fff;padding:10px 18px;border-radius:10px;font-size:.9rem;opacity:0;transition:.25s;z-index:99;max-width:90vw}
#toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* landing */
.landing{background:var(--bg)}
.nav{position:sticky;top:0;background:rgba(255,255,255,.9);backdrop-filter:blur(8px);border-bottom:1px solid var(--bd);z-index:10}
.nav-inner{display:flex;align-items:center;justify-content:space-between;height:60px}
.nav-links{display:flex;gap:16px;align-items:center}
.hero{background:linear-gradient(135deg,#eef2ff 0%,#faf5ff 60%,#fff 100%);padding:80px 0 60px}
.hero h1{font-size:2.9rem;line-height:1.15;max-width:640px}
.hero em{font-style:normal;background:linear-gradient(135deg,var(--ind),var(--ind2));-webkit-background-clip:text;background-clip:text;color:transparent}
.hero .sub{font-size:1.15rem;color:var(--mut);max-width:620px;margin:18px 0 26px}
.hero-cta{display:flex;gap:12px;flex-wrap:wrap}
.hero-note{margin-top:14px;color:var(--mut);font-size:.9rem}
.section{padding:60px 0}
.section.alt{background:#fff;border-top:1px solid var(--bd);border-bottom:1px solid var(--bd)}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:22px}
.step{width:34px;height:34px;border-radius:10px;background:linear-gradient(135deg,var(--ind),var(--ind2));color:#fff;display:grid;place-items:center;font-weight:700;margin-bottom:10px}
.pricing{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:22px}
.plan{text-align:center}
.plan .price{font-size:2.4rem;font-weight:800;margin:6px 0}
.plan .price span{font-size:1rem;color:var(--mut);font-weight:500}
.plan .per{font-size:.85rem;color:var(--mut);margin-bottom:10px}
.plan ul{list-style:none;padding:0;margin:14px 0 18px;text-align:left;color:#334155}
.plan li{padding:5px 0;border-bottom:1px dashed #f1f5f9}
.plan li:before{content:"✓ ";color:var(--ok);font-weight:700}
.plan.hot{border:2px solid var(--ind);position:relative;box-shadow:0 10px 30px rgba(79,70,229,.15)}
.plan.hot:before{content:"Most popular";position:absolute;top:-12px;left:50%;transform:translateX(-50%);background:var(--ind);color:#fff;font-size:.75rem;font-weight:700;padding:3px 12px;border-radius:99px}
.footer{padding:30px 0;border-top:1px solid var(--bd);display:block}
.footer .wrap{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;font-size:.9rem}

/* app shell */
body.app{background:var(--bg)}
.appbar{background:#fff;border-bottom:1px solid var(--bd);position:sticky;top:0;z-index:10}
.appbar-inner{display:flex;align-items:center;justify-content:space-between;height:58px}
.appbar-links{display:flex;gap:14px;align-items:center}
.ab-link{font-size:.9rem;font-weight:600}
.who{font-size:.85rem;color:var(--mut)}
.dash{padding:26px 0}
.dash-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;flex-wrap:wrap;gap:10px}
.stats{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:20px}
.stat{background:#fff;border:1px solid var(--bd);border-radius:12px;padding:12px 18px;min-width:130px}
.stat b{display:block;font-size:1.5rem}
.stat span{font-size:.8rem;color:var(--mut)}
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:14px}
.appcard-top{display:flex;justify-content:space-between;gap:8px;align-items:flex-start}
.classcode{margin:8px 0;font-size:.95rem}
.classcode b{font-family:monospace;font-size:1.1rem;letter-spacing:1px}
.codecard{text-align:center;margin:14px 0}
.bigcode{font-family:monospace;font-size:2.6rem;font-weight:800;letter-spacing:8px;background:linear-gradient(135deg,var(--ind),var(--ind2));-webkit-background-clip:text;background-clip:text;color:transparent;margin:6px 0}
.empty{grid-column:1/-1;text-align:center;color:var(--mut);padding:30px;background:#fff;border:1px dashed var(--bd);border-radius:14px}
.tbl{width:100%;border-collapse:collapse;background:#fff;border-radius:12px;overflow:hidden;margin-bottom:18px}
.tbl th{background:#f1f5f9;text-align:left;font-size:.8rem;color:var(--mut);padding:9px 14px}
.tbl td{padding:9px 14px;border-top:1px solid #f1f5f9;font-size:.92rem}
.sub2{margin:26px 0 10px;font-size:1.15rem}

/* auth */
.authwrap{min-height:calc(100vh - 58px);display:grid;place-items:center;padding:30px 16px}
.auth{width:100%;max-width:420px}
.tabs{display:flex;gap:8px;margin:14px 0 18px}
.tab{flex:1;padding:9px;border:1px solid var(--bd);background:#fff;border-radius:10px;cursor:pointer;font-weight:600;color:var(--mut)}
.tab.on{border-color:var(--ind);color:var(--ind);background:#eef2ff}
.stack{display:flex;flex-direction:column;gap:10px}
input,textarea,select{font:inherit;padding:11px 13px;border:1px solid var(--bd);border-radius:10px;background:#fff;width:100%}
input:focus,textarea:focus,select:focus{outline:2px solid #c7d2fe;border-color:var(--ind)}
.err{border-color:var(--err)}

/* builder */
.builderwrap{display:flex;height:calc(100vh - 58px);min-height:0}
.builder{display:grid;grid-template-columns:400px 1fr;flex:1;min-height:0}
.pane{display:flex;flex-direction:column;min-height:0}
.chatpane{border-right:1px solid var(--bd);background:#fff}
.chat-head{padding:16px 18px 10px;border-bottom:1px solid var(--bd)}
.chat-head h2{margin:0;font-size:1.2rem}
.chat-share{font-size:.8rem;color:var(--mut);margin-top:6px;display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.chat-share code{word-break:break-all}
.msgs{flex:1;overflow-y:auto;min-height:0;padding:16px;display:flex;flex-direction:column;gap:10px}
.msg{max-width:88%;padding:10px 14px;border-radius:14px;font-size:.95rem;white-space:pre-wrap;word-wrap:break-word}
.msg.user{align-self:flex-end;background:linear-gradient(135deg,var(--ind),var(--ind2));color:#fff;border-bottom-right-radius:4px}
.msg.ai{align-self:flex-start;background:#f1f5f9;border-bottom-left-radius:4px}
.warnbox{margin-top:8px;font-size:.82rem;color:var(--warn);background:#fffbeb;border:1px solid #fde68a;border-radius:8px;padding:8px}
.chat-in{display:flex;flex-direction:column;gap:8px;padding:12px;border-top:1px solid var(--bd)}
.chat-row{display:flex;gap:8px;align-items:flex-end}
.chat-row textarea{flex:1}
.att-add{flex:none;width:42px;height:42px;border-radius:10px;border:1px solid var(--bd);background:#fff;color:var(--ind);font-size:22px;line-height:1;cursor:pointer;transition:background .15s,color .15s}
.att-add:hover{background:var(--ind);border-color:var(--ind);color:#fff}
.atts{display:flex;flex-wrap:wrap;gap:8px}
.att-chip{display:inline-flex;align-items:center;gap:6px;background:#eef2ff;border:1px solid #c7d2fe;border-radius:10px;padding:4px 6px;font-size:12px;color:#3730a3;max-width:230px}
.att-chip img{width:34px;height:34px;object-fit:cover;border-radius:6px;flex:none}
.att-chip .att-nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.att-chip button{border:0;background:none;color:#4f46e5;font-size:15px;cursor:pointer;padding:0 2px;line-height:1}
.msg .att-line{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.msg .att-line .att-chip{padding:2px 6px;font-size:11px}
.chat-in textarea{resize:none}
.chat-in .btn{white-space:nowrap}
.prevpane{background:var(--bg)}
.prev-head{display:flex;align-items:center;gap:10px;padding:10px 14px;background:#fff;border-bottom:1px solid var(--bd)}
.prev-head select{width:auto}
iframe{flex:1;min-height:0;border:0;background:#fff;width:100%}
.prev-box iframe{height:420px;border:1px solid var(--bd);border-radius:12px}

/* review */
.review{padding:26px 0}
.review-head{display:flex;gap:14px;align-items:center;flex-wrap:wrap;margin-bottom:16px}
.review-head h1{margin:0}
.review-grid{display:grid;grid-template-columns:1fr 340px;gap:18px}
.comment{background:#fff;border:1px solid var(--bd);border-radius:12px;padding:10px 14px;margin-bottom:8px}
.comment p{margin:4px 0 0}
.card .plan-note{margin-top:6px}

@media(max-width:860px){
  .grid3,.pricing,.review-grid{grid-template-columns:1fr}
  .builder{grid-template-columns:1fr}
  .builderwrap{flex-direction:column;min-height:0}
  .chatpane{border-right:0;border-bottom:1px solid var(--bd);max-height:50%}
  .prevpane{min-height:50%}
  .hero h1{font-size:2.1rem}
  .nav-links a:not(.btn){display:none}
}

/* landing imagery v2 */
.hero .wrap{display:grid;grid-template-columns:1.02fr .98fr;gap:44px;align-items:center}
.hero-copy{max-width:560px}
.hero-mock{background:#fff;border:1px solid var(--bd);border-radius:16px;box-shadow:0 24px 60px rgba(79,70,229,.18);overflow:hidden;font-size:.86rem}
.mock-bar{display:flex;align-items:center;gap:6px;background:#f1f5f9;border-bottom:1px solid var(--bd);padding:10px 12px}
.dot{width:10px;height:10px;border-radius:50%}
.dot.r{background:#f87171}.dot.y{background:#fbbf24}.dot.g{background:#34d399}
.mock-url{margin-left:8px;background:#fff;border:1px solid var(--bd);border-radius:99px;padding:3px 12px;font-size:.78rem;color:var(--mut);flex:1;text-align:center;max-width:250px}
.mock-body{padding:16px;display:grid;gap:12px}
.chat{display:grid;gap:8px}
.bubble{padding:9px 12px;border-radius:12px;max-width:92%}
.bubble.s{background:#eef2ff;border:1px solid #e0e7ff;justify-self:start;border-bottom-left-radius:4px}
.bubble.a{background:#f8fafc;border:1px solid var(--bd);justify-self:end;border-bottom-right-radius:4px}
.bubble.a.link{background:linear-gradient(135deg,var(--ind),var(--ind2));color:#fff;font-family:ui-monospace,monospace;font-size:.8rem}
.sparkle{color:var(--ind);font-weight:800;margin-right:4px}
.preview{background:#fff;border:1px solid var(--bd);border-radius:12px;padding:12px;box-shadow:0 4px 14px rgba(15,23,42,.06)}
.pv-head{display:flex;justify-content:space-between;font-weight:700;font-size:.85rem;margin-bottom:8px;gap:8px}
.pv-head span{color:var(--mut);font-weight:500;font-size:.75rem}
.pv-q{font-size:.85rem;margin-bottom:8px}
.pv-opt{border:1px solid var(--bd);border-radius:8px;padding:6px 10px;font-size:.82rem;margin-bottom:6px;color:#334155}
.pv-opt:last-child{margin-bottom:0}
.pv-opt.sel{border-color:var(--ok);background:#f0fdf4;color:#166534;font-weight:600}
.mock-badge{justify-self:start;background:#f0fdf4;border:1px solid #bbf7d0;color:#166534;font-size:.75rem;font-weight:600;padding:5px 10px;border-radius:99px}

.gallery{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-top:26px}
.gcard{background:#fff;border:1px solid var(--bd);border-radius:14px;overflow:hidden;transition:transform .2s,box-shadow .2s}
.gcard:hover{transform:translateY(-4px);box-shadow:0 14px 30px rgba(15,23,42,.1)}
.gthumb{height:150px;display:grid;place-items:center;position:relative;font-size:3rem;background:#f8fafc}
.gthumb.space{background:radial-gradient(120px 80px at 72% 28%,rgba(124,58,237,.55),transparent),linear-gradient(160deg,#0f172a,#1e1b4b)}
.gthumb.draw{background:linear-gradient(160deg,#fff7ed,#fef9c3)}
.gthumb.timer{background:linear-gradient(160deg,#ecfeff,#e0f2fe)}
.gthumb.story{background:linear-gradient(160deg,#fdf2f8,#fce7f3)}
.gq{position:absolute;top:8px;right:10px;font-size:.7rem;color:#cbd5e1;font-family:ui-monospace,monospace}
.gline{position:absolute;bottom:10px;width:84%;text-align:center;font-size:.72rem;color:#9d174d;font-style:italic}
.tringo{width:84px;height:84px;border-radius:50%;background:#fff;border:6px solid #0ea5e9;display:grid;place-items:center;font-family:ui-monospace,monospace;font-weight:800;color:#0369a1;font-size:1.15rem;box-shadow:0 6px 16px rgba(14,165,233,.25)}
.gmeta{padding:12px 14px}
.gmeta b{display:block;font-size:.95rem}
.gmeta span{font-size:.8rem;color:var(--mut)}

.band{background:#0f172a;color:#fff}
.band-inner{display:grid;grid-template-columns:1.08fr .92fr;gap:40px;align-items:center;max-width:1080px;margin:0 auto;padding:56px 20px}
.band img{width:100%;border-radius:14px;box-shadow:0 20px 50px rgba(0,0,0,.45);display:block}
.band-copy h2{color:#fff;font-size:1.8rem;margin-bottom:8px}
.band-copy p{color:#cbd5e1;margin:0}
.chips{list-style:none;padding:0;margin:18px 0 0;display:grid;gap:8px}
.chips li{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.16);border-radius:99px;padding:7px 14px;font-size:.9rem;color:#e2e8f0;width:fit-content}

.photorow{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:34px}
.photorow figure{margin:0}
.photorow img{width:100%;height:210px;object-fit:cover;border-radius:12px;display:block;border:1px solid var(--bd)}
.photorow figcaption{font-size:.85rem;color:var(--mut);padding:8px 4px 0;text-align:center}

@media(max-width:920px){
  .hero .wrap{grid-template-columns:1fr}
  .hero-mock{max-width:480px}
  .gallery{grid-template-columns:repeat(2,1fr)}
  .band-inner{grid-template-columns:1fr}
  .photorow{grid-template-columns:1fr}
}

/* individual tier v3 */
.tier-tag{display:inline-block;font-size:.62rem;background:#eef2ff;color:var(--ind);border:1px solid #e0e7ff;border-radius:99px;padding:2px 8px;vertical-align:middle;margin-left:5px;text-transform:uppercase;letter-spacing:.04em}
.plan h3{font-size:1.05rem}
@media(max-width:980px){.pricing{grid-template-columns:repeat(2,1fr)}}

/* admin tabs + password recovery + limit hints */
.atabs{display:flex;gap:4px;flex-wrap:wrap;margin:14px 0 10px;border-bottom:1px solid #e2e8f0;padding-bottom:8px}
.atab{border:0;background:transparent;font:600 .85rem/1.2 system-ui,sans-serif;padding:6px 12px;color:#64748b;cursor:pointer;border-radius:8px}
.atab.on{background:#eef2ff;color:#4338ca}
.actrow{padding:7px 0;border-bottom:1px solid #f1f5f9;font-size:.85rem}
.actrow b{margin-right:6px;color:#334155}
.auth-links{margin-top:10px;text-align:right}
.auth-links a{color:#6366f1;font-size:.8rem;text-decoration:none}
.resetbox{border-top:1px solid #e2e8f0;margin-top:12px;padding-top:12px}
.resetbox p{margin:6px 0}
.tbl .actcell{white-space:nowrap}
.tbl .actcell .btn{margin-left:4px}

/* ---------- new-app vision wizard ---------- */
.wiz-ov { position: fixed; inset: 0; background: rgba(15, 23, 42, .55); display: flex; align-items: center; justify-content: center; z-index: 50; padding: 18px; }
.wiz-card { background: #fff; border-radius: 16px; width: 100%; max-width: 620px; max-height: 92vh; display: flex; flex-direction: column; box-shadow: 0 24px 60px rgba(15,23,42,.25); overflow: hidden; }
.wiz-top { display: flex; align-items: center; justify-content: space-between; padding: 12px 18px; border-bottom: 1px solid #e2e8f0; }
.wiz-step { font-size: 13px; font-weight: 600; color: #64748b; }
.wiz-x { border: 0; background: #f1f5f9; border-radius: 8px; width: 30px; height: 30px; cursor: pointer; color: #475569; font-size: 13px; }
.wiz-x:hover { background: #e2e8f0; }
.wiz-body { padding: 18px; overflow-y: auto; flex: 1; }
.wiz-foot { display: flex; align-items: center; gap: 8px; padding: 12px 18px; border-top: 1px solid #e2e8f0; }
.wiz-flex { flex: 1; }
.wiz-h { margin: 0 0 6px; font-size: 20px; }
.wiz-sub { margin: 0 0 14px; color: #64748b; font-size: 14px; }
.wiz-q { font-weight: 600; font-size: 14px; margin: 16px 0 8px; color: #0f172a; }
.wiz-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; }
.wiz-card { border: 2px solid #e2e8f0; background: #fff; border-radius: 12px; padding: 12px; text-align: left; cursor: pointer; font-size: 14px; font-weight: 500; display: flex; align-items: center; gap: 10px; }
.wiz-card .wiz-ico { font-size: 20px; }
.wiz-card:hover { border-color: #94a3b8; }
.wiz-card.on { border-color: #4f46e5; background: #eef2ff; }
.wiz-other { margin-top: 10px; }
.wiz-other.hid { display: none; }
.wiz-chips { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 6px; }
.wiz-chip { border: 2px solid #e2e8f0; background: #fff; border-radius: 999px; padding: 7px 14px; font-size: 13.5px; font-weight: 500; cursor: pointer; }
.wiz-chip:hover { border-color: #94a3b8; }
.wiz-chip.on { border-color: #4f46e5; background: #eef2ff; color: #3730a3; }
.wiz-chip.small { font-size: 12.5px; padding: 5px 11px; }
.wiz-feats { display: grid; grid-template-columns: repeat(2, 1fr); gap: 6px 14px; }
.wiz-feat { font-size: 13.5px; display: flex; align-items: center; gap: 8px; padding: 6px 8px; border-radius: 8px; cursor: pointer; }
.wiz-feat:hover { background: #f8fafc; }
.wiz-feat input { accent-color: #4f46e5; width: 15px; height: 15px; }
.wiz-pals { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; }
.wiz-pal { border: 2px solid #e2e8f0; background: #fff; border-radius: 10px; padding: 8px 6px; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 6px; font-size: 12px; font-weight: 500; }
.wiz-pal:hover { border-color: #94a3b8; }
.wiz-pal.on { border-color: #4f46e5; background: #eef2ff; }
.wiz-sw { display: flex; border-radius: 999px; overflow: hidden; width: 70%; border: 1px solid rgba(0,0,0,.08); }
.wiz-sw i { display: block; width: 12px; height: 22px; }
.wiz-review { border: 1px solid #e2e8f0; border-radius: 12px; overflow: hidden; }
.wiz-row { display: flex; gap: 12px; padding: 9px 14px; font-size: 13.5px; border-bottom: 1px solid #f1f5f9; }
.wiz-row:last-child { border-bottom: 0; }
.wiz-k { width: 92px; flex-shrink: 0; color: #64748b; font-weight: 600; }
.wiz-v { color: #0f172a; }
.wiz-body input:not([type="checkbox"]), .wiz-body textarea { width: 100%; box-sizing: border-box; }
@media (max-width: 560px) {
  .wiz-grid, .wiz-feats { grid-template-columns: 1fr; }
  .wiz-pals { grid-template-columns: repeat(3, 1fr); }
}

.gcard a,.gallery a{display:block}
.glive{position:absolute;top:0;left:0;border:0;transform-origin:0 0;pointer-events:none;background:#fff;z-index:1}
.gthumb.live{background:linear-gradient(160deg,#0f172a,#1e293b)}
.gthumb-static{z-index:1}
.gbadge{position:absolute;top:8px;left:10px;z-index:2;font-size:.62rem;font-weight:800;letter-spacing:.08em;background:#10b981;color:#fff;padding:2px 8px;border-radius:99px;box-shadow:0 2px 6px rgba(0,0,0,.25)}
.wiz-note{background:#fef3c7;border:1px solid #fcd34d;color:#92400e;padding:10px 14px;border-radius:10px;font-size:.85rem;margin-bottom:14px}
/* teacher dashboard */
.dash2col{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px;margin-top:16px}
@media(max-width:820px){.dash2col{grid-template-columns:1fr}}
.panel{padding:16px}
.tmeta{display:flex;gap:12px;margin:8px 0;flex-wrap:wrap;align-items:center}
.tpill{padding:2px 10px;border-radius:999px;font-size:.75rem;background:#e0e7ff;color:#3730a3}
.tpill.hot{background:#fee2e2;color:#b91c1c}
.trecent{margin:10px 0;padding:10px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px}
.trec{font-size:.83rem;padding:2px 0}
.feed{display:flex;gap:10px;align-items:baseline;padding:7px 0;border-bottom:1px dashed #e2e8f0;font-size:.85rem}
.feed:last-child{border-bottom:0}
.feed-ico{font-size:1rem}


/* feedback */
.fbform{display:grid;gap:10px;max-width:560px}
.fbform select,.fbform textarea{padding:10px 12px;border:1px solid #cbd5e1;border-radius:10px;font:inherit;background:#fff}
.fbitem{padding:14px 0;border-bottom:1px solid #e2e8f0}
.fbitem:last-child{border-bottom:0}
.fbitem-top{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:6px}
.fbbody{margin:6px 0;font-size:.9rem;color:#334155}
.fbst{padding:2px 10px;border-radius:999px;font-size:.72rem;font-weight:600}
.fbst.st-open{background:#fef3c7;color:#92400e}
.fbst.st-cons{background:#e0e7ff;color:#3730a3}
.gsep{display:flex;align-items:center;gap:10px;margin:14px 0;color:#94a3b8;font-size:.8rem}
.gsep::before,.gsep::after{content:"";flex:1;height:1px;background:#e2e8f0}
.gbtn{display:flex;align-items:center;justify-content:center;gap:8px;background:#fff;border:1px solid #e2e8f0;color:#334155;padding:10px 14px;border-radius:10px;font-weight:600;font-size:.9rem;text-decoration:none;cursor:pointer}
.gbtn:hover{background:#f8fafc;border-color:#cbd5e1}
.auth-notice{background:#fef2f2;border:1px solid #fecaca;color:#b91c1c;border-radius:8px;padding:8px 10px;font-size:.85rem;margin:8px 0}
.fbadmin{margin-top:8px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.fbadmin .setinput{background:#fff}
.fbst.st-ans{background:#dbeafe;color:#1e40af}
.fbst.st-fix{background:#dcfce7;color:#166534}
.fbst.st-res{background:#e2e8f0;color:#475569}
.fbreply{margin-top:8px;padding:10px 12px;background:#f1f5f9;border-left:3px solid #6366f1;border-radius:8px;font-size:.87rem}
.fbbadge{background:#ef4444;color:#fff;border-radius:999px;padding:1px 7px;font-size:.7rem;margin-left:5px}
.fbbtns{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}
.fbactions{margin-top:6px}

/* admin full control */
.people-search{padding:9px 12px;border:1px solid #cbd5e1;border-radius:10px;font:inherit;width:100%;max-width:380px;margin-bottom:12px}
tr.row-off td{opacity:.55}
.actcell .btn{margin:2px 3px 2px 0}
.membox{padding:10px 4px;display:grid;gap:6px}
.memline{display:flex;gap:10px;align-items:center;padding:6px 8px;background:#f8fafc;border-radius:8px}
.settings-box{max-width:640px;display:grid;gap:8px}
.setlabel{font-size:.8rem;font-weight:600;color:#475569}
.setinput{padding:10px 12px;border:1px solid #cbd5e1;border-radius:10px;font:inherit;width:100%;max-width:420px;background:#fff}
.setgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px}

/* ---- landing: live + animated extras ---- */
.gallery a.gcard{display:block;text-decoration:none;color:inherit}
.typecur{display:inline-block;color:#6366f1;animation:blinkc 1s steps(1) infinite;margin-left:2px}
@keyframes blinkc{50%{opacity:0}}
.hero-mock{animation:herofloat 7s ease-in-out infinite}
@keyframes herofloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-9px)}}
.pv-opt{transition:all .5s ease}
.draw-path{stroke-dasharray:340;stroke-dashoffset:340;animation:drawloop 6s ease-in-out infinite}
@keyframes drawloop{0%{stroke-dashoffset:340;opacity:0}25%{opacity:1}55%{stroke-dashoffset:0}85%{stroke-dashoffset:0;opacity:1}100%{stroke-dashoffset:0;opacity:0}}
.tringo{animation:ringpulse 2s ease-in-out infinite}
@keyframes ringpulse{50%{transform:scale(1.05)}}
.band-mock{background:linear-gradient(120deg,#1e1b4b 0%,#0f172a 65%)}
.band-mock-inner{display:grid;grid-template-columns:1.35fr 1fr;gap:34px;align-items:center}
.band-mock-inner img{width:100%;border-radius:16px;border:1px solid rgba(99,102,241,.5);box-shadow:0 22px 55px rgba(2,6,23,.5)}
.band-mock .band-copy h2{color:#e0e7ff}
.band-mock .band-copy p{color:#c7d2fe}
.gbadge{position:absolute;top:8px;right:8px;background:#10b981;color:#052e16;font-size:.62rem;font-weight:700;letter-spacing:.05em;padding:3px 8px;border-radius:99px}
.gthumb-static{position:absolute;inset:0;display:grid;place-items:center;font-size:2.6rem}
@media(max-width:860px){.band-mock-inner{grid-template-columns:1fr}}
[hidden]{display:none !important}

/* ---- live demo: guest strip + claim ---- */
.gueststrip{display:flex;gap:10px;align-items:center;flex-wrap:wrap;background:#0f172a;color:#e2e8f0;padding:10px 14px;border-radius:12px;margin:14px 0 0;font-size:13px;line-height:1.5}
.gueststrip a{color:#fbbf24;font-weight:600}
.qrbox{background:#fff;padding:8px;border-radius:10px;display:inline-block;line-height:0}
.qrbox svg{display:block}
.claimqr{margin:12px 0;text-align:center}

/* ---- AI build log (streaming) ---- */
.buildlog { margin: 0 0 10px; border: 1px solid var(--bd); border-radius: 12px; background: #0b1020; overflow-y: auto; max-height: 45%; }
.buildlog.hid { display: none; }
.bl-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 8px 12px; background: #131a30; color: #a5b4fc; font-size: 13px; font-weight: 700; }
.bl-toggle { background: transparent; border: 1px solid #33406b; color: #9aa7d8; border-radius: 7px; padding: 2px 10px; font-size: 11px; font-weight: 600; cursor: pointer; }
.bl-toggle:hover { background: #1c2547; }
.bl-think { max-height: 140px; overflow-y: auto; padding: 10px 12px; border-bottom: 1px solid #223055; }
.bl-t { color: #7dd3fc; font-size: 11px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; margin-bottom: 6px; }
.bl-think-t { color: #c7d2fe; font-size: 12.5px; line-height: 1.55; white-space: pre-wrap; }
.bl-code { max-height: 230px; overflow-y: auto; padding: 10px 12px; color: #bbf7d0; font-size: 12px; line-height: 1.5; white-space: pre-wrap; word-break: break-word; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; }

/* ---- 3D hero mock + chunky hero CTAs (v32) ---- */
.hero-mock-wrap{position:relative;perspective:1400px;animation:herofloat 7s ease-in-out infinite}
.hero-mock{position:relative;z-index:1;animation:none;transform:rotateY(-10deg) rotateX(4deg);border-radius:18px;box-shadow:0 45px 90px -25px rgba(79,70,229,.45),0 25px 50px -18px rgba(15,23,42,.3)}
.hero-mock-wrap::after{content:'';position:absolute;left:6%;right:6%;bottom:-32px;height:32px;background:radial-gradient(50% 100% at 50% 0,rgba(30,27,75,.2),transparent 70%);z-index:0}
@media(max-width:920px){.hero-mock-wrap{perspective:1000px}.hero-mock{transform:rotateY(-6deg) rotateX(2deg)}}
.btn.solid{background:#fff;border:1px solid #cbd5e1;color:#0f172a;box-shadow:0 3px 0 #cbd5e1,0 14px 26px -10px rgba(15,23,42,.3);transition:transform .12s ease,box-shadow .12s ease}
.btn.solid:hover{transform:translateY(-2px);box-shadow:0 5px 0 #cbd5e1,0 18px 30px -10px rgba(15,23,42,.35)}
.btn.solid:active{transform:translateY(1px);box-shadow:0 2px 0 #cbd5e1,0 8px 16px -10px rgba(15,23,42,.3)}
.btn.dark{background:#0f172a;border:1px solid #020617;color:#fff;box-shadow:0 3px 0 #020617,0 14px 26px -10px rgba(15,23,42,.45);transition:transform .12s ease,box-shadow .12s ease}
.btn.dark:hover{transform:translateY(-2px);box-shadow:0 5px 0 #020617,0 18px 30px -10px rgba(15,23,42,.5)}
.btn.dark:active{transform:translateY(1px);box-shadow:0 2px 0 #020617,0 8px 16px -10px rgba(15,23,42,.45)}
.btn.primary{box-shadow:0 3px 0 #3730a3,0 14px 26px -10px rgba(79,70,229,.5);transition:transform .12s ease,box-shadow .12s ease}
.btn.primary:hover{transform:translateY(-2px);box-shadow:0 5px 0 #3730a3,0 18px 30px -10px rgba(79,70,229,.55)}
.btn.primary:active{transform:translateY(1px);box-shadow:0 2px 0 #3730a3,0 8px 16px -10px rgba(79,70,229,.5)}

/* ---- liven up: ambient blobs, entrance, hovers, polish (v32) ---- */
.hero{position:relative;overflow:hidden}
.hero-blob{position:absolute;border-radius:50%;filter:blur(70px);opacity:.55;pointer-events:none;z-index:0}
.hero-blob.b1{width:540px;height:540px;background:radial-gradient(circle,rgba(129,140,248,.55),transparent 65%);top:-170px;right:-110px;animation:blobdrift 16s ease-in-out infinite}
.hero-blob.b2{width:440px;height:440px;background:radial-gradient(circle,rgba(236,72,153,.32),transparent 65%);bottom:-190px;left:-130px;animation:blobdrift 21s ease-in-out infinite reverse}
@keyframes blobdrift{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(42px,30px) scale(1.08)}}
.hero .wrap{position:relative;z-index:1}
@keyframes riseIn{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}
.hero-copy{animation:riseIn .55s ease-out both}
.hero-mock-wrap{animation:riseIn .65s .12s ease-out both,herofloat 7s 1s ease-in-out infinite}
.card{transition:transform .18s ease,box-shadow .18s ease}
.card:hover{transform:translateY(-4px);box-shadow:0 18px 36px -16px rgba(15,23,42,.2)}
.section h2{position:relative}
.section h2::after{content:'';position:absolute;left:0;top:100%;margin-top:12px;width:64px;height:4px;border-radius:99px;background:linear-gradient(90deg,var(--ind),var(--ind2))}
::selection{background:#c7d2fe;color:#1e1b4b}
.band-copy h2::after{content:'';display:block;width:64px;height:4px;border-radius:99px;background:linear-gradient(90deg,#818cf8,#c084fc);margin-top:12px}
.band-mock .band-copy h2::after{margin-top:12px}
@media (prefers-reduced-motion:reduce){.hero-blob,.hero-mock-wrap,.hero-copy,.tringo,.typecur,.draw-path,.ringpulse{animation:none !important}.hero-mock{transform:rotateY(-6deg) rotateX(2deg)}}

/* ---- auth backdrop polish (v32) ---- */
.authwrap{background:linear-gradient(160deg,#eef2ff 0%,#faf5ff 45%,#f8fafc 100%);position:relative;overflow:hidden}
.authwrap::before{content:'';position:absolute;width:420px;height:420px;border-radius:50%;background:radial-gradient(circle,rgba(129,140,248,.35),transparent 65%);filter:blur(60px);top:-120px;right:-100px;pointer-events:none}
.authwrap::after{content:'';position:absolute;width:360px;height:360px;border-radius:50%;background:radial-gradient(circle,rgba(236,72,153,.22),transparent 65%);filter:blur(60px);bottom:-120px;left:-90px;pointer-events:none}
.auth{position:relative;z-index:1}
