:root{
  --bg:#f5f7fa; --card:#ffffff; --ink:#1f2933; --muted:#647084;
  --line:#e4e9f0; --accent:#1d9e75; --accent-d:#0f6e56;
  --indigo:#534ab7; --indigo-bg:#eeedfe; --wrong:#c0392b; --wrong-bg:#fdecea;
  --right-bg:#e7f6ef; --chip:#eef1f6; --amber:#b9770e; --amber-bg:#fdf3e3;
}
*{box-sizing:border-box}
html,body{margin:0}
body{background:var(--bg);color:var(--ink);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  line-height:1.55;-webkit-text-size-adjust:100%;}
.wrap{max-width:720px;margin:0 auto;padding:16px 16px 64px;}
.hidden{display:none !important;}
.muted{color:var(--muted);}
a{color:var(--accent-d);}

/* ---- gate ---- */
.gate{min-height:80vh;display:flex;align-items:center;justify-content:center;}
.gate-card{background:var(--card);border:1px solid var(--line);border-radius:16px;
  padding:28px 24px;max-width:380px;width:100%;text-align:center;box-shadow:0 2px 10px rgba(20,30,50,.05);}
.gate-card h1{font-size:22px;margin:6px 0 4px;}
.gate-card p{color:var(--muted);font-size:14px;margin:0 0 18px;}
.logo{font-size:40px;line-height:1;}

/* ---- app bar ---- */
.appbar{display:flex;align-items:center;gap:10px;margin:6px 0 16px;}
.brand{font-size:19px;font-weight:600;display:flex;align-items:center;gap:8px;}
.brand small{font-weight:400;color:var(--muted);font-size:12.5px;}
.spacer{margin-left:auto;}
.iconbtn{border:1px solid var(--line);background:#fff;border-radius:10px;padding:8px 11px;
  font-size:14px;cursor:pointer;color:var(--ink);}
