:root {
  --ink:#10283a;
  --muted:#64727a;
  --paper:#f4f1e9;
  --surface:#fffdf8;
  --line:#d7d4ca;
  --accent:#0b7f82;
  --accent-soft:#d8efea;
  --warm:#d66b46;
  --shadow:0 18px 50px rgba(16,40,58,.08);
}
*{box-sizing:border-box}
html{scroll-behavior:auto}
body{margin:0;background:var(--paper);color:var(--ink);font-family:"Microsoft YaHei UI","PingFang SC","Noto Sans CJK SC",sans-serif;line-height:1.65}
button,input{font:inherit}
a{color:inherit}
.watermark{position:fixed;inset:0;pointer-events:none;z-index:20;opacity:.028;background-image:repeating-linear-gradient(-28deg,transparent 0 150px,rgba(16,40,58,.8) 151px 152px,transparent 153px 290px)}
.watermark::after{content:"JAMIE老师 · DATABASE SYSTEMS";position:fixed;left:50%;top:50%;transform:translate(-50%,-50%) rotate(-28deg);font-size:clamp(28px,5vw,72px);font-weight:800;letter-spacing:.12em;white-space:nowrap}
.site-header{height:72px;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(24px,5vw,80px);border-bottom:1px solid var(--line);position:sticky;top:0;background:rgba(244,241,233,.92);backdrop-filter:blur(14px);z-index:10}
.brand{text-decoration:none;font-weight:800;letter-spacing:.02em}.brand span{display:inline-grid;place-items:center;background:var(--ink);color:white;width:38px;height:38px;margin-right:10px;border-radius:50%}
.site-header nav{display:flex;align-items:center;gap:18px;color:var(--muted);font-size:14px}
.text-button{border:0;background:none;color:var(--accent);cursor:pointer;padding:8px}
main{max-width:1280px;margin:auto;padding:0 clamp(24px,5vw,72px) 90px}
.hero{min-height:600px;display:grid;grid-template-columns:minmax(0,1.5fr) minmax(260px,.5fr);gap:8vw;align-items:center;border-bottom:1px solid var(--line)}
.eyebrow{font-size:12px;letter-spacing:.18em;font-weight:800;color:var(--accent);text-transform:uppercase}
.hero h1{font-family:Georgia,"STSong",serif;font-size:clamp(48px,6vw,78px);line-height:1.06;letter-spacing:-.035em;margin:24px 0 32px;font-weight:500}.hero h1 em{color:var(--warm);font-style:normal}
.hero-copy{max-width:620px;font-size:19px;color:var(--muted)}
.course-status{padding:30px;border-left:4px solid var(--accent);background:var(--surface);box-shadow:var(--shadow)}
.course-status span,.course-status small{display:block;color:var(--muted)}.course-status strong{display:block;font-size:64px;line-height:1.1;margin:12px 0}.progress-track{height:8px;background:#e5e2d9;overflow:hidden;margin:12px 0 18px}.progress-track i{display:block;height:100%;width:0;background:var(--accent);transition:width .5s}
.course-map{padding-top:92px}.section-heading{display:grid;grid-template-columns:160px 1fr 1fr;gap:30px;align-items:end;margin-bottom:40px}.section-heading h2{font-family:Georgia,"STSong",serif;font-size:46px;margin:0}.section-heading>p:last-child{color:var(--muted);margin:0}
.week-list{border-top:1px solid var(--ink)}
.week-row{display:grid;grid-template-columns:120px 1fr 170px;align-items:center;gap:32px;padding:28px 10px;border-bottom:1px solid var(--line);transition:background .2s,padding .2s}.week-row.is-open:hover{background:var(--surface);padding-left:22px;padding-right:22px}
.week-number small{display:block;color:var(--muted);font-size:10px;letter-spacing:.16em}.week-number strong{font-size:32px;font-family:Georgia,serif}
.week-copy span{font-size:12px;color:var(--accent);font-weight:700}.week-copy h3{margin:3px 0;font-size:24px}.week-copy p{margin:0;color:var(--muted)}.week-copy time{display:block;margin-top:7px;color:#47545d;font-size:13px;font-weight:700;font-variant-numeric:tabular-nums}
.week-row>a{text-decoration:none;text-align:right;font-weight:700;color:var(--accent)}.week-row>a b{font-size:22px;margin-left:12px}.week-row.is-locked>a{color:#9ba3a5;pointer-events:none}
footer{display:flex;justify-content:space-between;border-top:1px solid var(--line);padding:30px clamp(24px,5vw,80px);color:var(--muted);font-size:13px}
.auth-gate{position:fixed;inset:0;background:var(--ink);z-index:100;display:grid;place-items:center;padding:24px}.auth-gate.is-hidden{display:none}.login-panel{width:min(460px,100%);background:var(--surface);padding:44px;box-shadow:0 30px 90px rgba(0,0,0,.3)}.login-panel h1{font-family:Georgia,"STSong",serif;font-size:42px;line-height:1.15;margin:12px 0}.login-panel>p{color:var(--muted)}.login-panel label{display:block;font-weight:700;margin:18px 0}.login-panel input{width:100%;border:1px solid var(--line);background:white;padding:13px;margin-top:7px;outline:none}.login-panel input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.primary-button{border:0;background:var(--accent);color:white;padding:14px 22px;font-weight:800;cursor:pointer;width:100%}.primary-button:disabled{opacity:.62;cursor:wait}.form-message{min-height:24px;color:var(--warm)!important}.login-note{margin:16px 0 0;font-size:12px;line-height:1.6}
.site-header nav a{text-decoration:none;color:var(--ink);font-weight:700}
.lesson-shell{max-width:1400px;display:grid;grid-template-columns:230px minmax(0,900px);justify-content:center;gap:70px;padding-top:56px}
.lesson-nav{position:sticky;top:110px;height:calc(100vh - 140px);display:flex;flex-direction:column;justify-content:space-between;border-right:1px solid var(--line);padding-right:28px}
.lesson-nav a{display:block;text-decoration:none;color:var(--muted);font-size:13px;padding:9px 0;border-bottom:1px solid transparent}.lesson-nav a:hover{color:var(--accent);border-color:var(--accent)}
.lesson-nav a.is-current{color:var(--accent);border-color:var(--accent);font-weight:700}
.xp-panel{background:var(--ink);color:white;padding:18px}.xp-panel span,.xp-panel small{display:block;opacity:.68}.xp-panel strong{display:block;font-size:25px;margin:4px 0}
.lesson-content{min-width:0}.lesson-hero{padding:74px 0 94px;border-bottom:1px solid var(--ink)}
.lesson-meta{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:38px}.lesson-meta span{border:1px solid var(--line);padding:6px 10px;color:var(--muted);font-size:11px}.lesson-meta .preview-badge{background:var(--accent-soft);color:var(--accent);border-color:transparent}
.lesson-hero h1{font:500 clamp(52px,7vw,82px)/1.05 Georgia,"STSong",serif;letter-spacing:-.04em;margin:10px 0}.lesson-hero h2{font-size:25px;color:var(--warm);margin:0 0 28px}.lesson-hero>p:not(.eyebrow){font-size:19px;color:var(--muted);max-width:740px}
.goal-line{display:flex;gap:8px;flex-wrap:wrap;margin-top:34px}.goal-line span{padding:8px 12px;background:var(--surface);border-left:3px solid var(--accent);font-size:12px}
.lesson-section{padding:100px 0;border-bottom:1px solid var(--line);scroll-margin-top:90px}.section-index{font-size:12px;color:var(--accent);font-weight:800;letter-spacing:.12em}.lesson-section>h2{font:500 clamp(36px,5vw,58px)/1.14 Georgia,"STSong",serif;letter-spacing:-.025em;margin:12px 0 24px}.section-lead{font-size:19px;color:var(--muted);max-width:760px}
blockquote{margin:38px 0 0;padding:24px 28px;border-left:4px solid var(--warm);background:#f7e7dd;color:#74412f}blockquote b{color:var(--warm)}
.incident-sheet{margin:36px 0;border:1px solid var(--line);background:var(--surface);font-family:Consolas,"Microsoft YaHei UI",sans-serif;font-size:13px}.sheet-row{display:grid;grid-template-columns:.8fr .8fr 1.2fr 1fr .7fr}.sheet-row span{padding:11px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.sheet-head{font-weight:800;background:var(--ink);color:white}.bad-cell{background:#ffe6d7;color:#9c3214;font-weight:700}
.choice-game,.micro-check,.tag-game,.match-grid{margin-top:40px;padding:28px;background:var(--surface);border-top:3px solid var(--accent);box-shadow:var(--shadow)}.choice-game h3,.micro-check h3,.tag-game h3{margin-top:0}.choice-game button,.micro-check button,.tag-game button{width:100%;display:block;text-align:left;border:1px solid var(--line);background:white;padding:12px 14px;margin:8px 0;cursor:pointer;transition:.18s}.choice-game button:hover,.micro-check button:hover,.tag-game button:hover{border-color:var(--accent);transform:translateX(4px)}button.is-correct{background:var(--accent-soft)!important;border-color:var(--accent)!important;color:#07585a}button.is-wrong{background:#fae4df!important;border-color:var(--warm)!important;color:#923a22}.game-feedback{min-height:24px;color:var(--muted);font-weight:700}
.flip-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:34px}.flip-card{min-height:170px;border:1px solid var(--line);background:var(--surface);padding:26px;text-align:left;cursor:pointer}.flip-card span,.flip-card i{display:block}.flip-card span{font-size:20px}.flip-card span b{font-size:31px;color:var(--accent);display:block}.flip-card i{font-style:normal;color:var(--muted);margin-top:18px;opacity:0;transform:translateY(8px);transition:.2s}.flip-card.is-flipped{border-color:var(--accent);background:var(--accent-soft)}.flip-card.is-flipped i{opacity:1;transform:none}
.reason-lines{margin-top:40px}.reason-lines article{display:grid;grid-template-columns:80px 1fr;gap:20px;padding:25px 0;border-top:1px solid var(--line)}.reason-lines strong{font:36px Georgia,serif;color:var(--warm)}.reason-lines h3{margin:0;font-size:22px}.reason-lines p{margin:5px 0;color:var(--muted)}
.system-stack{max-width:680px;margin:34px 0}.system-stack button{display:block;width:100%;border:0;border-bottom:2px solid var(--paper);background:var(--surface);padding:18px;text-align:left;cursor:pointer}.system-stack button:nth-child(3){background:#d9efea}.system-stack button.is-active{background:var(--ink);color:white;transform:translateX(12px)}.stack-note{padding:16px 18px;background:var(--ink);color:white}.extension{margin-top:32px;border:1px solid var(--line);background:var(--surface);padding:18px}.extension summary{cursor:pointer;font-weight:800;color:var(--accent)}
.relation-table{margin:36px 0;border:1px solid var(--line);background:white}.rt-row{width:100%;display:grid;grid-template-columns:1fr 1fr 1fr;border:0;border-bottom:1px solid var(--line);background:white;padding:0;cursor:pointer}.rt-row>*{padding:16px;border-right:1px solid var(--line);text-align:left}.rt-head{background:var(--ink)}.rt-head button{background:none;border:0;color:white;font-weight:800;cursor:pointer}.key-cell{background:#fff0c9;font-weight:800}.term-strip{display:flex;gap:8px;flex-wrap:wrap}.term-strip span,.legend span{font-size:12px;background:var(--surface);padding:7px 10px;border:1px solid var(--line)}
.operator-lab{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:38px}.operator-lab article{background:var(--surface);padding:24px;border-bottom:4px solid var(--accent)}.operator-lab span{font:48px Georgia,serif;color:var(--warm)}.operator-lab h3{margin:8px 0}.operator-lab p{color:var(--muted)}
.guard-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:34px 0}.guard-grid article{padding:24px;background:var(--ink);color:white}.guard-grid b{color:#8be0d3}.guard-grid p{opacity:.75}
.project-brief{font:24px/1.8 Georgia,"STSong",serif;background:var(--ink);color:white;padding:35px;margin:32px 0}.tag-game button{display:inline-block;width:auto;margin-right:6px}.relation-prompt{display:flex;align-items:center;justify-content:center;gap:22px;margin:30px 0;padding:24px;background:var(--surface);font-size:20px}.relation-prompt b{color:var(--warm)}
.schema-board{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:36px 0}.schema-board article{background:var(--surface);border:1px solid var(--line);padding:20px}.schema-board h3{margin:0 0 9px;color:var(--accent)}.schema-board p{font-family:Consolas,"Microsoft YaHei UI",sans-serif;font-size:13px}.schema-board em{color:var(--warm)}.legend{display:flex;gap:10px}.messy-record{padding:22px;background:#fae4df;color:#7d2f1c;font:700 14px/1.8 Consolas,"Microsoft YaHei UI",sans-serif;overflow:auto}.diagnosis{margin:24px 0}.diagnosis p{border-bottom:1px solid var(--line);padding:10px 0}
.compare-code{display:grid;grid-template-columns:1fr 1.2fr;gap:18px;margin:38px 0}.compare-code>div,.compare-code pre{margin:0;padding:26px;background:var(--surface)}.compare-code pre,.ddl-workbench pre{background:#10283a;color:#c9fff5;overflow:auto}.compare-code small{display:block;color:var(--warm);margin-bottom:14px;font-family:"Microsoft YaHei UI",sans-serif}
.match-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.match-grid label{font-weight:800}.match-grid select,.builder-controls select,.builder-controls input{display:block;width:100%;padding:11px;border:1px solid var(--line);margin-top:8px;background:white}.match-grid select.is-correct{border-color:var(--accent);background:var(--accent-soft)}.match-grid .secondary-button,.match-grid .game-feedback{grid-column:1/-1}
.secondary-button{border:1px solid var(--accent);background:transparent;color:var(--accent);padding:11px 16px;font-weight:800;cursor:pointer}.ddl-workbench{display:grid;grid-template-columns:280px 1fr;gap:16px;margin:38px 0}.builder-controls{background:var(--surface);padding:22px}.builder-controls label{display:block;font-size:13px;font-weight:800;margin-bottom:13px}.builder-controls .check-label{display:flex;gap:8px;align-items:center}.builder-controls .check-label input{width:auto;margin:0}.ddl-workbench pre{margin:0;padding:24px;min-height:300px}.field-list{display:flex;flex-wrap:wrap;gap:7px}.field-list span{background:var(--accent-soft);color:var(--accent);padding:7px 10px;font:12px Consolas,monospace}.workbench-tip{color:var(--muted)}
.finish-section{border-bottom:0;text-align:center;padding-bottom:80px}.big-takeaway{font:30px/1.55 Georgia,"STSong",serif;max-width:760px;margin:30px auto}.complete-button{border:0;background:var(--warm);color:white;padding:16px 26px;font-weight:800;cursor:pointer}.complete-button.is-complete{background:var(--accent)}.completion-note{color:var(--muted)}
.lesson-pager{display:flex;justify-content:space-between;padding:35px 0 80px;border-top:1px solid var(--ink)}.lesson-pager a,.primary-link{text-decoration:none;color:var(--accent);font-weight:800}.locked-page{min-height:70vh;display:flex;flex-direction:column;justify-content:center}.locked-page h1{font:52px Georgia,"STSong",serif;margin:10px 0}.locked-page p{color:var(--muted)}
@media(max-width:760px){.hero{grid-template-columns:1fr;padding:70px 0;min-height:auto}.section-heading{grid-template-columns:1fr;gap:8px}.week-row{grid-template-columns:70px 1fr}.week-row>a{grid-column:2;text-align:left}.site-header nav span{display:none}.hero h1{font-size:54px}footer{flex-direction:column;gap:8px}}
@media(max-width:900px){.lesson-shell{grid-template-columns:1fr;padding-top:20px}.lesson-nav{position:static;height:auto;border-right:0;border-bottom:1px solid var(--line);padding:0 0 18px}.lesson-nav>div:first-child{display:flex;gap:8px;overflow:auto}.lesson-nav a{white-space:nowrap;background:var(--surface);padding:8px 10px}.xp-panel{display:none}.operator-lab,.guard-grid,.match-grid{grid-template-columns:1fr}.ddl-workbench,.compare-code{grid-template-columns:1fr}}
@media(max-width:620px){.flip-grid,.schema-board{grid-template-columns:1fr}.lesson-hero{padding:50px 0 65px}.lesson-section{padding:70px 0}.sheet-row{min-width:650px}.incident-sheet{overflow:auto}.goal-line{display:block}.goal-line span{display:block;margin:5px 0}}

/* Academic course-site redesign: clean white canvas, disciplined typography, no demo-card gloss. */
:root{--ink:#202428;--muted:#5c6268;--paper:#fff;--surface:#f7f7f5;--line:#d9dcdf;--accent:#8c1515;--accent-soft:#f7ecec;--warm:#8a6415;--shadow:none}
body{background:#fff;color:var(--ink);font-family:Arial,"Microsoft YaHei UI","PingFang SC",sans-serif;line-height:1.72}
.watermark{opacity:.018;background-image:repeating-linear-gradient(-28deg,transparent 0 190px,rgba(32,36,40,.55) 191px 192px,transparent 193px 360px)}
.watermark::after{font-family:Arial,"Microsoft YaHei UI",sans-serif;font-weight:700;letter-spacing:.16em}
.site-header{height:78px;background:rgba(255,255,255,.96);border-bottom:3px solid var(--ink);backdrop-filter:blur(10px)}
.brand{font-family:Georgia,"STSong",serif;font-size:18px}.brand span{border-radius:0;background:var(--accent);font-family:Arial,sans-serif;font-size:14px}
.lesson-shell{grid-template-columns:250px minmax(0,960px);gap:76px;padding-top:48px}
.lesson-nav{border-right-color:#c9cdd1}.lesson-nav a{padding:10px 0;line-height:1.35}.lesson-nav a:hover{border-color:var(--accent)}
.xp-panel{background:#f3f3f1;color:var(--ink);border-top:3px solid var(--accent)}.xp-panel span,.xp-panel small{opacity:1;color:var(--muted)}
/* Keep the weekly score visible while only a long outline scrolls. */
.lesson-nav{overflow:hidden}
.lesson-nav>div:first-child{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:0 12px 12px 0;scrollbar-width:thin;scrollbar-color:#b8bdc1 transparent}
.lesson-nav>div:first-child::-webkit-scrollbar{width:5px}
.lesson-nav>div:first-child::-webkit-scrollbar-thumb{background:#b8bdc1;border-radius:5px}
.xp-panel{flex:0 0 auto;margin-top:16px;box-shadow:0 -10px 22px rgba(255,255,255,.92)}
@media(max-width:900px){.lesson-nav{overflow:visible}.lesson-nav>div:first-child{min-height:auto;overflow-x:auto;overflow-y:hidden;padding:0 0 10px}.xp-panel{display:block;margin:14px 0 0;box-shadow:none}}
.lesson-hero{padding:68px 0 82px;border-top:7px solid var(--accent);border-bottom:1px solid var(--ink)}
.lesson-hero h1,.lesson-section>h2{font-family:Georgia,"STSong",serif;letter-spacing:-.025em}.lesson-hero h2{color:var(--muted);font-weight:500}
.lesson-meta span{background:#fff;border-color:#bfc3c7}.lesson-meta .preview-badge{background:var(--accent);color:#fff}
.goal-line span{background:#fff;border-left-width:4px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:9px 13px}
.lesson-section{padding:82px 0}.section-index{color:var(--accent);font-family:Arial,sans-serif}.section-lead{color:#50565c}
.choice-game,.micro-check,.tag-game,.match-grid{background:#fff;border:1px solid var(--line);border-top:4px solid var(--accent);box-shadow:none}
.flip-card,.reason-lines article,.schema-board article,.operator-lab article{background:#fff}.flip-card{border-top:3px solid var(--ink)}
.flip-card.is-flipped{background:var(--accent-soft)}
.incident-sheet,.relation-table{box-shadow:none}.sheet-head,.rt-head{background:var(--ink)}
blockquote{background:#faf7f0;color:#5b4723;border-left-color:var(--warm)}
.primary-button{background:var(--accent)}.complete-button{background:var(--accent)}
.login-panel{box-shadow:none;border-top:8px solid var(--accent)}.auth-gate{background:#24272a}
.lesson-pager{border-top:3px solid var(--ink)}

/* Week 1 interactive lecture modules */
.session-plan{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin:36px 0}.session-block{border-top:5px solid var(--ink);background:#fff;padding:24px 0}.session-block:last-child{border-top-color:var(--accent)}.session-block h3{font:600 25px Georgia,"STSong",serif;margin:0 0 14px}.session-block ol{margin:0;padding-left:22px;color:var(--muted)}.session-block li{padding:6px 0;border-bottom:1px solid var(--line)}.session-block time{float:right;color:var(--accent);font-weight:700}
.concept-lab{margin:36px 0;border:1px solid #c9cdd1;border-top:5px solid var(--ink);background:#fff;padding:28px}.lab-kicker{margin:0 0 16px;color:var(--accent);font-size:12px;font-weight:800;letter-spacing:.12em}.lab-toolbar{display:flex;gap:8px;flex-wrap:wrap;margin:18px 0}.lab-toolbar button{border:1px solid #bfc3c7;background:#fff;padding:9px 13px;cursor:pointer;font-weight:700;color:var(--ink)}.lab-toolbar button:hover,.lab-toolbar button.is-active{background:var(--ink);border-color:var(--ink);color:#fff}.lab-stage{min-height:180px;background:var(--surface);border-left:4px solid var(--accent);padding:25px}.lab-stage h3{font:600 25px Georgia,"STSong",serif;margin:0 0 10px}.lab-stage p{margin:7px 0;color:var(--muted)}.lab-stage strong{color:var(--accent)}
.semantic-number{font:600 clamp(70px,12vw,130px)/1 Georgia,serif;color:var(--accent);margin:6px 0}.semantic-equation{font:600 20px Georgia,"STSong",serif;margin-top:18px;padding-top:14px;border-top:1px solid var(--line)}
.system-rings{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:18px 0}.system-rings button{min-height:112px;border:1px solid var(--line);background:#fff;text-align:left;padding:16px;cursor:pointer}.system-rings b,.system-rings small{display:block}.system-rings b{font:600 22px Georgia,serif}.system-rings small{color:var(--muted);margin-top:8px}.system-rings button.is-active{border-top:5px solid var(--accent);background:var(--accent-soft)}
.anomaly-grid{display:grid;grid-template-columns:1.2fr .8fr;gap:22px}.mini-table{border:1px solid var(--line);overflow:auto}.mini-row{display:grid;grid-template-columns:.65fr 1fr .65fr .65fr}.mini-row span{padding:10px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.mini-row.head{font-weight:700;background:var(--ink);color:#fff}.mini-row .changed{background:#fff1c9;color:#6e4c00;font-weight:700}.anomaly-console{background:#24272a;color:#f3f3f1;padding:22px}.anomaly-console h3{margin-top:0;color:#fff}.anomaly-console p{color:#cfd3d6}.anomaly-console button{width:100%;margin:5px 0;padding:10px;border:1px solid #8e9499;background:transparent;color:#fff;cursor:pointer}.anomaly-console button:hover{background:var(--accent);border-color:var(--accent)}
.capability-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.capability-grid label{border:1px solid var(--line);padding:17px;font-weight:700}.capability-grid small{display:block;color:var(--muted);font-weight:400;margin:5px 0 12px}.capability-grid select{width:100%;padding:9px;background:#fff;border:1px solid #bfc3c7}
.model-visual{display:flex;gap:10px;align-items:center;min-height:82px;margin:18px 0}.model-node{display:grid;place-items:center;min-width:62px;height:45px;border:2px solid var(--accent);background:#fff;font-size:12px;font-weight:700}.model-link{height:2px;min-width:30px;background:#8e9499}.pipeline{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:22px 0}.pipeline button{border:1px solid var(--line);border-top:4px solid #80868b;background:#fff;padding:15px 8px;cursor:pointer;font-size:12px;font-weight:700}.pipeline button:hover,.pipeline button.is-active{border-top-color:var(--accent);background:var(--accent-soft)}.sql-specimen{font:14px/1.7 Consolas,monospace;background:#24272a;color:#f4f4f2;padding:18px;overflow:auto}.sql-specimen b{color:#f1c75b}
.schema-elevator{display:grid;grid-template-columns:200px 1fr;gap:18px}.elevator-controls button{display:block;width:100%;text-align:left;padding:15px;border:1px solid var(--line);border-bottom:0;background:#fff;cursor:pointer;font-weight:700}.elevator-controls button:last-child{border-bottom:1px solid var(--line)}.elevator-controls button.is-active{background:var(--accent);color:#fff}.schema-change{margin-top:16px;padding:13px;background:#fff;border:1px dashed #9ea3a8;color:var(--muted)}
.timeline{border-left:3px solid var(--accent);margin:34px 0 0 8px;padding-left:26px}.timeline article{position:relative;padding:0 0 25px}.timeline article::before{content:"";position:absolute;left:-34px;top:8px;width:13px;height:13px;background:#fff;border:3px solid var(--accent);border-radius:50%}.timeline time{font-weight:800;color:var(--accent)}.timeline h3{margin:3px 0}.timeline p{margin:0;color:var(--muted)}
.lecture-cue{font-size:13px;color:var(--muted);border-left:3px solid var(--warm);padding:10px 14px;margin:22px 0;background:#faf9f6}.lecture-cue b{color:var(--warm)}
@media(max-width:760px){.session-plan,.anomaly-grid,.capability-grid{grid-template-columns:1fr}.system-rings,.pipeline{grid-template-columns:1fr 1fr}.schema-elevator{grid-template-columns:1fr}.lesson-shell{gap:30px}.concept-lab{padding:20px}}
.capability-grid select.is-correct{border-color:var(--accent);background:var(--accent-soft)}

/* Student-facing Week 1 simulations */
.discussion-card{display:grid;grid-template-columns:140px 1fr;gap:22px;margin:28px 0;padding:20px 24px;border:1px solid var(--line);border-left:5px solid var(--warm);background:#faf9f6}.discussion-card span{font-weight:800;color:var(--warm);letter-spacing:.04em}.discussion-card p{margin:0;color:var(--muted)}
.compare-simulator{margin:38px 0;border:1px solid #bfc3c7;background:#fff}.compare-controls{display:flex;gap:0;overflow:auto;border-bottom:1px solid #bfc3c7;background:#f2f3f3}.compare-controls button{flex:1;min-width:180px;border:0;border-right:1px solid #cdd0d3;background:transparent;padding:15px 13px;cursor:pointer;font-size:13px;font-weight:700;color:#3d4348}.compare-controls button:hover,.compare-controls button.is-active{background:var(--accent);color:#fff}.compare-columns{display:grid;grid-template-columns:1fr 1fr}.compare-pane{min-width:0;padding:26px}.compare-pane+ .compare-pane{border-left:1px solid #bfc3c7}.compare-pane>header{display:flex;justify-content:space-between;gap:18px;align-items:end;padding-bottom:15px;border-bottom:4px solid #72787d}.db-pane>header{border-bottom-color:var(--accent)}.compare-pane>header span{font:600 22px Georgia,"STSong",serif}.compare-pane>header small{color:var(--muted);text-align:right}.sim-scene{min-height:250px;display:grid;align-items:center;padding:24px 0}.sim-status{min-height:105px;padding:16px;background:#f4f4f2;border-top:1px solid var(--line);color:var(--muted);font-size:14px}.db-pane .sim-status{background:var(--accent-soft)}.compare-finding{display:grid;grid-template-columns:130px 1fr;gap:20px;padding:20px 26px;background:#24272a;color:#fff}.compare-finding b{color:#f0c764}.compare-finding p{margin:0;color:#d9dcdf}
.sim-table{border:1px solid var(--line)}.sim-table>div{display:grid;grid-template-columns:1.25fr .75fr .8fr}.sim-table span,.sim-table b{padding:10px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);font-size:13px}.sim-table>div:first-child{background:#e9eaeb}.sim-stack,.transaction-flow,.mapping-flow{display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap}.sim-stack span,.sim-stack strong,.transaction-flow span,.transaction-flow strong,.mapping-flow span,.mapping-flow strong{padding:12px;border:1px solid #aeb3b7;background:#fff;font-size:12px}.sim-stack strong,.transaction-flow strong,.mapping-flow strong{border-color:var(--accent);color:var(--accent)}.sim-stack i,.transaction-flow i,.mapping-flow i{font-style:normal;color:var(--muted);font-size:11px}.dual-edit{display:grid;grid-template-columns:1fr 1fr;gap:10px}.dual-edit>div{border:1px solid var(--line);padding:14px}.dual-edit b,.dual-edit span,.dual-edit em{display:block;margin:5px 0}.dual-edit em{color:var(--accent);font-style:normal}.constraint-gate,.broken-reference,.file-move{text-align:center;border:1px solid var(--line);padding:22px}.constraint-gate span,.constraint-gate strong,.broken-reference span,.broken-reference strong,.file-move span,.file-move strong{display:block}.constraint-gate strong,.broken-reference strong{color:var(--accent);font-size:19px;margin:13px}.constraint-gate p,.broken-reference p,.file-move p{color:var(--muted);margin-bottom:0}.constraint-gate::before{content:"RULE";display:inline-block;background:var(--accent);color:#fff;padding:4px 8px;font-size:10px;letter-spacing:.12em}.invalid-cell{background:#f7dddd;color:#7c1212;font-weight:700}.compare-matrix{display:grid;grid-template-columns:150px 1fr 1fr;margin:28px 0;border-top:3px solid var(--ink)}.compare-matrix>*{margin:0;padding:13px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.compare-matrix b{background:#f0f1f1}.compare-matrix span{font-weight:700;background:#fafafa}.compare-matrix p{color:var(--muted)}
.classification-board{margin:30px 0;border-top:4px solid var(--ink);padding:24px;background:#f7f7f5}.classification-board h3{margin-top:0}.classify-item{display:grid;grid-template-columns:1fr 180px;align-items:center;gap:16px;padding:13px 0;border-bottom:1px solid var(--line)}.classify-item select{padding:9px;border:1px solid #bfc3c7;background:#fff}.classify-item select.is-correct{border-color:var(--accent);background:var(--accent-soft)}.classification-board>.secondary-button,.capability-grid+button{margin-top:18px}
.schema-workbench{margin:38px 0;border:1px solid #afb4b8;background:#fff}.schema-map{display:grid;grid-template-columns:1fr 170px 1fr 170px 1fr;align-items:stretch;background:#f1f2f2;border-bottom:1px solid #afb4b8}.schema-map button{border:0;border-right:1px solid #c8cccf;background:#fff;padding:18px;text-align:left;cursor:pointer}.schema-map button b,.schema-map button small{display:block}.schema-map button b{font:600 20px Georgia,"STSong",serif}.schema-map button small{margin-top:5px;color:var(--muted)}.schema-map button.is-active{background:var(--accent);color:#fff}.schema-map button.is-active small{color:#f1dede}.schema-map>i{display:grid;place-items:center;padding:10px;color:var(--muted);font-size:11px;font-style:normal;text-align:center}.schema-map>i::before{content:"↔";display:block;color:var(--accent);font-size:23px}.schema-window{margin:24px;border:1px solid #9ea3a8;box-shadow:0 8px 25px rgba(32,36,40,.06)}.schema-window>header{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:13px 16px;background:#24272a;color:#fff}.schema-window>header>span{font-weight:700}.schema-role-tabs{display:flex}.schema-role-tabs button{border:1px solid #73787d;background:transparent;color:#fff;padding:7px 10px;cursor:pointer}.schema-role-tabs button.is-active{background:#fff;color:var(--ink)}.schema-visual{min-height:280px;display:grid;place-items:center;padding:26px;background:#fafafa;overflow:auto}.schema-explanation{padding:18px 22px;border-top:1px solid var(--line)}.schema-explanation p{margin:6px 0 0;color:var(--muted)}.visual-table{width:100%;border:1px solid var(--line);background:#fff}.visual-row{display:flex}.visual-row>*{flex:1;min-width:100px;padding:10px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);font-size:12px}.visual-row.head{background:#e6e8e9}.schema-diagram{display:flex;align-items:center;gap:10px;min-width:760px}.schema-diagram article{min-width:190px;border:1px solid #999fa4;background:#fff}.schema-diagram article b,.schema-diagram article span{display:block;padding:8px 11px;border-bottom:1px solid var(--line);font-size:12px}.schema-diagram article b{background:var(--ink);color:#fff;font-size:15px}.schema-diagram i{font-style:normal;font-weight:800;color:var(--accent)}.schema-diagram em{font-style:normal;font-size:11px;color:var(--muted)}.schema-diagram .new-field{background:#fff0c9;color:#6e4c00}.storage-visual{display:grid;grid-template-columns:1fr 1.3fr 1fr;gap:14px;width:100%}.storage-visual>div{border:1px solid var(--line);background:#fff;padding:15px}.storage-visual b,.storage-visual span{display:block;padding:7px;border-bottom:1px solid var(--line);font-size:12px}.storage-visual b{color:var(--accent)}.index-visual.enabled{border-top:5px solid var(--accent)}.schema-actions{display:flex;gap:8px;flex-wrap:wrap;padding:0 24px 18px}.schema-actions button{border:1px solid #aeb3b7;background:#fff;padding:9px 12px;cursor:pointer;font-size:12px}.schema-actions button:hover{border-color:var(--accent);color:var(--accent)}.schema-change-result{margin:0 24px 24px;padding:16px;border-left:4px solid var(--warm);background:#faf7f0;color:var(--muted)}.schema-change-result b{color:var(--ink)}
.synthesis-chain{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:9px;margin:36px 0;padding:26px;background:#f5f5f3;border-top:3px solid var(--ink)}.synthesis-chain span{padding:10px 13px;background:#fff;border:1px solid var(--line);font-weight:700}.synthesis-chain i{font-style:normal;color:var(--accent);font-size:12px}
@media(max-width:900px){.compare-columns{grid-template-columns:1fr}.compare-pane+ .compare-pane{border-left:0;border-top:1px solid #bfc3c7}.schema-map{grid-template-columns:1fr}.schema-map>i{display:none}.storage-visual{grid-template-columns:1fr}.schema-diagram{min-width:700px}.compare-matrix{grid-template-columns:110px 1fr 1fr}}
@media(max-width:620px){.discussion-card,.compare-finding{grid-template-columns:1fr}.classify-item{grid-template-columns:1fr}.schema-window{margin:12px}.schema-window>header{align-items:flex-start;flex-direction:column}.schema-actions{padding:0 12px 14px}.schema-change-result{margin:0 12px 16px}.compare-pane{padding:18px}.compare-matrix{font-size:12px;grid-template-columns:85px 1fr 1fr}.compare-matrix>*{padding:9px}}

/* Connected visual systems: model structures, query journey, three-schema flow */
.model-explorer{display:grid;grid-template-columns:230px 1fr;margin:38px 0;border-top:4px solid var(--ink);border-bottom:1px solid var(--line);background:#fff}.model-rail{position:relative;padding:18px 0}.model-rail::before{content:"";position:absolute;left:35px;top:45px;bottom:45px;width:2px;background:#d6d9db}.model-rail button{position:relative;width:100%;display:grid;grid-template-columns:42px 1fr;grid-template-rows:auto auto;text-align:left;border:0;background:transparent;padding:13px 16px;cursor:pointer;color:var(--ink)}.model-rail button span{grid-row:1/3;z-index:1;display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:#fff;border:2px solid #9aa0a5;font-size:10px}.model-rail button b{align-self:end}.model-rail button small{color:var(--muted)}.model-rail button:hover,.model-rail button.is-active{background:#f4f4f2}.model-rail button.is-active span{background:var(--accent);border-color:var(--accent);color:#fff}.model-rail button.is-active b{color:var(--accent)}.model-main{min-width:0;padding:28px;border-left:1px solid var(--line)}.model-question{display:grid;grid-template-columns:150px 1fr;gap:18px;align-items:start;border-bottom:1px solid var(--line);padding-bottom:18px}.model-question span{color:var(--accent);font-weight:800;font-size:12px;letter-spacing:.08em}.model-question strong{font:600 20px/1.5 Georgia,"STSong",serif}.model-canvas{position:relative;min-height:390px;padding:28px 16px;display:grid;align-content:center;overflow:hidden}.model-canvas>header{position:absolute;left:0;right:0;top:10px;display:flex;justify-content:space-between;color:var(--muted);font-size:11px}.model-canvas>header b{color:var(--ink);font-size:13px}.model-canvas.is-entering>*:not(header){animation:modelEnter .45s ease both}.model-empty{text-align:center;color:var(--muted)}.model-empty b{font:600 24px Georgia,"STSong",serif;color:var(--ink)}.model-tradeoff{display:grid;grid-template-columns:130px 1fr;gap:18px;min-height:72px;padding:16px 18px;background:#f4f4f2;color:var(--muted)}.model-tradeoff span{font-weight:800;color:var(--warm)}.model-evolution{display:flex;align-items:center;justify-content:center;gap:9px;flex-wrap:wrap;margin:22px 0 36px;font-size:12px}.model-evolution span{font-weight:700}.model-evolution i{font-style:normal;color:var(--accent)}.model-evolution i::after{content:" →"}
.tree-model{width:min(600px,92%);margin:auto;display:grid;gap:32px;position:relative}.tree-level{display:flex;justify-content:space-around;position:relative;z-index:2}.tree-level span{min-width:120px;padding:12px 18px;text-align:center;border-radius:28px;background:#fff;border:2px solid var(--accent);font-weight:700}.tree-level.root span{background:var(--accent);color:#fff}.tree-branches,.tree-subbranches{position:absolute;left:17%;right:17%;height:70px;border-top:2px solid #858b90}.tree-branches{top:45px}.tree-subbranches{top:123px;left:10%;right:10%}.tree-branches::before,.tree-branches::after,.tree-subbranches::before,.tree-subbranches::after{content:"";position:absolute;top:0;height:32px;border-left:2px solid #858b90}.tree-branches::before,.tree-subbranches::before{left:0}.tree-branches::after,.tree-subbranches::after{right:0}.tree-level.leaves span{min-width:105px}.access-path{margin:28px auto 0;display:flex;justify-content:center;align-items:center;gap:8px;flex-wrap:wrap;font-size:12px}.access-path b{color:var(--accent)}.access-path span{background:#eef0f1;padding:6px 9px;border-radius:14px}.access-path i{font-style:normal;color:var(--muted)}
.network-model{position:relative;width:min(560px,100%);height:250px;margin:auto;background:radial-gradient(circle at 50% 50%,#f2f3f3 0 2px,transparent 3px)}.network-model span{position:absolute;z-index:2;display:grid;place-items:center;width:86px;height:86px;border-radius:50%;border:2px solid var(--accent);background:#fff;font-weight:700}.n-student{left:3%;top:78px}.n-course{left:42%;top:8px}.n-club{left:42%;bottom:4px}.n-teacher{right:3%;top:48px}.n-project{right:4%;bottom:14px}.network-model .edge{position:absolute;z-index:1;height:2px;background:#858b90;transform-origin:left center}.network-model .e1{left:18%;top:108px;width:155px;transform:rotate(-25deg)}.network-model .e2{left:18%;top:128px;width:150px;transform:rotate(22deg)}.network-model .e3{left:56%;top:50px;width:175px;transform:rotate(8deg)}.network-model .e4{left:56%;top:193px;width:170px;transform:rotate(-16deg)}.network-model .e5{left:52%;top:86px;width:130px;transform:rotate(62deg)}
.relational-model{display:flex;align-items:center;justify-content:center;gap:10px;min-width:720px}.relational-model article{min-width:160px;border:1px solid #989ea3;background:#fff}.relational-model article b,.relational-model article span{display:block;padding:8px 11px;border-bottom:1px solid var(--line);font-size:12px}.relational-model article b{background:var(--ink);color:#fff}.relational-model .pk{background:#fff1c9}.relational-model .fk{background:var(--accent-soft);color:var(--accent)}.relation-bridge{display:grid;grid-template-columns:auto 35px auto 35px auto;align-items:center;font-size:11px}.relation-bridge i{height:1px;background:#777d82}.relation-bridge em{font-style:normal;color:var(--muted)}.declarative-query{display:flex;justify-content:center;align-items:center;gap:15px;margin-top:30px}.declarative-query code{background:#24272a;color:#fff;padding:10px 14px}.declarative-query i{font-style:normal;color:var(--accent);font-size:12px}.nosql-family{display:grid;grid-template-columns:1fr 1fr;gap:12px;width:min(650px,100%);margin:auto}.nosql-family article{min-height:120px;padding:16px;background:#fff;border:1px solid #aeb3b7}.nosql-family b{display:block;color:var(--accent);margin-bottom:10px}.kv-shape span,.kv-shape em{display:inline-block;padding:7px;background:#eef0f1;font-size:11px}.kv-shape em{font-style:normal;background:var(--accent-soft)}.doc-shape pre{margin:0;color:#4e555a}.column-shape span,.column-shape i{display:inline-block;padding:7px;margin-right:3px;background:#eef0f1;font-style:normal;font-size:11px}.graph-shape div{display:flex;align-items:center;gap:0}.graph-shape span{display:grid;place-items:center;width:38px;height:38px;border-radius:50%;background:var(--accent);color:#fff}.graph-shape i{width:35px;height:2px;background:#8c9196}.multi-model{display:grid;grid-template-columns:1.2fr .8fr;gap:30px;align-items:center}.model-orbit{position:relative;width:280px;height:250px;margin:auto}.model-orbit b{position:absolute;left:90px;top:90px;display:grid;place-items:center;width:100px;height:70px;border-radius:50%;background:var(--ink);color:#fff}.model-orbit span{position:absolute;display:grid;place-items:center;width:70px;height:70px;border-radius:50%;border:2px solid var(--accent);background:#fff}.model-orbit span:nth-child(1){left:105px;top:0}.model-orbit span:nth-child(2){right:0;top:88px}.model-orbit span:nth-child(3){left:105px;bottom:0}.model-orbit span:nth-child(4){left:0;top:88px}.ai-loop{display:flex;align-items:center;justify-content:center;gap:12px}.ai-loop span{text-align:center;padding:14px;border-top:4px solid var(--accent);background:#f1f2f2}.ai-loop i{font-style:normal;font-size:24px;color:var(--accent)}
.query-journey{margin:34px 0;border:1px solid #adb2b6;border-top:5px solid var(--ink);background:#fff}.journey-header{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:19px 22px;border-bottom:1px solid var(--line)}.journey-header span,.journey-header small{display:block}.journey-header span{font-weight:800}.journey-header small{color:var(--muted)}.journey-header button{border:0;background:var(--accent);color:#fff;padding:10px 14px;cursor:pointer;font-weight:700}.journey-lanes{display:grid;grid-template-columns:4fr 1fr 2fr;gap:4px;padding:12px 18px 0}.journey-lanes aside{padding:10px 12px;background:#eef0f1;border-top:4px solid #596168}.journey-lanes aside:nth-child(2){border-top-color:var(--warm)}.journey-lanes aside:nth-child(3){border-top-color:var(--accent)}.journey-lanes b,.journey-lanes small{display:block}.journey-lanes small{color:var(--muted)}.query-journey .pipeline{position:relative;grid-template-columns:repeat(8,1fr);gap:4px;margin:8px 18px 24px;padding-bottom:22px}.query-journey .pipeline::before{content:"";position:absolute;left:4%;right:4%;bottom:7px;height:3px;background:#d2d5d7}.query-journey .pipeline button{min-height:72px;border-top-color:#596168;transition:background .25s,transform .25s,opacity .25s}.query-journey .pipeline button[data-lane="transaction"]{border-top-color:var(--warm)}.query-journey .pipeline button[data-lane="storage"]{border-top-color:var(--accent)}.query-journey .pipeline button.is-complete{background:#f0f1f1;color:#62686d}.query-journey .pipeline button.is-active{background:var(--ink);color:#fff;transform:translateY(-5px)}.query-token{--pipeline-step:0;position:absolute;z-index:3;left:calc((var(--pipeline-step) + .5) * 12.5% - 7px);bottom:1px;width:15px;height:15px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 5px rgba(140,21,21,.13);transition:left .55s cubic-bezier(.2,.8,.2,1)}.journey-detail{display:grid;grid-template-columns:1.5fr .75fr;border-top:1px solid var(--line)}.journey-detail .lab-stage{border-left:0;min-height:170px}.pipeline-layer{padding:24px;background:#f2f3f3;border-left:1px solid var(--line)}.pipeline-layer span,.pipeline-layer b,.pipeline-layer small{display:block}.pipeline-layer span{color:var(--accent);font-size:11px;font-weight:800;letter-spacing:.08em}.pipeline-layer b{margin:12px 0;font:600 20px Georgia,"STSong",serif}.pipeline-layer small{color:var(--muted)}
.schema-flow-controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:18px 22px;border-bottom:1px solid var(--line);background:#f3f4f4}.schema-flow-controls>span{font-weight:800;margin-right:auto}.schema-flow-controls button{border:1px solid #aab0b4;background:#fff;padding:9px 12px;cursor:pointer}.schema-flow-controls button:hover{border-color:var(--accent);color:var(--accent)}.schema-atlas{position:relative;padding:25px 70px 25px 25px;background:#fff}.schema-plane{position:relative;padding:20px 24px;border-left:7px solid #657078;background:#f7f8f8;transition:transform .3s,box-shadow .3s,opacity .3s}.schema-plane header{display:flex;justify-content:space-between;gap:20px;margin-bottom:16px}.schema-plane header b{font:600 24px Georgia,"STSong",serif}.schema-plane header span{color:var(--muted)}.schema-plane .plane-note{display:block;margin-top:15px;color:var(--muted)}.external-plane{border-left-color:#4b7188}.conceptual-plane{border-left-color:var(--accent);background:#fbf7f7}.internal-plane{border-left-color:#7a6640}.schema-plane.is-active{transform:translateX(8px);box-shadow:0 10px 25px rgba(32,36,40,.12)}.schema-plane.is-blocked{border-color:#b11818;background:#fff0f0;animation:blockedPulse .65s ease 2}.schema-plane.is-protected{opacity:.72;box-shadow:inset 0 0 0 3px #4b7e5c}.external-fan{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.external-fan article{position:relative;padding:14px 16px 14px 46px;background:#fff;border-bottom:3px solid #4b7188}.external-fan article::before{content:"👤";position:absolute;left:15px;top:16px;filter:grayscale(1);opacity:.55}.external-fan b,.external-fan span{display:block}.external-fan span{font-size:12px;color:var(--muted)}.mini-schema{display:flex;align-items:center;justify-content:center;gap:8px;overflow:auto}.mini-schema article{min-width:150px;background:#fff;border:1px solid #9fa5a9}.mini-schema article b,.mini-schema article span{display:block;padding:7px 10px;border-bottom:1px solid var(--line);font-size:11px}.mini-schema article b{background:var(--ink);color:#fff}.mini-schema>em{font-style:normal;font-weight:800;color:var(--accent)}.mini-schema>i{font-style:normal;color:var(--muted);font-size:11px}.score-rule{background:#fff0c9}.optional-field{display:none!important;background:#e7f1eb;color:#315b40}.optional-field.is-visible{display:block!important;animation:fieldReveal .45s ease}.physical-layout{display:grid;grid-template-columns:.8fr 1.2fr 1fr;gap:12px}.physical-layout>div{position:relative;padding:14px;background:#fff;border-top:4px solid #7a6640}.physical-layout b,.physical-layout span{display:block;padding:6px;border-bottom:1px solid var(--line);font-size:11px}.page-bank.is-compressed::after{content:"COMPRESSED";position:absolute;right:9px;top:9px;background:#7a6640;color:#fff;padding:3px 5px;font-size:8px}.tree-index span{color:var(--accent)}.schema-mapping{position:relative;display:grid;grid-template-columns:1fr 1.4fr 34px;align-items:center;min-height:62px;padding:7px 24px 7px 35px;color:var(--muted)}.schema-mapping::before{content:"";position:absolute;left:51px;top:0;bottom:0;width:2px;background:#aeb3b7}.schema-mapping span{font-weight:800;color:var(--ink)}.schema-mapping i{font-style:normal;font-size:11px}.schema-mapping b{z-index:1;display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:#fff;border:2px solid #aeb3b7}.schema-mapping.is-active,.schema-mapping.is-passed{color:var(--accent)}.schema-mapping.is-active::before,.schema-mapping.is-passed::before{background:var(--accent)}.schema-mapping.is-active b,.schema-mapping.is-passed b{border-color:var(--accent);color:var(--accent)}.schema-token{position:absolute;z-index:5;right:20px;top:7%;display:grid;place-items:center;width:46px;height:46px;border-radius:50%;background:var(--accent);color:#fff;font-size:9px;font-weight:800;opacity:0;transition:top .6s cubic-bezier(.2,.8,.2,1),opacity .2s}.schema-token.is-visible{opacity:1}.schema-token.step-0{top:8%}.schema-token.step-1{top:27%}.schema-token.step-2{top:47%}.schema-token.step-3{top:68%}.schema-token.step-4{top:87%}.schema-token.is-blocked{background:#b11818;box-shadow:0 0 0 8px rgba(177,24,24,.15)}.schema-legend{display:flex;gap:18px;flex-wrap:wrap;padding:12px 24px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);font-size:11px;color:var(--muted)}.schema-legend span{display:flex;align-items:center;gap:7px}.schema-legend i{width:18px;height:5px}.legend-view{background:#4b7188}.legend-rule{background:var(--accent)}.legend-storage{background:#7a6640}.legend-map{background:#aeb3b7}.schema-actions>span{width:100%;font-weight:800;margin-bottom:3px}
@keyframes modelEnter{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes blockedPulse{50%{transform:translateX(8px);box-shadow:0 0 0 6px rgba(177,24,24,.12)}}@keyframes fieldReveal{from{opacity:0;transform:translateX(-8px)}to{opacity:1;transform:none}}
@media(max-width:900px){.model-explorer{grid-template-columns:1fr}.model-rail{display:flex;overflow:auto;padding:8px}.model-rail::before{display:none}.model-rail button{min-width:180px}.model-main{border-left:0;border-top:1px solid var(--line)}.query-journey .pipeline{grid-template-columns:repeat(4,1fr)}.query-token{display:none}.journey-detail{grid-template-columns:1fr}.pipeline-layer{border-left:0;border-top:1px solid var(--line)}.schema-atlas{padding-right:25px}.schema-token{right:4px}.multi-model{grid-template-columns:1fr}.relational-model{justify-content:flex-start}}
@media(max-width:620px){.model-main{padding:18px}.model-question,.model-tradeoff{grid-template-columns:1fr}.model-canvas{min-height:430px;padding-left:0;padding-right:0}.tree-level span{min-width:88px;padding:9px}.tree-level.leaves span{min-width:78px}.network-model span{width:66px;height:66px;font-size:11px}.nosql-family{grid-template-columns:1fr}.journey-lanes{grid-template-columns:1fr}.query-journey .pipeline{grid-template-columns:1fr 1fr}.schema-atlas{padding:14px}.schema-token{display:none}.schema-plane{padding:16px}.schema-plane header{display:block}.external-fan,.physical-layout{grid-template-columns:1fr}.mini-schema{justify-content:flex-start}.schema-mapping{grid-template-columns:1fr;padding-left:22px}.schema-mapping i{display:none}.schema-mapping::before{left:11px}.schema-mapping b{display:none}}
@media(prefers-reduced-motion:reduce){.model-canvas.is-entering>*:not(header),.schema-plane.is-blocked,.optional-field.is-visible{animation:none}.query-token,.schema-token,.schema-plane{transition:none}}
.query-token{left:6.25%;transform:translateX(-50%)}
.mini-layer-map{display:flex;align-items:center;gap:5px;margin:12px 0}.mini-layer-map i{padding:5px 7px;background:#fff;border:1px solid #c4c8cb;color:#8b9196;font-size:10px;font-style:normal}.mini-layer-map i.is-on{background:var(--accent);border-color:var(--accent);color:#fff}.mini-layer-map em{color:#92979b;font-style:normal}.score-rule.is-blocked{background:#b11818;color:#fff;box-shadow:0 0 0 5px rgba(177,24,24,.13)}
.external-fan article::before{content:"";width:18px;height:18px;border-radius:50%;background:radial-gradient(circle at 50% 34%,#768087 0 25%,transparent 27%),radial-gradient(ellipse at 50% 100%,#768087 0 43%,transparent 45%)}

/* Week 2 · relational model working surfaces */
.wide-relation{margin:34px 0;border:1px solid #aeb3b7;overflow:auto}.wr-row{min-width:760px;display:grid;grid-template-columns:.8fr .8fr 1fr .8fr 1.15fr .9fr .65fr}.wr-row>*{padding:11px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);font-size:12px}.wr-row.head{background:var(--ink);color:#fff}.wr-row:not(.head):hover{background:#faf7f7}
.relation-universe{margin:36px 0;border:1px solid #adb2b6;border-top:5px solid var(--ink);background:#fff}.domain-strip{display:grid;grid-template-columns:1fr 40px 1fr 40px 1fr;align-items:center;padding:24px;background:#f5f6f6}.domain-strip article{min-height:110px;border-top:4px solid var(--accent);background:#fff;padding:14px}.domain-strip article b,.domain-strip article span{display:block}.domain-strip article span{display:inline-block;margin:10px 4px 0 0;padding:5px 8px;background:#eef0f1;font-size:11px}.domain-strip>i{text-align:center;font:28px Georgia,serif;color:var(--accent)}.universe-controls,.property-controls,.split-controls{display:flex;gap:7px;flex-wrap:wrap;padding:16px 22px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.universe-controls button,.property-controls button,.split-controls button{border:1px solid #aeb3b7;background:#fff;padding:9px 12px;cursor:pointer;font-size:12px}.universe-controls button:hover,.universe-controls button.is-active,.property-controls button:hover,.split-controls button:hover,.split-controls button.is-active{border-color:var(--accent);background:var(--accent);color:#fff}.universe-summary{display:grid;grid-template-columns:repeat(3,1fr);border-bottom:1px solid var(--line)}.universe-summary span{padding:14px 18px;border-right:1px solid var(--line);color:var(--muted);font-size:11px}.universe-summary b{display:block;color:var(--ink);font:600 20px Georgia,serif}.tuple-universe{min-height:220px;display:flex;align-content:flex-start;flex-wrap:wrap;gap:7px;padding:22px}.tuple-universe>span{padding:7px 9px;background:#eceeef;color:#6d7378;font:11px Consolas,monospace}.tuple-universe>span.is-real{background:var(--accent-soft);color:var(--accent);border-left:3px solid var(--accent)}.relation-universe>.schema-change-result{margin:0 22px 22px}
.anatomy-workbench{display:grid;grid-template-columns:1.35fr .65fr;gap:22px;margin:36px 0}.anatomy-table{border:1px solid #9fa5a9}.relation-name{width:100%;border:0;background:var(--ink);color:#fff;text-align:left;padding:12px 15px;font-weight:800;cursor:pointer}.an-row{width:100%;display:grid;grid-template-columns:repeat(4,1fr);border:0;background:#fff;padding:0;text-align:left}.an-row>*{padding:13px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);font-size:12px}.an-row.head button{border:0;border-right:1px solid var(--line);background:#e8eaeb;font-weight:800;text-align:left;cursor:pointer}.an-row:not(.head){cursor:pointer}.an-row:hover,.an-row .is-active,.an-row.is-active{background:var(--accent-soft)}.anatomy-detail{padding:24px;background:#f3f4f4;border-left:5px solid var(--accent)}.anatomy-detail>span{color:var(--accent);font-size:10px;font-weight:800;letter-spacing:.1em}.anatomy-detail h3{font:600 25px Georgia,"STSong",serif}.anatomy-detail p{color:var(--muted)}.term-equation{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:8px;padding:20px;border-top:3px solid var(--ink);background:#f7f7f5}.term-equation span{font-weight:700}.term-equation i{font-style:normal;color:var(--accent);font-size:11px}.term-equation i::after{content:" →"}
.property-lab{margin:36px 0;border:1px solid #adb2b6}.property-table{padding:22px}.pt-row{display:grid;grid-template-columns:repeat(4,1fr)}.property-table .pt-row{grid-template-columns:repeat(3,1fr)}.pt-row>*{padding:10px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);font-size:12px}.pt-row.head{background:var(--ink);color:#fff}.property-verdict{padding:18px 22px;border-top:1px solid var(--line);background:#f3f4f4}.property-verdict b{font-size:18px}.property-verdict p{margin:5px 0;color:var(--muted)}.property-verdict.is-valid{border-left:6px solid #497a59}.property-verdict.is-invalid{border-left:6px solid var(--accent);background:var(--accent-soft)}.property-list{display:flex;gap:7px;flex-wrap:wrap}.property-list span{padding:7px 10px;background:#fff;border-bottom:3px solid #7d8388;font-size:11px;font-weight:700}
.schema-instance-lab{display:grid;grid-template-columns:.8fr 1.2fr;margin:36px 0;border:1px solid #aeb3b7}.schema-fixed{padding:25px;background:#24272a;color:#fff}.schema-fixed>span{color:#d8b966;font-size:11px;font-weight:800}.schema-fixed h3{font:600 22px/1.5 Georgia,serif}.formal-schema{margin-top:28px;padding-top:18px;border-top:1px solid #6d7276}.formal-schema b{color:#f0c764}.formal-schema p{color:#c7cbce;font-size:12px}.formal-schema i{font-style:normal;color:#fff}.instance-time{min-width:0}.time-tabs{display:flex;border-bottom:1px solid var(--line)}.time-tabs button{flex:1;border:0;border-right:1px solid var(--line);background:#f3f4f4;padding:12px;cursor:pointer}.time-tabs button:hover,.time-tabs button.is-active{background:var(--accent);color:#fff}.instance-stage{padding:22px;overflow:auto}.instance-caption{margin-bottom:10px;color:var(--muted);font-size:11px}
.key-lab{margin:36px 0;border:1px solid #aeb3b7;padding:24px}.key-fields{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:18px}.key-fields button{border:1px solid #9fa5a9;background:#fff;padding:9px 13px;cursor:pointer;font-weight:700}.key-fields button.is-active{background:var(--accent);color:#fff;border-color:var(--accent)}.key-data{border:1px solid var(--line);overflow:auto}.key-data>div{min-width:580px;display:grid;grid-template-columns:repeat(4,1fr)}.key-data span,.key-data b{padding:10px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);font-size:12px}.key-data>div:first-child{background:#eceeef}.key-lab>.secondary-button{margin-top:18px}.key-result{margin-top:16px;padding:16px;background:#f3f4f4;border-left:4px solid var(--warm);color:var(--muted)}.key-result b{color:var(--ink)}.key-hierarchy{display:grid;grid-template-columns:1fr 120px 1fr 120px 1fr;align-items:center;gap:8px;margin:28px 0}.key-hierarchy article{min-height:125px;padding:20px;border-top:5px solid var(--ink);background:#f5f5f3}.key-hierarchy article:nth-of-type(2){border-color:var(--accent)}.key-hierarchy article:nth-of-type(3){border-color:var(--warm)}.key-hierarchy article b{font:600 22px Georgia,"STSong",serif}.key-hierarchy article p{color:var(--muted);font-size:12px}.key-hierarchy>i{text-align:center;font-style:normal;color:var(--accent);font-size:11px}.key-hierarchy>i::after{content:" →"}
.split-simulator{margin:36px 0;border:1px solid #aeb3b7}.split-stage{padding:22px;overflow:auto}.split-big{border:1px solid var(--line);min-width:720px}.sb-row{display:grid;grid-template-columns:.75fr .75fr .75fr 1.2fr .85fr .6fr}.sb-row>*{padding:9px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);font-size:11px}.sb-row.head{background:var(--ink);color:#fff}.split-simulator>.schema-change-result{margin:0 22px 22px}.split-relations{display:grid;grid-template-columns:1fr 44px 1.4fr 44px 1fr;align-items:center;min-width:760px}.split-relations article{border:1px solid #9fa5a9}.split-relations article b,.split-relations article span{display:block;padding:9px;border-bottom:1px solid var(--line);font-size:11px}.split-relations article b{background:var(--ink);color:#fff}.split-relations u{text-decoration-color:var(--accent);text-decoration-thickness:2px}.split-link{text-align:center;color:var(--accent);font-weight:800}
.relation-kinds{display:grid;grid-template-columns:210px 1fr;margin:36px 0;border:1px solid #aeb3b7}.relation-kinds nav{background:#f1f2f2;padding:12px}.relation-kinds nav button{display:block;width:100%;border:0;border-bottom:1px solid #cfd2d4;background:transparent;padding:14px;text-align:left;cursor:pointer;font-weight:700}.relation-kinds nav button:hover,.relation-kinds nav button.is-active{background:var(--accent);color:#fff}.kind-diagram{min-height:250px;padding:30px}.kind-flow{min-height:100px;display:flex;align-items:center;justify-content:center;gap:12px}.kind-flow strong,.kind-source,.kind-result{padding:14px 18px;border:2px solid var(--accent);background:#fff}.kind-source{border-color:#7a6640}.kind-result{border-radius:28px;background:var(--accent-soft)}.kind-flow i{font-style:normal;color:var(--muted)}.kind-diagram h3{font:600 25px Georgia,"STSong",serif}.kind-diagram p{color:var(--muted)}
.sketch-builder{margin:36px 0;border:1px solid #aeb3b7;padding:24px}.attribute-pool{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.attribute-pool label{padding:13px;background:#f4f5f5;font-weight:700;font-size:12px}.attribute-pool select{display:block;width:100%;margin-top:8px;padding:8px;border:1px solid #b8bdc0;background:#fff}.attribute-pool select.is-correct{border-color:var(--accent);background:var(--accent-soft)}.sketch-builder>.secondary-button{margin-top:18px}.sketch-result{margin-top:20px;padding:20px;background:#f7f7f5}.sketch-relations{display:grid;grid-template-columns:1fr 70px 1.2fr 70px 1fr;align-items:center;min-width:700px;overflow:auto}.sketch-relations article{border:1px solid #9fa5a9;background:#fff}.sketch-relations article b,.sketch-relations article span{display:block;padding:8px;border-bottom:1px solid var(--line);font-size:11px}.sketch-relations article b{background:var(--ink);color:#fff}.sketch-relations>i{text-align:center;color:var(--accent);font-style:normal;font-weight:800}
@media(max-width:900px){.anatomy-workbench,.schema-instance-lab{grid-template-columns:1fr}.key-hierarchy{grid-template-columns:1fr}.key-hierarchy>i::after{content:" ↓"}.relation-kinds{grid-template-columns:1fr}.relation-kinds nav{display:flex;overflow:auto}.relation-kinds nav button{min-width:150px}.attribute-pool{grid-template-columns:1fr 1fr}}
@media(max-width:620px){.domain-strip{grid-template-columns:1fr}.domain-strip>i{transform:rotate(90deg)}.universe-summary{grid-template-columns:1fr}.universe-summary span{border-bottom:1px solid var(--line)}.anatomy-table{overflow:auto}.an-row{min-width:560px}.attribute-pool{grid-template-columns:1fr}.kind-flow{flex-wrap:wrap}.schema-fixed h3{font-size:18px}.property-list span{flex:1 0 42%}}

/* Week 2 · connected concept map, fact explainer, detailed Cartesian product */
.relation-concept-map{margin:36px 0;padding:30px 0;border-top:4px solid var(--ink);border-bottom:1px solid var(--line)}.concept-flow{display:grid;grid-template-columns:1fr 100px 1fr 100px 1fr 110px 1fr;align-items:center}.concept-flow button,.concept-branches button{position:relative;border:0;background:#f2f3f3;padding:17px;text-align:left;cursor:pointer;min-height:88px}.concept-flow button::after,.concept-branches button::after{content:"";position:absolute;inset:0;border-left:5px solid transparent;pointer-events:none}.concept-flow button:hover::after,.concept-flow button.is-active::after,.concept-branches button:hover::after,.concept-branches button.is-active::after{border-left-color:var(--accent)}.concept-flow button.is-active,.concept-branches button.is-active{background:var(--accent-soft)}.concept-flow b,.concept-flow small,.concept-branches b,.concept-branches small{display:block}.concept-flow b,.concept-branches b{font:600 18px Georgia,"STSong",serif}.concept-flow small,.concept-branches small{margin-top:7px;color:var(--muted)}.concept-flow>i,.concept-branches i{position:relative;text-align:center;font-style:normal;color:var(--muted);font-size:10px}.concept-flow>i::after{content:"→";display:block;color:var(--accent);font-size:25px;line-height:1}.concept-branches{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:28px;margin:35px 8% 0}.concept-branches::before{content:"";position:absolute;left:8%;right:8%;top:-18px;height:1px;background:#aeb3b7}.concept-branches>span{position:absolute;top:-18px;height:18px;border-left:1px solid #aeb3b7}.concept-branches>span:first-child{left:25%}.concept-branches>span:nth-of-type(2){right:25%}.concept-branches>div{display:grid;grid-template-columns:1fr 70px 1fr 70px 1fr;align-items:center}.concept-branches>div:last-child{grid-template-columns:1fr 90px 1fr}.concept-branches i::after{content:" →";color:var(--accent)}.concept-map-detail{display:grid;grid-template-columns:220px 1fr;gap:22px;margin-top:28px;padding:18px 22px;background:#24272a;color:#fff}.concept-map-detail b{color:#f0c764}.concept-map-detail p{margin:0;color:#d9dcdf}.review-map{margin-bottom:40px;text-align:left}.review-map .concept-map-detail{text-align:left}
.fact-explainer{display:grid;grid-template-columns:.85fr 1.15fr;margin:36px 0;border-top:5px solid var(--ink);border-bottom:1px solid var(--line)}.fact-source{padding:25px;background:#f2f3f3}.fact-source>p{margin:0;color:var(--accent);font-size:11px;font-weight:800}.fact-source>strong{display:block;margin:12px 0 22px;font:600 19px/1.55 Georgia,"STSong",serif}.fact-controls{display:flex;gap:7px;flex-wrap:wrap}.fact-controls button{border:1px solid #aeb3b7;background:#fff;padding:8px 11px;cursor:pointer}.fact-controls button:hover,.fact-controls button.is-active{background:var(--accent);color:#fff;border-color:var(--accent)}.fact-stage{min-height:250px;padding:30px;display:grid;align-content:center;background:#fff;border-left:1px solid var(--line)}.fact-stage>p{color:var(--muted)}.fact-statement{display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap}.fact-statement span{padding:12px 15px;font-weight:700}.fact-statement i{font-style:normal;color:var(--muted)}.fact-object{background:#e9eef1;border-bottom:4px solid #4b7188}.fact-attribute{background:#f6ecec;border-bottom:4px solid var(--accent)}.fact-value{background:#f5f0e6;border-bottom:4px solid #8a6415}.fact-relationship{display:flex;align-items:center;justify-content:center;gap:18px}.fact-relationship span{display:grid;place-items:center;width:125px;height:125px;border-radius:50%;background:#eef0f1;border:3px solid #4b7188;font-weight:700}.fact-relationship span:last-child{border-color:var(--accent)}.fact-relationship i{font-style:normal;text-align:center;color:var(--accent);font-weight:700}.fact-single-value{font:600 70px Georgia,serif;color:var(--accent);text-align:center}.fact-definition{display:grid;grid-template-columns:190px 1fr;gap:22px;padding:20px;border-left:5px solid var(--accent);background:#faf7f7}.fact-definition p{margin:0;color:var(--muted)}
.cartesian-lab{margin:36px 0;border-top:5px solid var(--ink);border-bottom:1px solid var(--line)}.cartesian-steps{display:grid;grid-template-columns:repeat(4,1fr);background:#f1f2f2}.cartesian-steps button{display:grid;grid-template-columns:36px 1fr;align-items:center;border:0;border-right:1px solid #cbd0d3;background:transparent;padding:14px;text-align:left;cursor:pointer}.cartesian-steps button b{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:#fff;border:1px solid #9fa5a9}.cartesian-steps button span{font-weight:700;font-size:12px}.cartesian-steps button.is-active{background:var(--accent);color:#fff}.cartesian-steps button.is-active b{color:var(--accent);border-color:#fff}.cartesian-equation{display:flex;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap;padding:18px;border-bottom:1px solid var(--line);font-family:Georgia,"STSong",serif}.cartesian-equation span{font-size:18px}.cartesian-equation i{font-style:normal;color:var(--muted)}.cartesian-equation strong{font-size:23px;color:var(--accent)}.cartesian-stage{min-height:420px;display:grid;align-content:center;padding:26px;overflow:auto}.cartesian-stage.is-changing>*{animation:cartesianChange .38s ease both}.cart-domains{display:grid;grid-template-columns:1fr 50px 1fr 50px 1fr;align-items:center}.cart-domains article{padding:18px;background:#f4f5f5;border-top:4px solid var(--accent)}.cart-domains article b,.cart-domains article span,.cart-domains article em{display:block}.cart-domains article span{display:inline-block;margin:10px 5px 0 0;padding:6px 8px;background:#fff}.cart-domains article em{margin-top:18px;color:var(--muted);font-style:normal}.cart-domains>i{text-align:center;font:28px Georgia,serif;color:var(--accent)}.cart-matrix{display:grid;grid-template-columns:110px repeat(3,1fr);width:min(760px,100%);margin:auto}.cart-matrix>*{min-height:55px;display:grid;place-items:center;padding:8px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);text-align:center;font-size:11px}.cart-matrix>b,.axis-corner{background:#e9ebec;font-weight:700}.pair-matrix>span:not(.axis-corner){background:#fafafa}.cart-layers{display:grid;grid-template-columns:1fr 1fr;gap:24px;min-width:760px}.cart-layers section>header{padding:10px;background:var(--ink);color:#fff;text-align:center;font-weight:700}.triple-matrix{grid-template-columns:90px repeat(3,1fr)}.triple-matrix>span:not(.axis-corner){line-height:1.45}.triple-matrix .is-real{background:var(--accent);color:#fff;font-weight:700}.triple-matrix .is-rejected{background:#f0f1f1;color:#999;text-decoration:line-through;opacity:.55}.relation-result{display:grid;grid-template-columns:150px repeat(4,1fr);margin:25px auto 0;min-width:760px;border-top:3px solid var(--accent)}.relation-result>*{padding:10px;border-bottom:1px solid var(--line);font-size:11px}.relation-result b{color:var(--accent)}.cartesian-nav{display:flex;justify-content:space-between;align-items:center;padding:12px 22px;border-top:1px solid var(--line)}.cartesian-nav button{border:1px solid #aeb3b7;background:#fff;padding:8px 13px;cursor:pointer}.cartesian-nav span{color:var(--muted);font-size:12px}.cartesian-finding{min-height:84px;padding:18px 22px;background:#f4f5f5;border-left:5px solid var(--warm);color:var(--muted)}.cartesian-finding b{color:var(--ink)}
@keyframes cartesianChange{from{opacity:.3;transform:translateY(8px)}to{opacity:1;transform:none}}
@media(max-width:900px){.concept-flow{grid-template-columns:1fr}.concept-flow>i{padding:5px}.concept-flow>i::after{content:"↓"}.concept-branches{grid-template-columns:1fr;margin-left:0;margin-right:0}.concept-branches::before,.concept-branches>span{display:none}.fact-explainer{grid-template-columns:1fr}.fact-stage{border-left:0;border-top:1px solid var(--line)}.cartesian-steps{grid-template-columns:1fr 1fr}.cartesian-stage{padding:18px}.cart-layers{grid-template-columns:1fr;min-width:700px}}
@media(max-width:620px){.concept-branches>div,.concept-branches>div:last-child{grid-template-columns:1fr}.concept-branches i{padding:5px}.concept-branches i::after{content:" ↓"}.concept-map-detail,.fact-definition{grid-template-columns:1fr}.fact-relationship span{width:100px;height:100px}.cartesian-steps{grid-template-columns:1fr}.cart-domains{grid-template-columns:1fr}.cart-domains>i{transform:rotate(90deg)}.cartesian-stage{min-height:500px}.cartesian-equation span{font-size:15px}}
@media(prefers-reduced-motion:reduce){.cartesian-stage.is-changing>*{animation:none}}

/* Week 3 · database design from business facts to integrity */
.design-map{margin:36px 0;border-top:5px solid var(--ink);border-bottom:1px solid var(--line);padding-top:28px}.design-spine{display:grid;grid-template-columns:1fr 62px 1.2fr 62px 1fr 62px 1fr 62px 1fr;align-items:center}.design-spine button{min-height:108px;border:0;border-left:5px solid transparent;background:#f2f3f3;padding:16px;text-align:left;cursor:pointer}.design-spine button:hover,.design-spine button.is-active{border-left-color:var(--accent);background:var(--accent-soft)}.design-spine b,.design-spine small{display:block}.design-spine b{font:600 17px Georgia,"STSong",serif}.design-spine small{margin-top:8px;color:var(--muted)}.design-spine>i{text-align:center;font-style:normal;color:var(--muted);font-size:9px}.design-spine>i::after{content:"→";display:block;color:var(--accent);font-size:22px}.map-detail{display:grid;grid-template-columns:190px 1fr;gap:20px;margin-top:28px;padding:20px 24px;background:#24272a;color:#fff}.map-detail b{color:#f0c764}.map-detail p{margin:0;color:#d9dcdf}
.sentence-microscope{margin:36px 0;border:1px solid #adb2b6;border-top:5px solid var(--ink)}.sentence-controls,.cardinality-tabs,.mn-steps,.mapping-source,.write-requests{display:flex;flex-wrap:wrap;background:#f1f2f2;border-bottom:1px solid var(--line)}.sentence-controls button,.cardinality-tabs button,.mn-steps button,.mapping-source button,.write-requests button{flex:1;border:0;border-right:1px solid #c9cdd1;background:transparent;padding:13px;cursor:pointer;font-weight:700}.sentence-controls button:hover,.sentence-controls button.is-active,.cardinality-tabs button:hover,.cardinality-tabs button.is-active,.mn-steps button:hover,.mn-steps button.is-active,.mapping-source button:hover,.mapping-source button.is-active,.write-requests button:hover{background:var(--accent);color:#fff}.sentence-stage{min-height:250px;display:grid;align-content:center;padding:32px}.sentence-stage>p{text-align:center;color:var(--muted)}.fact-sentence,.fact-graph,.fact-equation{display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap}.fact-sentence span,.fact-graph span,.fact-equation span,.fact-equation strong{padding:13px 16px;background:#eef0f1;border-bottom:4px solid #777}.fact-sentence i,.fact-graph b,.fact-equation i{font-style:normal;color:var(--accent)}.fact-sentence .is-entity{border-color:#4c7187}.fact-sentence .is-attribute{border-color:var(--accent);background:var(--accent-soft)}.fact-graph span{width:120px;height:120px;border:3px solid #4c7187;border-radius:50%;display:grid;place-items:center;text-align:center}.fact-graph b{position:relative}.fact-graph b::before,.fact-graph b::after{content:"";position:absolute;top:50%;width:32px;height:1px;background:#999}.fact-graph b::before{right:100%}.fact-graph b::after{left:100%}.fact-equation strong{background:#24272a;color:#fff;border-color:var(--accent)}.concept-boundary{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.concept-boundary article{padding:22px;border-top:4px solid var(--ink);background:#f5f5f3}.concept-boundary article:nth-child(2){border-color:var(--accent)}.concept-boundary article:nth-child(3){border-color:var(--warm)}.concept-boundary b{font:600 20px Georgia,"STSong",serif}.concept-boundary p{color:var(--muted);font-size:13px}
.entity-lab{display:grid;grid-template-columns:220px 1fr;margin:36px 0;border:1px solid #adb2b6}.entity-lab nav{padding:12px;background:#f1f2f2}.entity-lab nav button{width:100%;border:0;border-bottom:1px solid #cfd2d4;background:transparent;padding:15px;text-align:left;cursor:pointer;font-weight:700}.entity-lab nav button:hover,.entity-lab nav button.is-active{background:var(--accent);color:#fff}.entity-case-stage{min-height:280px;padding:36px;display:grid;align-content:center}.entity-case-stage>span{color:var(--accent);font-size:10px;font-weight:800;letter-spacing:.1em}.entity-case-stage h3{font:600 30px Georgia,"STSong",serif;margin:8px 0}.entity-case-stage p{color:var(--muted);line-height:1.8}.entity-case-stage strong{border-left:5px solid var(--warm);padding:10px 15px;background:#faf7f0}.decision-rule{display:grid;grid-template-columns:180px repeat(3,1fr);border-top:4px solid var(--ink)}.decision-rule>*{padding:17px;border-right:1px solid var(--line)}.decision-rule b{background:#24272a;color:#fff}.decision-rule span{font-size:12px}
.cardinality-lab{margin:36px 0;border:1px solid #adb2b6}.cardinality-stage{display:grid;grid-template-columns:1.3fr .7fr;min-height:360px}.cardinality-canvas{display:grid;grid-template-columns:130px 1fr 130px;align-items:center;padding:28px;overflow:hidden}.card-nodes{display:grid;gap:16px;z-index:2}.card-nodes b{text-align:center;font:600 20px Georgia,"STSong",serif}.card-nodes span{display:grid;place-items:center;height:44px;border:2px solid #4c7187;border-radius:50%;background:#fff;font-size:12px;font-weight:700}.card-nodes.right span{border-color:var(--accent)}.card-edges{position:relative;height:220px}.card-edges i{position:absolute;left:0;right:0;top:calc(34px + var(--a)*60px);height:1px;background:#8e9499;transform-origin:left center;transform:rotate(calc((var(--b) - var(--a))*8deg))}.cardinality-stage aside{display:grid;align-content:center;padding:28px;background:#24272a;color:#fff;border-left:1px solid var(--line)}.cardinality-stage aside b{font:600 58px Georgia,serif;color:#f0c764}.cardinality-stage aside p{color:#d7dade}.direction-check{display:grid;grid-template-columns:1fr 1fr 160px;border-top:1px solid var(--line)}.direction-check>*{padding:16px;border-right:1px solid var(--line)}.direction-check b,.direction-check span{display:block}.direction-check span{margin-top:5px;color:var(--muted);font-size:12px}.direction-check strong{display:grid;place-items:center;background:var(--accent-soft);color:var(--accent)}
.mn-lab{margin:36px 0;border:1px solid #adb2b6;border-top:5px solid var(--ink)}.mn-stage{min-height:340px;display:grid;align-content:center;padding:30px;overflow:auto}.mn-direct,.mn-resolved,.mn-keys{display:grid;grid-template-columns:1fr 140px 1fr;align-items:center;gap:18px;min-width:680px}.mn-direct article,.mn-resolved article,.mn-keys article{border:1px solid #9fa5a9;background:#fff}.mn-direct article b,.mn-direct article span,.mn-resolved article b,.mn-resolved article span,.mn-keys article b,.mn-keys article span,.mn-keys article small{display:block;padding:10px;border-bottom:1px solid var(--line)}.mn-direct article b,.mn-resolved article b,.mn-keys article b{background:var(--ink);color:#fff}.mn-direct>div,.mn-resolved>i,.mn-keys>i{text-align:center;color:var(--accent);font-style:normal}.mn-direct>div>*{display:block}.mn-direct>div strong{font:600 30px Georgia,serif}.relation-diamond{padding:20px!important;background:var(--accent-soft);transform:rotate(45deg)}.relation-diamond>*{transform:rotate(-45deg)}.relation-diamond span{font-size:10px}.mn-resolved{grid-template-columns:1fr 65px 1.5fr 65px 1fr}.mn-resolved .bridge{border-top:5px solid var(--accent)}.mn-keys{grid-template-columns:1fr 60px 1.6fr 60px 1fr}.mn-keys u{font-weight:800;text-decoration-color:var(--accent);text-decoration-thickness:3px}.mn-nav{display:flex;justify-content:space-between;padding:12px 18px;border-top:1px solid var(--line)}.mn-nav button{border:1px solid #aeb3b7;background:#fff;padding:8px 13px;cursor:pointer}.mn-nav span{color:var(--muted)}.mn-finding{min-height:72px;padding:18px 22px;background:#f5f5f3;border-left:5px solid var(--warm);color:var(--muted)}
.mapping-lab{margin:36px 0;border:1px solid #adb2b6}.mapping-arrow{display:flex;align-items:center;justify-content:center;gap:13px;padding:16px;background:#24272a;color:#fff;font-size:11px}.mapping-arrow i{font-style:normal;color:#f0c764}.mapping-schema{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;padding:24px}.mapping-schema article{border-top:4px solid #8c9297;background:#f3f4f4;padding:14px;min-width:0}.mapping-schema article.is-active{border-color:var(--accent);background:var(--accent-soft)}.mapping-schema b,.mapping-schema span{display:block}.mapping-schema span{margin-top:9px;color:var(--muted);font-size:10px;overflow-wrap:anywhere}.mapping-note{padding:18px 24px;border-top:1px solid var(--line);color:var(--muted)}
.key-trace{display:grid;grid-template-columns:1fr 70px 1.2fr 70px 1fr;align-items:center;margin:36px 0;overflow:auto}.key-table{min-width:170px;border:1px solid #9fa5a9}.key-table>*{display:block;width:100%;padding:10px;border:0;border-bottom:1px solid var(--line);background:#fff;text-align:left}.key-table>b{background:var(--ink);color:#fff}.key-table button{cursor:pointer}.key-table button:hover,.key-table button.is-traced{background:var(--accent);color:#fff}.key-table em{float:right;font-style:normal;color:var(--accent);font-size:10px;font-weight:800}.key-table button.is-traced em{color:#fff}.key-table small{font-size:10px;color:var(--muted)}.key-center{border-top:5px solid var(--accent)}.key-connector{text-align:center;color:var(--accent);font-size:11px}.key-connector::before,.key-connector::after{content:"";display:block;height:1px;background:#aeb3b7}.key-trace-note{padding:18px 22px;background:#f4f5f5;border-left:5px solid var(--accent);color:var(--muted)}.key-trace-note b{color:var(--ink)}
.integrity-lab{margin:36px 0;border:1px solid #adb2b6}.write-requests button{min-width:190px}.integrity-pipeline{position:relative;display:grid;grid-template-columns:55px 1fr 30px 1fr 30px 1fr 30px 100px;align-items:center;gap:6px;padding:32px 22px;overflow:hidden}.integrity-pipeline article,.integrity-pipeline>strong{min-height:120px;padding:16px;background:#f2f3f3;border-top:5px solid #8b9196}.integrity-pipeline article b{font:600 17px Georgia,"STSong",serif}.integrity-pipeline article p{color:var(--muted);font-size:11px}.integrity-pipeline>i{text-align:center;color:var(--accent);font-style:normal}.integrity-pipeline [data-gate].is-pass{border-color:#477b57;background:#eef6f0}.integrity-pipeline [data-gate].is-stop{border-color:var(--accent);background:var(--accent-soft)}.integrity-pipeline>strong{display:grid;place-items:center;text-align:center}.write-token{z-index:2;display:grid;place-items:center;width:52px;height:52px;border-radius:50%;background:var(--accent);color:#fff;font-size:10px;font-weight:800}.write-token.is-running{animation:writeTravel .7s ease both}.integrity-result{min-height:82px;padding:18px 22px;border-top:1px solid var(--line);background:#24272a;color:#fff}.integrity-result b{color:#f0c764}.integrity-result p{margin:5px 0;color:#d7dade}@keyframes writeTravel{0%{transform:translateX(0);opacity:.4}100%{transform:translateX(calc(var(--gate)*210px));opacity:1}}
.design-studio{margin:36px 0;border:1px solid #adb2b6;padding:24px}.design-attributes{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.design-attributes label{padding:14px;background:#f3f4f4;font-weight:700}.design-attributes select{display:block;width:100%;margin-top:8px;padding:9px;border:1px solid #adb2b6;background:#fff}.design-attributes select.is-correct{border-color:var(--accent);background:var(--accent-soft)}.design-studio>.secondary-button{margin-top:18px}.design-result{margin-top:20px;padding:20px;background:#f7f7f5;color:var(--muted)}.final-schema{display:grid;grid-template-columns:1fr 45px 1fr 45px 1.2fr 45px 1fr 45px 1fr;align-items:center;min-width:850px;overflow:auto}.final-schema article{border:1px solid #9fa5a9;background:#fff}.final-schema b,.final-schema span{display:block;padding:9px}.final-schema b{background:var(--ink);color:#fff}.final-schema i{text-align:center;color:var(--accent);font-style:normal;font-size:11px}.review-design-map{margin-bottom:38px}
@media(max-width:900px){.design-spine{grid-template-columns:1fr}.design-spine>i{padding:4px}.design-spine>i::after{content:"↓"}.entity-lab,.cardinality-stage{grid-template-columns:1fr}.entity-lab nav{display:flex;overflow:auto}.entity-lab nav button{min-width:150px}.decision-rule{grid-template-columns:1fr 1fr}.mapping-schema{grid-template-columns:1fr 1fr}.integrity-pipeline{grid-template-columns:1fr}.integrity-pipeline>i{transform:rotate(90deg)}.write-token{display:none}.key-trace{min-width:760px}.design-attributes{grid-template-columns:1fr 1fr}.map-detail{grid-template-columns:1fr}}
@media(max-width:620px){.concept-boundary,.design-attributes,.mapping-schema{grid-template-columns:1fr}.direction-check{grid-template-columns:1fr}.cardinality-canvas{grid-template-columns:90px 1fr 90px;padding:16px}.fact-graph span{width:90px;height:90px}.decision-rule{grid-template-columns:1fr}.mapping-arrow{align-items:flex-start;flex-direction:column}.mn-stage{padding:16px}.sentence-controls button,.cardinality-tabs button,.mn-steps button{min-width:50%}}
@media(prefers-reduced-motion:reduce){.write-token.is-running{animation:none}}

/* Week 4 · SQL and executable data definitions */
.ddl-map{margin:36px 0;border-top:5px solid var(--ink);border-bottom:1px solid var(--line);padding-top:28px}.ddl-spine{display:grid;grid-template-columns:1fr 50px 1fr 50px 1fr 50px 1fr 50px 1fr 50px 1fr;align-items:center}.ddl-spine button{min-height:104px;border:0;border-left:5px solid transparent;background:#f2f3f3;padding:15px;text-align:left;cursor:pointer}.ddl-spine button:hover,.ddl-spine button.is-active{border-left-color:var(--accent);background:var(--accent-soft)}.ddl-spine b,.ddl-spine small{display:block}.ddl-spine b{font:600 16px Georgia,"STSong",serif}.ddl-spine small{margin-top:7px;color:var(--muted);font-size:10px}.ddl-spine>i{text-align:center;font-style:normal;color:var(--muted);font-size:8px}.ddl-spine>i::after{content:"→";display:block;color:var(--accent);font-size:20px}.ddl-map-detail{display:grid;grid-template-columns:180px 1fr;gap:20px;margin-top:28px;padding:20px 24px;background:#24272a;color:#fff}.ddl-map-detail b{color:#f0c764}.ddl-map-detail p{margin:0;color:#d9dcdf}
.declarative-lab{margin:36px 0;border:1px solid #adb2b6;border-top:5px solid var(--ink)}.declarative-controls{display:flex;background:#f1f2f2;border-bottom:1px solid var(--line)}.declarative-controls button{flex:1;border:0;border-right:1px solid #c9cdd1;background:transparent;padding:14px;cursor:pointer;font-weight:700}.declarative-controls button:hover,.declarative-controls button.is-active{background:var(--accent);color:#fff}.declarative-compare{display:grid;grid-template-columns:1fr 1fr}.declarative-compare>div{min-width:0}.declarative-compare>div+div{border-left:1px solid var(--line)}.declarative-compare header{padding:14px 20px;background:#e9ebec;font-weight:800}.declarative-compare ol{margin:0;padding:28px 28px 28px 48px}.declarative-compare li{padding:7px 0;border-bottom:1px solid var(--line);color:var(--muted)}.declarative-compare pre{min-height:250px;margin:0;padding:28px;background:#24272a;color:#fff}.declarative-note{padding:18px 22px;border-top:1px solid var(--line);border-left:5px solid var(--warm);background:#faf7f0;color:var(--muted)}.sql-character,.type-rule{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.sql-character article,.type-rule article{padding:19px;border-top:4px solid var(--ink);background:#f4f5f5}.sql-character article:nth-child(2),.type-rule article:nth-child(3){border-color:var(--accent)}.sql-character b,.type-rule b{font:600 18px Georgia,"STSong",serif}.sql-character p,.type-rule p{font-size:12px;color:var(--muted)}
.sql-family{display:grid;grid-template-columns:220px 1fr;margin:36px 0;border:1px solid #adb2b6}.sql-family nav{padding:12px;background:#f1f2f2}.sql-family nav button,.ddl-debugger nav button{width:100%;border:0;border-bottom:1px solid #cfd2d4;background:transparent;padding:15px;text-align:left;cursor:pointer;font-weight:700}.sql-family nav button:hover,.sql-family nav button.is-active,.ddl-debugger nav button:hover,.ddl-debugger nav button.is-active{background:var(--accent);color:#fff}.sql-family-stage{min-height:320px;padding:35px;display:grid;align-content:center}.sql-family-stage>span{color:var(--accent);font-size:10px;font-weight:800}.sql-family-stage h3{font:600 28px Georgia,"STSong",serif}.sql-family-stage>b{color:var(--muted)}.sql-family-stage pre{padding:18px;background:#24272a;color:#fff;overflow:auto}.sql-family-stage p{color:var(--muted)}
.namespace-lab{display:grid;grid-template-columns:.8fr 1.2fr;margin:36px 0;border:1px solid #adb2b6}.namespace-code{background:#24272a;padding:25px}.namespace-code button{border:1px solid #858b90;background:transparent;color:#fff;padding:9px 12px;cursor:pointer}.namespace-code button.is-active{background:var(--accent);border-color:var(--accent)}.namespace-code pre{margin-top:22px;color:#f0c764;white-space:pre-wrap}.namespace-visual{padding:30px}.namespace-shell{border-left:5px solid var(--ink);padding-left:20px}.namespace-shell>b{display:block;margin-bottom:12px}.namespace-shell article{padding:20px;background:#f2f3f3}.namespace-shell article>span{font:600 22px Georgia,"STSong",serif}.namespace-shell article>div{display:flex;gap:7px;flex-wrap:wrap;margin-top:15px}.namespace-shell i{padding:8px 10px;background:#fff;border-bottom:3px solid var(--accent);font-size:11px;font-style:normal}.namespace-visual>p{color:var(--muted);font-size:12px}.dialect-note{display:grid;grid-template-columns:170px 1fr;padding:20px;border-left:5px solid var(--warm);background:#faf7f0}.dialect-note p{margin:0;color:var(--muted)}
.ddl-anatomy{display:grid;grid-template-columns:1.15fr .85fr;margin:36px 0;border:1px solid #adb2b6}.ddl-anatomy pre{margin:0;padding:28px;background:#24272a}.ddl-anatomy code{display:grid}.ddl-anatomy code button{border:0;background:transparent;color:#f4f4f2;padding:8px 10px;text-align:left;font:13px Consolas,monospace;cursor:pointer}.ddl-anatomy code button:hover,.ddl-anatomy code button.is-active{background:var(--accent)}.ddl-anatomy aside{padding:30px;display:grid;align-content:center}.ddl-anatomy aside>span,.debug-stage aside>span{color:var(--accent);font-size:10px;font-weight:800;letter-spacing:.1em}.ddl-anatomy aside h3,.debug-stage aside h3{font:600 24px Georgia,"STSong",serif}.ddl-anatomy aside p,.debug-stage aside p{color:var(--muted)}.grammar-flow{display:flex;align-items:center;justify-content:center;gap:7px;flex-wrap:wrap}.grammar-flow span{padding:10px 12px;background:#f1f2f2;border-bottom:3px solid #82888d;font-weight:700;font-size:11px}.grammar-flow i{font-style:normal;color:var(--accent)}
.type-lab{margin:36px 0;border:1px solid #adb2b6}.type-values{display:flex;flex-wrap:wrap;background:#f1f2f2;border-bottom:1px solid var(--line)}.type-values button{flex:1;min-width:170px;border:0;border-right:1px solid #c9cdd1;background:transparent;padding:14px;cursor:pointer;font-weight:700}.type-values button:hover,.type-values button.is-active{background:var(--accent);color:#fff}.type-stage{display:grid;grid-template-columns:1.4fr .6fr}.type-containers{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:25px}.type-containers article{position:relative;padding:18px;background:#f3f4f4;border-top:4px solid #8b9196}.type-containers article.is-best{border-color:#477b57;background:#eef6f0}.type-containers b,.type-containers span{display:block}.type-containers span{font:600 20px Georgia,serif;margin:10px 0}.type-containers p{min-height:42px;color:var(--muted);font-size:11px}.type-containers em{font-style:normal;font-size:10px;font-weight:800;color:var(--accent)}.type-stage aside{display:grid;align-content:center;padding:28px;background:#24272a;color:#fff}.type-stage aside b{font:600 25px Georgia,"STSong",serif;color:#f0c764}.type-stage aside p{color:#d7dade}
.constraint-workbench{display:grid;grid-template-columns:.85fr 1.15fr;margin:36px 0;border:1px solid #adb2b6}.constraint-definition{padding:22px;background:#24272a;color:#fff}.constraint-definition>b{font:600 25px Georgia,serif}.constraint-definition label{display:grid;grid-template-columns:80px 1fr;align-items:center;gap:10px;margin-top:12px}.constraint-definition select{width:100%;padding:9px;background:#fff;border:0}.constraint-tests{padding:22px}.constraint-tests button{display:block;width:100%;margin-bottom:8px;border:1px solid #adb2b6;background:#fff;padding:11px;text-align:left;cursor:pointer}.constraint-tests button:hover{border-color:var(--accent);background:var(--accent-soft)}#constraintTestResult{min-height:90px;margin-top:18px;padding:16px;background:#f3f4f4;border-left:5px solid var(--accent);color:var(--muted)}#constraintTestResult b{color:var(--ink)}.constraint-spectrum{display:grid;grid-template-columns:repeat(5,1fr);border-top:4px solid var(--ink)}.constraint-spectrum span{padding:15px;border-right:1px solid var(--line);font-size:11px}.constraint-spectrum b{display:block;color:var(--accent)}
.dependency-lab{display:grid;grid-template-columns:1.35fr .65fr;margin:36px 0;border:1px solid #adb2b6}.dependency-graph{padding:28px}.dep-root,.dep-middle,.dep-leaf{display:flex;justify-content:space-around;gap:30px}.dependency-graph button{min-width:145px;border:2px solid #7c8388;background:#fff;padding:14px;cursor:pointer;font-weight:800}.dependency-graph button:hover{border-color:var(--accent)}.dependency-graph button.is-created{background:#eef6f0;border-color:#477b57;color:#365d41}.dep-arrows{display:flex;justify-content:space-around;padding:28px 0 16px;color:var(--muted);font-size:10px}.dep-arrows span::before{content:"↓";display:block;text-align:center;color:var(--accent);font-size:24px}.dep-arrows.center{justify-content:center}.dep-leaf button{border-color:var(--accent)}.dependency-lab aside{padding:25px;background:#24272a;color:#fff}.dependency-lab aside>b{color:#f0c764}.dependency-lab aside ol{min-height:140px;padding-left:22px}.dependency-lab aside li{padding:5px 0;border-bottom:1px solid #555}.dependency-lab aside p{color:#d2d5d7;font-size:12px}.dependency-lab aside button{border:1px solid #888;background:transparent;color:#fff;padding:9px 12px;cursor:pointer}
.rich-ddl-builder{display:grid;grid-template-columns:.75fr 1.25fr;margin:36px 0;border:1px solid #adb2b6}.ddl-fields{padding:22px;background:#f1f2f2}.ddl-fields label{display:block;margin-bottom:12px;font-weight:700;font-size:12px}.ddl-fields select{display:block;width:100%;margin-top:5px;padding:9px;border:1px solid #aeb3b7;background:#fff}.ddl-fields button{width:100%;margin-top:8px;border:1px solid var(--ink);background:#fff;padding:10px;cursor:pointer;font-weight:700}.ddl-fields button[data-run-ddl]{background:var(--accent);border-color:var(--accent);color:#fff}.ddl-preview{min-width:0;background:#24272a;color:#fff}.ddl-preview pre{min-height:330px;margin:0;padding:25px;overflow:auto}.ddl-preview code{color:#f3f3f1}.ddl-preview>div{padding:18px 22px;border-top:1px solid #595e62;color:#d5d8da}.ddl-preview>div b{color:#f0c764}.ddl-preview ol{margin-bottom:0}
.ddl-debugger{display:grid;grid-template-columns:210px 1fr;margin:36px 0;border:1px solid #adb2b6}.ddl-debugger nav{padding:12px;background:#f1f2f2}.debug-stage{display:grid;grid-template-columns:1fr 1fr;min-height:330px}.debug-stage pre{margin:0;padding:25px;background:#24272a;color:#fff;white-space:pre-wrap}.debug-stage aside{padding:28px;display:grid;align-content:center}.review-ddl-map{margin-bottom:40px}
@media(max-width:1000px){.ddl-spine{grid-template-columns:1fr}.ddl-spine>i{padding:4px}.ddl-spine>i::after{content:"↓"}.sql-character,.type-rule{grid-template-columns:1fr 1fr}.ddl-map-detail{grid-template-columns:1fr}.constraint-spectrum{grid-template-columns:1fr 1fr}.dependency-lab,.constraint-workbench,.rich-ddl-builder{grid-template-columns:1fr}.mapping-note{min-height:70px}}
@media(max-width:760px){.declarative-compare,.namespace-lab,.ddl-anatomy,.type-stage,.sql-family,.ddl-debugger,.debug-stage{grid-template-columns:1fr}.declarative-compare>div+div{border-left:0;border-top:1px solid var(--line)}.sql-family nav,.ddl-debugger nav{display:flex;overflow:auto}.sql-family nav button,.ddl-debugger nav button{min-width:160px}.dialect-note{grid-template-columns:1fr}.constraint-spectrum,.sql-character,.type-rule{grid-template-columns:1fr}.dependency-graph button{min-width:110px}.ddl-anatomy code button{font-size:10px}.type-containers{grid-template-columns:1fr}}

/* Week 4 · refined two-row academic process map */
.ddl-map{padding:34px 34px 0;background:linear-gradient(180deg,#fbfbfa 0,#fff 72%);border:1px solid #d5d8da;border-top:5px solid var(--ink)}
.ddl-spine{counter-reset:ddl-step;display:grid;grid-template-columns:minmax(0,1fr) 72px minmax(0,1fr) 72px minmax(0,1fr);grid-template-rows:auto 62px auto;align-items:center;gap:0}
.ddl-spine button{counter-increment:ddl-step;position:relative;min-height:132px;padding:27px 22px 20px;border:1px solid #d2d5d7;border-top:3px solid #72787d;border-left:1px solid #d2d5d7;background:#fff;box-shadow:0 12px 28px rgba(28,32,35,.055);transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease}
.ddl-spine button::before{content:"0" counter(ddl-step);position:absolute;top:-15px;left:20px;display:grid;place-items:center;width:34px;height:28px;background:#fff;border:1px solid #aeb3b7;color:var(--accent);font:800 11px Arial,sans-serif;letter-spacing:.06em}
.ddl-spine button:hover,.ddl-spine button.is-active{transform:translateY(-3px);border-color:#b5b9bc;border-top-color:var(--accent);background:#fff;box-shadow:0 17px 34px rgba(28,32,35,.1)}
.ddl-spine button.is-active::before{background:var(--accent);border-color:var(--accent);color:#fff}
.ddl-spine b{font:600 20px/1.25 Georgia,"STSong",serif}.ddl-spine small{margin-top:11px;font-size:12px;line-height:1.55}
.ddl-spine>i{position:relative;padding:0 8px;color:#686f74;font-size:10px;line-height:1.35;letter-spacing:.02em}
.ddl-spine>i::after{font-size:25px;line-height:1.1}
.ddl-spine button:nth-of-type(1){grid-column:1;grid-row:1}.ddl-spine>i:nth-of-type(1){grid-column:2;grid-row:1}.ddl-spine button:nth-of-type(2){grid-column:3;grid-row:1}.ddl-spine>i:nth-of-type(2){grid-column:4;grid-row:1}.ddl-spine button:nth-of-type(3){grid-column:5;grid-row:1}
.ddl-spine>i:nth-of-type(3){grid-column:5;grid-row:2}.ddl-spine>i:nth-of-type(3)::after{content:"↓"}
.ddl-spine button:nth-of-type(4){grid-column:5;grid-row:3}.ddl-spine>i:nth-of-type(4){grid-column:4;grid-row:3}.ddl-spine>i:nth-of-type(4)::after{content:"←"}.ddl-spine button:nth-of-type(5){grid-column:3;grid-row:3}.ddl-spine>i:nth-of-type(5){grid-column:2;grid-row:3}.ddl-spine>i:nth-of-type(5)::after{content:"←"}.ddl-spine button:nth-of-type(6){grid-column:1;grid-row:3}
.ddl-map-detail{margin:34px -34px 0;padding:24px 34px;grid-template-columns:190px 1fr;background:#f4f1eb;border-top:1px solid #ddd7cd;border-left:5px solid var(--accent);color:var(--ink)}
.ddl-map-detail b{color:var(--accent);font:600 18px Georgia,"STSong",serif}.ddl-map-detail p{color:#565d62;line-height:1.75}
.review-ddl-map{margin-top:34px}
@media(max-width:760px){.ddl-map{padding:28px 20px 0}.ddl-spine{grid-template-columns:1fr;grid-template-rows:none;gap:0}.ddl-spine button,.ddl-spine button:nth-of-type(n){grid-column:1;grid-row:auto;min-height:110px}.ddl-spine>i,.ddl-spine>i:nth-of-type(n){grid-column:1;grid-row:auto;padding:10px}.ddl-spine>i:nth-of-type(n)::after{content:"↓"}.ddl-map-detail{margin:28px -20px 0;padding:22px 20px;grid-template-columns:1fr}}

/* Week 5 · data change, scope and recovery */
.dml-map{margin:36px 0;padding:34px 34px 0;background:linear-gradient(180deg,#fbfbfa 0,#fff 72%);border:1px solid #d5d8da;border-top:5px solid var(--ink)}.dml-spine{counter-reset:dml-step;display:grid;grid-template-columns:minmax(0,1fr) 72px minmax(0,1fr) 72px minmax(0,1fr);grid-template-rows:auto 62px auto;align-items:center}.dml-spine button{counter-increment:dml-step;position:relative;min-height:132px;padding:27px 22px 20px;border:1px solid #d2d5d7;border-top:3px solid #72787d;background:#fff;box-shadow:0 12px 28px rgba(28,32,35,.055);text-align:left;cursor:pointer;transition:.18s ease}.dml-spine button::before{content:"0" counter(dml-step);position:absolute;top:-15px;left:20px;display:grid;place-items:center;width:34px;height:28px;background:#fff;border:1px solid #aeb3b7;color:var(--accent);font:800 11px Arial,sans-serif}.dml-spine button:hover,.dml-spine button.is-active{transform:translateY(-3px);border-top-color:var(--accent);box-shadow:0 17px 34px rgba(28,32,35,.1)}.dml-spine button.is-active::before{background:var(--accent);color:#fff;border-color:var(--accent)}.dml-spine b,.dml-spine small{display:block}.dml-spine b{font:600 20px/1.25 Georgia,"STSong",serif}.dml-spine small{margin-top:10px;color:var(--muted);font-size:12px;line-height:1.5}.dml-spine>i{text-align:center;font-style:normal;color:#686f74;font-size:10px}.dml-spine>i::after{content:"→";display:block;color:var(--accent);font-size:25px}.dml-spine button:nth-of-type(1){grid-column:1;grid-row:1}.dml-spine>i:nth-of-type(1){grid-column:2;grid-row:1}.dml-spine button:nth-of-type(2){grid-column:3;grid-row:1}.dml-spine>i:nth-of-type(2){grid-column:4;grid-row:1}.dml-spine button:nth-of-type(3){grid-column:5;grid-row:1}.dml-spine>i:nth-of-type(3){grid-column:5;grid-row:2}.dml-spine>i:nth-of-type(3)::after{content:"↓"}.dml-spine button:nth-of-type(4){grid-column:5;grid-row:3}.dml-spine>i:nth-of-type(4){grid-column:4;grid-row:3}.dml-spine>i:nth-of-type(4)::after{content:"←"}.dml-spine button:nth-of-type(5){grid-column:3;grid-row:3}.dml-spine>i:nth-of-type(5){grid-column:2;grid-row:3}.dml-spine>i:nth-of-type(5)::after{content:"←"}.dml-spine button:nth-of-type(6){grid-column:1;grid-row:3}.dml-map-detail{display:grid;grid-template-columns:190px 1fr;gap:20px;margin:34px -34px 0;padding:24px 34px;background:#f4f1eb;border-top:1px solid #ddd7cd;border-left:5px solid var(--accent)}.dml-map-detail b{color:var(--accent);font:600 18px Georgia,"STSong",serif}.dml-map-detail p{margin:0;color:#565d62;line-height:1.75}
.state-lab,.insert-lab,.insert-pipeline,.insert-source-lab,.update-lab,.delete-lab{margin:36px 0;border:1px solid #adb2b6;border-top:5px solid var(--ink)}.state-controls,.insert-code-tabs,.source-tabs,.delete-modes{display:flex;flex-wrap:wrap;background:#f1f2f2;border-bottom:1px solid var(--line)}.state-controls button,.insert-code-tabs button,.source-tabs button,.delete-modes button{flex:1;min-width:150px;border:0;border-right:1px solid #c9cdd1;background:transparent;padding:14px;cursor:pointer;font-weight:700}.state-controls button:hover,.state-controls button.is-active,.insert-code-tabs button:hover,.insert-code-tabs button.is-active,.source-tabs button:hover,.source-tabs button.is-active,.delete-modes button:hover,.delete-modes button.is-active{background:var(--accent);color:#fff}.state-transition{display:grid;grid-template-columns:1fr 70px 1fr;align-items:center;padding:24px}.state-transition>i{text-align:center;font-style:normal;color:var(--accent)}.state-transition header{padding:10px;background:#24272a;color:#fff;font-weight:800}.dml-table{border:1px solid var(--line);overflow:auto}.dml-row{min-width:420px;display:grid;grid-template-columns:.75fr 1.3fr .7fr 1fr}.dml-row>*{padding:9px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);font-size:11px}.dml-row.head{background:#e8eaeb}.dml-row.is-changed{background:var(--accent-soft);border-left:5px solid var(--accent)}.state-finding,.update-summary{padding:18px 22px;background:#f5f5f3;border-left:5px solid var(--warm);color:var(--muted)}.state-finding b,.update-summary b{color:var(--ink)}.state-finding p,.update-summary p{margin:5px 0}
.insert-lab>pre{margin:0;padding:24px;background:#24272a;color:#fff}.column-mapping{padding:28px;overflow:auto}.mapping-row,.mapping-arrows{min-width:620px;display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.mapping-row span{padding:14px;background:#f0f1f1;border-top:4px solid var(--ink);text-align:center;font-weight:700}.mapping-row.values span{border-color:var(--accent);background:var(--accent-soft);font-family:Consolas,monospace}.mapping-arrows i{text-align:center;color:var(--accent);font-style:normal;font-size:24px}.insert-verdict{padding:18px 22px;border-top:1px solid var(--line);color:var(--muted)}.insert-verdict b{color:var(--accent)}
.candidate-records{display:flex;flex-wrap:wrap;background:#f1f2f2;border-bottom:1px solid var(--line)}.candidate-records button{flex:1;min-width:210px;border:0;border-right:1px solid #c9cdd1;background:transparent;padding:13px;cursor:pointer;font-size:12px}.candidate-records button:hover{background:var(--accent);color:#fff}.write-gates{display:grid;grid-template-columns:60px 1fr 25px 1fr 25px 1fr 25px 1fr 25px 100px;align-items:center;gap:5px;padding:30px 20px;overflow:auto}.write-gates>span{display:grid;place-items:center;width:56px;height:56px;border-radius:50%;background:var(--accent);color:#fff;font-size:9px;font-weight:800}.write-gates article,.write-gates>strong{min-width:120px;min-height:115px;padding:14px;background:#f2f3f3;border-top:5px solid #8b9196}.write-gates article b{font:600 15px Georgia,"STSong",serif}.write-gates article p{font-size:10px;color:var(--muted)}.write-gates>i{text-align:center;color:var(--accent);font-style:normal}.write-gates [data-insert-gate].is-pass{border-color:#477b57;background:#eef6f0}.write-gates [data-insert-gate].is-stop{border-color:var(--accent);background:var(--accent-soft)}.write-gates>strong{display:grid;place-items:center;text-align:center}#insertPipelineResult{padding:18px 22px;background:#24272a;color:#d7dade}#insertPipelineResult b{color:#f0c764}#insertPipelineResult p{margin:5px 0}
#insertSourceStage{min-height:320px;display:grid;align-content:center;padding:28px;overflow:auto}.source-flow,.query-insert-flow{display:grid;grid-template-columns:1.2fr 100px 1fr;align-items:center;gap:20px;min-width:660px}.source-flow article,.query-insert-flow article,.mini-result{border:1px solid #aeb3b7}.source-flow article>*,.query-insert-flow article>*,.mini-result>*{display:block;padding:10px;border-bottom:1px solid var(--line)}.source-flow article b,.query-insert-flow article b{background:var(--ink);color:#fff}.source-flow>i,.query-insert-flow>i{text-align:center;color:var(--accent);font-style:normal}.query-insert-flow>div{display:grid;grid-template-columns:1fr 70px 1fr;align-items:center}.query-insert-flow em{font-style:normal;color:var(--accent);font-size:10px;text-align:center}.mini-result{display:grid;grid-template-columns:1fr 1fr}.mini-result>*{display:block}#insertSourceNote{padding:18px 22px;border-top:1px solid var(--line);background:#f5f5f3;color:var(--muted)}
.update-lab{display:grid;grid-template-columns:240px 1fr}.update-editor{padding:20px;background:#24272a;color:#fff}.update-editor label{display:block;margin-bottom:14px;font-weight:700;font-size:12px}.update-editor select{display:block;width:100%;margin-top:6px;padding:9px}.update-editor button{width:100%;margin-top:8px;border:1px solid #7c8287;background:transparent;color:#fff;padding:10px;cursor:pointer}.update-editor button[data-apply-update]{background:var(--accent);border-color:var(--accent)}.update-table{padding:22px;overflow:auto}.update-summary{grid-column:1/-1}.status-lab{display:grid;grid-template-columns:1.3fr .7fr;margin:36px 0;border:1px solid #adb2b6}.status-track{display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap;padding:28px}.status-track button{width:92px;height:92px;border:2px solid #7c8388;border-radius:50%;background:#fff;cursor:pointer;font-weight:700}.status-track button.is-active{background:var(--accent);border-color:var(--accent);color:#fff}.status-track i{font-style:normal;color:var(--muted);font-size:10px}.status-track i::after{content:" →";color:var(--accent)}.status-control{padding:24px;background:#f3f4f4}.status-control label{font-weight:700}.status-control select{display:block;width:100%;margin:7px 0;padding:9px}.status-control button{border:0;background:var(--accent);color:#fff;padding:10px 13px;cursor:pointer}.status-control pre{padding:14px;background:#24272a;color:#fff;white-space:pre-wrap}#statusResult{padding:14px;background:#fff;border-left:5px solid var(--warm);color:var(--muted)}
.delete-stage{display:grid;grid-template-columns:1.1fr .9fr}.delete-stage>div{padding:24px}.delete-stage aside{padding:24px;background:#24272a;color:#fff}.delete-stage aside pre{white-space:pre-wrap;color:#f0c764}.delete-stage aside p{color:#d7dade}.delete-stage aside b{display:block;margin-top:14px;color:#f0c764}.delete-table{border:1px solid var(--line)}.delete-table>div{display:grid;grid-template-columns:repeat(3,1fr)}.delete-table span,.delete-table b{padding:10px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.delete-table>div:first-child{background:#e8eaeb}.delete-table .is-target{background:var(--accent-soft);border-left:5px solid var(--accent);text-decoration:line-through}.delete-actions{display:flex;gap:8px;padding:14px 22px;border-top:1px solid var(--line)}.delete-actions button{border:1px solid #aeb3b7;background:#fff;padding:9px 12px;cursor:pointer}.delete-actions button[data-confirm-delete]{background:var(--accent);color:#fff;border-color:var(--accent)}
.safe-console{display:grid;grid-template-columns:280px 1fr;margin:36px 0;border:1px solid #adb2b6}.safe-steps{padding:12px;background:#f1f2f2}.safe-steps button{display:block;width:100%;border:0;border-bottom:1px solid #cfd2d4;background:transparent;padding:14px;text-align:left;cursor:pointer;font-weight:700}.safe-steps button:hover{background:#fff}.safe-steps button.is-done{background:#eef6f0;color:#365d41;border-left:5px solid #477b57}.safe-steps button:last-child{margin-top:18px;color:var(--accent)}.safe-screen{min-width:0;background:#24272a;color:#fff}.safe-screen header{display:flex;justify-content:space-between;padding:14px 20px;border-bottom:1px solid #555}.safe-screen header span{color:#f0c764}.safe-screen pre{min-height:250px;margin:0;padding:25px;overflow:auto}.safe-screen>div{padding:18px 22px;border-top:1px solid #555;color:#d7dade}
.maintenance-mission{margin:36px 0;border:1px solid #adb2b6}.mission-brief{display:grid;grid-template-columns:150px 1fr 70px;align-items:center;padding:22px;background:#24272a;color:#fff}.mission-brief b{color:#f0c764}.mission-brief p{margin:0}.mission-brief span{text-align:right;color:#cfd3d6}.mission-options{display:grid;grid-template-columns:1fr 1fr 1.4fr 150px;gap:12px;padding:22px}.mission-options label{font-weight:700;font-size:12px}.mission-options select{display:block;width:100%;margin-top:6px;padding:9px;background:#fff;border:1px solid #aeb3b7}.mission-options button{align-self:end;border:0;background:var(--accent);color:#fff;padding:11px;cursor:pointer}#missionResult{padding:18px 22px;border-top:1px solid var(--line);background:#f5f5f3;color:var(--muted)}#missionResult b{color:var(--ink)}.review-dml-map{margin-bottom:40px}
@media(max-width:900px){.update-lab,.status-lab,.safe-console{grid-template-columns:1fr}.write-gates{min-width:900px}.mission-options{grid-template-columns:1fr 1fr}.state-transition{grid-template-columns:1fr}.state-transition>i{padding:12px}.delete-stage{grid-template-columns:1fr}}
@media(max-width:760px){.dml-map{padding:28px 20px 0}.dml-spine{grid-template-columns:1fr;grid-template-rows:none}.dml-spine button,.dml-spine button:nth-of-type(n){grid-column:1;grid-row:auto;min-height:110px}.dml-spine>i,.dml-spine>i:nth-of-type(n){grid-column:1;grid-row:auto;padding:10px}.dml-spine>i:nth-of-type(n)::after{content:"↓"}.dml-map-detail{margin:28px -20px 0;padding:22px 20px;grid-template-columns:1fr}.mission-brief,.mission-options{grid-template-columns:1fr}.mission-brief span{text-align:left}.status-track i{width:100%;text-align:center}.status-track i::after{content:" ↓"}.delete-actions{flex-wrap:wrap}}

/* Week 6 · single-table query reasoning */
.query-map{margin:36px 0;padding:34px 34px 0;background:linear-gradient(180deg,#fbfbfa 0,#fff 72%);border:1px solid #d5d8da;border-top:5px solid var(--ink)}.query-spine{counter-reset:query-step;display:grid;grid-template-columns:minmax(0,1fr) 72px minmax(0,1fr) 72px minmax(0,1fr);grid-template-rows:auto 62px auto;align-items:center}.query-spine button{counter-increment:query-step;position:relative;min-height:132px;padding:27px 22px 20px;border:1px solid #d2d5d7;border-top:3px solid #72787d;background:#fff;box-shadow:0 12px 28px rgba(28,32,35,.055);text-align:left;cursor:pointer;transition:.18s ease}.query-spine button::before{content:"0" counter(query-step);position:absolute;top:-15px;left:20px;display:grid;place-items:center;width:34px;height:28px;background:#fff;border:1px solid #aeb3b7;color:var(--accent);font:800 11px Arial,sans-serif}.query-spine button:hover,.query-spine button.is-active{transform:translateY(-3px);border-top-color:var(--accent);box-shadow:0 17px 34px rgba(28,32,35,.1)}.query-spine button.is-active::before{background:var(--accent);color:#fff;border-color:var(--accent)}.query-spine b,.query-spine small{display:block}.query-spine b{font:600 20px/1.25 Georgia,"STSong",serif}.query-spine small{margin-top:10px;color:var(--muted);font-size:12px;line-height:1.5}.query-spine>i{text-align:center;font-style:normal;color:#686f74;font-size:10px}.query-spine>i::after{content:"→";display:block;color:var(--accent);font-size:25px}.query-spine button:nth-of-type(1){grid-column:1;grid-row:1}.query-spine>i:nth-of-type(1){grid-column:2;grid-row:1}.query-spine button:nth-of-type(2){grid-column:3;grid-row:1}.query-spine>i:nth-of-type(2){grid-column:4;grid-row:1}.query-spine button:nth-of-type(3){grid-column:5;grid-row:1}.query-spine>i:nth-of-type(3){grid-column:5;grid-row:2}.query-spine>i:nth-of-type(3)::after{content:"↓"}.query-spine button:nth-of-type(4){grid-column:5;grid-row:3}.query-spine>i:nth-of-type(4){grid-column:4;grid-row:3}.query-spine>i:nth-of-type(4)::after{content:"←"}.query-spine button:nth-of-type(5){grid-column:3;grid-row:3}.query-spine>i:nth-of-type(5){grid-column:2;grid-row:3}.query-spine>i:nth-of-type(5)::after{content:"←"}.query-spine button:nth-of-type(6){grid-column:1;grid-row:3}.query-map-detail{display:grid;grid-template-columns:190px 1fr;gap:20px;margin:34px -34px 0;padding:24px 34px;background:#f4f1eb;border-top:1px solid #ddd7cd;border-left:5px solid var(--accent)}.query-map-detail b{color:var(--accent);font:600 18px Georgia,"STSong",serif}.query-map-detail p{margin:0;color:#565d62;line-height:1.75}
.query-order-lab,.query-lens,.predicate-lab,.logic-lab,.like-lab,.null-lab,.sort-lab,.query-builder,.query-mission{margin:36px 0;border:1px solid #adb2b6;border-top:5px solid var(--ink)}.order-switch,.predicate-tabs,.logic-switch,.sort-steps{display:flex;flex-wrap:wrap;background:#f1f2f2;border-bottom:1px solid var(--line)}.order-switch button,.predicate-tabs button,.logic-switch button,.sort-steps button{flex:1;min-width:150px;border:0;border-right:1px solid #c9cdd1;background:transparent;padding:14px;cursor:pointer;font-weight:700}.order-switch button:hover,.order-switch button.is-active,.predicate-tabs button:hover,.predicate-tabs button.is-active,.logic-switch button:hover,.logic-switch button.is-active,.sort-steps button:hover,.sort-steps button.is-active{background:var(--accent);color:#fff}.query-order-track{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;padding:18px}.query-order-track span{padding:11px;background:#f0f1f1;border-top:3px solid #888;text-align:center;font-size:11px}.query-order-track span.is-active{border-color:var(--accent);background:var(--accent-soft);font-weight:800}.query-order-track span.is-done{border-color:#477b57}.query-specimen{display:grid;grid-template-columns:.7fr 1.3fr;min-height:390px}.query-specimen pre{margin:0;padding:24px;background:#24272a;color:#fff;line-height:1.9}.query-specimen>div{padding:22px;overflow:auto}.query-specimen>div>b{color:var(--accent)}.query-specimen>div>p{color:var(--muted)}.order-nav{display:flex;justify-content:space-between;padding:13px 20px;border-top:1px solid var(--line)}.order-nav button{border:1px solid #aeb3b7;background:#fff;padding:8px 12px;cursor:pointer}
.q-table{border:1px solid var(--line);overflow:auto;background:#fff}.q-row{min-width:560px;display:grid;grid-template-columns:repeat(var(--qcols),minmax(80px,1fr))}.q-row>*{padding:9px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);font-size:10px}.q-row.head{background:#24272a;color:#fff}.q-row em{font-style:normal;color:var(--accent);font-weight:800}.q-row.dimmed{opacity:.28}.q-row.passes{background:#f8fbf8}.q-row .selected-col{background:var(--accent-soft);font-weight:700}.lens-controls{display:grid;grid-template-columns:1fr 1fr;gap:14px;padding:18px;background:#f1f2f2}.lens-controls label{font-weight:700}.lens-controls select{width:100%;padding:9px;margin-top:5px;background:#fff;border:1px solid #adb2b6}.lens-stage{display:grid;grid-template-columns:1fr 90px 1fr;align-items:center;padding:22px;overflow:auto}.lens-stage>div{min-width:0}.lens-stage header{padding:10px;background:#e8eaeb;font-weight:800}.lens-stage>i{text-align:center;color:var(--accent);font-style:normal}.query-lens>div:last-child{display:flex;justify-content:center;gap:15px;padding:16px;border-top:1px solid var(--line)}.query-lens>div:last-child i{color:var(--accent);font-style:normal}
.predicate-lab>#predicateTable{padding:22px}.predicate-table .predicate-true{background:#eef6f0;border-left:5px solid #477b57}.predicate-table .predicate-false{opacity:.35}.predicate-evals{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:16px}.predicate-evals span{padding:10px;background:#f1f2f2;font-size:10px}.predicate-evals span.true{border-left:4px solid #477b57}.predicate-evals span.false{border-left:4px solid var(--accent)}.predicate-evals b{display:block}.predicate-lab>#predicateExplanation,.sort-lab>#sortFinding{padding:18px 22px;border-top:1px solid var(--line);background:#f5f5f3;color:var(--muted)}.operator-note{display:grid;grid-template-columns:200px 1fr;padding:18px 22px;background:#faf7f0;border-left:5px solid var(--warm)}.operator-note p{margin:0;color:var(--muted)}
.logic-lab>#logicRows{padding:22px}.logic-grid{border:1px solid var(--line)}.logic-grid>div{display:grid;grid-template-columns:1.3fr repeat(4,1fr)}.logic-grid span,.logic-grid b,.logic-grid strong{padding:9px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);font-size:10px}.logic-grid .head{background:#24272a;color:#fff}.logic-grid .passes{background:#eef6f0;border-left:5px solid #477b57}.logic-lab>#logicFormula{padding:18px 22px;background:#f5f5f3;border-top:1px solid var(--line)}.logic-lab>#logicFormula b{color:var(--accent)}.logic-lab>#logicFormula p{margin:5px 0;color:var(--muted)}
.like-lab{display:grid;grid-template-columns:280px 1fr}.like-editor{padding:22px;background:#24272a;color:#fff}.like-editor input{display:block;width:100%;margin:7px 0 14px;padding:10px}.like-editor>div{display:flex;gap:6px;flex-wrap:wrap}.like-editor>div button{border:1px solid #777;background:transparent;color:#fff;padding:7px;cursor:pointer}.like-editor>button{width:100%;margin-top:16px;border:0;background:var(--accent);color:#fff;padding:10px;cursor:pointer}.like-lab>#likeStage{display:grid;grid-template-columns:1fr 1fr;gap:9px;padding:22px}.like-lab>#likeStage article{display:flex;justify-content:space-between;padding:13px;background:#f1f2f2;border-left:4px solid #999}.like-lab>#likeStage article.matches{background:#eef6f0;border-color:#477b57}.like-lab>#likeStage span{font-size:9px;color:var(--muted)}.like-lab>#likeNote{grid-column:1/-1;padding:18px 22px;border-top:1px solid var(--line);color:var(--muted)}.like-lab>#likeNote b{color:var(--ink)}
.null-lab{display:grid;grid-template-columns:230px 1fr}.null-record{padding:24px;background:#24272a;color:#fff}.null-record b,.null-record span{display:block}.null-record span{margin-top:20px}.null-record em{padding:5px 9px;background:var(--accent);font-style:normal}.null-tests{display:grid;grid-template-columns:1fr 1fr}.null-tests button{border:0;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:#f1f2f2;padding:14px;cursor:pointer}.null-tests button:hover,.null-tests button.is-active{background:var(--accent);color:#fff}.null-lab>#nullLogicStage{grid-column:1/-1;padding:24px}.null-equation{display:flex;align-items:center;justify-content:center;gap:18px}.null-equation>*{padding:12px}.null-equation i{font-style:normal;color:var(--muted)}.null-equation strong{background:#f1f2f2}.null-equation .true{background:#477b57;color:#fff}.null-equation .false{background:var(--accent);color:#fff}.null-equation .unknown{background:#8a6415;color:#fff}.null-lab>#nullLogicStage>p{text-align:center;color:var(--muted)}.truth-strip{display:grid;grid-template-columns:repeat(3,1fr);border-top:4px solid var(--ink)}.truth-strip span{padding:15px;border-right:1px solid var(--line);font-size:12px}.truth-strip b{display:block}.truth-strip span:nth-child(3){background:#faf7f0}
.sort-lab>#sortStage{padding:22px;overflow:auto}.query-builder-controls{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;padding:18px;background:#f1f2f2}.query-builder-controls label{font-size:11px;font-weight:700}.query-builder-controls select{display:block;width:100%;margin-top:5px;padding:8px;background:#fff;border:1px solid #adb2b6}.query-builder-stage{display:grid;grid-template-columns:.7fr 1.3fr;min-height:360px}.query-builder-stage pre{margin:0;padding:22px;background:#24272a;color:#fff;white-space:pre-wrap}.query-builder-stage>div{padding:22px;overflow:auto}.query-builder>#qbSummary{padding:18px 22px;border-top:1px solid var(--line);background:#f5f5f3;color:var(--muted)}
.query-mission-head{display:grid;grid-template-columns:120px 1fr;align-items:center;padding:22px;background:#24272a;color:#fff}.query-mission-head span{color:#f0c764;font-weight:800}.query-mission-head h3{margin:0;font:600 20px Georgia,"STSong",serif}.query-mission>#queryTaskOptions{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:22px}.query-mission>#queryTaskOptions button{border:1px solid #adb2b6;background:#fff;padding:14px;text-align:left;cursor:pointer}.query-mission>#queryTaskOptions button:hover{border-color:var(--accent)}.query-mission>#queryTaskOptions button.is-correct{background:#eef6f0;border-color:#477b57}.query-mission>#queryTaskOptions button.is-wrong{background:var(--accent-soft);border-color:var(--accent)}.query-mission>#queryTaskOptions code{font-size:11px;white-space:normal}.query-mission>#queryTaskFeedback{padding:18px 22px;border-top:1px solid var(--line);color:var(--muted)}.query-mission>#queryTaskFeedback b{color:var(--ink)}.review-query-map{margin-bottom:40px}
@media(max-width:900px){.query-specimen,.query-builder-stage,.like-lab{grid-template-columns:1fr}.lens-stage{grid-template-columns:1fr}.lens-stage>i{padding:12px}.query-builder-controls{grid-template-columns:1fr 1fr}.like-lab>#likeNote{grid-column:auto}.predicate-evals{grid-template-columns:1fr 1fr}}
@media(max-width:760px){.query-map{padding:28px 20px 0}.query-spine{grid-template-columns:1fr;grid-template-rows:none}.query-spine button,.query-spine button:nth-of-type(n){grid-column:1;grid-row:auto;min-height:110px}.query-spine>i,.query-spine>i:nth-of-type(n){grid-column:1;grid-row:auto;padding:10px}.query-spine>i:nth-of-type(n)::after{content:"↓"}.query-map-detail{margin:28px -20px 0;padding:22px 20px;grid-template-columns:1fr}.query-order-track,.lens-controls,.query-builder-controls,.query-mission>#queryTaskOptions{grid-template-columns:1fr}.predicate-evals,.like-lab>#likeStage,.truth-strip{grid-template-columns:1fr}.null-lab{grid-template-columns:1fr}.null-lab>#nullLogicStage{grid-column:auto}.operator-note{grid-template-columns:1fr}}
.written-clause{margin-top:18px;padding:28px;background:#f4f5f5;border-left:5px solid var(--accent)}.written-clause strong{display:block;font:600 28px Georgia,serif}.written-clause p{color:var(--muted);line-height:1.75}.written-clause small{display:block;padding-top:14px;border-top:1px solid var(--line);color:#7a6640}
.login-panel .login-note{text-align:center}.login-filing{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:6px 10px;margin-top:18px;padding-top:15px;border-top:1px solid var(--line);color:var(--muted);font-size:11px;font-weight:400;line-height:1.5;text-align:center}.login-filing a{color:inherit;text-decoration:none}.login-filing a:hover{color:var(--ink)}.login-filing a:focus-visible{outline:2px solid currentColor;outline-offset:3px;border-radius:2px}.login-filing__divider{color:#aeb6bd}.login-filing__police{display:inline-flex;align-items:center;gap:5px}.login-filing__police img{display:block;width:16px;height:17px;object-fit:contain;flex:0 0 auto}@media(max-width:520px){.login-filing__divider{display:none}.login-filing__police{flex-basis:100%;justify-content:center}}
