/* PyDataFlow — Python language study page
   Visual identity: lime-green accent (--green2) to differentiate from
   JS (--green) and Go (--blue). Layout follows the same evidence-first
   pattern. */

.py-loading{padding:60px 20px;text-align:center;color:var(--dim);font:11px var(--mono);text-transform:uppercase;letter-spacing:.1em}

.py-page{width:min(1180px,calc(100% - 48px));margin:0 auto;padding:36px 0 80px}
.py-back{display:inline-block;margin-bottom:24px;color:var(--muted);font:10px var(--mono);text-decoration:none;letter-spacing:.1em;text-transform:uppercase}
.py-back:hover{color:var(--green2)}

.py-hero{position:relative;border:1px solid var(--line);background:linear-gradient(160deg,#14241a 0%,#0d1417 60%);padding:32px 36px 30px;margin-bottom:32px;display:grid;grid-template-columns:1fr 240px;gap:32px;align-items:start}
.py-hero-kicker{font:10px var(--mono);color:var(--green2);letter-spacing:.12em;text-transform:uppercase;margin-bottom:14px}
.py-hero h1{font-size:clamp(36px,4.5vw,52px);line-height:1;margin:0 0 14px;letter-spacing:-.04em}
.py-hero-sub{color:var(--muted);font-size:14px;line-height:1.65;max-width:680px;margin:0 0 18px}
.py-hero-chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:20px}
.py-hero-chips span{font:9px var(--mono);letter-spacing:.06em;padding:5px 9px;border:1px solid rgba(183,248,94,.25);color:var(--green2);text-transform:uppercase}
.py-hero-ctas{display:flex;gap:18px;align-items:center}
.py-hero-ctas a{font:10px var(--mono);text-decoration:none;color:var(--muted);letter-spacing:.08em;text-transform:uppercase;padding-bottom:4px;border-bottom:1px solid transparent}
.py-hero-ctas a:hover{color:var(--green2);border-bottom-color:rgba(183,248,94,.4)}
.py-hero-ctas a.primary{color:var(--green2);border-bottom-color:rgba(183,248,94,.4)}
.py-hero-aside{border-left:1px solid var(--line);padding-left:24px;display:flex;flex-direction:column;gap:10px}
.py-fact{display:flex;justify-content:space-between;gap:10px;font:10px var(--mono)}
.py-fact .k{color:var(--dim);text-transform:uppercase;letter-spacing:.06em}
.py-fact .v{color:var(--text);text-align:right;text-transform:uppercase;letter-spacing:.04em}
.py-status-pill{display:inline-block;padding:4px 8px;font:9px var(--mono);letter-spacing:.08em;text-transform:uppercase;background:rgba(183,248,94,.12);color:var(--green2);border:1px solid rgba(183,248,94,.3);align-self:flex-start}

.py-shell{display:grid;grid-template-columns:210px 1fr;gap:32px;align-items:start}
.py-sidebar{position:sticky;top:24px;display:flex;flex-direction:column;gap:18px;max-height:calc(100vh - 48px);overflow-y:auto;padding-right:8px}
.py-sidebar h4{font:9px var(--mono);color:var(--dim);letter-spacing:.12em;text-transform:uppercase;margin:0 0 6px;padding-bottom:4px;border-bottom:1px solid var(--line)}
.py-sidebar ol{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:2px}
.py-sidebar li a{display:block;padding:6px 8px;color:var(--muted);font:11px var(--display);letter-spacing:-.01em;text-decoration:none;border-left:2px solid transparent}
.py-sidebar li a:hover{color:var(--green2);border-left-color:rgba(183,248,94,.4)}
.py-sidebar li a.active{color:var(--green2);border-left-color:var(--green2);background:rgba(183,248,94,.05)}

.py-content{min-width:0;display:flex;flex-direction:column;gap:36px;max-width:100%;overflow:hidden}
.py-section{padding-top:32px;border-top:1px solid var(--line);scroll-margin-top:24px;min-width:0;max-width:100%;overflow:hidden}
.py-section:first-child{border-top:0;padding-top:0}
.py-section-eyebrow{font:9px var(--mono);color:var(--green2);letter-spacing:.12em;text-transform:uppercase;margin-bottom:6px}
.py-section h2{font-size:clamp(24px,2.6vw,34px);line-height:1.05;margin:0 0 14px;letter-spacing:-.03em}
.py-section p{color:var(--muted);font-size:13.5px;line-height:1.7;margin:0 0 12px;max-width:760px}
.py-section p strong{color:var(--text);font-weight:500}
.py-section code{font:11px var(--mono);background:rgba(255,255,255,.04);padding:1px 5px;border-radius:2px;color:var(--green2)}
.py-section pre{font:11.5px/1.7 var(--mono);overflow-x:auto;max-width:100%;width:100%;min-width:0;white-space:pre;box-sizing:border-box}

.py-surface{width:100%;border-collapse:collapse;margin-top:14px}
.py-surface th,.py-surface td{text-align:left;padding:8px 10px;font:11px var(--mono);border-bottom:1px solid var(--line)}
.py-surface th{color:var(--dim);text-transform:uppercase;letter-spacing:.06em;font-size:9px;font-weight:400}
.py-surface td{color:var(--text)}
.py-surface td.applied{color:var(--green2);text-align:center;width:80px}
.py-surface td.applied.not{color:var(--dim)}
.py-surface td a{color:var(--green2);text-decoration:none}

.py-practices{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:14px}
.py-practice{border:1px solid var(--line);padding:18px 20px;background:rgba(13,20,23,.55)}
.py-practice h4{font:13px var(--display);font-weight:500;letter-spacing:-.01em;margin:0 0 4px;color:var(--text)}
.py-practice .pid{font:9px var(--mono);color:var(--dim);letter-spacing:.1em;margin-bottom:10px}
.py-practice .label{font:9.5px var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--green2);margin-top:10px;margin-bottom:2px}
.py-practice p{font-size:12px;line-height:1.55;margin:0 0 6px}
.py-practice a{font:10px var(--mono);color:var(--green2);text-decoration:none}
.py-practice a:hover{text-decoration:underline}
.py-practice .result{display:inline-block;padding:2px 7px;font:9px var(--mono);letter-spacing:.1em;background:rgba(183,248,94,.12);color:var(--green2);border:1px solid rgba(183,248,94,.3);margin-top:6px}

