:root{font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#18251f;background:#f6f8f5}*{box-sizing:border-box}body{margin:0}button,input{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible{outline:3px solid #a9d9b6;outline-offset:2px}.app{height:100vh;min-height:620px;display:flex;flex-direction:column}.topbar{height:82px;flex:none;display:flex;align-items:center;justify-content:space-between;padding:0 32px;background:#fff;border-bottom:1px solid #e4ebe5}.brand{display:flex;gap:13px;align-items:center}.brand-mark,.modal-icon{display:grid;place-items:center;background:#277b53;color:white;border-radius:13px;font-size:27px;width:42px;height:42px}.brand strong{display:block;font-size:17px;letter-spacing:-.4px}.brand span:not(.brand-mark){display:block;color:#7d8b82;font-size:12px;margin-top:2px}.top-actions{display:flex;align-items:center;gap:26px}.top-hint{font-size:13px;color:#839087}.primary{background:#267c53;border:1px solid #267c53;color:white;border-radius:10px;font-weight:650;padding:12px 18px;box-shadow:0 5px 13px #267c5320}.primary:hover{background:#1c6944}.workspace{display:flex;flex:1;min-height:0;padding:16px;gap:16px}.graph-panel{position:relative;flex:1;min-width:0;background:#fff;border:1px solid #e4ebe5;border-radius:18px;overflow:hidden;box-shadow:0 8px 28px #1b442c09}.graph-toolbar{z-index:2;position:absolute;top:0;left:0;right:0;display:flex;align-items:flex-start;justify-content:space-between;padding:28px 30px;pointer-events:none}.graph-toolbar>*{pointer-events:auto}.eyebrow{font-size:10px;letter-spacing:1.8px;color:#4d9b70;font-weight:800}.graph-toolbar h1{font-size:24px;letter-spacing:-.8px;margin:8px 0 4px}.graph-toolbar p{margin:0;color:#7b8a80;font-size:13px}.map-tools{display:flex;align-items:center;gap:13px;color:#819087;font-size:12px}.map-tools button{border:1px solid #e3eae5;background:white;border-radius:9px;padding:9px 12px;color:#496251;font-size:12px;font-weight:650;box-shadow:0 2px 8px #1c432012}#cy{height:100%;width:100%;background:radial-gradient(circle at 50% 52%,#f9fcf9 0,#fff 70%)}.graph-footnote{position:absolute;bottom:0;left:0;right:0;z-index:2;display:flex;gap:9px;align-items:center;padding:14px 24px;border-top:1px solid #f0f3f0;background:#fffffff0;font-size:11px;color:#94a098;pointer-events:none}.legend-dot{width:9px;height:9px;background:#69b283;border:2px solid #dff1e5;border-radius:50%}.legend-line{width:22px;border-top:2px solid #b9d9c4;margin-left:11px}.spacer{flex:1}.detail-panel{width:420px;flex:none;background:white;border:1px solid #e4ebe5;border-radius:18px;overflow-y:auto;box-shadow:0 8px 28px #1b442c09}.detail-content{padding:28px}.detail-content h2{font-size:22px;letter-spacing:-.6px;margin:9px 0}.detail-content p{color:#819087;font-size:13px;line-height:1.6}.placeholder-icon{display:grid;place-items:center;margin:80px 0 28px;width:65px;height:65px;background:#eef8f0;border-radius:18px;color:#71b28c;font-size:35px}.empty-state{position:absolute;top:50%;left:50%;transform:translate(-50%,-44%);text-align:center;z-index:1;width:min(370px,90%)}.empty-state[hidden],.modal[hidden],.form-error[hidden]{display:none}.empty-state h2{font-size:20px;margin:16px 0 7px}.empty-state p{color:#87958b;font-size:13px;line-height:1.6;margin-bottom:24px}.empty-art{position:relative;width:140px;height:126px;margin:auto}.empty-art i{position:absolute;width:26px;height:26px;border-radius:50%;background:#d8eedf}.empty-art i:nth-child(1){left:6px;top:61px}.empty-art i:nth-child(2){right:6px;top:25px}.empty-art i:nth-child(3){right:10px;bottom:2px}.empty-art b{position:absolute;left:47px;top:30px;display:grid;place-items:center;width:66px;height:66px;border-radius:20px;background:#eaf6ed;color:#5caa79;font-size:36px;box-shadow:0 9px 24px #267c5316}.empty-art:before,.empty-art:after{content:"";position:absolute;border-top:2px dashed #c7e4d1;width:90px;transform:rotate(-23deg);left:16px;top:65px}.empty-art:after{transform:rotate(29deg);left:52px;top:79px}.detail-heading{display:flex;align-items:center;gap:13px}.avatar{width:52px;height:52px;border-radius:16px;display:grid;place-items:center;background:#e8f5eb;color:#347f55;font-size:22px;font-weight:700}.detail-heading h2{margin:3px 0}.detail-heading small{color:#8d9a90;font-size:11px}.detail-stats{display:flex;gap:8px;margin:24px 0}.stat{flex:1;background:#f5f8f5;border-radius:12px;padding:13px}.stat b{display:block;font-size:19px}.stat span{font-size:11px;color:#859187}.section-title{font-size:11px;font-weight:800;color:#63776a;letter-spacing:.7px;text-transform:uppercase;margin:26px 0 12px}.covers{display:grid;grid-template-columns:repeat(4,1fr);gap:5px}.covers img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:7px;background:#e8efe9}.artist-list{display:flex;flex-wrap:wrap;gap:6px;max-height:200px;overflow:auto}.artist-chip{font-size:11px;border:1px solid #e0eae3;color:#506b58;border-radius:99px;padding:6px 9px;background:#f9fbf9}.connection{display:block;width:100%;text-align:left;border:1px solid #e5ece6;background:white;border-radius:10px;padding:10px 12px;margin:7px 0}.connection:hover{border-color:#78b991;background:#f8fbf8}.connection b{display:block;font-size:12px;color:#355b42}.connection span{display:block;color:#87978a;font-size:11px;margin-top:3px}.back-link{border:0;background:none;color:#438663;padding:0;margin-bottom:20px;font-size:12px;font-weight:700}.shared-list{margin:14px 0;padding:0;list-style:none;max-height:55vh;overflow:auto}.shared-list li{padding:9px 0;border-bottom:1px solid #edf1ee;font-size:13px;color:#4f6655}.modal{position:fixed;inset:0;z-index:10;display:grid;place-items:center}.modal-backdrop{position:absolute;inset:0;background:#14251c80;backdrop-filter:blur(3px)}.modal-card{position:relative;width:min(440px,calc(100vw - 30px));padding:32px;background:white;border-radius:20px;box-shadow:0 20px 80px #13241b4d}.close{position:absolute;right:19px;top:16px;border:0;background:none;font-size:28px;color:#8b9a8d}.modal-icon{margin-bottom:22px}.modal-card h2{font-size:24px;letter-spacing:-.7px;margin:7px 0}.modal-card p{font-size:13px;color:#7f8d83;line-height:1.5;margin:0 0 23px}.modal-card label{display:block;font-size:12px;font-weight:700;margin:15px 0 7px}.modal-card input{width:100%;height:43px;padding:0 12px;border:1px solid #dce6df;border-radius:9px;outline:0;background:#fbfcfb;font-size:13px}.modal-card input:focus{border-color:#7ab68d}.modal-card .submit{width:100%;margin-top:22px}.form-error{padding:10px 12px;background:#fff0ed;color:#a84034;border-radius:8px;font-size:12px;margin-top:13px}.modal-card .form-note{text-align:center;font-size:11px;margin:12px 0 0}@media(max-width:850px){.topbar{padding:0 16px}.top-hint{display:none}.workspace{padding:8px;gap:8px}.detail-panel{width:320px}.graph-toolbar{padding:20px}.graph-toolbar p,.map-tools span{display:none}.graph-footnote{font-size:10px}}@media(max-width:650px){.app{min-height:100vh;height:auto}.topbar{height:70px}.brand span:not(.brand-mark){display:none}.brand strong{font-size:14px}.top-actions .primary{font-size:12px;padding:9px}.workspace{display:block}.graph-panel{height:65vh;min-height:430px}.detail-panel{width:100%;margin-top:8px;min-height:220px}.placeholder-icon{margin-top:20px}.graph-footnote{font-size:9px}.graph-footnote .spacer{display:none}}

.shared-artists,.shared-tracks{max-height:240px;margin-top:12px}
.shared-artists li{padding:0}
.shared-artist{display:flex;align-items:baseline;justify-content:space-between;gap:10px;width:100%;padding:9px 8px;border:0;border-radius:8px;background:transparent;color:#4f6655;text-align:left;font-size:13px}
.shared-artist:hover{background:#f0f7f1}
.shared-artist.selected{background:#e0f2e5;color:#1c6843;font-weight:700}
.shared-artist>span:first-child{min-width:0;overflow-wrap:anywhere}
.shared-count{flex:none;color:#759481;font-size:11px;text-align:right}
.shared-artist.selected .shared-count{color:#1c6843}
.track-heading{display:flex;align-items:center;justify-content:space-between;gap:10px}
.track-heading .section-title{margin-bottom:0}
.track-reset{flex:none;margin-top:26px;padding:4px 0;border:0;background:none;color:#438663;font-size:11px;font-weight:700}
.shared-track{display:flex;align-items:center;gap:10px}
.shared-track img,.track-cover-empty{width:34px;height:34px;flex:none;border-radius:6px;object-fit:cover;background:#e8f4eb}
.track-cover-empty{display:grid;place-items:center;color:#79af8c}
.shared-track>span:last-child{min-width:0;overflow-wrap:anywhere}

.workspace[hidden],.artists-view[hidden]{display:none}
.view-nav{display:flex;gap:5px;flex:none;padding:8px 16px;background:#fff;border-bottom:1px solid #e4ebe5}
.view-nav button{padding:8px 14px;border:0;border-radius:9px;background:transparent;color:#64796b;font-size:13px;font-weight:700}
.view-nav button:hover{background:#f0f7f1}
.view-nav button.active{background:#e3f3e8;color:#1c6843}
.artists-view{display:grid;grid-template-columns:minmax(280px,350px) minmax(0,1fr);gap:16px;flex:1;min-height:0;padding:16px}
.catalog-panel,.catalog-detail{min-width:0;background:#fff;border:1px solid #e4ebe5;border-radius:18px;box-shadow:0 8px 28px #1b442c09}
.catalog-panel{display:flex;flex-direction:column;overflow:hidden}
.catalog-heading{flex:none;padding:26px 26px 16px;border-bottom:1px solid #edf1ee}
.catalog-heading h1{margin:8px 0 4px;font-size:24px;letter-spacing:-.8px}
.catalog-heading p{margin:0 0 18px;color:#819087;font-size:13px}
.catalog-heading input{width:100%;padding:11px 12px;border:1px solid #dce6df;border-radius:9px;background:#fbfcfb;font-size:13px}
.catalog-list{flex:1;min-height:0;overflow:auto;padding:8px}
.catalog-item{display:flex;align-items:center;gap:11px;width:100%;padding:9px;border:0;border-radius:10px;background:transparent;text-align:left;color:#355b42}
.catalog-item:hover,.catalog-listener:hover{background:#f0f7f1}
.catalog-item.selected,.catalog-listener.selected{background:#e0f2e5}
.catalog-item img,.catalog-cover-empty{width:42px;height:42px;flex:none;border-radius:8px;object-fit:cover;background:#e8f4eb}
.catalog-cover-empty{display:grid;place-items:center;color:#79af8c;font-size:19px}
.catalog-item-text{min-width:0}
.catalog-item b{display:block;overflow-wrap:anywhere;font-size:13px}
.catalog-item small{display:block;margin-top:3px;color:#819087;font-size:11px}
.catalog-empty,.catalog-loading{padding:20px;color:#819087;font-size:13px}
.catalog-detail{overflow:auto;padding:30px}
.catalog-placeholder{max-width:340px;margin:60px auto;text-align:center;color:#819087}
.catalog-placeholder .placeholder-icon{margin:0 auto 20px}
.catalog-placeholder h2{color:#18251f}
.catalog-placeholder p{font-size:13px}
.catalog-artist-heading{display:flex;align-items:center;gap:18px;padding-bottom:24px;border-bottom:1px solid #edf1ee}
.catalog-artist-heading img,.catalog-artist-cover-empty{width:72px;height:72px;flex:none;border-radius:15px;object-fit:cover;background:#e8f4eb}
.catalog-artist-cover-empty{display:grid;place-items:center;color:#79af8c;font-size:32px}
.catalog-artist-heading h2{margin:5px 0;font-size:25px;overflow-wrap:anywhere}
.catalog-artist-heading p{margin:0;color:#819087;font-size:13px}
.catalog-columns{display:grid;grid-template-columns:minmax(200px,1fr) minmax(260px,1.35fr);gap:26px;min-height:0}
.catalog-listeners{max-height:calc(100vh - 300px);overflow:auto}
.catalog-listener{display:flex;align-items:baseline;justify-content:space-between;gap:12px;width:100%;padding:13px 11px;border:0;border-bottom:1px solid #edf1ee;border-radius:8px;background:transparent;color:#355b42;text-align:left;font-size:13px}
.catalog-listener span{overflow-wrap:anywhere}
.catalog-listener small{flex:none;color:#759481;font-size:11px}
.catalog-tracks-placeholder{padding:14px 0;color:#819087;font-size:13px}
.catalog-track-list{max-height:calc(100vh - 310px);margin-top:0}
@media(max-width:850px){.artists-view{grid-template-columns:minmax(230px,290px) minmax(0,1fr);gap:8px;padding:8px}.catalog-detail{padding:20px}.catalog-columns{grid-template-columns:1fr;gap:4px}.catalog-listeners,.catalog-track-list{max-height:220px}}
@media(max-width:650px){.artists-view{display:block}.catalog-panel{height:42vh;min-height:300px}.catalog-detail{min-height:300px;margin-top:8px}.catalog-columns{grid-template-columns:1fr}.catalog-listeners,.catalog-track-list{max-height:260px}}
