:root{font-family:Palatino Linotype,Book Antiqua,Palatino,serif;line-height:1.5;font-weight:400;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;--ink: #1f1a14;--muted: #6a5c4d;--accent: #1d6fdc;--accent-2: #3aa0ff;--panel: #eef5ff;--card: #f7fbff;--line: #a7c2e6}*{box-sizing:border-box}body{margin:0;min-height:100vh;color:var(--ink);background:radial-gradient(circle at top left,#f2f7ff,#e9f1ff 55%,#dde9fb)}#root{min-height:100vh}.title-left.title-bottom,.title-right.title-bottom{position:relative;left:-24px}.app-shell{display:flex;flex-direction:column;gap:0;padding:0;--header-height: 160px}.app-header{display:flex;position:fixed;top:0;left:0;right:0;z-index:100;flex-wrap:wrap;gap:1.5rem;align-items:center;justify-content:center;text-align:center;padding:.75rem clamp(1.5rem,4vw,4rem);background:var(--bg);border-bottom:none;min-height:80px;pointer-events:none}.title-block{display:flex;flex-direction:column;align-items:center;gap:.35rem;flex:1 1 auto;pointer-events:none}.top-right{display:flex;gap:.65rem;align-items:center;position:absolute;right:clamp(1.5rem,4vw,4rem);top:2.75rem;z-index:101;pointer-events:auto}.top-button-group{position:relative}.tooltip{position:absolute;top:100%;left:40%;transform:translate(-50%);margin-top:.5rem;background:#eef5fffa;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border:1px solid rgba(29,111,220,.2);border-radius:12px;padding:1rem 1.25rem;box-shadow:0 8px 24px #1d6fdc26;min-width:200px;max-width:260px;z-index:100;white-space:normal}.tooltip h3{margin:0 0 .35rem;font-size:.95rem;color:var(--ink);font-weight:600}.tooltip ul{list-style:none;margin:0;padding:0}.tooltip li{padding:.4rem 0;font-size:.85rem;color:var(--ink);line-height:1.4}.tooltip kbd{background:#1d6fdc1a;border:1px solid rgba(29,111,220,.2);border-radius:3px;padding:.15rem .35rem;font-family:monospace;font-size:.75rem;margin-right:.3rem}.setting-item{display:flex;align-items:center;gap:.6rem;padding:.4rem 0;font-size:.85rem;color:var(--ink);cursor:pointer}.setting-item input[type=checkbox]{cursor:pointer}.profile-info{margin:.5rem 0 0;font-size:.9rem;font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.profile-detail{margin:.25rem 0 .75rem;font-size:.8rem;color:#2d343c99}.profile-action{width:100%;padding:.5rem;background:#1d6fdc1f;color:var(--ink);border:1px solid rgba(29,111,220,.2);border-radius:6px;font-size:.85rem;cursor:pointer}.profile-action:hover{background:#1d6fdc2e}.search-row{width:min(560px,90vw);margin-top:.35rem;pointer-events:auto;position:relative}.search-row form{display:flex;gap:.6rem;align-items:center;width:100%}.search-input{flex:1;border-radius:999px;border:1px solid var(--line);padding:.7rem 1.25rem;font-size:1rem;background:#f8fbff;color:var(--ink);box-shadow:0 12px 26px #1d6fdc14;pointer-events:auto}.search-suggestions{position:absolute;top:100%;left:0;right:0;margin-top:.5rem;background:#f8fbff;border:1px solid var(--line);border-radius:12px;box-shadow:0 8px 24px #1d6fdc26;max-height:300px;overflow-y:auto;z-index:1000;display:flex;flex-direction:column}.suggestion-item{padding:.75rem 1.25rem;background:none;border:none;border-bottom:1px solid rgba(29,111,220,.08);text-align:left;color:var(--ink);cursor:pointer;font-size:.95rem;transition:background-color .15s ease}.suggestion-item:last-child{border-bottom:none}.suggestion-item:hover{background-color:#1d6fdc14}.suggestion-item:active{background-color:#1d6fdc1f}.suggestion-item.highlighted,.suggestion-item:focus{background-color:#1d6fdc2e;outline:none}.search-button{border-radius:999px;padding:.7rem 1.4rem;font-weight:600;background:var(--accent);color:#f7fbff;box-shadow:0 12px 26px #1d6fdc33;pointer-events:auto}.search-input:focus{outline:2px solid rgba(58,160,255,.45);outline-offset:2px}.title{font-size:clamp(2.6rem,5vw,4.6rem);margin:0;color:var(--ink);letter-spacing:.02em}.cool-e{display:inline-block;font-size:1.15em;margin-right:.08em;font-family:Impact,sans-serif;font-weight:900;font-style:italic;transform:scaleX(1.1);background:linear-gradient(140deg,#1d6fdc,#3aa0ff,#6ed0ff);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 10px 20px rgba(29,111,220,.28)}.title-stack{display:inline-grid;grid-template-columns:max-content max-content;grid-template-rows:auto auto;column-gap:.1em;row-gap:.05rem;align-items:baseline}.title-grid{display:contents}.title-part{display:inline-flex;align-items:baseline}.title-sub{margin:0;font-size:.7rem;letter-spacing:.18em;text-transform:uppercase;color:var(--accent-2)}.title-sub .title-sub.title-grid{display:grid;grid-template-columns:1fr 1fr;font-size:1.2rem;font-weight:500;letter-spacing:.04em;margin-top:-.5rem;margin-bottom:.5rem;color:#1d6fdc;position:relative;left:-24px}.title-left{grid-column:1;justify-self:start}.title-right{grid-column:2;justify-self:start}.title-top{grid-row:1}.title-bottom{grid-row:2}.title-sub .title-left,.title-sub .title-right{justify-self:center}button{border:none;border-radius:999px;padding:.65rem 1.4rem;font-weight:600;font-size:.95rem;cursor:pointer;transition:transform .16s ease,box-shadow .16s ease,opacity .16s ease}button:disabled{opacity:.55;cursor:not-allowed}.ghost{background:transparent;border:1px solid var(--line);color:var(--ink)}.solid{background:var(--accent);color:#fffaf0;box-shadow:0 12px 26px #e4572e40}button:not(:disabled):hover{transform:translateY(-1px);box-shadow:0 10px 22px #1f1c1726}.app-main{display:grid;grid-template-columns:minmax(0,1fr);gap:1.75rem;align-items:start;padding:0;margin-top:80px}.map-panel{border-radius:28px;padding:0;margin-top:0}.map-canvas{position:relative;overflow:auto;border-radius:20px;background:transparent;border:none;width:100%;height:calc(100vh - 80px);max-height:calc(100vh - 80px);padding:0;box-sizing:border-box;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;pointer-events:auto;scrollbar-width:none}.map-canvas::-webkit-scrollbar{display:none;margin-top:-80px;padding-top:calc(80px + 1.25rem)}.map-content{position:relative}.map-links{position:absolute;inset:0;z-index:1;pointer-events:none}.map-links path{fill:none;stroke:var(--line);stroke-width:2.4px;stroke-linecap:round}.map-nodes{position:relative;z-index:2;width:100%;height:100%;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;pointer-events:none}.node-card{position:absolute;display:flex;align-items:center;justify-content:center;text-align:center;padding:.5rem 1.2rem;background:var(--card);color:var(--ink);border-radius:14px;border:1px solid rgba(201,183,162,.8);box-shadow:0 14px 30px #3627191f;font-weight:600;transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease}.node-wrap{position:absolute;display:block;z-index:2;pointer-events:auto;transition:left .2s cubic-bezier(.34,1.56,.64,1),top .2s cubic-bezier(.34,1.56,.64,1),opacity .2s ease-out,transform .2s cubic-bezier(.34,1.56,.64,1);transform-origin:center}.node-wrap.no-transition{transition:none}.node-card span{pointer-events:none;line-height:1.2}.node-dots{position:absolute;top:calc(100% + 4px);left:50%;transform:translate(-50%);display:inline-flex;align-items:center;justify-content:center;width:60px;height:28px;z-index:10;background:#fffffff2;padding:8px 12px;cursor:pointer;pointer-events:auto;border-radius:20px;box-shadow:0 4px 12px #00000026;-webkit-font-smoothing:antialiased;text-rendering:geometricPrecision;transition:filter .14s ease,background-color .14s ease,outline .14s ease}.node-dots:hover{filter:drop-shadow(0 0 10px rgba(29,111,220,.6))}.node-dots:focus-visible{outline:2px solid rgba(58,160,255,.45);outline-offset:4px;border-radius:999px}.dots-icon{display:block;width:36px;height:12px;fill:var(--accent)}.side-panel{position:fixed;top:calc(var(--header-height) + 1rem);right:0;bottom:0;width:clamp(200px,58vw,700px);padding:1.25rem 1.5rem 1.5rem;background:#eef5fffa;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-left:1px solid rgba(29,111,220,.18);box-shadow:-18px 0 36px #1d6fdc1f;z-index:10;border-radius:24px 0 0 24px;transition:all .3s ease;overflow-y:auto;scrollbar-width:none}.side-panel::-webkit-scrollbar{display:none}.side-panel.expanded{width:100%;border-radius:0;border-left:none}.panel-card{background:transparent;border-radius:18px;padding:0;border:none;box-shadow:none}.panel-header{display:flex;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:1rem;position:sticky;top:0;background:#eef5fffa;padding-bottom:.5rem;z-index:11}.panel-header h2{margin:0;font-size:1.2rem;flex:1}.panel-expand{padding:.4rem .6rem;font-size:1rem;line-height:1;background:#1d6fdc1f;color:var(--ink);border:1px solid rgba(29,111,220,.2);border-radius:6px;cursor:pointer;transition:background-color .2s ease}.panel-expand:hover{background:#1d6fdc2e}.panel-close{padding:.2rem .6rem;font-size:1.2rem;line-height:1;background:#1d6fdc1f;color:var(--ink);border:1px solid rgba(29,111,220,.2);border-radius:6px;cursor:pointer}.panel-summary{margin:0;padding:.75rem;font-size:.95rem;line-height:1.5;color:var(--ink);background:#1d6fdc14;border-left:2px solid var(--accent);border-radius:.25rem}.panel-summary.editable{cursor:pointer;transition:all .2s ease}.panel-summary.editable:hover{background:#1d6fdc26;border-left-color:var(--accent-highlight)}.panel-summary-section{display:flex;flex-direction:column;gap:.5rem}.summary-textarea{width:100%;padding:.75rem;font-size:.95rem;font-family:inherit;line-height:1.5;border:1px solid rgba(29,111,220,.3);border-radius:6px;background:#1d6fdc0d;color:var(--ink);resize:vertical}.summary-textarea:focus{outline:none;border-color:var(--accent);background:#1d6fdc1a;box-shadow:0 0 0 2px #1d6fdc1a}.summary-textarea::placeholder{color:#2d343c80}.summary-save-button{align-self:flex-end;padding:.5rem 1.2rem;background:var(--accent);color:#fff;border:none;border-radius:6px;font-size:.85rem;font-weight:600;cursor:pointer;transition:all .2s ease}.summary-save-button:hover{background:var(--accent-highlight);transform:translateY(-1px)}.summary-save-button:active{transform:translateY(0)}.panel-notes{margin-top:1.2rem;display:flex;flex-direction:column;gap:.75rem}.panel-notes-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.note-add-button{width:32px;height:32px;border-radius:999px;padding:0;display:inline-flex;align-items:center;justify-content:center;background:#7b3fe429;color:#6a2bd8;border:1px solid rgba(123,63,228,.35);font-size:1.25rem;line-height:1;box-shadow:none}.note-add-button:hover{background:#7b3fe438}.notes-list{display:flex;flex-direction:column;gap:.5rem}.note-item{display:flex;align-items:center;gap:.45rem}.note-bullet{color:#6a2bd8;font-size:1rem;line-height:1}.note-input{width:100%;min-height:34px;padding:.4rem .55rem;border-radius:10px;border:1px solid rgba(123,63,228,.35);background:#7b3fe414;color:#5a22c7;font-size:.9rem;line-height:1.35}.note-input::placeholder{color:#5a22c799}.note-delete-button{width:24px;height:24px;border-radius:999px;border:1px solid rgba(123,63,228,.35);background:#7b3fe41f;color:#6a2bd8;font-size:1rem;line-height:1;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0}.note-delete-button:hover{background:#7b3fe433}.note-empty{margin:0;font-size:.85rem;color:#2d343c99}.panel-files{margin-top:1.2rem;display:flex;flex-direction:column;gap:.75rem}.panel-files-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.file-upload-button{width:32px;height:32px;border-radius:999px;padding:0;display:inline-flex;align-items:center;justify-content:center;background:#7b3fe429;color:#6a2bd8;border:1px solid rgba(123,63,228,.35);font-size:1.25rem;line-height:1;box-shadow:none;cursor:pointer;transition:all .2s ease}.file-upload-icon{width:18px;height:18px;display:block}.file-upload-button:hover{background:#7b3fe438}.file-upload-button:disabled{opacity:.5;cursor:not-allowed}.files-list{display:flex;flex-direction:column;gap:.65rem}.file-item{display:flex;align-items:center;justify-content:space-between;padding:.65rem .75rem;border-radius:10px;border:1px solid rgba(123,63,228,.35);background:#7b3fe414;gap:.5rem}.file-link{flex:1;color:#6a2bd8;text-decoration:none;font-size:.9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .2s ease}.file-link:hover{color:#5a22c7;text-decoration:underline}.file-delete-btn{flex-shrink:0;width:24px;height:24px;padding:0;border-radius:50%;border:1px solid rgba(123,63,228,.35);background:transparent;color:#6a2bd8;font-size:.75rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.file-delete-btn:hover{background:#ff00001a;border-color:#ff000080;color:#dc2626}.file-empty{margin:0;font-size:.85rem;color:#2d343c99}.panel-delete-section{margin-top:1.2rem;padding-top:.9rem;border-top:1px solid rgba(201,183,162,.3);display:flex;justify-content:flex-end}.delete-node-button{width:auto;min-height:30px;padding:.35rem .7rem;background:#dc26261a;color:#dc2626;border:1px solid rgba(220,38,38,.3);border-radius:7px;font-size:.82rem;font-weight:600;cursor:pointer;transition:all .2s ease;display:inline-flex;align-items:center;justify-content:center}.delete-node-button:hover{background:#dc262626;border-color:#dc262680;transform:translateY(-1px)}.delete-node-button:active{transform:translateY(0)}.panel-label{text-transform:uppercase;letter-spacing:.14em;font-size:.7rem;color:var(--muted);margin:0 0 .35rem}.panel-value{margin:0;font-size:1.1rem;font-weight:600;color:var(--ink)}@media(max-width:700px){.app-shell{padding:2rem 1.25rem 2.5rem}.header-actions,button{width:100%}.top-right{width:100%;justify-content:center;position:static}.side-panel{position:fixed;width:100%;left:0;right:0}}.modal-overlay{position:fixed;inset:0;background:transparent;display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal-content{background:var(--bg)!important;background-color:#191923!important;border-radius:16px;border:2px solid rgba(0,0,0,.5);box-shadow:0 25px 80px #000000f2,inset 0 0 0 1px #ffffff1a;max-width:400px;width:90%;overflow:hidden;opacity:1;animation:slideUp .3s cubic-bezier(.34,1.56,.64,1)}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:1.5rem;border-bottom:1px solid rgba(29,111,220,.1)}.modal-header h2{margin:0;font-size:1.25rem;font-weight:600;color:var(--ink)}.modal-close{background:none;border:none;font-size:1.5rem;color:#2d343c99;cursor:pointer;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:6px;transition:all .2s ease}.modal-close:hover{background:#1d6fdc1a;color:var(--ink)}.modal-body{padding:1.5rem;color:#2d343ccc;font-size:.95rem;line-height:1.5}.modal-body p{margin:0}.modal-footer{display:flex;gap:.75rem;padding:1.5rem;border-top:1px solid rgba(29,111,220,.1);justify-content:flex-end}.modal-button{padding:.75rem 1.5rem;border-radius:8px;font-size:.95rem;font-weight:600;cursor:pointer;border:none;transition:all .2s ease}.modal-button-cancel{background:#1d6fdc1a;color:#1d6fdc;border:1px solid rgba(29,111,220,.2)}.modal-button-cancel:hover{background:#1d6fdc26;border-color:#1d6fdc4d}.modal-button-delete{background:#dc2626;color:#fff;border:none}.modal-button-delete:hover{background:#b91c1c;transform:translateY(-1px);box-shadow:0 4px 12px #dc26264d}.modal-button-delete:active{transform:translateY(0)}.notification{position:fixed;bottom:2rem;right:2rem;max-width:400px;padding:1rem;border-radius:8px;box-shadow:0 10px 40px #0000004d;animation:slideIn .3s ease-out;z-index:1000;font-size:.95rem;line-height:1.5;display:flex;flex-direction:column;gap:.75rem}.notification-content{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem}.notification-content p{margin:0;flex:1}.notification-close{background:none;border:none;font-size:1.2rem;cursor:pointer;opacity:.7;padding:0;min-width:auto;line-height:1;transition:opacity .2s ease;flex-shrink:0}.notification-close:hover{opacity:1}.notification-error{background:#fee2e2;color:#991b1b;border:1px solid #fecaca}.notification-error .notification-close{color:#991b1b}.notification-success{background:#dcfce7;color:#166534;border:1px solid #bbf7d0}.notification-success .notification-close{color:#166534}.notification-info{background:#dbeafe;color:#1e40af;border:1px solid #bfdbfe}.notification-info .notification-close{color:#1e40af}@keyframes slideIn{0%{transform:translate(400px);opacity:0}to{transform:translate(0);opacity:1}}.notification{animation:slideIn .3s ease-out forwards,slideOut .3s ease-out 4.7s forwards}@keyframes slideOut{0%{transform:translate(0);opacity:1}to{transform:translate(400px);opacity:0}}@media(max-width:768px){.notification{bottom:1rem;right:1rem;left:1rem;max-width:none}}