.py-adr{border-left:2px solid rgba(183,248,94,.3);padding:14px 18px;margin:14px 0;background:rgba(13,20,23,.4)}
.py-adr h4{font:13px var(--display);font-weight:500;margin:0 0 6px;color:var(--text)}
.py-adr .adrid{font:9px var(--mono);color:var(--dim);letter-spacing:.1em;margin-bottom:8px}
.py-adr .label{font:9px var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--green2);margin-top:6px;margin-bottom:1px}
.py-adr p{font-size:12px;line-height:1.55;margin:0 0 4px}

.py-flow{font:11.5px/1.7 var(--mono);background:rgba(13,20,23,.7);border:1px solid var(--line);padding:18px 22px;margin:14px 0;color:var(--green2);overflow-x:auto;white-space:pre;width:100%;max-width:100%;min-width:0;box-sizing:border-box}

.py-results{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:18px}
.py-result-block{border:1px solid var(--line);padding:14px 16px;background:rgba(13,20,23,.45)}
.py-result-block h5{font:9px var(--mono);color:var(--dim);letter-spacing:.1em;text-transform:uppercase;margin:0 0 10px;padding-bottom:6px;border-bottom:1px solid var(--line)}
.py-result-row{display:flex;justify-content:space-between;gap:8px;padding:4px 0;font:10.5px var(--mono)}
.py-result-row .k{color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.py-result-row .v{color:var(--text);font-weight:500}
.py-result-row .v.tag-pass{color:var(--green2)}
.py-result-row .v.tag-clean{color:var(--green2)}

.py-evidence-table{width:100%;border-collapse:collapse;margin-top:14px}
.py-evidence-table th,.py-evidence-table td{padding:9px 10px;font:11px var(--mono);text-align:left;border-bottom:1px solid var(--line)}
.py-evidence-table th{color:var(--dim);text-transform:uppercase;letter-spacing:.06em;font-size:9px;font-weight:400;background:rgba(13,20,23,.45)}
.py-evidence-table td.id{color:var(--green2);letter-spacing:.04em}
.py-evidence-table td.claim{color:var(--text);font-family:var(--body);font-size:12.5px;line-height:1.5;max-width:480px}
.py-evidence-table td.status-v{color:var(--green2);text-align:center;width:80px}
.py-evidence-table td.links a{color:var(--green2);text-decoration:none;margin-right:8px;font-size:10px}
.py-evidence-table td.links a:hover{text-decoration:underline}

.py-capture{margin-top:14px;border:1px solid var(--line);background:rgba(13,20,23,.55);padding:12px;display:flex;flex-direction:column;gap:8px}
.py-capture img{width:100%;height:auto;display:block;background:#0d1417}
.py-capture-cap{font:9.5px var(--mono);color:var(--dim);text-transform:uppercase;letter-spacing:.08em;display:flex;justify-content:space-between;align-items:center}
.py-capture-cap a{color:var(--green2);text-decoration:none}

.py-tradeoff{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:14px}
.py-tradeoff-block{border:1px solid var(--line);padding:16px 18px;background:rgba(13,20,23,.45)}
.py-tradeoff-block h5{font:9.5px var(--mono);text-transform:uppercase;letter-spacing:.1em;margin:0 0 10px;padding-bottom:6px;border-bottom:1px solid var(--line)}
.py-tradeoff-block.selected h5{color:var(--green2)}
.py-tradeoff-block.alternative h5{color:var(--muted)}
.py-tradeoff-block ul{list-style:none;padding:0;margin:0;display:grid;gap:4px}
.py-tradeoff-block li{font:11.5px var(--mono);color:var(--text);padding-left:14px;position:relative;line-height:1.55}
.py-tradeoff-block.selected li:before{content:'+';position:absolute;left:0;color:var(--green2)}
.py-tradeoff-block.alternative li:before{content:'·';position:absolute;left:0;color:var(--muted)}

.py-basis{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;margin-top:14px}
.py-basis a{display:block;padding:14px 16px;border:1px solid var(--line);background:rgba(13,20,23,.4);text-decoration:none;transition:background .2s}
.py-basis a:hover{background:rgba(183,248,94,.06);border-color:rgba(183,248,94,.3)}
.py-basis .b-kicker{font:9px var(--mono);color:var(--dim);letter-spacing:.1em;text-transform:uppercase;margin-bottom:4px}
.py-basis .b-title{font:14px var(--display);color:var(--green2);margin-bottom:3px;letter-spacing:-.01em}
.py-basis .b-desc{font:11px var(--mono);color:var(--muted);line-height:1.5}

.py-toolchain{display:grid;grid-template-columns:1fr;gap:8px;margin-top:14px}
.py-tool{font:11.5px var(--mono);padding:8px 14px;border:1px solid var(--line);background:rgba(13,20,23,.45);color:var(--green2)}
.py-tool .ok{color:var(--green2);font-weight:600;margin-left:8px}
.py-tool .desc{color:var(--muted);margin-left:12px}

@media(max-width:1100px){
  .py-shell{grid-template-columns:1fr}
  .py-sidebar{position:relative;top:0;max-height:none;flex-direction:row;overflow-x:auto;flex-wrap:wrap;gap:24px}
  .py-sidebar ol{flex-direction:row;flex-wrap:wrap}
  .py-sidebar li a{padding:4px 8px;border-left:0;border-bottom:2px solid transparent;white-space:nowrap}
  .py-sidebar li a.active{border-bottom-color:var(--green2);border-left:0}
  .py-hero{grid-template-columns:1fr;gap:18px}
  .py-hero-aside{border-left:0;border-top:1px solid var(--line);padding-left:0;padding-top:18px}
  .py-practices,.py-tradeoff,.py-basis{grid-template-columns:1fr}
  .py-results{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:640px){
  .py-page{width:calc(100% - 32px);padding:24px 0 60px}
  .py-hero{padding:20px}
  .py-results{grid-template-columns:1fr}
  .py-evidence-table{font-size:10px}
  .py-evidence-table th,.py-evidence-table td{padding:7px 6px;word-break:break-word}
  .py-evidence-table td.claim{max-width:none;font-size:11.5px}
  .py-evidence-table td.links a{font-size:9px;margin-right:4px}
  .py-section pre{font-size:10.5px;line-height:1.55;white-space:pre-wrap;word-break:break-all}
  .py-flow{font-size:10.5px;line-height:1.55;white-space:pre-wrap;word-break:break-all;padding:14px 16px}
  .py-section{padding-right:2px}
  .py-surface{display:block;width:100%;max-width:100%;table-layout:fixed}
  .py-surface th,.py-surface td{word-break:break-word;overflow-wrap:break-word;padding:6px 6px}
  .py-hero h1{font-size:32px}
  .py-surface td.applied{width:60px}
  .py-content{min-width:0;width:100%}
  .py-practices{gap:10px}
  .py-practice{padding:14px 16px}
  .py-result-block{padding:12px 14px}
  .py-section p{font-size:13px}
  .py-toolchain{font-size:11px}
  .py-tool{padding:6px 10px}
}
