:root{
  --brand:#1798d3; --ink:#1d2433; --muted:#5b6475; --bg:#f4f7fb; --card:#fff; --line:#dfe5ee;
  --who:#e8792e; --doing:#f2c94c; --what:#4caf6d; --where:#2e74c4; --when:#a35332;
  --how:#cb79bb; --describe:#a873be;
  --good:#2e9d5b; --think:#e0a100;
}
*{box-sizing:border-box}
html,body{margin:0}
body{background:var(--bg);color:var(--ink);font-family:'Nunito',system-ui,sans-serif;min-height:100vh;display:flex;flex-direction:column;-webkit-tap-highlight-color:transparent}
button{font-family:inherit;cursor:pointer}
[hidden]{display:none!important}

/* header */
#top{display:flex;align-items:center;flex-wrap:wrap;gap:6px 14px;padding:8px 16px 0;background:linear-gradient(90deg,#1798d3,#0f6fa0);color:#fff;position:sticky;top:0;z-index:20}
.brand{display:flex;align-items:center;gap:10px;color:#fff;text-decoration:none}
.brand img{height:40px;width:auto;background:#fff;border-radius:8px;padding:3px}
.brand b{display:block;font-size:1.25rem;font-weight:900;line-height:1.1}
.brand small{display:block;font-size:.78rem;opacity:.85}
#stepTag{background:rgba(255,255,255,.18);border-radius:999px;padding:6px 14px;font-weight:800;white-space:nowrap}
.tools{margin-left:auto;display:flex;gap:8px}
.tool{background:rgba(255,255,255,.15);border:0;color:#fff;border-radius:10px;padding:6px 12px;font-size:1.05rem;font-weight:800;display:flex;align-items:center;gap:6px}
.tool span{font-size:.85rem}
.tool:hover{background:rgba(255,255,255,.28)}

/* home */
#home{max-width:1100px;margin:0 auto;padding:18px 16px 30px;width:100%}
.intro h1{margin:6px 0 2px;font-size:2rem;font-weight:900}
.intro p{margin:0 0 6px;color:var(--muted);font-size:1.1rem}
#home h2{font-size:1.2rem;margin:22px 0 10px}
.step-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px}
.step-card{background:var(--card);border:3px solid var(--line);border-radius:16px;padding:14px;text-align:left;color:var(--ink)}
.step-card.on{border-color:var(--brand);box-shadow:0 0 0 4px rgba(23,152,211,.18)}
.step-card h3{margin:0 0 2px;font-size:1.25rem;font-weight:900}
.step-card p{margin:0 0 10px;color:var(--muted);font-weight:700}
.mini{display:flex;flex-wrap:wrap;gap:4px;align-items:center}
.mini span{border-radius:6px;padding:3px 7px;font-family:'Andika',sans-serif;font-size:.95rem;color:#fff}
.mini span.dark{color:#3a2c00}
.mini span.dot{background:none;color:var(--ink);font-weight:900;padding:0}
.topic-tabs{display:flex;gap:8px;margin-bottom:10px;flex-wrap:wrap}
.topic-tabs button{border:2px solid var(--line);background:#fff;border-radius:999px;padding:6px 14px;font-weight:800}
.topic-tabs button.on{background:var(--brand);border-color:var(--brand);color:#fff}
.pic-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}
.pic-card{border:0;padding:0;background:#fff;border-radius:14px;overflow:hidden;box-shadow:0 2px 8px rgba(0,0,0,.08);text-align:left}
.pic-card img{width:100%;aspect-ratio:3/2;object-fit:cover;display:block}
.pic-card div{padding:8px 12px;font-weight:800;font-size:1.05rem}
.pic-card:hover{transform:translateY(-2px);box-shadow:0 6px 16px rgba(0,0,0,.12)}

/* build */
#build{flex:1;display:grid;grid-template-columns:minmax(280px,40%) 1fr;gap:16px;padding:14px 16px;max-width:1500px;margin:0 auto;width:100%;align-items:start}
.pic-panel{position:sticky;top:74px;background:#fff;border-radius:16px;padding:8px;box-shadow:0 2px 8px rgba(0,0,0,.08)}
.pic-panel img{width:100%;border-radius:10px;display:block}
#picTitle{font-weight:800;padding:6px 4px 2px;color:var(--muted)}
.work{min-width:0;display:flex;flex-direction:column;gap:12px}

.line-wrap{background:#fff;border-radius:16px;padding:14px;box-shadow:0 2px 8px rgba(0,0,0,.08)}
.line{display:flex;flex-wrap:wrap;align-items:stretch;gap:8px;min-height:96px}
.line.covered .chip,.line.covered .lit,.line.covered .stop{filter:blur(14px);opacity:.5}
.chip{border:0;border-radius:12px;padding:6px 12px 6px;display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:84px;color:#fff;transition:all .25s ease;position:relative;max-width:100%}
.chip img{height:28px;width:auto;margin-bottom:2px}
.chip .w{font-family:'Andika',sans-serif;font-size:1.65rem;line-height:1.15;font-weight:400}
.chip .lab{font-size:.72rem;font-weight:900;text-transform:uppercase;letter-spacing:.04em;opacity:.85}
.chip.c-doing{color:#3a2c00}
.chip.empty{background:#fff!important;border:3px dashed currentColor;color:var(--slot)!important;opacity:.85}
.chip.empty .w{font-size:1.2rem;font-weight:700}
.chip.optional{border-style:dotted;opacity:.6}
.chip.active{box-shadow:0 0 0 4px rgba(23,152,211,.35);opacity:1}
.chip.speaking{transform:translateY(-4px) scale(1.04);box-shadow:0 8px 18px rgba(0,0,0,.2)}
.chip.problem{animation:wiggle .5s ease 2;box-shadow:0 0 0 5px rgba(224,161,0,.75)}
.chip.locked::after{content:'🔒';position:absolute;top:-8px;right:-6px;font-size:.9rem}
.chip.extra.hiddenx{min-width:0;width:14px;padding:0;overflow:hidden;opacity:.25}
.chip.extra.hiddenx *{display:none}
.lit{display:flex;align-items:flex-end;padding:0 2px 14px;font-family:'Andika',sans-serif;font-size:1.65rem}
.stop{display:flex;align-items:flex-end;padding-bottom:10px;font-family:'Andika',sans-serif;font-size:2.4rem;font-weight:700;line-height:1}
.stop.empty{color:#c3cad6}
@keyframes wiggle{0%,100%{transform:rotate(0)}25%{transform:rotate(-3deg)}75%{transform:rotate(3deg)}}

.line-tools{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.btn{border:0;border-radius:12px;padding:12px 18px;font-size:1.1rem;font-weight:900;background:#e9eef5;color:var(--ink);display:inline-flex;align-items:center;gap:8px}
.btn:disabled{opacity:.4;cursor:default}
.btn.primary{background:var(--brand);color:#fff}
.btn.good{background:var(--good);color:#fff}
.btn.think{background:var(--think);color:#2b2000}
.btn.pulse{animation:pulse 1.4s ease infinite}
@keyframes pulse{0%,100%{box-shadow:0 0 0 0 rgba(23,152,211,.5)}50%{box-shadow:0 0 0 10px rgba(23,152,211,0)}}

.coach{background:#fffbea;border:2px solid #f1df9a;border-radius:14px;padding:12px 14px;font-size:1.15rem;font-weight:700;display:flex;gap:10px;align-items:flex-start}
.coach.good{background:#eaf8ef;border-color:#a8dcb9}
.coach.think{background:#fff4dd;border-color:#f0c66b}
.coach .ic{font-size:1.6rem;line-height:1}
.coach q{font-family:'Andika',sans-serif;font-weight:400;quotes:'“' '”'}

.bank{background:#fff;border-radius:16px;padding:14px;box-shadow:0 2px 8px rgba(0,0,0,.08)}
.bank:empty{display:none}
.bank-group+.bank-group{margin-top:14px}
.bank-q{display:flex;align-items:center;gap:8px;font-weight:900;font-size:1.2rem;margin-bottom:8px}
.bank-q img{height:30px}
.bank-q .count{margin-left:auto;font-size:.95rem;background:#eef2f7;border-radius:999px;padding:3px 10px}
.cards{display:flex;flex-wrap:wrap;gap:8px}
.card{border:0;border-radius:12px;padding:10px 16px;font-family:'Andika',sans-serif;font-size:1.45rem;color:#fff;min-height:56px;box-shadow:0 3px 0 rgba(0,0,0,.15)}
.card.c-doing{color:#3a2c00}
.card:active{transform:translateY(2px);box-shadow:none}
.card.chosen{outline:4px solid var(--ink);outline-offset:2px}
.card:disabled{opacity:.35;cursor:default}
.c-who{background:var(--who)} .c-doing{background:var(--doing)} .c-what{background:var(--what)}
.c-where{background:var(--where)} .c-when{background:var(--when)} .c-how{background:var(--how)}
.c-describe{background:var(--describe)}
.stop-card{background:#fff;color:var(--ink);border:3px solid var(--ink);font-size:1.3rem;font-family:'Nunito',sans-serif;font-weight:900}

.stars{display:flex;gap:4px;font-size:1.5rem;margin-top:6px}
.final{font-family:'Andika',sans-serif;font-size:1.9rem;padding:6px 2px;line-height:1.3}

#foot{text-align:center;color:var(--muted);font-size:.82rem;padding:10px 16px 14px}

.modal{position:fixed;inset:0;background:rgba(10,20,40,.45);display:flex;align-items:center;justify-content:center;z-index:50;padding:16px}
.modal-box{background:#fff;border-radius:18px;max-width:620px;width:100%;max-height:90vh;overflow:auto;padding:20px 22px}
.modal-box h2{margin:0 0 12px}
.modal-box h3{margin:16px 0 6px;font-size:1.05rem}
.modal-box p,.modal-box li{color:#333;line-height:1.45}
.seg{display:inline-flex;border:2px solid var(--line);border-radius:12px;overflow:hidden}
.seg button{border:0;background:#fff;padding:8px 14px;font-weight:800}
.seg button.on{background:var(--brand);color:#fff}
.row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:8px 0}
.row label{font-weight:800;min-width:150px}
code{background:#eef2f7;border-radius:6px;padding:1px 6px}

@media (max-width:860px){
  #build{grid-template-columns:1fr}
  .pic-panel{position:static}
  .pic-panel img{max-height:34vh;object-fit:contain}
  .chip .w,.lit{font-size:1.35rem}
  .card{font-size:1.25rem;padding:8px 12px}
  .brand small{display:none}
  .tool span{display:none}
}
@media (max-width:600px){
  #top{gap:8px;padding:8px 10px}
  #stepTag .sub{display:none}
  .brand b{font-size:1.05rem}
  .brand img{height:32px}
  .tool{padding:6px 9px}
}
.chip.empty img,.chip.empty .lab{display:none}
.chip.empty{min-height:78px}

/* joining words (Steps 4-5, Fix it) */
.join-chip{background:#fff;border:3px solid #cfd6e2;color:#c0392b}
.join-chip.j-subord{color:#2e5fa3}
.join-chip.j-stop,.join-chip.j-comma{color:#222}
.join-chip .w{font-weight:700}
.join-chip .lab{color:#5b6475}
.join-chip.empty{border-style:dashed;background:#fff!important;min-height:78px}
.join-chip.empty img{display:none}
.join-chip.tappable{box-shadow:0 0 0 3px rgba(23,152,211,.3)}
.join-card{background:#fff;color:#c0392b;border:3px solid currentColor;display:flex;flex-direction:column;align-items:flex-start;gap:2px;box-shadow:none}
.join-card.j-subord{color:#2e5fa3}
.join-card.j-stop{color:#222}
.join-card .jw{font-weight:700}
.join-card small{font-family:'Nunito',sans-serif;font-size:.8rem;color:#5b6475;font-weight:700}
.lit.faint{color:#c3cad6}
.mini span.c-lit{background:none;color:var(--ink);padding:3px 0}
.mini span.c-coord{background:#fff;color:#c0392b;border:1px solid #c0392b}
.mini span.c-subord{background:#fff;color:#2e5fa3;border:1px solid #2e5fa3}
.fix-card h3{font-size:1.15rem}

/* fix it */
.word{border:2px solid var(--line);background:#f7f9fc;border-radius:10px;padding:8px 12px;font-family:'Andika',sans-serif;font-size:1.6rem;color:var(--ink);align-self:center}
.word:hover{border-color:var(--brand)}
.word.speaking{background:#e3f3fb;border-color:var(--brand)}
.word.hint{border-color:var(--think);box-shadow:0 0 0 4px rgba(224,161,0,.35)}
.comma-mark{padding-bottom:18px;margin-left:-6px}
.chip.removable::before{content:'✖';position:absolute;top:-9px;left:-7px;background:#fff;color:#c0392b;border:2px solid #c0392b;border-radius:50%;font-size:.7rem;width:20px;height:20px;line-height:16px;text-align:center}
@media (max-width:860px){ .word{font-size:1.3rem;padding:6px 9px} }

/* Steps 6-7: commas and brackets in the line */
.mark{padding:0 2px 10px;min-width:12px;text-align:center;transition:all .25s ease}
.mark.empty{color:#c3cad6;border-bottom:3px dashed #c3cad6;padding-bottom:6px;align-self:flex-end;margin-bottom:8px}
.mark.empty.active{color:var(--brand);border-color:var(--brand)}
.mark.extra.hiddenx{width:0;min-width:0;padding:0;overflow:hidden;opacity:0}
.mark.added{color:var(--good)}
.note{margin:-4px 0 10px;color:var(--muted);font-weight:700}
.step-cards{grid-template-columns:repeat(auto-fit,minmax(230px,1fr))}

/* Move it */
.move-opt{display:block;width:100%;text-align:left;border:2px solid var(--line);background:#fff;border-radius:12px;padding:10px 12px;margin-bottom:8px;position:relative}
.move-opt:hover{border-color:var(--brand)}
.move-opt.sel.good{border-color:var(--good);background:#f2fbf5}
.move-opt.sel.bad{border-color:var(--think);background:#fff8e6}
.move-mini{font-size:1.15rem;gap:2px}
.move-mini span{font-size:1.15rem}
.move-mini span.mv{outline:3px solid var(--ink);outline-offset:1px}
.move-mini .sp-mark{background:none;color:var(--ink);padding:3px 0;font-weight:900}
.move-mini .sp-mark.mv{outline:none;color:#c0392b}
.move-mini .sp-join{background:#fff;color:#2e5fa3;border:1px solid #2e5fa3}
.tag-now{position:absolute;top:-9px;right:10px;background:var(--brand);color:#fff;font-size:.72rem;font-weight:900;border-radius:999px;padding:1px 8px}
.verdict{margin-top:8px;font-weight:700;font-size:1rem}
.move-mini .sp-mark{font-size:1.7rem!important;line-height:1;padding:0 1px!important}

/* Free build */
.tool-card{background:#fff;color:var(--ink);border:2px solid var(--line);display:flex;align-items:center;gap:8px;font-family:'Nunito',sans-serif;font-size:1.05rem;font-weight:800;box-shadow:0 2px 0 rgba(0,0,0,.08)}
.tool-card img{height:30px;border-radius:6px;background:#1d2433;padding:2px}
.tool-card:hover:not(:disabled){border-color:var(--brand)}
.bank-q .count{margin-left:auto}

/* Check my writing */
.write-card{width:100%;display:flex;align-items:center;gap:14px;text-align:left;border:3px solid var(--brand);background:#eaf6fc;border-radius:16px;padding:14px 18px;color:var(--ink);margin-top:14px}
.write-card .big{font-size:2.2rem}
.write-card b{display:block;font-size:1.3rem;font-weight:900}
.write-card small{display:block;font-size:.98rem;color:var(--muted);font-weight:700}
#build.nopic{grid-template-columns:1fr;max-width:1000px}
.wr-text{width:100%;font-family:'Andika',sans-serif;font-size:1.6rem;line-height:1.4;border:2px solid var(--line);border-radius:12px;padding:12px 14px;resize:vertical;color:var(--ink)}
.wr-text:focus{outline:none;border-color:var(--brand)}
.wr-card .bank-q .btn{margin-left:auto}
.btn.small{padding:6px 10px;font-size:1rem}
.wr-strip{display:flex;flex-wrap:wrap;align-items:center;gap:4px 0;font-family:'Andika',sans-serif;font-size:1.5rem;line-height:1.7;margin-bottom:8px}
.wr-w{padding:1px 5px;border-radius:4px;margin-right:2px}
.idea-0{background:#fdebd9} .idea-1{background:#dbecfb} .idea-2{background:#e2f5e4} .idea-3{background:#f6e3f2}
.idea-rel{background:#efe7f8;border-bottom:3px dashed #a873be}
.wr-w.w-who{color:#b5520f;font-weight:700;border-bottom:3px solid var(--who)}
.wr-w.w-doing{background:var(--doing);color:#3a2c00;font-weight:700}
.wr-w.w-doing.rel{background:#fbe9a6}
.wr-w.w-join{color:#c0392b;font-weight:700}
.wr-w.wr-bad{background:#ffd5cc;color:#b00;font-weight:900}
.wr-w.speaking{outline:3px solid var(--brand)}
button.wr-and{border:2px solid #c0392b;color:#c0392b;font-family:'Andika',sans-serif;font-size:1.4rem;background:#fff;cursor:pointer}
.wr-gap{border:2px dashed #c0392b;background:#fff3f0;color:#c0392b;border-radius:8px;padding:0 6px;margin:0 4px;font-weight:900;font-size:1.1rem;line-height:1.4}
.wr-gap small{font-size:.75rem}
.wr-problem{display:flex;gap:10px;align-items:flex-start;background:#fff8e6;border:2px solid #f0c66b;border-radius:12px;padding:10px 12px;margin-top:8px;font-weight:700;font-size:1.05rem}
.wr-problem .ic{font-size:1.4rem}
.wr-problem .btn{display:inline-flex;margin-top:8px;font-size:.95rem;padding:8px 12px}
.wr-problem q{font-family:'Andika',sans-serif;font-weight:400}
.wr-ok{background:#eaf8ef;border:2px solid #a8dcb9;border-radius:12px;padding:10px 12px;font-weight:700}
.mini-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));max-height:420px;overflow:auto}
.mini-grid .pic-card div{font-size:.9rem;padding:6px 8px}
.wr-missing{border:3px dashed var(--doing);color:#8a6d00;border-radius:6px;padding:0 8px;margin:0 4px;font-family:'Nunito',sans-serif;font-weight:900;font-size:1rem;line-height:1.6;background:#fffbea}

/* main navigation (every screen) */
#mainNav{order:3;flex:1 0 100%;display:flex;gap:4px;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;padding:2px 0 0}
#mainNav::-webkit-scrollbar{display:none}
#mainNav button{border:0;background:transparent;color:#fff;font-weight:800;font-size:1rem;padding:8px 14px;border-radius:10px 10px 0 0;display:flex;align-items:center;gap:6px;white-space:nowrap;opacity:.88}
#mainNav button:hover{background:rgba(255,255,255,.15);opacity:1}
#mainNav button.on{background:#fff;color:#0f6fa0;opacity:1}
.tools a.tool{text-decoration:none}
/* where-am-I bar */
#crumbs{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:8px 16px;background:#fff;border-bottom:1px solid var(--line);position:sticky;top:var(--hdr,96px);z-index:15}
.crumb-path{display:flex;align-items:center;gap:8px;font-weight:800;color:var(--muted);flex-wrap:wrap}
.crumb-path a{color:var(--brand);text-decoration:none}
.crumb-path a:hover{text-decoration:underline}
.crumb-path b{color:var(--ink)}
.crumb-actions{margin-left:auto;display:flex;gap:6px;flex-wrap:wrap}
.crumb-btn{border:2px solid var(--line);background:#fff;border-radius:999px;padding:6px 12px;font-weight:800;font-size:.92rem;color:var(--ink)}
.crumb-btn:hover{border-color:var(--brand)}
.pic-panel{top:150px}
/* home: the four things you can do */
.home-modes{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin-top:14px}
.home-modes button{display:flex;flex-direction:column;align-items:flex-start;gap:4px;text-align:left;border:3px solid var(--line);background:#fff;border-radius:16px;padding:14px 16px;color:var(--ink)}
.home-modes button:hover{border-color:var(--brand)}
.home-modes .big{font-size:2rem}
.home-modes b{font-size:1.2rem;font-weight:900}
.home-modes small{color:var(--muted);font-weight:700;font-size:.92rem}
#stepsSec,#picsSec,#fixSec{scroll-margin-top:70px}
@media (max-width:640px){ #mainNav button{font-size:.88rem;padding:7px 9px} }
@media (max-width:600px){ .crumb-actions{margin-left:0} }
.crumb-path .sub{display:none}
.wr-problem.punct{background:#eef6fd;border-color:#9ccbee}

/* being / having words: the yellow diamond from the colour-coded framework */
.chip.c-aux{background:var(--doing);color:#3a2c00}
.chip.c-aux .w{background:#fff;clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%);padding:8px 26px;font-size:1.35rem}
.chip.c-aux img{display:none}
.aux-card{background:var(--doing);color:#3a2c00;display:flex;flex-direction:column;align-items:center;gap:2px}
.aux-card .dia{background:#fff;clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%);padding:6px 22px;font-size:1.25rem}
.aux-card small{font-family:'Nunito',sans-serif;font-size:.85rem;font-weight:800}
.mini span.c-aux{background:var(--doing);color:#3a2c00}

/* keep the sentence in view while choosing cards further down (tablets / boards) */
@media (min-width:861px) and (min-height:560px){
  .line-wrap{position:sticky;top:calc(var(--hdr,96px) + var(--crumbs,48px) + 6px);z-index:10;box-shadow:0 6px 16px rgba(0,0,0,.10)}
}
.aux-card.chosen{outline:4px solid var(--ink);outline-offset:2px}
.aux-card.dim{opacity:.55}
