:root{--bg:#f5f1e9;--panel:#fffdf8;--ink:#1f2933;--muted:#667085;--line:#ded7ca;--accent:#f5c542;--good:#4caf50;--hint:#5aa9e6;--bad:#d64545}*{box-sizing:border-box}body{background:radial-gradient(circle at top left, #fff7dc, var(--bg) 38%, #ebe5dc);color:var(--ink);margin:0;font-family:Arial,Helvetica,sans-serif}button{font:inherit}.page-shell{max-width:1380px;margin:0 auto;padding:28px}.hero{justify-content:space-between;align-items:stretch;gap:24px;margin-bottom:22px;display:flex}.eyebrow{color:var(--muted);text-transform:uppercase;letter-spacing:.12em;margin:0 0 8px;font-size:12px;font-weight:700}h1,h2{margin:0}h1{font-size:clamp(34px,5vw,62px);line-height:.95}.hero p:not(.eyebrow){max-width:860px;font-size:18px;line-height:1.55}.stats-card{border:1px solid var(--line);background:#fffdf8d1;border-radius:18px;grid-template-columns:1fr auto;align-content:center;gap:8px 18px;min-width:190px;padding:18px;display:grid;box-shadow:0 18px 45px #1f293314}.stats-card span{color:var(--muted)}.stats-card strong{font-size:22px}.game-layout{grid-template-columns:minmax(620px,1.15fr) minmax(520px,.85fr);align-items:start;gap:20px;display:grid}.panel{border:1px solid var(--line);background:#fffdf8eb;border-radius:22px;padding:18px;box-shadow:0 18px 45px #1f293314}.board-panel.solution-all-different{background:linear-gradient(165deg,#f8fdff 0%,#d8efff 100%);border-color:#7bbfe9;box-shadow:0 18px 45px #1f293314,inset 0 0 0 2px #7bbfe947}.board-panel.solution-with-equal{background:linear-gradient(165deg,#fbfff8 0%,#dff2d2 100%);border-color:#98c77f;box-shadow:0 18px 45px #1f293314,inset 0 0 0 2px #98c77f47}.board-solution-legend{flex-wrap:wrap;align-items:center;gap:8px;margin:2px 0 12px;display:flex}.solution-pill{border:1px solid #0000;border-radius:999px;align-items:center;padding:4px 10px;font-size:12px;font-weight:600;display:inline-flex}.solution-pill.all-different{color:#1d4d68;background:#d8efff;border-color:#9fd3f2}.solution-pill.with-equal{color:#2a5a2f;background:#dff2d2;border-color:#b6d89d}.solution-current{color:#445468;font-size:12px;font-weight:700}.panel-header{justify-content:space-between;gap:16px;margin-bottom:14px;display:flex}.panel-header p{color:var(--muted);margin:6px 0 0}.board-grid{grid-template-columns:repeat(4,minmax(120px,1fr));gap:12px;display:grid}.set-card{cursor:pointer;background:#fff;border:2px solid #cfc7ba;border-radius:16px;grid-template-rows:1fr auto auto;gap:7px;min-height:154px;padding:10px;transition:transform .13s,border-color .13s,box-shadow .13s;display:grid}.set-card:hover{transform:translateY(-2px)}.set-card.selected{box-shadow:0 0 0 4px var(--accent);border-color:#111827}.set-card.hinted{border-color:var(--hint);box-shadow:0 0 0 3px #5aa9e640}.set-card.completed{border-color:var(--good);box-shadow:0 0 0 4px #4caf5047}.symbol-stack{flex-direction:column;justify-content:center;align-items:center;gap:7px;display:flex}.symbol{border-style:solid;border-width:3px;width:64px;height:30px;display:block}.green{--symbol-color:#1f9d55}.purple{--symbol-color:#7e3fb2}.red{--symbol-color:#d64545}.symbol{border-color:var(--symbol-color)}.symbol.solid{background:var(--symbol-color)}.symbol.empty{background:0 0}.symbol.striped{background:repeating-linear-gradient(45deg, transparent, transparent 5px, var(--symbol-color) 5px, var(--symbol-color) 7px)}.oval{border-radius:999px}.wave{border-radius:42% 58% 55% 45%;transform:skew(-14deg)}.diamond{transform:rotate(45deg)scale(.76)}.card-vector{color:#475467;font-family:monospace;font-size:12px}.card-caption{color:var(--muted);font-size:12px}.controls{flex-wrap:wrap;gap:10px;margin-top:16px;display:flex}.controls button{cursor:pointer;background:#fff;border:1px solid #b9afa0;border-radius:999px;padding:9px 14px}.controls button:hover:not(:disabled){background:#f7eed9}.controls button:disabled{opacity:.5;cursor:not-allowed}.message-box,.math-box{background:#f7f1e4;border:1px solid #e4d8c3;border-radius:14px;margin-top:14px;padding:12px 14px;line-height:1.45}.math-box{font-family:Arial,Helvetica,sans-serif}.math-box span{color:var(--muted)}.equation-line{margin-top:6px;font-family:Courier New,monospace;font-size:14px}.map-wrap{grid-template-rows:30px repeat(9,1fr);grid-template-columns:36px repeat(9,1fr);align-items:center;gap:4px;display:grid}.corner-label,.axis-label{color:var(--muted);place-items:center;font-family:monospace;font-size:12px;display:grid}.col-label{grid-row:1}.row-label{grid-column:1}.col-label:nth-of-type(2){grid-column:2}.affine-grid-shell{grid-area:2/2/span 9/span 9;position:relative}.affine-grid{z-index:2;grid-template-columns:repeat(9,1fr);gap:4px;display:grid;position:relative}.affine-lines{z-index:3;pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.found-line-group polyline,.found-line-group line,.active-line-group polyline,.active-line-group line{fill:none;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}.found-line-group polyline,.found-line-group line{stroke:#4caf506b;stroke-width:.06px}.active-line-group polyline,.active-line-group line{stroke-width:.13px;filter:drop-shadow(0 0 .11px)}.active-line-group.valid polyline,.active-line-group.valid line{stroke:#4caf50f2}.active-line-group.invalid polyline,.active-line-group.invalid line{stroke:#d64545f2}.map-cell{aspect-ratio:1;color:#8a8175;background:#ded8ce;border:1px solid #d7d0c4;border-radius:10px;min-width:42px;font-family:monospace;font-size:11px}.map-cell.in-table{color:var(--ink);cursor:pointer;background:#fff;border-color:#a99f91}.map-cell.out-table{cursor:default;opacity:.62}.map-cell.selected{background:var(--accent);color:#111827;border-color:#111827;font-weight:700}.map-cell.selected-valid{border-color:var(--good);background:#dff5df;box-shadow:inset 0 0 0 4px #4caf50eb,0 0 0 4px #4caf5033}.map-cell.selected-invalid{border-color:var(--bad);background:#ffe5e5;box-shadow:inset 0 0 0 4px #d64545eb,0 0 0 4px #d645452e}.map-cell.highlighted{box-shadow:inset 0 0 0 3px #5aa9e6bf}.map-cell.completion{box-shadow:inset 0 0 0 4px #4caf50d9}.map-cell.hovered{outline:3px solid #1f293359}.affine-verdict{border-radius:13px;margin-top:14px;padding:10px 12px;font-size:13px;font-weight:700;line-height:1.35}.affine-verdict.valid{color:#1f5f28;background:#e8f7e8;border:1px solid #4caf506b}.affine-verdict.invalid{color:#8a2424;background:#ffe8e8;border:1px solid #d645456b}.legend{color:var(--muted);flex-wrap:wrap;gap:12px;margin-top:14px;font-size:13px;display:flex}.legend span{align-items:center;gap:6px;display:inline-flex}.legend-box{background:#fff;border:1px solid #a99f91;border-radius:4px;width:16px;height:16px;display:inline-block}.legend-box.selected{background:var(--accent);border-color:#111827}.legend-box.selected-valid{border-color:var(--good);background:#dff5df;box-shadow:inset 0 0 0 4px #4caf50eb}.legend-box.selected-invalid{border-color:var(--bad);background:#ffe5e5;box-shadow:inset 0 0 0 4px #d64545eb}.legend-box.highlighted{background:#fff;box-shadow:inset 0 0 0 3px #5aa9e6bf}.legend-box.completion{background:#fff;box-shadow:inset 0 0 0 4px #4caf50d9}.legend-line{background:#4caf50d9;border-radius:999px;width:28px;height:3px;display:inline-block}@media (max-width:1120px){.hero{flex-direction:column}.game-layout{grid-template-columns:1fr}}@media (max-width:720px){.page-shell{padding:14px}.board-grid{grid-template-columns:repeat(2,minmax(120px,1fr))}.map-cell{border-radius:7px;min-width:28px;font-size:9px}}.affine-blocks{z-index:1;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.affine-blocks line{stroke:#a99f9199;stroke-width:.05px}.active-line-group.pending line{stroke:#5aa9e6e6;stroke-dasharray:.24 .16}.legend-line.pending{background:repeating-linear-gradient(90deg,#5aa9e6e6 0 6px,#0000 6px 10px)}.direction-box{background:#f0f6fb;border:1px solid #c4dcef;border-radius:14px;margin-top:14px;padding:12px 14px;line-height:1.45}.direction-box span{color:var(--muted);font-size:13px}.direction-box.invalid{background:#fdf0f0;border-color:#ecc4c4}.shadow-row{flex-wrap:wrap;gap:14px;margin-top:14px;display:flex}.shadow-panel{border:1px solid var(--line);background:#fbf8f1;border-radius:14px;flex:1;min-width:220px;padding:10px 12px}.shadow-panel h3{margin:0 0 8px;font-size:13px}.shadow-caption{color:var(--muted);margin:8px 0 0;font-size:12px;line-height:1.4}.direction-box span{display:block}.direction-box .direction-note{margin-top:6px;font-size:12px}.shadow-svg{width:100%;max-width:180px;display:block}.shadow-svg .cell{fill:#eee8dd;stroke:#d7d0c4;stroke-width:.8px}.shadow-svg .cell.on{fill:#fff;stroke:#a99f91}.shadow-svg .cell.fixed{fill:#f7eed9;stroke:var(--accent)}.shadow-svg .sibling-lines line{stroke:#1f293326;stroke-width:1.3px;stroke-dasharray:3 3;stroke-linecap:round}.shadow-svg .active-line line{stroke-width:2.6px;stroke-linecap:round}.shadow-svg.pending .active-line line{stroke:#5aa9e6e6}.shadow-svg.valid .active-line line{stroke:#4caf50e6}.shadow-svg .order-halo,.shadow-svg .order-digit{font-family:monospace;font-size:10px;font-weight:700}.shadow-svg .order-halo{fill:none;stroke:#fff;stroke-width:3.4px;stroke-linejoin:round}.shadow-svg .order-digit{fill:var(--ink)}.hypergraph-panel{margin-top:22px}.ghost-button{border:1px solid var(--line);color:var(--ink);cursor:pointer;background:#fff;border-radius:999px;padding:8px 12px;font-weight:700}.ghost-button:hover{background:#f6f7f8}.hypergraph-stats{grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;margin-top:14px;display:grid}.hypergraph-stats div{border:1px solid var(--line);background:#fbfbfc;border-radius:14px;padding:10px 12px}.hypergraph-stats span{color:var(--muted);font-size:12px;line-height:1.3;display:block}.hypergraph-stats strong{margin-top:4px;font-size:22px;display:block}.hypergraph-grid{grid-template-columns:minmax(260px,.85fr) minmax(320px,1.15fr);gap:14px;margin-top:14px;display:grid}.hypergraph-card{border:1px solid var(--line);background:#fff;border-radius:16px;padding:12px}.hypergraph-card h3{margin:0 0 10px;font-size:14px}.direction-table{gap:4px;display:grid}.direction-row{background:#f7f8fa;border-radius:10px;grid-template-columns:1fr 54px 66px;align-items:center;gap:8px;padding:7px 8px;font-size:13px;display:grid}.direction-row.header{color:var(--muted);background:0 0;padding-top:0;font-size:12px;font-weight:700}.direction-row code,.open-pair-list code{background:#eef2f6;border-radius:8px;padding:3px 5px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:12px}.open-pair-list{gap:7px;margin:0;padding:0;list-style:none;display:grid}.open-pair-list li{background:#f7f8fa;border-radius:10px;flex-wrap:wrap;align-items:center;gap:6px;padding:7px 8px;font-size:12px;display:flex}.open-pair-list em{color:var(--muted);font-style:normal}.muted-line,.hypergraph-note{color:var(--muted);line-height:1.45}.hypergraph-note{margin:12px 0 0;font-size:13px}@media (max-width:900px){.hypergraph-grid{grid-template-columns:1fr}}.incidence-panel{min-width:0}.incidence-stats{grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:9px;margin:12px 0;display:grid}.incidence-stats div{border:1px solid var(--line);background:#fbfbfc;border-radius:14px;padding:9px 10px}.incidence-stats span{color:var(--muted);font-size:11px;line-height:1.25;display:block}.incidence-stats strong{margin-top:3px;font-size:20px;display:block}.incidence-legend{color:var(--muted);flex-wrap:wrap;align-items:center;gap:7px 10px;margin-bottom:10px;font-size:12px;display:flex}.incidence-dot{background:#eef2f6;border:1px solid #aeb7c2;border-radius:999px;width:10px;height:10px;display:inline-block}.incidence-dot.selected{background:var(--accent);border-color:#9c7720}.incidence-dot.hinted{background:var(--good);border-color:#2f7a35}.incidence-dot.present{background:var(--ink);border-color:var(--ink)}.incidence-dot.missing{background:#fff}.incidence-scroll{border:1px solid var(--line);background:#fff;border-radius:16px;max-height:680px;overflow:auto}.incidence-header-row,.incidence-row{grid-template-columns:minmax(150px,1.35fr) repeat(12,30px) minmax(92px,.8fr);align-items:center;gap:4px;min-width:660px;display:grid}.incidence-header-row{z-index:2;border-bottom:1px solid var(--line);color:var(--muted);background:#f4f6f8;padding:8px;font-size:11px;font-weight:700;position:sticky;top:0}.incidence-row{border-bottom:1px solid #edf0f2;padding:6px 8px;font-size:12px}.incidence-row.complete{background:#f1faee}.incidence-row.open{background:#fff9ea}.incidence-row.selection{background:#eef7ff}.incidence-row.active-direction{box-shadow:inset 4px 0 0 var(--accent)}.line-label-cell{min-width:0}.line-label-cell code{text-overflow:ellipsis;background:#eef2f6;border-radius:7px;width:fit-content;max-width:100%;padding:3px 5px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:11px;display:block;overflow:hidden}.line-label-cell small{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;margin-top:3px;display:block;overflow:hidden}.incidence-card-head,.incidence-cell{border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:8px;width:28px;height:28px;font-size:11px;font-weight:700}.incidence-card-head.selected{background:var(--accent);border-color:#9c7720}.incidence-cell.present{color:#fff;background:#222b36;border-color:#222b36}.incidence-cell.missing{color:#c7cdd4}.incidence-cell.selected{box-shadow:0 0 0 3px #f5c5428c}.incidence-cell.hinted{outline-offset:1px;outline:3px solid #4caf5059}.line-status-cell{color:var(--muted);font-size:11px;font-weight:700}.incidence-note{color:var(--muted);margin:12px 0 0;font-size:13px;line-height:1.45}@media (max-width:1200px){.incidence-header-row,.incidence-row{grid-template-columns:minmax(140px,1.3fr) repeat(12,26px) minmax(86px,.7fr)}.incidence-card-head,.incidence-cell{border-radius:7px;width:24px;height:24px}}.constraint-panel{min-width:0}.ghost-button{cursor:pointer;background:#ffffffd1;border:1px solid #0f172a29;border-radius:999px;padding:.65rem .9rem;font-weight:700}.constraint-stats{grid-template-columns:repeat(5,minmax(0,1fr));gap:.65rem;margin:1rem 0;display:grid}.constraint-stats div{background:#f8fafcdb;border:1px solid #0f172a17;border-radius:16px;padding:.75rem}.constraint-stats span{text-transform:uppercase;letter-spacing:.06em;opacity:.7;font-size:.72rem;display:block}.constraint-stats strong{margin-top:.2rem;font-size:1.3rem;display:block}.constraint-legend{flex-wrap:wrap;align-items:center;gap:.55rem 1rem;margin-bottom:.8rem;font-size:.85rem;display:flex}.constraint-swatch{border:1px solid #0f172a2e;border-radius:999px;width:1.05rem;height:.42rem;display:inline-block}.constraint-swatch.complete{background:#22c55e8c}.constraint-swatch.open{background:#94a3b857}.constraint-swatch.selected{background:#f97316b3}.constraint-swatch.node{background:#3b82f6a6;width:.82rem;height:.82rem}.constraint-graph-wrap{background:radial-gradient(circle,#fffffff5,#f1f5f9b8);border:1px solid #0f172a14;border-radius:24px;overflow:hidden}.constraint-graph{width:100%;min-height:420px;display:block}.constraint-edge{stroke:#64748b3d;stroke-width:1.2px}.constraint-edge.complete{stroke:#22c55e94;stroke-width:3.2px}.constraint-edge.selected{stroke:#f97316e0;stroke-width:4px}.constraint-triangle{fill:#22c55e14;stroke:#22c55e38;stroke-width:1px}.constraint-node{fill:#fff;stroke:#0f172a6b;stroke-width:2px;cursor:pointer}.constraint-node.selected{fill:#f973162e;stroke:#f97316f2;stroke-width:4px}.constraint-node.hinted{fill:#3b82f62e;stroke:#3b82f6f2;stroke-width:4px}.constraint-node-label{pointer-events:none;fill:#0f172a;font-size:.82rem;font-weight:800}.constraint-details{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin-top:1rem;display:grid}.constraint-details>div{background:#ffffffbf;border:1px solid #0f172a14;border-radius:18px;padding:.9rem}.constraint-details h3{margin:0 0 .5rem;font-size:.95rem}.constraint-details ul,.constraint-details ol{margin:0;padding-left:1.25rem}.constraint-details li{margin:.35rem 0}.constraint-note{opacity:.72;margin-bottom:0;font-size:.9rem}@media (max-width:900px){.constraint-stats,.constraint-details{grid-template-columns:1fr}}.abstract-panel{min-width:0}.abstract-stats{grid-template-columns:repeat(5,minmax(0,1fr));gap:.65rem;margin:1rem 0;display:grid}.abstract-stats div,.abstract-card{background:#ffffffc2;border:1px solid #0f172a17;border-radius:18px}.abstract-stats div{padding:.75rem}.abstract-stats span{text-transform:uppercase;letter-spacing:.06em;opacity:.68;font-size:.72rem;display:block}.abstract-stats strong{margin-top:.2rem;font-size:1.1rem;display:block}.abstract-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;display:grid}.abstract-card{padding:1rem}.abstract-card h3{margin:0 0 .75rem;font-size:1rem}.abstract-wide{grid-column:1/-1}.ket-cloud{flex-wrap:wrap;gap:.55rem;display:flex}.ket-chip{cursor:pointer;text-align:left;background:#f8fafcdb;border:1px solid #0f172a24;border-radius:14px;gap:.15rem;padding:.55rem .7rem;display:grid}.ket-chip strong{font-size:.92rem}.ket-chip span{color:var(--muted);font-size:.72rem}.ket-chip.selected{border-color:#f97316cc;box-shadow:0 0 0 3px #f9731624}.ket-chip.hinted{border-color:#3b82f6cc;box-shadow:0 0 0 3px #3b82f624}.ket-chip.active{background:#f5c54238}.ket-main{margin:0 0 .75rem;font-size:1.7rem;font-weight:800}.tensor-row{grid-template-columns:repeat(4,minmax(0,1fr));gap:.5rem;display:grid}.tensor-factor{background:#f8fafccc;border:1px solid #0f172a1a;border-radius:14px;gap:.25rem;padding:.6rem;display:grid}.tensor-factor small,.abstract-muted,.abstract-note{color:var(--muted)}.tensor-factor strong{font-size:1.2rem}.tensor-factor em{font-style:normal;font-weight:700}.operator-list{gap:.45rem;display:grid}.operator-list details{background:#f8fafcb8;border:1px solid #0f172a14;border-radius:12px;padding:.55rem .7rem}.operator-list summary{cursor:pointer}.operator-list ul{margin:.55rem 0 0;padding-left:1rem}.operator-list li,.set-state-row,.selected-operator p{margin:.28rem 0}.set-state-list{gap:.45rem;display:grid}.set-state-row{background:#f8fafcb8;border:1px solid #0f172a14;border-radius:12px;grid-template-columns:minmax(240px,1.6fr) minmax(90px,.5fr) minmax(90px,.5fr);align-items:center;gap:.75rem;padding:.55rem .7rem;display:grid}.set-state-row code{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.phase-grid,.missing-operator-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:.5rem;display:grid}.phase-grid span,.missing-operator-grid div{background:#f8fafcbd;border:1px solid #0f172a1a;border-radius:12px;padding:.55rem}.phase-grid .phase-ok{background:#22c55e24;border-color:#22c55e47}.phase-grid .phase-bad{background:#d645451a;border-color:#d6454540}.missing-operator-grid div{gap:.2rem;display:grid}.missing-operator-grid span{color:var(--muted);font-size:.85rem}.abstract-note{margin-bottom:0;line-height:1.45}@media (max-width:1100px){.abstract-stats,.abstract-grid,.tensor-row,.phase-grid,.missing-operator-grid,.set-state-row{grid-template-columns:1fr}}.lab-shell{gap:1.25rem}.representation-switch-panel{justify-content:space-between;align-items:center;gap:1rem;padding:1rem 1.25rem;display:flex}.representation-switch-panel h2{margin:.1rem 0 .35rem}.representation-switch-panel p{color:var(--muted);margin:0}.representation-select-label{min-width:240px;color:var(--muted);letter-spacing:.08em;text-transform:uppercase;gap:.4rem;font-size:.78rem;font-weight:800;display:grid}.representation-select-label select{border:1px solid var(--border);width:100%;color:var(--text);font:inherit;letter-spacing:0;text-transform:none;background:#fff;border-radius:999px;padding:.7rem .9rem}.lab-layout>.panel:last-child{min-width:0}@media (max-width:860px){.representation-switch-panel{flex-direction:column;align-items:stretch}.representation-select-label{min-width:0}}.direction-space-panel{min-width:0}.direction-summary-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:14px;display:grid}.direction-summary-grid>div{border:1px solid var(--line);background:#fff;border-radius:14px;gap:4px;padding:10px;display:grid}.direction-summary-grid span{color:var(--muted);font-size:12px}.direction-summary-grid strong{font-size:22px}.selected-direction-strip,.direction-explanation{background:#f7fbff;border:1px solid #cdd8e8;border-radius:16px;gap:6px;margin-bottom:14px;padding:12px;font-size:13px;line-height:1.45;display:grid}.direction-groups{gap:12px;display:grid}.direction-group{border:1px solid var(--line);background:#ffffff9e;border-radius:16px;padding:12px}.direction-group h3{justify-content:space-between;gap:10px;margin:0 0 10px;font-size:15px;display:flex}.direction-group h3 span{color:var(--muted);font-size:12px;font-weight:500}.direction-node-grid{grid-template-columns:repeat(auto-fit,minmax(112px,1fr));gap:8px;display:grid}.direction-node{cursor:pointer;text-align:left;background:#fffdf9;border:1px solid #d7d0c4;border-radius:12px;gap:3px;min-height:72px;padding:8px;display:grid}.direction-node:hover{transform:translateY(-1px);box-shadow:0 8px 18px #1f29331a}.direction-node.active{background:#f2f9ff;border-color:#5aa9e6}.direction-node.selected{box-shadow:0 0 0 3px var(--accent);border-color:#111827}.direction-node-vector{font-family:Courier New,monospace;font-weight:800}.direction-node-meta,.direction-node-counts{color:var(--muted);font-size:11px}.direction-detail-grid{grid-template-columns:1fr 1fr;gap:12px;margin-top:14px;display:grid}.direction-table-card{border:1px solid var(--line);background:#fff;border-radius:16px;min-width:0;padding:12px}.direction-table-card h3{margin:0 0 10px;font-size:15px}.direction-table,.open-pair-list{gap:7px;max-height:320px;padding-right:4px;display:grid;overflow:auto}.direction-row,.open-pair-row{border:1px solid #eee7dc;border-radius:10px;grid-template-columns:auto auto auto 1fr;align-items:center;gap:8px;padding:7px;font-size:12px;display:grid}.direction-row.selected{background:#fff8d7;border-color:#111827}.direction-row span:first-child,.open-pair-row span:first-child{font-family:Courier New,monospace;font-weight:800}.open-pair-row{grid-template-columns:auto 1fr}.open-pair-row strong,.open-pair-row small{grid-column:2}.open-pair-row small{color:var(--muted)}.empty-note{color:var(--muted);margin:4px 0;font-size:12px}@media (max-width:1100px){.direction-detail-grid,.direction-summary-grid{grid-template-columns:1fr 1fr}}@media (max-width:760px){.direction-detail-grid,.direction-summary-grid{grid-template-columns:1fr}}.hyperplane-panel{min-width:0}.hyperplane-summary-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:14px;display:grid}.hyperplane-summary-grid>div{border:1px solid var(--line);background:#fff;border-radius:14px;gap:4px;padding:10px;display:grid}.hyperplane-summary-grid span,.hyperplane-slice-header span,.hyperplane-axis-note,.hyperplane-family-header p,.hyperplane-family-stats{color:var(--muted);font-size:12px}.hyperplane-summary-grid strong{font-size:22px}.hyperplane-family-list{gap:14px;display:grid}.hyperplane-family{border:1px solid var(--line);background:#ffffff9e;border-radius:18px;padding:12px}.hyperplane-family.selected-inside{background:#f7fff4;border-color:#4caf5073}.hyperplane-family.selected-transversal{background:#f6fbff;border-color:#5aa9e68c}.hyperplane-family.selected-partial{background:#fffaf0;border-color:#f5c542cc}.hyperplane-family-header{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:10px;display:flex}.hyperplane-family-header h3{margin:0;font-size:16px}.hyperplane-family-header p{margin:4px 0 0}.hyperplane-family-stats{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.hyperplane-family-stats span{border:1px solid var(--line);background:#fff;border-radius:999px;padding:4px 8px}.hyperplane-slices{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.hyperplane-slice-card{background:#fffdf9;border:1px solid #ddd5ca;border-radius:15px;gap:8px;padding:10px;display:grid}.hyperplane-slice-card.has-selection{box-shadow:0 0 0 3px var(--accent);border-color:#111827}.hyperplane-slice-header{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.hyperplane-slice-meta{color:var(--muted);flex-wrap:wrap;gap:6px;font-size:12px;display:flex}.hyperplane-slice-meta span{background:#f4f1ea;border-radius:999px;padding:3px 7px}.hyperplane-mini-grid{grid-template-columns:repeat(3,minmax(42px,1fr));gap:5px;display:grid}.hyperplane-mini-cell{background:#f6f2ea;border:1px solid #e3ddd4;border-radius:10px;flex-wrap:wrap;align-content:flex-start;gap:3px;min-height:42px;padding:4px;display:flex}.hyperplane-mini-cell.count-1,.hyperplane-mini-cell.count-2,.hyperplane-mini-cell.count-3{background:#fff}.hyperplane-empty-dot{color:#b7aca0;margin:auto}.hyperplane-card-dot{background:#f8fafc;border:1px solid #d7d0c4;border-radius:999px;justify-content:center;align-items:center;min-width:28px;padding:2px 4px;font-family:Courier New,monospace;font-size:10px;font-weight:700;display:inline-flex}.hyperplane-card-dot.selected{background:var(--accent);border-color:#111827}.hyperplane-axis-note{margin:0;line-height:1.35}.hyperplane-explanation{background:#f7fbff;border:1px solid #cdd8e8;border-radius:16px;gap:6px;margin-top:14px;padding:12px;font-size:13px;line-height:1.45;display:grid}@media (max-width:1180px){.hyperplane-slices,.hyperplane-summary-grid{grid-template-columns:1fr}.hyperplane-family-header{flex-direction:column}.hyperplane-family-stats{justify-content:flex-start}}.parallel-panel .pc-svg-wrap{background:#fffdf6;border:1px solid #d8d2c4;border-radius:16px;margin-bottom:12px;padding:8px}.pc-svg{width:100%;height:auto;display:block}.pc-axis line{stroke:#b9b2a2;stroke-width:1.4px}.pc-tick{fill:#8c8676}.pc-axis-name{fill:#4d4636;text-transform:uppercase;letter-spacing:.06em;font-size:13px;font-weight:700}.pc-level-label{fill:#7d7666;font-size:10.5px}.pc-line{fill:none;stroke:#a9a08c;stroke-width:1.6px;opacity:.32;transition:opacity .12s,stroke .12s,stroke-width .12s}.pc-line.hovered{opacity:.95;stroke:#5a5142;stroke-width:2.4px}.pc-line.hinted{stroke:#d99a23;opacity:.75;stroke-width:2.2px}.pc-line.completion{stroke:#1f8a4c;opacity:.95;stroke-width:2.6px}.pc-line.completion.missing{stroke-dasharray:7 5;pointer-events:none}.pc-line.selected{stroke:#2b6cb0;opacity:1;stroke-width:3px}.pc-line.selected.valid{stroke:#1f8a4c}.pc-line.selected.invalid{stroke:#c0392b}.pc-hit{fill:none;stroke:#0000;stroke-width:12px;cursor:pointer}.pc-axis-status-row{flex-wrap:wrap;gap:8px;margin-bottom:12px;display:flex}.pc-axis-chip{background:#faf7ee;border:1px solid #d4cdbd;border-radius:12px;gap:2px;padding:8px 10px;font-size:12px;line-height:1.3;display:grid}.pc-axis-chip strong{text-transform:uppercase;letter-spacing:.05em;font-size:11px}.pc-axis-chip small{color:#7d7666}.pc-axis-chip.equal,.pc-axis-chip.different{background:#effaf2;border-color:#9ecdaf}.pc-axis-chip.equal-partial,.pc-axis-chip.different-partial{background:#f3f8ff;border-color:#b7c8e2}.pc-axis-chip.violation{background:#fdf1ef;border-color:#e2a59c}.pc-completion-note{background:#f7fbff;border:1px solid #cdd8e8;border-radius:12px;margin-bottom:12px;padding:8px 10px;font-size:13px}.fourier-chart-wrap{background:#fffdf6;border:1px solid #d8d2c4;border-radius:16px;margin-bottom:12px;padding:8px 8px 4px}.fourier-svg{width:100%;height:auto;display:block}.fourier-baseline{stroke:#b9b2a2;stroke-width:1.2px}.fourier-flat-line{stroke:#8c8676;stroke-width:1px;stroke-dasharray:5 4}.fourier-axis-label{fill:#7d7666;font-size:10px}.fourier-bar{fill:#c9c2b0;cursor:pointer;transition:fill .12s}.fourier-bar:hover{fill:#a89e86}.fourier-bar.active{fill:#8fb6dd}.fourier-bar.active:hover{fill:#6f9fce}.fourier-bar.selection{fill:#d99a23}.fourier-bar.focused{stroke:#4d4636;stroke-width:1.4px}.fourier-chart-caption{color:#7d7666;margin:4px 4px 6px;font-size:11.5px;line-height:1.4}.fourier-focus{background:#f3f8ff;border:1px solid #b7c8e2;border-radius:12px;gap:4px;margin-bottom:12px;padding:10px 12px;font-size:12.5px;display:grid}.fourier-identity{background:#faf7ee;border:1px solid #d4cdbd;border-radius:16px;gap:6px;margin-bottom:12px;padding:12px;font-size:13px;display:grid}.fourier-ok{color:#1f8a4c}.fourier-mismatch{color:#c0392b}.pi-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;margin-bottom:12px;display:grid}.pi-axis-cell{background:#fffdf6;border:1px solid #d8d2c4;border-radius:16px;gap:4px;padding:8px;display:grid}.pi-axis-cell.valid{background:#f4fbf6;border-color:#9ecdaf}.pi-axis-cell.violation{background:#fdf3f1;border-color:#e2a59c}.pi-svg{width:100%;height:auto;display:block}.pi-unit-circle{fill:none;stroke:#d8d2c4;stroke-width:1px;stroke-dasharray:3 3}.pi-reference line{stroke:#e3ddcf;stroke-width:1px}.pi-reference text{fill:#a39b87;font-size:10px}.pi-chain{stroke:#4a6fa5;stroke-width:2.4px}.pi-chain.dashed{stroke-dasharray:6 4;stroke:#1f8a4c}.pi-arrowhead{fill:#4a6fa5}.pi-arrowhead.dashed{fill:#1f8a4c}.pi-resultant{stroke-width:2px;stroke-dasharray:2 3}.pi-resultant.valid{stroke:#1f8a4c}.pi-resultant.violation{stroke:#c0392b}.pi-resultant.waiting{stroke:#a9a08c}.pi-closure{fill:none;stroke:#1f8a4c;stroke-width:2.4px}.pi-axis-meta{text-align:center;gap:2px;font-size:12px;line-height:1.3;display:grid}.pi-axis-meta strong{text-transform:uppercase;letter-spacing:.05em;color:#4d4636;font-size:11px}.pi-values{justify-content:center;gap:6px;display:flex}.pi-values em{background:#faf7ee;border:1px solid #d4cdbd;border-radius:8px;padding:0 6px;font-family:Georgia,serif;font-style:normal}.pi-values em.forced{background:#f4fbf6;border-style:dashed;border-color:#9ecdaf}.pi-magnitude{font-family:Georgia,serif}.pi-magnitude.valid,.pi-status.valid{color:#1f8a4c}.pi-magnitude.violation,.pi-status.violation{color:#c0392b}.pi-status.waiting{color:#7d7666}.pi-empty{background:#fdfbf4;border:1px dashed #c9c2b0;border-radius:16px;gap:6px;margin-bottom:12px;padding:16px;font-size:13px;line-height:1.5;display:grid}.pi-signature{background:#f7fbff;border:1px solid #cdd8e8;border-radius:16px;gap:4px;margin-bottom:12px;padding:12px;font-size:13px;display:grid}.pi-signature.valid{background:#effaf2;border-color:#9ecdaf}.pi-signature.violation{background:#fdf1ef;border-color:#e2a59c}.pi-signature span:first-of-type{font-family:Georgia,serif;font-size:15px}.pi-cards-strip{color:#5a5142;gap:4px;margin-bottom:12px;font-size:12px;display:grid}.pi-cards-strip .forced{color:#1f8a4c}.projects-footer{box-sizing:border-box;background:var(--accent-soft);border:1px solid #b9cee8;border-radius:8px;width:min(680px,100%);margin:18px auto 0;padding:14px 18px}.projects-footer a{color:var(--accent);font-size:.9rem;font-weight:700;text-decoration:none}.projects-footer a:hover,.projects-footer a:focus-visible{color:var(--ink);text-decoration:underline}
