.project-map-page{min-height:70vh}.project-map-builder{gap:18px;display:grid}.project-map-form label,.project-map-tools label,.project-skill-editor label{gap:6px;font-size:.875rem;font-weight:700;display:grid}.project-map-form input,.project-map-form select,.project-map-form textarea,.project-map-tools input,.project-skill-editor input,.project-skill-editor select{border:1px solid var(--border);background:var(--background);border-radius:12px;width:100%;min-height:44px;padding:10px 12px;font-weight:400}.project-pattern-consent{border:1px solid color-mix(in srgb, var(--primary) 35%, transparent);background:color-mix(in srgb, var(--primary) 7%, transparent);border-radius:14px;align-items:flex-start;gap:12px;margin-top:18px;padding:14px;display:flex!important}.project-pattern-consent input{width:20px;min-height:20px;margin-top:2px}.project-pattern-consent span{gap:3px;display:grid}.project-pattern-consent small{color:var(--muted-foreground);font-weight:400}.project-skill-search>div{border:1px solid var(--border);background:var(--background);border-radius:12px;align-items:center;gap:8px;padding-inline:12px;display:flex}.project-skill-search input{border:0;outline:0;padding-inline:0}.project-skill-results,.project-skill-suggestions>div{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.project-skill-results button,.project-skill-suggestions button{border:1px solid var(--border);background:var(--card);border-radius:999px;align-items:center;gap:6px;min-height:40px;padding:7px 12px;font-size:.82rem;font-weight:700;display:inline-flex}.project-skill-results button.is-new{border-color:color-mix(in srgb, var(--primary) 55%, transparent);color:var(--primary)}.project-skill-suggestions{border-top:1px solid var(--border);margin-top:16px;padding-top:14px}.project-skill-suggestions>span{align-items:center;gap:6px;font-size:.82rem;font-weight:800;display:flex}.project-skill-suggestions small{color:var(--muted-foreground);margin-top:8px;display:block}.project-map-shell{border:1px solid color-mix(in srgb, var(--primary) 35%, var(--border));background:var(--card);border-radius:22px;min-width:0;overflow:hidden}.project-map-toolbar{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:16px;padding:14px 16px;display:flex}.project-map-toolbar>div{gap:2px;display:grid}.project-map-toolbar small{color:var(--muted-foreground)}.project-map-toolbar button{flex:none}.project-map-viewport{overscroll-behavior-x:contain;overscroll-behavior-y:auto;touch-action:pan-x pan-y;background:radial-gradient(circle at center, color-mix(in srgb, var(--primary) 13%, transparent), transparent 46%), var(--card);box-shadow:inset 0 0 40px color-mix(in srgb, var(--primary) 6%, transparent);overflow:auto hidden}.project-map-canvas{width:920px;height:700px;position:relative}.project-map-stage{min-width:0;min-height:0;position:relative}.project-bubble-source{z-index:5;border:1px solid var(--border);background:var(--background);min-height:44px;color:var(--foreground);cursor:grab;touch-action:none;border-radius:24px;align-items:center;gap:8px;padding:10px 14px;display:flex;position:absolute;top:12px;left:12px}.project-bubble-source:disabled{opacity:.4;cursor:not-allowed}.project-bubble-ghost{z-index:150;pointer-events:none;border:2px dashed var(--primary);background:var(--background);border-radius:50%;padding:18px;position:fixed;transform:translate(-50%,-50%)}.project-bubble-dialog{border:1px solid var(--border);background:var(--background);width:min(540px,100vw - 24px);max-height:calc(100dvh - 32px);color:var(--foreground);border-radius:8px;margin:auto;padding:20px;overflow:auto}.project-bubble-dialog::backdrop{background:#0000008c}.project-bubble-dialog form,.project-bubble-dialog label{gap:8px;min-width:0;display:grid}.project-bubble-dialog form{gap:18px}.project-bubble-dialog header,.project-bubble-dialog footer{justify-content:space-between;align-items:center;gap:12px;display:flex}.project-bubble-dialog h2{font-size:1.2rem;font-weight:600}.project-bubble-dialog button{min-width:44px;min-height:44px}.project-bubble-dialog :is(input,select){border:1px solid var(--border);background:var(--card);width:100%;min-width:0;color:var(--foreground);border-radius:6px;min-height:44px;padding:8px;font-size:16px}.project-bubble-dialog input[type=color]{padding:4px}.project-link-picker{align-items:end;gap:8px;display:flex}.project-link-picker label{flex:1}.project-link-list{gap:14px;display:grid}.project-link-list li{border-bottom:1px solid var(--border);padding-bottom:12px}.project-link-list strong{overflow-wrap:anywhere;margin-bottom:8px;display:block}.project-link-style{grid-template-columns:minmax(48px,.7fr) minmax(0,1.5fr) minmax(0,1fr) 44px;align-items:end;gap:8px;display:grid}.project-map-canvas>svg{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.project-map-canvas>svg line{stroke:color-mix(in srgb, var(--primary) 45%, var(--border));stroke-width:2px;stroke-dasharray:8 6}.project-map-canvas>svg line.is-have{stroke:#4c9b67}.project-map-canvas>svg line.is-learn{stroke:#c59b33}.project-map-canvas>svg line.is-association{stroke:color-mix(in srgb, var(--primary) 78%, var(--foreground));stroke-width:2.5px;stroke-dasharray:none;opacity:.72}.project-map-root,.project-map-node{text-align:center;border:1px solid var(--border);background:var(--card);color:var(--foreground);box-shadow:0 14px 30px -20px color-mix(in srgb, var(--foreground) 55%, transparent);border-radius:18px;place-items:center;display:grid;position:absolute;transform:translate(-50%,-50%)}.project-map-root{border-color:var(--primary);background:color-mix(in srgb, var(--primary) 18%, var(--card));width:180px;min-height:116px;padding:15px}.project-map-node{width:148px;min-height:86px;padding:10px}.project-map-node small,.project-map-root small{color:var(--muted-foreground);font-size:.7rem}.project-map-node em{background:var(--primary);color:var(--primary-foreground);border-radius:999px;padding:2px 7px;font-size:.62rem;font-style:normal;position:absolute;top:-8px;right:-7px}.project-map-node.is-have{border-color:#4c9b67}.project-map-node.is-learn{border-color:#c59b33}.project-map-node.is-selected{outline:3px solid color-mix(in srgb, var(--primary) 40%, transparent);outline-offset:3px}.project-map-node.is-draggable{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none}.project-map-node.is-dragging{z-index:4;cursor:grabbing;box-shadow:0 18px 46px -18px color-mix(in srgb, var(--primary) 70%, transparent)}.project-map-shell.is-expanded{z-index:120;background:var(--background);padding:max(12px, env(safe-area-inset-top)) max(12px, env(safe-area-inset-right)) max(12px, env(safe-area-inset-bottom)) max(12px, env(safe-area-inset-left));border:0;border-radius:0;grid-template-rows:auto auto minmax(0,1fr) auto;display:grid;position:fixed;inset:0}.project-map-shell.is-expanded .project-map-toolbar{border:1px solid var(--border);background:color-mix(in srgb, var(--card) 94%, transparent);border-radius:18px 18px 0 0}.project-map-shell.is-expanded .project-map-viewport{overscroll-behavior:contain;border:1px solid var(--border);border-top:0;height:100%;min-height:0;overflow:auto}.project-map-shell.is-expanded .project-map-canvas{width:max(1280px,100vw);height:max(820px,100vh - 120px)}.project-map-scaled{flex:none;position:relative;overflow:hidden}.project-map-controls{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:8px;padding:10px 14px;display:flex}.project-map-controls button{border:1px solid var(--border);overflow-wrap:anywhere;border-radius:8px;justify-content:center;align-items:center;gap:6px;min-width:44px;min-height:44px;padding:6px 10px;font-size:.85rem;display:inline-flex}.project-map-controls button:disabled{opacity:.45}.project-map-controls button[aria-pressed=true]{background:var(--accent)}.project-map-zoom,.project-map-custom{gap:4px;min-width:0;display:flex}.project-map-custom{flex:200px}.project-map-custom input{width:100%;min-width:0;font-size:16px}.project-map-pin{max-width:100%}.project-map-controls>small{color:var(--muted-foreground);flex-basis:100%;font-size:.7rem}.project-map-navigation-hint{border:1px solid var(--border);background:var(--card);min-height:42px;color:var(--muted-foreground);text-align:center;border-top:0;border-radius:0 0 18px 18px;justify-content:center;align-items:center;gap:7px;padding:8px 12px;font-size:.78rem;font-weight:700;display:flex}.project-skill-editor button[aria-label^=Remove]{border:1px solid var(--border);border-radius:12px;place-items:center;min-width:44px;min-height:44px;display:grid}.project-map-saved-card{text-align:left;border:1px solid var(--border);background:var(--card);border-radius:16px;gap:3px;min-height:112px;padding:16px;display:grid}.project-map-saved-card span,.project-map-saved-card small{color:var(--muted-foreground)}.project-map-saved-card.is-active{border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb, var(--primary) 15%, transparent)}@media (width>=980px){.project-map-builder{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr)}.project-map-viewport,.project-map-shell,.project-skill-editor,.project-map-builder>.mt-5,.project-map-builder>p{grid-column:1/-1}}@media (width<=720px){.project-map-shell{margin-inline:-4px}.project-map-toolbar{align-items:flex-start}.project-map-toolbar small{max-width:24ch}.project-map-toolbar button{min-height:44px}.project-map-canvas{transform-origin:0 0}.project-map-shell.is-expanded{padding:max(8px, env(safe-area-inset-top)) max(8px, env(safe-area-inset-right)) max(8px, env(safe-area-inset-bottom)) max(8px, env(safe-area-inset-left));margin-inline:0}.project-map-shell.is-expanded .project-map-toolbar{grid-template-columns:minmax(0,1fr) auto;gap:8px;padding:10px;display:grid}.project-map-shell.is-expanded .project-map-toolbar button{padding-inline:12px}.project-map-shell.is-expanded .project-map-canvas{width:1120px;height:780px}.project-map-navigation-hint{font-size:.7rem}}@media (prefers-reduced-motion:reduce){.project-map-node{transition:none}}.project-three-scene{z-index:6;color:#173e2a;background:#edf4ef;position:absolute;inset:0}.dark .project-three-scene{color:#f4f8f4;background:#0e241b}.project-three-canvas{position:absolute;inset:60px 0 0}.project-three-canvas canvas{touch-action:none;width:100%;height:100%;display:block}.project-three-tools{z-index:2;flex-wrap:wrap;gap:6px;max-width:calc(100% - 16px);display:flex;position:absolute;inset:8px 8px auto}.project-bubble-appearance{grid-template-columns:90px minmax(0,1fr);align-items:center;gap:16px;display:grid}.project-bubble-appearance input[type=color]{width:60px;height:44px;padding:3px}.project-bubble-appearance input[type=range]{width:100%;min-width:0;padding:0}.project-three-tools button,.project-three-tools select{background:inherit;min-width:44px;height:44px;color:inherit;border:1px solid #789584;border-radius:6px;padding:8px}.project-three-tools select{flex:1;min-width:0;max-width:220px;font-size:14px}.project-three-error{background:inherit;padding:16px;position:absolute;inset:80px 16px auto}.project-map-controls button[aria-pressed=true]{outline-offset:-3px;outline:2px solid}@media (width<=420px){.project-three-tools select{flex:1 0 100%;max-width:100%}.project-bubble-dialog .project-link-style{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}
