:root{--primary:#2563eb;--primary-dark:#1d4ed8;--accent:#2563eb;--surface:#fff;--surface-muted:#f4f6fb;--border:#e2e8f0;--text-main:#0f172a;--text-muted:#64748b;--shadow-soft:0 20px 45px rgba(15,23,42,0.08);}
.ptf-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;}
.ptf-workbench{display:flex;flex-direction:column;gap:1rem;margin-bottom:2.5rem;}
.ptf-viewport-shell{position:relative;border-radius:1rem;overflow:hidden;background:var(--surface-muted);border:1px solid var(--border);box-shadow:var(--shadow-soft);}
.ptf-viewport{position:relative;width:100%;line-height:0;background:linear-gradient(165deg,color-mix(in srgb,var(--surface) 92%,var(--primary) 8%) 0%,var(--surface) 48%,var(--surface-muted) 100%);}
.ptf-canvas{display:block;width:100%;height:auto;vertical-align:middle;}
.ptf-stats-rail{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0.5rem 1rem;padding:0.75rem 1rem;font-size:0.8125rem;color:var(--text-muted);background:var(--surface);border-top:1px solid var(--border);}
@media (min-width:480px){.ptf-stats-rail{grid-template-columns:repeat(4,minmax(0,1fr));}}
.ptf-stat{display:flex;flex-direction:column;gap:0.125rem;min-width:0;}
.ptf-stat-label{font-size:0.6875rem;text-transform:uppercase;letter-spacing:0.06em;opacity:0.85;}
.ptf-stat-value{font-variant-numeric:tabular-nums;color:var(--text-main);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.ptf-dock{display:flex;flex-direction:column;gap:0.5rem;}
.ptf-panel{border:1px solid var(--border);border-radius:0.75rem;background:var(--surface);overflow:hidden;}
.ptf-panel summary{list-style:none;cursor:pointer;padding:0.875rem 1rem;font-weight:600;font-size:0.9375rem;color:var(--text-main);display:flex;align-items:center;justify-content:space-between;gap:0.5rem;user-select:none;}
.ptf-panel summary::-webkit-details-marker{display:none;}
.ptf-panel summary::after{content:"";width:0.5rem;height:0.5rem;border-right:2px solid var(--text-muted);border-bottom:2px solid var(--text-muted);transform:rotate(45deg);transition:transform 0.2s ease;flex-shrink:0;}
.ptf-panel[open] summary::after{transform:rotate(-135deg);}
.ptf-panel-body{padding:0 1rem 1rem;display:flex;flex-direction:column;gap:1rem;}
.ptf-field{display:flex;flex-direction:column;gap:0.375rem;}
.ptf-field label{font-size:0.8125rem;font-weight:600;color:var(--text-main);}
.ptf-field-row{display:flex;align-items:center;gap:0.75rem;}
.ptf-field-row input[type="range"]{flex:1;min-width:0;accent-color:var(--primary);}
.ptf-chip{font-variant-numeric:tabular-nums;font-size:0.8125rem;font-weight:700;color:var(--primary-dark,var(--primary));min-width:2.5rem;text-align:right;}
.ptf-select{width:100%;padding:0.625rem 0.75rem;border-radius:0.5rem;border:1px solid var(--border);background:var(--surface-muted);color:var(--text-main);font-size:0.9375rem;}
.ptf-actions{display:grid;grid-template-columns:1fr;gap:0.5rem;margin-top:0.25rem;}
@media (min-width:420px){.ptf-actions{grid-template-columns:repeat(3,1fr);}}
.ptf-btn{appearance:none;border:none;border-radius:0.625rem;padding:0.75rem 1rem;font-size:0.875rem;font-weight:600;cursor:pointer;transition:opacity 0.15s ease,transform 0.1s ease;}
.ptf-btn:active{transform:scale(0.98);}
.ptf-btn-primary{background:var(--primary);color:#fff;}
.ptf-btn-primary:hover{opacity:0.92;}
.ptf-btn-ghost{background:var(--surface-muted);color:var(--text-main);border:1px solid var(--border);}
.ptf-btn-ghost:hover{background:var(--surface);}
.ptf-btn-outline{background:transparent;color:var(--primary);border:2px solid var(--primary);}
.ptf-btn-outline:hover{background:color-mix(in srgb,var(--primary) 12%,transparent);}
.ptf-article{margin:0 auto 3rem;}
.ptf-article h2{font-size:clamp(1.25rem,4vw,1.5rem);margin:2rem 0 0.75rem;line-height:1.25;color:var(--text-main);}
.ptf-article h2:first-child{margin-top:0;}
.ptf-article h3{font-size:1.0625rem;margin:1.5rem 0 0.5rem;color:var(--text-main);}
.ptf-article p{color:var(--text-muted);line-height:1.65;margin:0 0 1rem;}
.ptf-callout{border-left:4px solid var(--accent,var(--primary));padding:1rem 1rem 1rem 1.25rem;margin:1.5rem 0;background:var(--surface-muted);border-radius:0 0.5rem 0.5rem 0;}
.ptf-callout p:last-child{margin-bottom:0;}
.ptf-table-wrap{overflow-x:auto;margin:1.25rem 0;border:1px solid var(--border);border-radius:0.5rem;}
.ptf-table{width:100%;border-collapse:collapse;font-size:0.875rem;}
.ptf-table th,.ptf-table td{padding:0.625rem 0.875rem;text-align:left;border-bottom:1px solid var(--border);}
.ptf-table th{background:var(--surface-muted);color:var(--text-main);font-weight:600;}
.ptf-table tr:last-child td{border-bottom:none;}
.ptf-dl{margin:1.25rem 0;}
.ptf-dl dt{font-weight:600;color:var(--text-main);margin-top:0.75rem;}
.ptf-dl dt:first-child{margin-top:0;}
.ptf-dl dd{margin:0.25rem 0 0;padding:0;color:var(--text-muted);line-height:1.6;}
.ptf-muted{color:var(--text-muted);font-size:0.875rem;}
@media (min-width:900px){.ptf-workbench{flex-direction:row;align-items:stretch;gap:1.25rem;}
.ptf-viewport-shell{flex:1;min-width:0;}
.ptf-dock{width:min(320px,34vw);flex-shrink:0;}
.ptf-actions{grid-template-columns:1fr;}}
