:root{--ink:#123e38;--muted:#536c66;--cream:#f4f3e9;--paper:#fffefa;--line:#d9e2d7;--lime:#d1f267;--teal:#0b3f37;--red:#9c322a;--radius:22px}*{box-sizing:border-box}body{margin:0;background:var(--cream);color:var(--ink);font-family:system-ui,-apple-system,"Segoe UI",sans-serif;line-height:1.55}.workshop{max-width:1500px;padding:24px}h1,h2,h3,p{margin-top:0}h1{font-size:clamp(34px,4.8vw,65px);line-height:1.06;letter-spacing:-.045em;font-weight:800;margin:16px 0 20px}h1 span{color:#d7edbd}h2{font-size:clamp(24px,2.6vw,34px);font-weight:750;letter-spacing:-.035em}h3{font-size:20px;font-weight:720}.eyebrow{font-size:11px;font-weight:750;letter-spacing:.14em}.hero{padding:36px;border-radius:var(--radius);background:radial-gradient(ellipse at 90% 20%,#1e6052,transparent 50%),var(--teal);color:#fffef2;overflow:hidden}.hero-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:32px;align-items:center}.hero p{max-width:620px;color:#d4e5d6;font-size:17px}.contract{border:1px solid #558275;border-radius:18px;padding:28px 22px;display:flex;gap:10px;flex-wrap:wrap;align-items:center;justify-content:center;background:#123f3677}.contract span,.contract strong{padding:10px;border:1px solid #80a190;border-radius:10px;font-size:14px}.contract strong{background:var(--lime);border-color:var(--lime);color:var(--ink)}.contract small{flex-basis:100%;text-align:center;margin-top:14px;color:#c4ddce}.hero-footer{display:flex;flex-wrap:wrap;gap:10px 24px;border-top:1px solid #4d7767;padding-top:16px;margin-top:18px;color:#d4e5d6;font-size:13px}.hero-footer span:first-child{color:var(--lime)}.intro-note{padding:18px 4px;color:var(--muted);font-size:14px}.intro-note strong{color:var(--ink)}.section-heading,.pane-heading{display:flex;gap:12px;align-items:center}.section-heading h2,.pane-heading h3{margin:0}.section-heading p{margin:3px 0 0;color:var(--muted);font-size:14px}.step{width:34px;height:34px;flex:0 0 34px;display:grid;place-items:center;border:1px solid #a6b9a7;border-radius:50%;font-size:12px;font-weight:700}.scenario-section{margin:20px 0 26px}.scenario-nav{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:16px}.scenario-button{background:#e9eddf;border:1px solid #d3ddcc;color:var(--ink);min-height:72px;border-radius:12px;text-align:left;padding:12px 14px;transition:background .16s,transform .16s}.scenario-button strong{display:block;font-size:14px;line-height:1.35}.scenario-button small{font-size:10px;letter-spacing:.05em;color:var(--muted)}.scenario-button[aria-pressed=true]{background:var(--teal);color:#fffef4;border-color:var(--teal)}.scenario-button[aria-pressed=true] small{color:var(--lime)}.scenario-button:hover{transform:translateY(-2px)}button,a,input,textarea,select{touch-action:manipulation}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,[tabindex]:focus-visible{outline:3px solid #207e61;outline-offset:3px}.lab{border:1px solid var(--line);background:var(--paper);border-radius:var(--radius);overflow:hidden}.lab-heading{padding:26px;display:flex;align-items:center;justify-content:space-between;gap:24px;border-bottom:1px solid var(--line)}.lab-heading h2{font-size:28px;margin:8px 0}.lab-heading p{margin:0;max-width:730px;color:var(--muted)}.sample-buttons{display:flex;gap:8px;flex:0 0 215px;flex-direction:column}.btn{border-radius:10px;min-height:44px;display:inline-flex;align-items:center;justify-content:center;font-weight:650;gap:8px;font-size:13px;white-space:normal}.btn-dark{background:var(--teal);border-color:var(--teal)}.btn-dark:hover{background:#15594b;border-color:#15594b}.btn-outline-dark{color:var(--ink);border-color:#a7b9a8}.btn-outline-dark:hover{background:var(--teal);border-color:var(--teal)}.btn-light{background:var(--lime);color:var(--ink);border-color:var(--lime)}.workspace-grid{display:grid;grid-template-columns:1fr 1.08fr}.input-pane,.result-pane{min-width:0;padding:26px}.input-pane{border-right:1px solid var(--line)}.pane-heading{margin-bottom:20px}.input-mode{display:flex;gap:4px;padding:4px;border-radius:12px;background:#edf0e6;margin-bottom:18px}.mode-button{min-height:44px;flex:1;border:0;border-radius:9px;background:transparent;color:var(--muted);font-size:13px;font-weight:650}.mode-button.active{background:white;color:var(--ink);box-shadow:0 1px 4px #163b3320}.field{margin-bottom:14px}.field label,#json-editor>label{display:block;font-size:13px;font-weight:650;margin-bottom:6px}.form-control,.form-select{font-size:16px;min-height:46px;border-color:#aebfae;border-radius:10px;color:var(--ink);background:white}.form-control:focus,.form-select:focus{border-color:#207e61;box-shadow:0 0 0 3px #207e6120}.field-help{font-size:12px;color:var(--muted);margin:6px 0 0}.field .check-label{display:flex;gap:12px;align-items:center;min-height:48px;font-size:14px;cursor:pointer}.check-label input{width:22px;height:22px;flex:0 0 22px;accent-color:var(--teal)}.field-error{color:var(--red);font-size:12px;margin:5px 0 0}.form-control[aria-invalid=true]{border-color:#b54c42}.code-input{font:14px/1.6 ui-monospace,SFMono-Regular,Consolas,monospace;resize:vertical;min-height:260px;tab-size:2}.run-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:18px}.run-actions .btn-dark{flex:1}.lesson{background:#f0f2e5;border-left:3px solid #a2bf66;border-radius:0 8px 8px 0;padding:12px 14px;font-size:13px;color:var(--muted);margin:20px 0 0}.status{padding:13px 14px;border-radius:11px;font-size:14px;font-weight:650;margin-bottom:14px;overflow-wrap:anywhere}.status-idle{background:#edf0e8;color:var(--muted)}.status-ok{background:#e3f3d6;color:#27562f}.status-error{background:#fff0e9;color:#9b382c}.status-busy{background:#e3eeeb}.input-error{background:#fff0e9;color:var(--red);padding:12px;border-radius:10px;font-size:13px;margin-top:12px}.issue-list{display:grid;gap:8px;margin-bottom:15px}.issue{padding:10px 12px;border:1px solid #efd4c8;border-radius:9px;background:#fffaf5}.issue strong{display:block;color:#98382c;font:600 12px/1.4 ui-monospace,Consolas,monospace;overflow-wrap:anywhere}.issue p{font-size:13px;margin:4px 0 0;overflow-wrap:anywhere}.result-tabs{display:grid;grid-template-columns:1fr 1.25fr 1fr;gap:5px;padding-bottom:8px}.result-tabs button{border:1px solid var(--line);border-radius:9px;background:#f1f3eb;min-height:44px;padding:8px;font-size:12px;color:var(--muted);font-weight:650;line-height:1.3}.result-tabs button[aria-selected=true]{background:var(--teal);color:#fffef4;border-color:var(--teal)}.code-panel{border:1px solid #294e43;border-radius:12px;background:#123b33;color:#e3edd9;min-width:0;overflow:hidden}.code-caption{font-size:12px;color:#bdcfc1;padding:12px 14px;border-bottom:1px solid #416052;margin:0}.code-panel pre{font:13px/1.65 ui-monospace,SFMono-Regular,Consolas,monospace;margin:0;padding:16px;overflow:auto;max-height:470px;min-height:140px;white-space:pre;tab-size:2}.output-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.output-actions button{flex:1}.diagnostic{background:#f4eccd;border:1px solid #d7c98c;padding:12px;border-radius:10px;margin-bottom:12px;font-size:13px}.diagnostic code{font-size:13px;color:var(--ink)}.takeaway{background:var(--teal);color:#f6f4e8;border-radius:var(--radius);padding:30px;margin:28px 0;display:grid;grid-template-columns:1.5fr 1fr;gap:30px;align-items:center}.takeaway h2{margin:12px 0 16px}.takeaway p{color:#d1e0d3;font-size:14px}.start-card{min-width:0;border:1px solid #5a7b68;border-radius:14px;padding:20px;background:#16372f}.start-card pre{font:14px/1.85 ui-monospace,Consolas,monospace;margin:14px 0;color:var(--lime)}.start-card p{font-size:12px;margin:0;overflow-wrap:anywhere}.start-card p code{color:#e4edc8}.boundaries{margin:36px 0}.boundaries>h2{font-size:26px;margin-bottom:18px}.boundary-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.boundary-grid article{padding:22px;border:1px solid #d1dbcc;border-radius:16px}.boundary-grid span{font-size:10px;font-weight:700;color:var(--muted);letter-spacing:.08em}.boundary-grid h3{font-size:18px;margin:12px 0}.boundary-grid p{font-size:14px;color:var(--muted);margin:0}footer{display:flex;flex-wrap:wrap;justify-content:space-between;gap:15px;border-top:1px solid #d2dccb;padding:20px 2px;font-size:12px;color:var(--muted)}footer a{color:var(--ink);font-weight:600;min-height:44px;display:inline-flex;align-items:center;text-decoration:underline;text-underline-offset:3px}footer span{display:inline-flex;align-items:center}[hidden]{display:none!important}@media(max-width:900px){.hero-grid{grid-template-columns:1fr}.contract{display:none}.workspace-grid{grid-template-columns:1fr}.input-pane{border-right:0;border-bottom:1px solid var(--line)}.takeaway{grid-template-columns:1fr}.boundary-grid{grid-template-columns:1fr}.scenario-nav{grid-template-columns:repeat(2,minmax(0,1fr))}.lab-heading{align-items:stretch}.sample-buttons{flex-basis:180px}}@media(max-width:560px){.workshop{padding:12px}.hero{padding:24px 20px;border-radius:18px}.hero p{font-size:15px}.hero-footer{font-size:11px;gap:7px 14px}.lab-heading{display:block;padding:20px}.lab-heading h2{font-size:25px}.sample-buttons{flex-direction:row;margin-top:18px}.sample-buttons .btn{flex:1;font-size:12px;padding:9px}.input-pane,.result-pane{padding:20px}.takeaway{padding:22px;gap:20px}.section-heading h2{font-size:24px}.scenario-button{padding:11px;min-height:77px}.scenario-button strong{font-size:13px}.intro-note{font-size:13px}.output-actions button{font-size:12px}.code-input{font-size:16px}.boundaries{margin-top:28px}}@media(max-width:350px){.workshop{padding:8px}.hero{padding:22px 16px}h1{font-size:34px}.input-pane,.result-pane,.lab-heading{padding:16px}.sample-buttons{flex-direction:column}.scenario-nav{gap:7px}.scenario-button strong{font-size:12px}.scenario-button small{font-size:9px}.result-tabs{grid-template-columns:1fr 1fr}.result-tabs button:last-child{grid-column:1/-1}.run-actions,.output-actions{flex-direction:column}.btn{width:100%}.takeaway{padding:20px}.start-card{padding:16px}.section-heading{gap:9px}.section-heading h2{font-size:23px}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important;animation:none!important}.scenario-button:hover{transform:none}}
