:root{--canvas: #ffffff;--yellow: #ffde00;--yellow-hover: #e6c800;--yellow-soft: #fff5b8;--yellow-tint: rgba(255, 222, 0, .22);--yellow-border: rgba(0, 0, 0, .12);--ink: #000000;--text: #383838;--text-strong: #1a1a1a;--muted: #666666;--muted-soft: #818181;--line: #e1d6cb;--surface: #ffffff;--surface-dim: #eceff1;--link: #0019d2;--teal: #38c1b0;--teal-deep: #2aab96;--sky: #6fc2ff;--sky-hover: #52b8f5;--sky-soft: #b8e4ff;--brutal: #000000;--code-bg: #22272e;--code-fg: #adbac7;--ok: #187108;--err: #d90000;--shadow: 0 1px 2px rgba(0, 0, 0, .04), 0 4px 16px rgba(0, 0, 0, .06);--r-sm: 8px;--r-md: 12px;--r-full: 9999px;--font: "Inter", "Pretendard", "Apple SD Gothic Neo", sans-serif;--mono: ui-monospace, "SF Mono", Menlo, monospace;--nav-h: 56px;--primary: var(--yellow);--primary-active: var(--yellow-hover);--primary-soft: var(--yellow-soft);--primary-tint: var(--yellow-tint);--primary-border: var(--yellow-border);--surface-card: var(--surface);--surface-soft: var(--surface-dim);--hairline: var(--line);--body: var(--text);--body-strong: var(--text-strong);--accent-blue: var(--link);--accent-teal: var(--teal);--accent-sky: #0092d7;--code-canvas: var(--code-bg);--code-ink: var(--code-fg);--paper: var(--canvas);--node-topic: var(--link);--node-concept: #6366f1;--node-generation: var(--accent-sky);--node-ingredient: var(--teal);--node-product: var(--ok);--node-company: var(--yellow-hover);--node-flavor: #db2777;--node-rule: var(--muted);--node-default: var(--muted-soft)}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-height:100dvh;font-family:var(--font);font-size:16px;line-height:1.55;color:var(--text-strong);background:var(--canvas);-webkit-font-smoothing:antialiased}a{color:var(--link)}.muted{color:var(--muted);font-size:14px}.top-bar{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;min-height:var(--nav-h);padding:0 20px;background:var(--teal);border-bottom:1px solid color-mix(in srgb,var(--brutal) 12%,transparent);font-size:14px;font-weight:500;color:var(--text)}.top-bar__title{display:flex;flex-direction:column;gap:2px}.top-bar__title h1{margin:0;font-size:1.125rem;font-weight:700;letter-spacing:-.02em;color:var(--ink)}.top-bar__title .meta{margin:0;font-size:13px;color:var(--text);opacity:.85}.top-bar strong{color:var(--text-strong);font-weight:600}.badge{display:inline-block;font-size:11px;font-weight:600;letter-spacing:.04em;padding:4px 10px;border-radius:var(--r-full);background:var(--yellow-soft);color:var(--text-strong)}.eyebrow{margin:0 0 10px;font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted-soft)}.paper{background:var(--surface);border:2px solid var(--brutal);border-radius:2px;box-shadow:4px 4px 0 var(--brutal);padding:20px 18px}.paper h2{margin:8px 0 4px;font-size:1.25rem;font-weight:700;letter-spacing:-.02em;line-height:1.25;color:var(--ink)}.paper h3{margin:16px 0 8px;font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted-soft)}.paper .id{font-family:var(--mono);font-size:12px;color:var(--muted-soft);word-break:break-all}.paper .summary{line-height:1.6;font-size:15px;color:var(--text)}.paper pre{margin:0;padding:12px;border-radius:var(--r-sm);background:var(--code-bg);color:var(--code-fg);font-family:var(--mono);font-size:12px;overflow-x:auto}.paper ul{margin:0;padding-left:1.1rem;font-size:14px}.paper li{margin-bottom:6px}.paper a{color:var(--link);font-weight:500}.doc-path{font-size:12px;color:var(--muted)}.chip-row,.tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.chip,.tag{padding:6px 12px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);font-size:13px;color:var(--text-strong)}.neighbors .edge-type{font-family:var(--mono);font-size:11px;color:var(--link)}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:12px}.filter{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--ink)}.top-bar .filter select{border-color:color-mix(in srgb,var(--brutal) 18%,transparent)}.filter select{padding:8px 10px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);font:inherit;font-size:13px;color:var(--text-strong);cursor:pointer}.filter select:focus{outline:2px solid var(--yellow);outline-offset:1px}.btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:12px 20px;border:none;border-radius:var(--r-sm);font:inherit;font-size:14px;font-weight:600;line-height:1;text-decoration:none;cursor:pointer;transition:background .15s,transform .12s}.btn:active{transform:scale(.98)}.btn-primary{background:var(--yellow);color:var(--ink)}.btn-primary:hover{background:var(--yellow-hover)}.btn-secondary{background:var(--surface);color:var(--text-strong);border:1px solid var(--line)}.btn-secondary:hover{background:var(--surface-dim)}.btn-ghost{background:transparent;color:var(--muted)}.btn-ghost:hover{color:var(--text-strong);background:var(--surface-dim)}.taste-map-shell .top-bar--viewer{background:var(--teal);border-bottom:1px solid color-mix(in srgb,var(--brutal) 12%,transparent)}.taste-map-nav-link{min-height:36px;padding:8px 14px;font-size:13px;text-decoration:none}.taste-map-main,.taste-map-canvas{position:relative}.taste-map-rings{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none;z-index:0}.taste-map-canvas .react-flow{z-index:1}.taste-ring-label{font-family:var(--font);font-size:11px;fill:var(--muted-soft);font-weight:600}.taste-ring-badge{display:inline-block;margin-bottom:8px;padding:4px 10px;border-radius:var(--r-full);font-size:11px;font-weight:600;letter-spacing:.04em}.taste-ring-badge--basic{background:var(--sky-soft);color:var(--ink)}.taste-ring-badge--wrapper{background:var(--yellow-soft);color:var(--ink)}.taste-links{margin:0;padding-left:1.1rem;font-size:14px}.taste-map-legend{position:absolute;bottom:16px;left:16px;z-index:2;display:flex;flex-wrap:wrap;gap:12px;padding:8px 12px;background:#ffffffeb;border:1px solid var(--line);border-radius:var(--r-sm);font-size:12px;color:var(--muted)}.taste-legend-item{display:inline-flex;align-items:center;gap:6px}.taste-legend-item i{display:inline-block;width:12px;height:12px;border-radius:50%;border:1px solid var(--line);font-style:normal}.taste-legend-orbit--inner{background:transparent;border:2px dashed #0092d7}.taste-legend-orbit--outer{background:transparent;border:2px dashed #0019d2}.taste-map-shell .detail-aside .paper .summary{line-height:1.6;font-size:15px;color:var(--text)}.taste-map-shell .detail-aside .paper h3{margin:16px 0 8px;font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted-soft)}.taste-3d-root,.taste-3d-root canvas{margin:0;padding:0;width:100%;height:100%}#root{width:100%;height:100%;min-height:100dvh}.taste-3d-root{position:relative;width:100vw;height:100dvh;overflow:hidden;font-family:var(--font);background:#030308}.taste-3d-canvas-wrap{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;touch-action:none;cursor:grab}.taste-3d-canvas-wrap .taste-3d-html-label{pointer-events:none!important}.taste-3d-canvas-wrap:active{cursor:grabbing}.taste-3d-hero{position:absolute;top:48px;left:48px;z-index:2;pointer-events:none}.taste-3d-hero h1{margin:0;font-weight:900;font-size:clamp(2.5rem,6vw,4.5rem);line-height:.95;letter-spacing:-.04em;color:#fff}.taste-3d-hero h1 span{color:var(--teal)}.taste-3d-hero .eyebrow{color:#ffffff8c}.taste-3d-nav{position:absolute;top:48px;right:48px;z-index:2;display:flex;gap:16px}.taste-3d-nav a{color:#ffffffd9;font-size:14px;font-weight:500;text-decoration:none}.taste-3d-nav a:hover{color:var(--teal)}.taste-3d-hint{position:absolute;bottom:24px;right:48px;z-index:2;margin:0;font-size:12px;color:#ffffff73;pointer-events:none}.taste-3d-satellite-label{display:inline-block;padding:0;background:none;border:none;box-shadow:none;color:#ffffffe0;font-size:12px;font-weight:600;white-space:nowrap;font-family:var(--font);text-shadow:0 0 12px rgba(255,255,255,.35),0 1px 3px rgba(0,0,0,.8)}.taste-3d-satellite-label--on{color:#fff;font-weight:700;text-shadow:0 0 16px rgba(255,255,255,.65),0 0 4px rgba(56,193,176,.5)}.taste-3d-satellite-label--dim{opacity:.5}.taste-3d-satellite-label--dim.taste-3d-satellite-label--on{opacity:.65}.taste-3d-linked-label{display:inline-block;padding:3px 10px;border-radius:999px;background:#000000b8;border:1px solid color-mix(in srgb,var(--linked-accent, #6b4423) 65%,transparent);color:#ffebd2eb;font-size:13px;font-weight:700;white-space:nowrap;font-family:var(--font);text-shadow:0 1px 3px rgba(0,0,0,.85)}.taste-3d-linked-label--on{background:color-mix(in srgb,var(--linked-accent, #6b4423) 92%,#000);border-color:color-mix(in srgb,var(--linked-accent, #6b4423) 55%,#fff);color:#fff;box-shadow:0 0 14px color-mix(in srgb,var(--linked-accent, #6b4423) 55%,transparent)}.taste-3d-detail{position:absolute;bottom:48px;left:48px;z-index:3;max-width:min(360px,calc(100vw - 96px));padding:16px 18px;border-radius:8px;background:#080810e0;border:1px solid rgba(255,255,255,.12);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);pointer-events:auto}.taste-3d-detail-kicker{margin:0 0 6px;font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:#ffffff73}.taste-3d-detail-title{margin:0 0 8px;font-size:20px;font-weight:800;letter-spacing:-.02em;color:#fff}.taste-3d-detail-body{margin:0 0 12px;font-size:13px;line-height:1.55;color:#ffffffc7}.taste-3d-detail-link{display:inline-block;margin-bottom:10px;font-size:13px;font-weight:600;color:var(--teal);text-decoration:none}.taste-3d-detail-link:hover{text-decoration:underline}.taste-3d-detail-close{display:block;margin:0;padding:0;border:none;background:none;color:#ffffff80;font-size:12px;font-weight:500;cursor:pointer;font-family:var(--font)}.taste-3d-detail-close:hover{color:#ffffffd9}.taste-3d-label{display:inline-block;padding:2px 8px;border-radius:4px;background:#000000a6;color:#fff;font-size:11px;font-weight:600;white-space:nowrap;font-family:var(--font)}.taste-3d-label--on{background:#38c1b0e6;color:#000}.taste-3d-hub-label{display:inline-block;padding:4px 10px;border-radius:999px;background:#ffffffeb;border:2px solid #000;font-size:11px;font-weight:700;white-space:nowrap;font-family:var(--font)}@media(max-width:768px){.taste-3d-hero{top:20px;left:20px}.taste-3d-nav{top:20px;right:20px}}
