@charset "UTF-8";*{box-sizing:border-box}html,body{margin:0;height:100%}body{display:flex;flex-direction:column;background:#fafaf8;color:#0c1c25;font-family:system-ui,-apple-system,Segoe UI,sans-serif}body.demo-dark{background:#0c1c25;color:#edebe7eb}.header,.layout,.app-container,.ast-layout,.docs-shell,.gfm-toolbar,.gfm-main{--penna-c-logo-paper: #edebe7;--penna-c-logo-ink: #0c1c25;--penna-c-logo-cyan: #0ac1e3;--penna-c-logo-blue: #008dee;--penna-c-logo-green: #16bf73;--penna-c-logo-yellow: #fec933;--penna-c-logo-orange: #fe9138;--penna-c-logo-red: #f33a3c;--penna-c-stroke: #0c1c25;--penna-c-brand-1: #008dee;--penna-c-brand-2: #0099e8;--penna-c-brand-3: #0ac1e3;--penna-c-brand-soft: rgba(0, 141, 238, .16);--penna-c-brand-on-bg: #ffffff;--penna-c-text-1: #0c1c25;--penna-c-text-2: rgba(12, 28, 37, .78);--penna-c-text-3: rgba(12, 28, 37, .56);--penna-c-bg: #fafaf8;--penna-c-bg-elevated: #ffffff;--penna-c-contrast-light: #fff;--penna-c-contrast-dark: #000;--penna-c-brand-mark: #0ac1e3;--penna-c-code-fg: #f33a3c;--penna-c-note: #008dee;--penna-c-note-mark: #fec933;--penna-c-note-on-bg: color-mix( in srgb, #008dee 20%, #fff );--penna-c-alert-note-text: #008dee;--penna-c-alert-note-bg: color-mix( in srgb, #008dee 10%, transparent );--penna-c-alert-note-border: color-mix( in srgb, #008dee 30%, transparent );--penna-c-tip: #16bf73;--penna-c-tip-mark: #fec933;--penna-c-tip-on-bg: color-mix( in srgb, #16bf73 20%, #fff );--penna-c-alert-tip-text: #16bf73;--penna-c-alert-tip-bg: color-mix( in srgb, #16bf73 10%, transparent );--penna-c-alert-tip-border: color-mix( in srgb, #16bf73 30%, transparent );--penna-c-warning: #fe9138;--penna-c-warning-mark: #fec933;--penna-c-warning-on-bg: color-mix( in srgb, #fe9138 20%, #fff );--penna-c-alert-warning-text: #fe9138;--penna-c-alert-warning-bg: color-mix( in srgb, #fe9138 10%, transparent );--penna-c-alert-warning-border: color-mix( in srgb, #fe9138 30%, transparent );--penna-c-caution: #f33a3c;--penna-c-caution-mark: #fe9138;--penna-c-caution-on-bg: color-mix( in srgb, #f33a3c 20%, #fff );--penna-c-alert-caution-text: #f33a3c;--penna-c-alert-caution-bg: color-mix( in srgb, #f33a3c 10%, transparent );--penna-c-alert-caution-border: color-mix( in srgb, #f33a3c 30%, transparent );--penna-c-danger: #f33a3c;--penna-c-danger-mark: #fe9138;--penna-c-danger-on-bg: color-mix( in srgb, #f33a3c 20%, #fff );--penna-c-alert-danger-text: #f33a3c;--penna-c-alert-danger-bg: color-mix( in srgb, #f33a3c 10%, transparent );--penna-c-alert-danger-border: color-mix( in srgb, #f33a3c 30%, transparent );--penna-c-important: #0ac1e3;--penna-c-important-mark: #008dee;--penna-c-important-on-bg: color-mix( in srgb, #0ac1e3 20%, #fff );--penna-c-alert-important-text: #0ac1e3;--penna-c-alert-important-bg: color-mix( in srgb, #0ac1e3 10%, transparent );--penna-c-alert-important-border: color-mix( in srgb, #0ac1e3 30%, transparent );--penna-c-image-card-info-fg: var(--penna-c-contrast-light);--penna-c-image-card-scrim: var(--penna-c-contrast-dark);--penna-c-image-card-info-bg: linear-gradient( 180deg, transparent 0%, color-mix(in srgb, var(--penna-c-image-card-scrim) 45%, transparent) 55%, color-mix(in srgb, var(--penna-c-image-card-scrim) 72%, transparent) 100% );--penna-c-image-card-info-bg-hover: linear-gradient( 180deg, transparent 0%, color-mix(in srgb, var(--penna-c-image-card-scrim) 55%, transparent) 35%, color-mix(in srgb, var(--penna-c-image-card-scrim) 82%, transparent) 100% );--penna-c-media-player-bg: var(--penna-c-bg);--penna-c-media-shade: var(--penna-c-bg);--penna-c-on-brand: var(--penna-c-contrast-light);--penna-c-code-block-header-bg: color-mix( in srgb, var(--penna-c-text-3) 6%, var(--penna-c-bg-elevated) );--penna-c-code-block-code-bg: color-mix( in srgb, var(--penna-c-text-3) 4%, var(--penna-c-bg) );--penna-c-code-block-shadow: 0 1px 2px color-mix(in srgb, var(--penna-c-text-3) 8%, transparent), 0 8px 24px color-mix(in srgb, var(--penna-c-text-3) 6%, transparent)}body.demo-dark .header,body.demo-dark .layout,body.demo-dark .app-container,body.demo-dark .ast-layout,body.demo-dark .docs-shell,body.demo-dark .gfm-toolbar,body.demo-dark .gfm-main{--penna-c-logo-paper: #edebe7;--penna-c-logo-ink: #0c1c25;--penna-c-logo-cyan: #0ac1e3;--penna-c-logo-blue: #008dee;--penna-c-logo-green: #16bf73;--penna-c-logo-yellow: #fec933;--penna-c-logo-orange: #fe9138;--penna-c-logo-red: #f33a3c;--penna-c-stroke: #edebe7;--penna-c-brand-1: #0ac1e3;--penna-c-brand-2: #3dcee9;--penna-c-brand-3: #6dd8ee;--penna-c-brand-soft: rgba(10, 193, 227, .22);--penna-c-brand-on-bg: #0c1c25;--penna-c-text-1: rgba(237, 235, 231, .92);--penna-c-text-2: rgba(237, 235, 231, .68);--penna-c-text-3: rgba(237, 235, 231, .42);--penna-c-bg: #0c1c25;--penna-c-bg-elevated: #152836;--penna-c-contrast-light: #fff;--penna-c-contrast-dark: #000;--penna-c-brand-mark: color-mix( in srgb, #6dd8ee 48%, #0c1c25 );--penna-c-code-fg: #ff7a72;--penna-c-note: #4db4f5;--penna-c-note-mark: color-mix( in srgb, #fec933 50%, #0c1c25 );--penna-c-note-on-bg: color-mix( in srgb, #4db4f5 20%, #000 );--penna-c-alert-note-text: #4db4f5;--penna-c-alert-note-bg: color-mix( in srgb, #4db4f5 15%, transparent );--penna-c-alert-note-border: color-mix( in srgb, #4db4f5 40%, transparent );--penna-c-tip: #3dd48a;--penna-c-tip-mark: color-mix( in srgb, #16bf73 50%, #0c1c25 );--penna-c-tip-on-bg: color-mix( in srgb, #3dd48a 20%, #000 );--penna-c-alert-tip-text: #3dd48a;--penna-c-alert-tip-bg: color-mix( in srgb, #3dd48a 15%, transparent );--penna-c-alert-tip-border: color-mix( in srgb, #3dd48a 40%, transparent );--penna-c-warning: #ffb04a;--penna-c-warning-mark: color-mix( in srgb, #fec933 50%, #0c1c25 );--penna-c-warning-on-bg: color-mix( in srgb, #ffb04a 20%, #000 );--penna-c-alert-warning-text: #ffb04a;--penna-c-alert-warning-bg: color-mix( in srgb, #ffb04a 15%, transparent );--penna-c-alert-warning-border: color-mix( in srgb, #ffb04a 40%, transparent );--penna-c-caution: #ff7a72;--penna-c-caution-mark: color-mix( in srgb, #fe9138 50%, #0c1c25 );--penna-c-caution-on-bg: color-mix( in srgb, #ff7a72 20%, #000 );--penna-c-alert-caution-text: #ff7a72;--penna-c-alert-caution-bg: color-mix( in srgb, #ff7a72 15%, transparent );--penna-c-alert-caution-border: color-mix( in srgb, #ff7a72 40%, transparent );--penna-c-danger: #ff6b66;--penna-c-danger-mark: color-mix( in srgb, #f33a3c 50%, #0c1c25 );--penna-c-danger-on-bg: color-mix( in srgb, #ff6b66 20%, #000 );--penna-c-alert-danger-text: #ff6b66;--penna-c-alert-danger-bg: color-mix( in srgb, #ff6b66 15%, transparent );--penna-c-alert-danger-border: color-mix( in srgb, #ff6b66 40%, transparent );--penna-c-important: #3dcee9;--penna-c-important-mark: color-mix( in srgb, #0ac1e3 50%, #0c1c25 );--penna-c-important-on-bg: color-mix( in srgb, #3dcee9 20%, #000 );--penna-c-alert-important-text: #3dcee9;--penna-c-alert-important-bg: color-mix( in srgb, #3dcee9 15%, transparent );--penna-c-alert-important-border: color-mix( in srgb, #3dcee9 40%, transparent );--penna-c-image-card-scrim: var(--penna-c-contrast-dark);--penna-c-image-card-info-bg: linear-gradient( 180deg, transparent 0%, color-mix(in srgb, var(--penna-c-image-card-scrim) 45%, transparent) 55%, color-mix(in srgb, var(--penna-c-image-card-scrim) 72%, transparent) 100% );--penna-c-image-card-info-bg-hover: linear-gradient( 180deg, transparent 0%, color-mix(in srgb, var(--penna-c-image-card-scrim) 55%, transparent) 35%, color-mix(in srgb, var(--penna-c-image-card-scrim) 82%, transparent) 100% );--penna-c-media-player-bg: var(--penna-c-bg);--penna-c-media-shade: var(--penna-c-bg);--penna-c-on-brand: var(--penna-c-contrast-light);--penna-c-code-block-header-bg: color-mix( in srgb, var(--penna-c-text-3) 6%, var(--penna-c-bg-elevated) );--penna-c-code-block-code-bg: color-mix( in srgb, var(--penna-c-text-3) 4%, var(--penna-c-bg) );--penna-c-code-block-shadow: 0 1px 2px color-mix(in srgb, var(--penna-c-text-3) 8%, transparent), 0 8px 24px color-mix(in srgb, var(--penna-c-text-3) 6%, transparent);--penna-c-image-card-info-fg: var(--penna-c-contrast-light);--penna-c-image-card-info-bg: linear-gradient( 180deg, transparent 0%, color-mix(in srgb, var(--penna-c-image-card-scrim) 58%, transparent) 55%, color-mix(in srgb, var(--penna-c-image-card-scrim) 88%, transparent) 100% );--penna-c-image-card-info-bg-hover: linear-gradient( 180deg, transparent 0%, color-mix(in srgb, var(--penna-c-image-card-scrim) 68%, transparent) 35%, color-mix(in srgb, var(--penna-c-image-card-scrim) 92%, transparent) 100% );--penna-c-code-block-header-bg: color-mix( in srgb, var(--penna-c-contrast-light) 4%, var(--penna-c-bg-elevated) );--penna-c-code-block-code-bg: color-mix( in srgb, var(--penna-c-contrast-dark) 22%, var(--penna-c-bg-elevated) );--penna-c-code-block-shadow: 0 1px 2px color-mix(in srgb, var(--penna-c-contrast-dark) 35%, transparent)}.header{display:flex;align-items:center;gap:16px;padding:12px 18px;background:var(--penna-c-bg-elevated);border-bottom:1px solid color-mix(in srgb,var(--penna-c-text-3) 22%,transparent);flex-shrink:0}.back{display:inline-flex;align-items:center;gap:8px;text-decoration:none;color:var(--penna-c-brand-1);font-size:13px}.back:hover{text-decoration:underline;color:var(--penna-c-brand-2)}.header-logo{width:20px;height:20px;border-radius:5px;flex-shrink:0}.title{font-weight:600;font-size:14px;color:var(--penna-c-text-1)}.header-controls{display:flex;align-items:center;gap:12px;margin-left:auto;flex-wrap:wrap}.header-controls label{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--penna-c-text-2)}.header-controls select{font:inherit;padding:4px 8px;border:1px solid color-mix(in srgb,var(--penna-c-text-3) 35%,transparent);border-radius:6px;background:var(--penna-c-bg);color:var(--penna-c-text-1)}.timing,.ast-timing{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:12px;font-weight:500;color:var(--penna-c-brand-1);background:var(--penna-c-brand-soft);border:1px solid color-mix(in srgb,var(--penna-c-brand-1) 28%,transparent);border-radius:8px;padding:4px 10px;white-space:nowrap}.app-container{flex:1;min-height:0;display:flex;flex-direction:column}.ast-layout{flex:1;min-height:0;display:grid;grid-template-columns:minmax(280px,.9fr) minmax(360px,1.1fr);gap:12px;padding:12px 16px 16px;overflow:hidden}.ast-panel{min-height:0;display:flex;flex-direction:column;background:var(--penna-c-bg);border:1px solid color-mix(in srgb,var(--penna-c-text-3) 22%,transparent);border-radius:10px;overflow:hidden}.ast-panel-tree{display:grid;grid-template-rows:auto 1fr minmax(120px,.42fr)}.ast-panel-head{padding:10px 14px;font-size:13px;font-weight:600;color:var(--penna-c-text-2);background:var(--penna-c-bg-elevated);border-bottom:1px solid color-mix(in srgb,var(--penna-c-text-3) 18%,transparent)}.ast-panel-head-split{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.ast-panel-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 12px;border-top:1px solid color-mix(in srgb,var(--penna-c-text-3) 18%,transparent);background:var(--penna-c-bg-elevated)}.ast-doc-switch{display:inline-flex;align-items:center;gap:8px;font-size:12px;color:var(--penna-c-text-2)}.ast-doc-switch select{font:inherit;padding:4px 8px;border:1px solid color-mix(in srgb,var(--penna-c-text-3) 35%,transparent);border-radius:6px;background:var(--penna-c-bg);color:var(--penna-c-text-1)}.ast-doc-label{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;color:var(--penna-c-text-3)}.ast-textarea{flex:1;min-height:0;width:100%;border:none;outline:none;resize:none;padding:14px 16px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;line-height:1.6;background:var(--penna-c-bg);color:var(--penna-c-text-1)}.ast-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.ast-search input{width:120px;padding:5px 10px;border:1px solid color-mix(in srgb,var(--penna-c-text-3) 35%,transparent);border-radius:6px;background:var(--penna-c-bg);color:var(--penna-c-text-1);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.ast-search input:focus{outline:none;border-color:var(--penna-c-brand-2);box-shadow:0 0 0 2px var(--penna-c-brand-soft)}.ast-btn-group{display:flex;border:1px solid color-mix(in srgb,var(--penna-c-text-3) 28%,transparent);border-radius:6px;overflow:hidden}.ast-btn{margin:0;border:none;border-right:1px solid color-mix(in srgb,var(--penna-c-text-3) 22%,transparent);background:var(--penna-c-bg);color:var(--penna-c-text-2);font-size:12px;padding:5px 10px;cursor:pointer}.ast-btn:last-child{border-right:none}.ast-btn:hover{background:var(--penna-c-bg-elevated);color:var(--penna-c-text-1)}.ast-btn.active{background:var(--penna-c-brand-soft);color:var(--penna-c-brand-1);font-weight:600}.ast-btn-sm{border:1px solid color-mix(in srgb,var(--penna-c-text-3) 28%,transparent);border-radius:6px;padding:4px 10px}.ast-tree{min-height:0;overflow:auto;background:var(--penna-c-bg);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.ast-stats{display:flex;gap:8px;padding:8px 12px;border-bottom:1px solid color-mix(in srgb,var(--penna-c-text-3) 14%,transparent);background:var(--penna-c-bg-elevated)}.stat-pill{display:inline-flex;align-items:center;gap:6px;padding:2px 8px;border-radius:999px;border:1px solid color-mix(in srgb,var(--penna-c-text-3) 20%,transparent);background:var(--penna-c-bg)}.stat-label{font-size:11px;color:var(--penna-c-text-3)}.stat-value{font-weight:600;color:var(--penna-c-text-1)}.ast-rows{padding:4px 6px 10px}.ast-row{display:flex;align-items:center;gap:6px;min-height:28px;margin:1px 0;padding:0 6px;border-radius:6px;cursor:pointer}.ast-row:hover{background:color-mix(in srgb,var(--penna-c-brand-soft) 55%,transparent)}.ast-row.selected{background:var(--penna-c-brand-soft);box-shadow:inset 2px 0 0 var(--penna-c-brand-1)}.ast-indent{display:flex;flex-shrink:0;align-items:stretch;height:28px}.ast-rail{width:16px;flex-shrink:0}.ast-rail.continue:after{content:"";display:block;width:1px;height:100%;margin:0 auto;background:color-mix(in srgb,var(--penna-c-text-3) 28%,transparent)}.ast-branch{position:relative;width:16px;flex-shrink:0}.ast-branch:before{content:"";position:absolute;left:50%;top:0;height:50%;width:1px;transform:translate(-50%);background:color-mix(in srgb,var(--penna-c-text-3) 28%,transparent)}.ast-branch:after{content:"";position:absolute;left:50%;top:50%;width:50%;height:1px;background:color-mix(in srgb,var(--penna-c-text-3) 35%,transparent)}.ast-branch.last:before{height:55%}.ast-toggle,.ast-dot{flex:0 0 20px;width:20px;height:20px;display:inline-flex;align-items:center;justify-content:center}.ast-toggle{border:none;padding:0;border-radius:4px;background:transparent;color:var(--penna-c-text-3);cursor:pointer}.ast-toggle:not(.collapsed){transform:rotate(90deg);color:var(--penna-c-brand-1)}.ast-toggle:hover{background:var(--penna-c-bg-elevated)}.ast-dot:after{content:"";width:4px;height:4px;border-radius:50%;background:var(--penna-c-text-3)}.ast-type{flex:0 0 auto;padding:1px 7px;border-radius:4px;font-size:11px;font-weight:600;color:var(--penna-c-brand-on-bg);background:var(--penna-c-brand-soft);border:1px solid color-mix(in srgb,var(--penna-c-brand-2) 30%,transparent)}.ast-body{flex:1;min-width:0;display:flex;align-items:center;gap:6px;overflow:hidden}.ast-value{color:var(--penna-c-text-2);font-style:italic;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ast-value:before,.ast-value:after{content:'"';color:var(--penna-c-text-3);font-style:normal}.ast-chip{display:inline-flex;align-items:baseline;gap:4px;max-width:180px;padding:1px 6px;border-radius:4px;background:var(--penna-c-bg-elevated);border:1px solid color-mix(in srgb,var(--penna-c-text-3) 18%,transparent);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.chip-key{font-size:10px;color:var(--penna-c-brand-2)}.chip-key:after{content:"=";color:var(--penna-c-text-3);margin-left:2px}.chip-val{color:var(--penna-c-text-1);overflow:hidden;text-overflow:ellipsis}.ast-badge{flex:0 0 auto;min-width:18px;height:18px;padding:0 5px;display:inline-flex;align-items:center;justify-content:center;font-size:10px;font-weight:600;color:var(--penna-c-text-3);background:var(--penna-c-bg-elevated);border:1px solid color-mix(in srgb,var(--penna-c-text-3) 20%,transparent);border-radius:999px}.ast-empty{padding:32px 16px;text-align:center;color:var(--penna-c-text-3);font-size:13px}.ast-detail{min-height:0;display:flex;flex-direction:column;border-top:1px solid color-mix(in srgb,var(--penna-c-text-3) 18%,transparent);background:var(--penna-c-bg-elevated)}.ast-detail-head{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;font-size:12px;font-weight:600;color:var(--penna-c-text-2);border-bottom:1px solid color-mix(in srgb,var(--penna-c-text-3) 14%,transparent)}.ast-detail-body{flex:1;margin:0;padding:10px 12px;overflow:auto;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;line-height:1.55;color:var(--penna-c-text-2);white-space:pre-wrap;word-break:break-word}.ast-detail-body .jk{color:var(--penna-c-brand-2)}.ast-detail-body .js{color:var(--penna-c-code-fg)}.ast-detail-body .jn{color:var(--penna-c-warning)}.ast-detail-body .jl{color:var(--penna-c-brand-3)}.error-msg{margin:12px;padding:10px 12px;color:var(--penna-c-danger);background:var(--penna-c-alert-danger-bg);border:1px solid color-mix(in srgb,var(--penna-c-danger) 35%,transparent);border-radius:8px;font-size:13px}body.demo-dark .ast-panel,body.demo-dark .ast-textarea,body.demo-dark .ast-search input,body.demo-dark .ast-btn,body.demo-dark .stat-pill{background:var(--penna-c-bg)}body.demo-dark .ast-panel-head,body.demo-dark .ast-panel-foot,body.demo-dark .ast-stats,body.demo-dark .ast-detail,body.demo-dark .ast-detail-head{background:var(--penna-c-bg-elevated)}@media(max-width:900px){.ast-layout{grid-template-columns:1fr;overflow:auto}.ast-panel-tree{min-height:480px}}