.iconbtn:hover{border-color:#c3ccda;}

/* ---- capture ---- */
.capture{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:16px;margin-bottom:16px;}
.seg{display:flex;gap:6px;background:var(--chip);border-radius:10px;padding:4px;margin-bottom:14px;}
.seg button{flex:1;border:0;background:transparent;padding:8px;border-radius:8px;font-size:14px;
  cursor:pointer;color:var(--muted);font-family:inherit;}
.seg button.on{background:#fff;color:var(--ink);font-weight:600;box-shadow:0 1px 2px rgba(0,0,0,.06);}
.dropzone{border:2px dashed #c7d0de;border-radius:12px;padding:26px 16px;text-align:center;cursor:pointer;
  transition:.12s;background:#fbfcfe;}
.dropzone:hover,.dropzone.drag{border-color:var(--accent);background:#f2faf6;}
.dropzone .big{font-size:30px;}
.dropzone p{margin:8px 0 0;color:var(--muted);font-size:14px;}
.preview{margin-top:12px;text-align:center;}
.preview img{max-width:100%;max-height:280px;border-radius:10px;border:1px solid var(--line);}
textarea.problem{width:100%;min-height:90px;border:1px solid var(--line);border-radius:10px;
  padding:11px 13px;font:15px/1.5 inherit;resize:vertical;}
.row{display:flex;gap:10px;align-items:center;margin-top:12px;flex-wrap:wrap;}

.btn{border:none;border-radius:10px;padding:11px 18px;font-size:15px;font-weight:600;cursor:pointer;font-family:inherit;}
.btn:disabled{opacity:.55;cursor:default;}
.btn-primary{background:var(--accent);color:#fff;}
.btn-primary:hover:not(:disabled){background:var(--accent-d);}
.btn-ghost{background:var(--chip);color:var(--ink);}
.btn-wide{width:100%;}

/* ---- result + history cards ---- */
.card{background:var(--card);border:1px solid var(--line);border-radius:14px;
  padding:20px 18px;box-shadow:0 1px 2px rgba(20,30,50,.04);margin-bottom:14px;}
.badge{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:700;
  border-radius:999px;padding:4px 11px;margin-bottom:12px;text-transform:uppercase;letter-spacing:.03em;}
.badge.verified{background:var(--right-bg);color:var(--accent-d);}
.badge.agree{background:var(--indigo-bg);color:var(--indigo);}
.badge.disagree{background:var(--amber-bg);color:var(--amber);}
.badge.caution{background:var(--amber-bg);color:var(--amber);}
.badge.danger{background:var(--wrong-bg);color:var(--wrong);}
.qtext{font-size:15px;color:var(--muted);margin:0 0 12px;}
.answer{font-size:20px;font-weight:700;margin:0 0 4px;}
.answer .u{font-weight:500;color:var(--muted);font-size:16px;}
.section-label{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);
  margin:14px 0 8px;font-weight:700;}
.steps{margin:0;padding:0;list-style:none;}
.steps li{padding:6px 0 6px 28px;position:relative;font-size:15px;}
.steps li:before{content:attr(data-n);position:absolute;left:0;top:6px;width:19px;height:19px;
  background:var(--chip);border-radius:50%;font-size:11px;display:flex;align-items:center;
  justify-content:center;color:var(--muted);font-weight:700;}
.key{margin-top:14px;background:var(--indigo-bg);border-left:3px solid var(--indigo);
  padding:10px 13px;border-radius:0 8px 8px 0;font-size:14px;color:#39327e;}
.key b{color:var(--indigo);}
.permodel{margin-top:12px;font-size:13px;color:var(--muted);}
.permodel .m{display:block;padding:3px 0;}

/* ---- history ---- */
.history h2{font-size:14px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:22px 0 10px;}
.hitem{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-bottom:9px;cursor:pointer;}
.hitem:hover{border-color:#c3ccda;}
.hitem .h-top{display:flex;align-items:center;gap:8px;}
.hitem .h-ans{font-weight:600;}
.hitem .h-q{color:var(--muted);font-size:13.5px;margin-top:3px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.hitem .dot{width:8px;height:8px;border-radius:50%;flex:0 0 auto;}
.dot.verified{background:var(--accent);} .dot.agree{background:var(--indigo);} .dot.disagree{background:var(--amber);} .dot.danger{background:var(--wrong);}
.hdetail{margin-top:10px;border-top:1px dashed var(--line);padding-top:10px;}

/* ---- settings panel ---- */
.panel{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:18px;margin-bottom:16px;}
.panel h3{margin:0 0 4px;font-size:16px;}
.field{margin-top:12px;}
.field label{display:block;font-size:13px;color:var(--muted);margin-bottom:4px;}
.field input{width:100%;border:1px solid var(--line);border-radius:9px;padding:9px 11px;font:14px inherit;}
.note{font-size:12.5px;color:var(--muted);margin-top:6px;}

/* ---- misc ---- */
.spinner{width:18px;height:18px;border:2.5px solid #cfe6db;border-top-color:var(--accent);
  border-radius:50%;display:inline-block;animation:spin .7s linear infinite;vertical-align:-3px;}
@keyframes spin{to{transform:rotate(360deg)}}
.toast{position:fixed;left:50%;bottom:20px;transform:translateX(-50%);background:#11141c;color:#fff;
  padding:11px 16px;border-radius:10px;font-size:14px;z-index:50;max-width:90%;box-shadow:0 6px 24px rgba(0,0,0,.3);}
.alert{background:var(--amber-bg);border:1px solid #f0d9a8;color:var(--amber);
  border-radius:10px;padding:11px 14px;font-size:14px;margin-bottom:12px;}
.alert.warn{background:var(--wrong-bg);border-color:#f1c4bd;color:var(--wrong);}
.reading-diff{margin-top:6px;font-size:12.5px;color:var(--muted);}
.foot{margin-top:26px;text-align:center;font-size:12px;color:var(--muted);}

/* ====== v2: brand lockup, magic-link gate, dimensional analysis, folders, practice ====== */

/* ---- brand lockup (one clean title; fixes the broken iPhone header) ---- */
.brand-lockup{display:flex;align-items:center;gap:10px;min-width:0;}
.brand-lockup .brand-icon{font-size:24px;line-height:1;flex:0 0 auto;}
.brand-lockup .brand-text{display:flex;flex-direction:column;line-height:1.1;min-width:0;}
.brand-lockup .brand-text b{font-size:18px;font-weight:700;}
.brand-lockup .brand-text small{font-size:11.5px;font-weight:600;letter-spacing:.06em;
  text-transform:uppercase;color:var(--accent-d);}
.brand-lockup.big{justify-content:center;margin-bottom:6px;}
.brand-lockup.big .brand-icon{font-size:34px;}
.brand-lockup.big .brand-text b{font-size:24px;}

/* ---- magic-link gate ---- */
.gate-sub{color:var(--muted);font-size:14px;margin:4px 0 18px;}
.check{display:flex;align-items:center;gap:9px;text-align:left;font-size:13px;color:var(--muted);
  margin:12px 2px;cursor:pointer;}
.check input{width:18px;height:18px;flex:0 0 auto;}
.note.err{color:var(--wrong);min-height:0;}
.note.err:empty{display:none;}
#gate-form .field{margin-top:0;}
#gate-form .btn-wide{margin-top:6px;}
.gate-sent .big-check{font-size:40px;}
.gate-sent #gate-sent-email{color:var(--ink);font-weight:600;}
#gate-devlink a{display:inline-block;margin:10px 0;font-weight:600;}
.gate-again,.gate-sent .btn-ghost{margin-top:10px;}

/* ---- dimensional-analysis worked solution (factor-label) ---- */
.da{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:6px 0 4px;
  padding:14px 12px;background:#fbfdfc;border:1px solid var(--line);border-radius:12px;
  overflow-x:auto;font-variant-numeric:tabular-nums;}
.da-frac{display:inline-flex;flex-direction:column;align-items:center;text-align:center;}
.da-frac .da-n{padding:0 8px 3px;}
.da-frac .da-d{padding:3px 8px 0;border-top:2px solid var(--ink);}
.da-frac.solo .da-n{padding-bottom:0;}
.da-x,.da-eq{color:var(--muted);font-weight:700;font-size:17px;}
.da s{color:var(--wrong);text-decoration-thickness:2px;opacity:.85;}
.da-box{font-weight:800;font-size:18px;padding:8px 14px;border:2px solid var(--accent);
  border-radius:10px;background:var(--right-bg);color:var(--accent-d);white-space:nowrap;}
.da-cap{font-size:12px;color:var(--muted);margin:2px 0 8px;}

/* ---- saved view: folder + tag chips ---- */
.saved-head{display:flex;align-items:center;gap:10px;margin:22px 0 12px;}
.saved-head h2{font-size:14px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:0;}
.saved-head .chip-add{margin-left:auto;}
.chips{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:10px;}
.chips.tagrow{margin-bottom:14px;}
.chip{border:1px solid var(--line);background:#fff;border-radius:999px;padding:6px 13px;
  font-size:13px;cursor:pointer;color:var(--muted);font-family:inherit;white-space:nowrap;min-height:32px;}
.chip:hover{border-color:#c3ccda;}
.chip.active{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600;}
.chip.tag.active{background:var(--indigo);border-color:var(--indigo);}
.chip-add{color:var(--accent-d);border-style:dashed;}
.chip .x{margin-left:6px;opacity:.6;}

/* ---- saved item: question is the title now, answer secondary ---- */
.hitem .h-q{color:var(--ink);font-size:15px;font-weight:600;margin:0;white-space:normal;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.hitem .h-ans{color:var(--muted);font-weight:500;font-size:13.5px;}
.hitem .h-top{margin-top:4px;}
.hitem .h-meta{display:flex;gap:6px;align-items:center;margin-top:8px;flex-wrap:wrap;}
.minitag{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;
  padding:2px 8px;border-radius:999px;background:var(--chip);color:var(--muted);}
.minitag.in-folder{background:var(--indigo-bg);color:var(--indigo);}
.file-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px;}
.file-row select{border:1px solid var(--line);border-radius:8px;padding:7px 9px;font:13px inherit;
  background:#fff;color:var(--ink);min-height:34px;max-width:100%;}

/* ---- practice ---- */
.practice{margin-top:14px;border-top:1px dashed var(--line);padding-top:14px;}
.practice h4{margin:0 0 10px;font-size:13px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);}
.pq{background:#fff;border:1px solid var(--line);border-radius:11px;padding:13px 14px;margin-bottom:10px;}
.pq .pq-q{font-size:14.5px;margin:0 0 8px;}
.pq .reveal{font-size:13px;}
.pq-ans{margin-top:10px;}
.btn-sm{padding:7px 13px;font-size:13px;border-radius:9px;}
.btn-practice{background:var(--indigo-bg);color:var(--indigo);}

/* ---- small-screen (iPhone ~390px) pass: no overflow, tappable, safe-area ---- */
@media (max-width:430px){
  .wrap{padding:12px 13px calc(56px + env(safe-area-inset-bottom));}
  .card{padding:17px 15px;}
  .answer{font-size:19px;}
  .brand-lockup .brand-text b{font-size:17px;}
  .da{gap:8px;padding:12px 10px;}
  .da-box{font-size:16px;}
  .iconbtn,.chip,.btn{min-height:40px;}            /* comfortable tap targets */
  .btn{padding:12px 16px;}
}
* { -webkit-tap-highlight-color: transparent; }
img,canvas,.da{max-width:100%;}
