@import url('../data-systems/style.css');
.lesson.section{display:block}
.form-workbench{display:grid;grid-template-columns:340px 1fr;gap:18px;margin-top:24px}.form-workbench form,.form-result{padding:22px;background:var(--card);border:1px solid var(--line)}.form-workbench label{display:block;margin-bottom:14px;font-weight:800}.form-workbench select,.form-workbench input{display:block;width:100%;margin-top:6px;padding:11px;border:1px solid var(--line);background:#fff}.form-workbench button{width:100%;padding:12px;border:0;background:var(--teal);color:#fff;font-weight:800;cursor:pointer}.form-result table{min-width:0}.form-result th,.form-result td{padding:12px;border-bottom:1px solid var(--line)}.form-process{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin:16px 0}.form-process span{padding:14px;background:#e3efeb;font-size:13px}.form-process b{display:block;color:var(--teal)}.form-code{display:grid;grid-template-columns:1fr 1fr;gap:20px}.form-code pre{min-height:265px}.form-code p{color:var(--muted)}@media(max-width:850px){.form-workbench,.form-code,.form-process{grid-template-columns:1fr}}
.selenium-only{border-left:6px solid var(--selenium)}.selenium-flow{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:22px 0;padding:18px;background:#edf0f8}.selenium-flow span{font-weight:800}.selenium-flow b{color:var(--selenium)}.selenium-only-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:22px}.selenium-only-grid pre{margin:0;max-height:none}.selenium-only-grid>div{padding:8px 10px}@media(max-width:850px){.selenium-flow{align-items:flex-start;flex-direction:column}.selenium-flow b{transform:rotate(90deg);align-self:center}.selenium-only-grid{grid-template-columns:1fr}}
.contract-table{display:grid;grid-template-columns:minmax(220px,.72fr) 1.28fr;margin-top:22px;border-top:1px solid var(--line);border-left:1px solid var(--line)}.contract-table>*{padding:14px 16px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.contract-table>b{background:#102b31;color:#fff}.contract-table>strong{background:#e5ebe8}.assumption-grid,.failure-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;margin-top:22px}.assumption-grid article,.failure-grid article{padding:20px;background:var(--card);border:1px solid var(--line)}.assumption-grid code{color:var(--orange);font-weight:800}.assumption-grid h3{margin:10px 0 4px}.failure-grid b{color:var(--teal)}.failure-grid p{margin-bottom:0}.robust-request pre{margin:0;padding:22px;background:#102b31;color:#eaf6f1;overflow:auto;line-height:1.55}@media(max-width:850px){.contract-table,.assumption-grid,.failure-grid{grid-template-columns:1fr}.contract-table>b:nth-of-type(2){display:none}}
.database-panel{margin-top:24px;padding:22px;background:var(--card);border:1px solid var(--line)}.database-head{display:flex;justify-content:space-between;gap:22px;align-items:flex-start}.database-head h3{margin:4px 0}.database-head p:last-child{margin-bottom:0}.database-head .danger{padding:12px 16px;border:1px solid #a23a20;background:#fff;color:#a23a20;font-weight:800;cursor:pointer;white-space:nowrap}.database-head .danger:hover{background:#a23a20;color:#fff}.database-head .danger[disabled]{opacity:.5}.db-status{margin:16px 0;padding:12px 14px;background:#e3efeb}.db-table-wrap{overflow-x:auto}.db-table{width:100%;border-collapse:collapse}.db-table th,.db-table td{padding:11px 12px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}.db-table th{background:#102b31;color:#fff}.db-table td:first-child,.db-table td:nth-child(3){white-space:nowrap}@media(max-width:850px){.database-head{display:block}.database-head .danger{margin-top:12px}.db-table{min-width:720px}}
.form-workbench .selenium-run{margin-top:10px;background:var(--selenium)}.selenium-note{margin:16px 0;padding:15px 18px;background:#edf0f8;border-left:5px solid var(--selenium)}
:root{--xpath:#087d78;--soup:#c96b2c;--selenium:#4559a8}html{scroll-behavior:smooth}.hero-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:24px}.hero-actions a{display:inline-block;padding:12px 17px;background:var(--teal);color:#fff;text-decoration:none;font-weight:800}.hero-actions .ghost{background:transparent;border:1px solid rgba(255,255,255,.38)}.compact{padding-bottom:28px}.tool-map{display:grid;grid-template-columns:1fr auto 1fr auto 1fr;gap:14px;align-items:center}.tool-map article{min-height:190px;padding:22px;background:var(--card);border:1px solid var(--line);border-top:5px solid var(--teal)}.tool-map article:nth-of-type(2){border-top-color:var(--orange)}.tool-map article:nth-of-type(3){border-top-color:var(--selenium)}.tool-map article>span,.lesson-no{font:800 12px ui-monospace,monospace;color:var(--muted)}.tool-map i{font-style:normal;font-size:28px;color:var(--orange)}.rule,.callout{margin-top:18px;padding:17px 20px;background:#e3efeb;border-left:5px solid var(--teal)}.contract{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:24px 0}.contract div{padding:18px;background:var(--card);border:1px solid var(--line)}.contract small,.contract strong{display:block}.contract small{color:var(--teal);font:700 12px ui-monospace,monospace}.pipeline{display:flex;align-items:center;justify-content:space-between;gap:9px;padding:18px;background:#102b31;color:#fff}.pipeline b{color:#ef8a48}.lesson{border-top:1px solid var(--line)}.lesson>header{display:flex;gap:18px;align-items:flex-start}.lesson-no{font-size:44px;line-height:1}.accent-xpath{border-left:6px solid var(--xpath)}.accent-soup{border-left:6px solid var(--soup)}.accent-selenium{border-left:6px solid var(--selenium)}.explain-grid,.code-to-result,.dynamic-demo,.sandbox{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:22px}.lesson pre,.code-results pre{margin:0;padding:22px;background:#102b31;color:#eaf6f1;overflow:auto;line-height:1.55}.lesson table,.dynamic-demo table{width:100%;border-collapse:collapse}.lesson th,.lesson td,.dynamic-demo td{padding:12px;border:1px solid var(--line);text-align:left}.hint{padding:15px;background:#fff0e5;border-left:4px solid var(--orange)}.code-to-result>b{display:none}.result-card{display:flex;flex-direction:column;gap:14px;justify-content:center;padding:26px;background:var(--card);border:1px solid var(--line)}.result-card small{color:var(--teal);font-weight:800}.result-card strong{font-size:26px}.sandbox{align-items:stretch}.sample-dom{padding:24px;background:#fff;border:1px solid var(--line)}.sample-dom .matched{outline:4px solid #ef8a48;background:#fff2e8}.sample-dom table{margin-top:20px;border-collapse:collapse}.sample-dom td{padding:10px;border:1px solid var(--line)}.selector-panel{display:grid;grid-template-columns:1fr auto;gap:10px;padding:20px;background:var(--card);border:1px solid var(--line)}.selector-panel label{font-weight:800}.selector-panel input{display:block;width:100%;margin-top:7px;padding:11px;border:1px solid var(--line);font:14px ui-monospace,monospace}.selector-panel button,.dynamic-demo button,.batch-actions button,.live-box button{align-self:end;padding:12px 16px;border:0;background:var(--teal);color:#fff;font-weight:800;cursor:pointer}.selector-result{grid-column:1/-1;padding:16px;background:#102b31;color:#fff;min-height:70px}.steps{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;padding:0;list-style:none}.steps li{padding:18px;background:var(--card);border:1px solid var(--line)}.steps b,.steps span{display:block}.steps b{color:var(--teal)}.steps span{margin-top:8px;font-size:13px}.warn{background:#fff0e5;border-color:var(--orange)}.dynamic-demo{padding:22px;background:#edf0f8;border:1px solid #cad1eb}.dynamic-demo .secondary{background:transparent;color:var(--ink);border:1px solid var(--line)}.check-list{padding-left:22px;line-height:1.8}.comparison{display:grid;grid-template-columns:160px repeat(3,1fr);border-top:1px solid var(--line);border-left:1px solid var(--line)}.comparison>*{padding:14px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.comparison>b{color:var(--teal);background:var(--card)}.comparison>strong{background:#e5ebe8}.decision{margin-top:20px;padding:22px;background:#102b31;color:#fff}.decision p{margin:8px 0}.decision b{color:#ef8a48}.code-results{display:grid;grid-template-columns:1.1fr auto .9fr;gap:14px;align-items:stretch}.code-results>i{align-self:center;color:var(--orange);font-size:28px;font-style:normal}.live-box{padding:20px;background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow)}.live-box button[disabled],.batch-actions button[disabled]{opacity:.55}.live-result dl{margin:0}.live-result dl div{padding:8px 0;border-bottom:1px solid var(--line)}.live-result dt{color:var(--muted);font-size:11px}.live-result dd{margin:2px 0;font-weight:700;overflow-wrap:anywhere}.pass,.ok{color:var(--teal);font-weight:800}.fail,.bad{color:#a23a20;font-weight:800}.observe-grid,.exercise-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.observe-grid article,.exercise-grid article{padding:22px;background:var(--card);border:1px solid var(--line)}.exercise-grid b{color:var(--teal)}.horizontal{display:grid;grid-template-columns:repeat(2,1fr);gap:6px 30px}.ethics{padding:24px;background:#f2e5d8;border-left:5px solid var(--orange)}.source-link{color:var(--teal);font-weight:700}.url-grid{display:grid;gap:8px;margin-top:24px}.url-row{display:grid;grid-template-columns:44px 1fr auto;gap:8px;align-items:center}.url-row b{color:var(--teal);font:800 12px ui-monospace,monospace}.url-row input{width:100%;padding:10px;border:1px solid var(--line);background:#fff}.url-row button{padding:10px 14px;border:1px solid var(--line);background:var(--card);cursor:pointer}.batch-actions{display:flex;gap:10px;margin:18px 0}.batch-results{display:grid;gap:8px}.batch-result{display:grid;grid-template-columns:44px 70px 1fr 1fr 82px;gap:10px;padding:12px;background:var(--card);border:1px solid var(--line);font-size:12px}.batch-result span{overflow-wrap:anywhere}@media(max-width:850px){.tool-map,.contract,.steps,.observe-grid,.exercise-grid,.explain-grid,.code-to-result,.dynamic-demo,.sandbox,.code-results{grid-template-columns:1fr}.tool-map i,.code-results>i{transform:rotate(90deg);justify-self:center}.pipeline{align-items:flex-start;flex-wrap:wrap}.comparison{grid-template-columns:105px repeat(3,minmax(135px,1fr));overflow-x:auto}.selector-panel{grid-template-columns:1fr}.selector-panel button,.selector-result{grid-column:1}.horizontal{grid-template-columns:1fr}.url-row{grid-template-columns:36px 1fr}.url-row button{grid-column:2}.batch-result{grid-template-columns:36px 1fr}.batch-result span{grid-column:2}}
