/* P-Pix portfolio: interactive C++ labs. Uses the existing site design tokens. */
.lab-hero{padding:45px 0 53px;background:linear-gradient(145deg,#f7f9fc 0%,#f3f7fd 72%,#fff 100%);border-bottom:1px solid #dce4ee}
.lab-breadcrumb{display:flex;align-items:center;flex-wrap:wrap;gap:11px;color:#687991;font-size:.74rem;margin-bottom:43px}
.lab-breadcrumb a{color:#475e7a;text-decoration:none}.lab-breadcrumb a:hover{text-decoration:underline}.lab-breadcrumb span{color:#9faabd}
.lab-hero-grid{display:grid;grid-template-columns:minmax(0,1fr) 295px;gap:72px;align-items:center}
.lab-hero h1{margin:10px 0 20px;font-size:clamp(2.5rem,4vw,4.4rem);line-height:1.08;letter-spacing:-.05em;font-weight:650}
.lab-hero h1 span{color:#2865a5}.lab-hero-lead{max-width:640px;margin:0;color:#5b6c81;font-size:.96rem;line-height:1.84}
.lab-tags{display:flex;gap:8px;flex-wrap:wrap;margin-top:23px}.lab-tags span{padding:7px 10px;border:1px solid #d9e3ed;background:white;color:#596d83;font-size:.68rem;font-weight:600}
.engine-summary{padding:25px;background:white;border:1px solid #d5e1ef;box-shadow:0 17px 32px #163a6710}.engine-summary>strong{display:block;margin-top:21px;font-size:1.22rem;letter-spacing:-.02em}.engine-summary p{margin:8px 0 20px;font-size:.78rem;line-height:1.72;color:#66778b}
.engine-signal{display:flex;align-items:center;gap:9px;color:#66778b;font-size:.69rem}.signal-led{display:block;width:8px;height:8px;flex:0 0 8px;border-radius:50%;background:#e0a24d;box-shadow:0 0 0 4px #fff3d8}.signal-led.is-ready{background:#37a378;box-shadow:0 0 0 4px #e5f5ed}.signal-led.is-error{background:#cf5961;box-shadow:0 0 0 4px #fde8e8}
.engine-mini{display:grid;grid-template-columns:24px 1fr 24px 1fr;gap:7px;align-items:center;border-top:1px solid #e8edf3;padding-top:14px}.engine-mini span{font-size:1.33rem;font-weight:700;color:#235e9d}.engine-mini small{font-size:.65rem;line-height:1.3;color:#8794a3}
.lab-area{display:grid;grid-template-columns:244px minmax(0,1fr);align-items:start;gap:31px;padding-top:45px;padding-bottom:60px}
.lab-sidebar{position:sticky;top:25px}.side-label{font:.66rem/1.4 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.095em;color:#708095;font-weight:700;margin:0 0 13px}
.lab-nav{display:grid;gap:5px}.lab-tab{width:100%;border:1px solid transparent;border-radius:3px;background:transparent;padding:15px 10px;text-align:left;display:grid;grid-template-columns:29px minmax(0,1fr) 13px;gap:8px;align-items:start;color:#294259;cursor:pointer;transition:background .17s,border-color .17s;min-height:69px}
.lab-tab:hover{background:#edf3f9}.lab-tab.is-selected{background:#eef5fd;border-color:#c7dbf0;box-shadow:inset 3px 0 0 #1b63a5}.lab-number{font:.65rem ui-monospace,Consolas,monospace;color:#6b8caf;margin-top:3px}.lab-tab strong,.lab-tab small{display:block}.lab-tab strong{font-size:.76rem;font-weight:700;line-height:1.45}.lab-tab small{font-size:.64rem;color:#76879b;margin-top:4px}.tab-arrow{font-size:.85rem;color:#6390bd}.side-footer{border-top:1px solid #e2e9f1;color:#7c8794;font-size:.72rem;line-height:1.65;padding:17px 8px;margin-top:17px}
.lab-workspace{border:1px solid #d7e0ea;box-shadow:0 13px 37px #20466b0b;background:white;min-width:0;border-radius:3px;overflow:hidden}.lab-toolbar{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px;padding:12px 23px;border-bottom:1px solid #e6ecf3;background:#fcfdff}.lab-toolbar>div{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.live-tag{font:.64rem ui-monospace,Consolas,monospace;color:#536f8e;letter-spacing:.05em}.live-pulse{display:inline-block;width:6px;height:6px;background:#4fb48b;border-radius:50%;margin-right:5px}.runtime-label{font-size:.67rem;color:#8491a2}.toolbar-back{font-size:.7rem;color:#466e97;text-decoration:none}.toolbar-back:hover{text-decoration:underline}
.lab-panel{padding:32px 35px 30px}.lab-panel[hidden],.lab-error[hidden]{display:none}.panel-heading{display:flex;align-items:start;justify-content:space-between;gap:18px;margin-bottom:28px}.topic{color:#417cb3;font:.65rem ui-monospace,Consolas,monospace;letter-spacing:.1em;font-weight:700}.panel-heading h2{margin:10px 0 9px;font-size:clamp(1.5rem,2.4vw,2rem);letter-spacing:-.035em;line-height:1.25}.panel-heading p{color:#64758b;line-height:1.75;font-size:.81rem;max-width:560px;margin:0}.tech-stamp{white-space:nowrap;color:#315f94;background:#eef5fc;border:1px solid #d6e6f7;padding:7px 11px;font:.64rem ui-monospace,Consolas,monospace;font-weight:700}.mock-stamp{color:#83612b;background:#fbf6e9;border-color:#f1e5c3}
.control-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px 13px;padding:22px;border:1px solid #e1e8f1;background:#f9fbfd;align-items:end;margin:0 0 22px}.control-grid label{font-size:.69rem;font-weight:700;color:#63758c;display:grid;gap:7px}.control-grid input,.control-grid select,.scan-search input{width:100%;height:41px;min-width:0;border:1px solid #d0dbe9;background:#fff;color:#233953;border-radius:2px;font:500 .8rem "Segoe UI",Arial,sans-serif;padding:9px 10px;outline-offset:2px}.control-grid input:focus,.control-grid select:focus,.terminal-form input:focus,.scan-search input:focus{outline:2px solid #89b6eb;outline-offset:1px;border-color:#75a1d3}.control-wide{grid-column:1/-1}.control-actions{grid-column:1/-1;display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-top:4px}
.lab-primary,.lab-outline{min-height:41px;padding:9px 13px;border-radius:2px;font-size:.72rem;font-weight:700;cursor:pointer;transition:all .15s;border:1px solid #256bac}.lab-primary{color:#fff;background:#2468ab}.lab-primary:hover{background:#1a5088}.lab-outline{border-color:#d0dce9;background:#fff;color:#2e5d8b}.lab-outline:hover{background:#edf5fd;border-color:#a9c7e6}.lab-primary:disabled,.lab-outline:disabled{opacity:.5;cursor:not-allowed}
.metric-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:11px;margin:22px 0}.metric{border:1px solid #e0e8f0;padding:17px;background:#fff;min-width:0}.metric>span,.metric small{display:block;color:#77879a;font-size:.62rem}.metric>span{letter-spacing:.1em;font-weight:700}.metric strong{display:block;font:700 clamp(.9rem,1.7vw,1.26rem) ui-monospace,Consolas,monospace;color:#21364c;margin:11px 0 6px;overflow-wrap:anywhere}.metric strong.status-valid{color:#287f59}.metric strong.status-invalid{color:#b54b4b}.metric small{line-height:1.4}
.lab-visual,.queue-surface{border:1px solid #dce6f1;background:#f7faff}.visual-top{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:13px 17px;border-bottom:1px solid #e2eaf3;color:#697d93;font:.64rem ui-monospace,Consolas,monospace;letter-spacing:.045em}.hexdump{padding:20px;min-height:125px;margin:0;max-height:230px;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;color:#275580;font:500 .75rem/1.9 ui-monospace,Consolas,monospace;background:transparent}
.flow-diagram{display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap;padding:15px 10px 20px;border-top:1px solid #e4ebf3;color:#93a1af;font-size:.75rem}.flow-diagram div{padding:7px 12px;background:#fff;border:1px solid #d9e5f0;color:#486a8d;font:.62rem ui-monospace,Consolas,monospace}.flow-diagram .flow-check{background:#e8f6ee;border-color:#c9e9d6;color:#297851}.flow-diagram .flow-check.is-invalid{background:#fbe9e9;border-color:#f3cccc;color:#ac4343}.hex-key{display:flex;flex-wrap:wrap;gap:8px;border-top:1px solid #e4eaf1;padding:12px 16px}.hex-key span{font:.65rem ui-monospace,Consolas,monospace;padding:5px 7px;border:1px solid #dde6ee;color:#617b94;background:white}
.under-panel{display:flex;align-items:start;justify-content:space-between;gap:25px;flex-wrap:wrap;margin-top:25px;border-top:1px solid #e8edf4;padding-top:19px}.under-panel p{color:#66778a;font-size:.72rem;line-height:1.76;max-width:540px;margin:0;flex:1 1 350px}.under-panel p strong{color:#384d63}.under-panel a{font-size:.72rem;color:#23689f;text-decoration:none;white-space:nowrap;font-weight:700}.under-panel a:hover{text-decoration:underline}.lab-error{margin:20px;border:1px solid #e6b2b2;padding:15px;background:#fff4f4;color:#9d3b3b;font-size:.78rem}
.command-layout{display:grid;grid-template-columns:minmax(0,1fr) 178px;gap:14px}.terminal{background:#14253a;border:1px solid #263e5c;min-width:0}.terminal-top{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:11px 14px;background:#1d3048;color:#a7bfd5;font:.64rem ui-monospace,Consolas,monospace}.terminal-top button{border:0;background:transparent;color:#b5cada;cursor:pointer;font-size:.67rem}.terminal-dots{color:#81a0c0;font-size:.55rem;letter-spacing:2px}.terminal-screen{height:265px;overflow:auto;padding:16px;color:#bccee1;font:.69rem/1.86 ui-monospace,Consolas,monospace;white-space:pre-wrap;overflow-wrap:anywhere}.terminal-line{display:block}.terminal-line.command{color:#82b7ef}.terminal-line.error{color:#f5a5a5}.terminal-line.success{color:#93d9b3}.terminal-form{display:flex;align-items:center;gap:8px;border-top:1px solid #30445e;padding:9px 11px;color:#80b5de}.terminal-form input{background:transparent;outline:none;border:0;color:white;flex:1;min-width:0;font:.71rem ui-monospace,Consolas,monospace}.terminal-form button{min-height:32px}.command-side{border:1px solid #e3eaf2;background:#fbfcfe;padding:14px}.quick-commands{display:grid;gap:7px}.quick-commands button{border:1px solid #d9e4ef;text-align:left;padding:9px 8px;background:#fff;color:#426281;font:.67rem ui-monospace,Consolas,monospace;cursor:pointer}.quick-commands button:hover{background:#e8f2fd;border-color:#b7d2ec}.reset-command{margin-top:17px;min-height:35px;padding:5px 8px;font-size:.65rem;width:100%}
.queue-track{padding:20px 15px;display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:7px;min-height:112px;align-items:center}.queue-slot{height:55px;border:1px dashed #bfcfe0;background:#edf3fa;display:grid;place-items:center;font:.68rem ui-monospace,Consolas,monospace;color:#91a2b4;min-width:0}.queue-slot.is-full{border-style:solid;border-color:#74a5d6;background:#dceafa;color:#2b5d8c;font-weight:700}.queue-slot.is-critical{border-color:#dba379;background:#fff1e3;color:#9b582a}.queue-slot.is-warning{border-color:#bfc595;background:#f3f4e1;color:#807e36}.queue-legend{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:14px;padding:10px 12px 17px;color:#6e8197;font:.66rem ui-monospace,Consolas,monospace}.queue-arrow{color:#2c76ba;font-size:1rem}.queue-note{font-size:.75rem;color:#486d91;padding:13px 19px;border-top:1px solid #dfebf6;background:white}.queue-note.is-alert{color:#a35341;background:#fff7f3}
.scangui-window{border:1px solid #d9e3ed;box-shadow:0 9px 25px #22476812}.scan-top{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:11px;padding:13px 18px;background:#f4f7fb;border-bottom:1px solid #dfe8f3}.scan-top>div:first-child{display:flex;align-items:center;gap:10px}.scan-top strong{font-size:.9rem}.scan-top small{font-size:.68rem;color:#7f8ea0}.scan-mark{display:grid;place-items:center;width:33px;height:33px;background:#235f9c;color:#fff;font:.72rem ui-monospace,Consolas,monospace;font-weight:700}.scan-modes{display:flex;gap:2px;border:1px solid #d7e1eb;padding:3px;background:#fff}.scan-modes button{border:0;background:transparent;padding:7px 11px;color:#5f7993;font-size:.67rem;cursor:pointer}.scan-modes button.is-active{background:#e8f2fc;color:#245f9c;font-weight:700}.scan-search{display:grid;gap:8px;padding:20px;background:#fff}.scan-search label{font-size:.71rem;font-weight:700;color:#6c7c8d}.scan-search input{height:42px}.scan-status{display:flex;justify-content:space-between;gap:10px;align-items:center;background:#f9fbfd;color:#73849a;padding:10px 20px;border-block:1px solid #e8edf4;font-size:.68rem}.scan-status-dot{width:7px;height:7px;background:#65af92;border-radius:100%;margin-right:-5px}.scan-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:15px;min-height:193px}.scan-item{display:grid;grid-template-columns:40px 1fr;gap:10px;background:#fff;padding:11px;border:1px solid #e0e8f1}.scan-icon{display:grid;place-items:center;background:#e7f0fa;color:#4479a9;font:.68rem ui-monospace,Consolas,monospace}.scan-item strong{font-size:.75rem;display:block;color:#233b53}.scan-item small{font-size:.65rem;display:block;color:#78899a;margin-top:5px}.scan-empty{grid-column:1/-1;text-align:center;padding:30px;color:#7f8da0}
.lab-technical{border-top:1px solid #e7edf3;padding:42px 0 66px;display:grid;grid-template-columns:1fr 1.2fr;gap:55px}.lab-technical h2{font-size:clamp(1.5rem,2.5vw,2.2rem);letter-spacing:-.035em;line-height:1.27;margin:10px 0 0}.lab-technical>p{margin:0;color:#657689;font-size:.84rem;line-height:1.85}.lab-technical a{color:#2a70a9}
@media(max-width:1000px){.lab-hero-grid{gap:30px}.lab-area{grid-template-columns:210px minmax(0,1fr);gap:16px}.lab-panel{padding:26px 20px}.control-grid{padding:16px}.command-layout{grid-template-columns:minmax(0,1fr)}.command-side{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.command-side .side-label{width:100%}.quick-commands{display:flex;flex-wrap:wrap}.reset-command{width:auto;margin:0}}
@media(max-width:760px){.lab-hero{padding:28px 0 37px}.lab-breadcrumb{margin-bottom:21px}.lab-hero-grid{grid-template-columns:1fr;gap:24px}.engine-summary{padding:17px}.engine-summary>strong{margin-top:12px}.lab-area{display:block;padding-top:25px;padding-bottom:33px}.lab-sidebar{position:static;margin-bottom:16px}.lab-nav{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:5px}.lab-tab{flex:0 0 190px;scroll-snap-align:start}.side-footer{display:none}.lab-panel{padding:22px 17px}.lab-toolbar{padding:11px 15px}.panel-heading{flex-wrap:wrap}.control-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.metric-row{gap:6px}.metric{padding:12px 9px}.metric>span,.metric small{font-size:.55rem}.metric strong{font-size:.88rem}.lab-technical{grid-template-columns:1fr;gap:16px}.queue-track{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:460px){.control-grid{grid-template-columns:1fr}.control-actions button{flex:1 1 100%}.scan-grid{grid-template-columns:1fr}.scan-top>div:first-child small{display:none}.terminal-screen{height:220px}.hexdump{font-size:.67rem}}
@media(prefers-reduced-motion:reduce){.lab-tab,.lab-primary,.lab-outline{transition:none}}

.lab-more-demos{margin-top:15px;padding:13px;border:1px solid #d8e4ef;background:#fbfdff}.lab-more-demos .side-label{margin:0 0 11px}.lab-more-demos a{display:block;text-decoration:none;border:1px solid #dce8f3;background:#fff;padding:13px 12px;margin:7px 0;color:#244966;transition:border-color .13s,background .13s}.lab-more-demos a:hover{background:#eef6fe;border-color:#a7c8e8}.lab-more-demos a span{display:block;font:.59rem ui-monospace,monospace;color:#3976b0;margin-bottom:6px}.lab-more-demos a strong{display:block;font-size:.75rem}.lab-more-demos a small{display:block;font-size:.64rem;margin-top:5px;color:#74879b}
@media(max-width:760px){.lab-more-demos{margin:12px 0}.lab-more-demos a{display:inline-block;vertical-align:top;width:calc(50% - 8px);margin:5px 3px}}
@media(max-width:430px){.lab-more-demos a{width:100%;margin:5px 0}}
