@import "https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=Manrope:wght@400;500;600;700;800&display=swap";:root{color:#e9edf7;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;--bg-color:#0b0e15;--bg-card:#131925;--bg-input:#0d121c;--text-main:#e9edf7;--text-muted:#8a94a8;--text-dim:#596477;--border-color:#252d3c;--border-focus:#82d5bd;--primary:#63c9aa;--primary-hover:#46b897;--primary-light:#63c9aa21;--accent-purple:#9b8cf5;--accent-cyan:#64c8de;--accent-emerald:#63c9aa;--accent-rose:#ff7b86;--radius-sm:7px;--radius-md:11px;--radius-lg:18px;--radius-full:999px;--shadow-lg:0 24px 70px #00000061;--shadow-glow:0 0 34px #63c9aa1c;background:#0b0e15;font-family:Manrope,ui-sans-serif,system-ui,sans-serif}*{box-sizing:border-box}html,body,#root{min-width:320px;min-height:100%;margin:0}body{background:#0b0e15;min-height:100vh}button,input{font:inherit}button{cursor:pointer}a{color:inherit}.spinner{border:2px solid #63c9aa38;border-top-color:#76dfbd;border-radius:50%;width:23px;height:23px;animation:.8s linear infinite spin;display:inline-block}.spinner-lg{width:36px;height:36px}@keyframes spin{to{transform:rotate(360deg)}}.loader-container{background-color:var(--bg-color);text-align:center;background-image:radial-gradient(circle at 50% 20%,#3b82f61f 0%,#0000 50%),radial-gradient(circle at 80% 80%,#8b5cf614 0%,#0000 40%);flex-direction:column;justify-content:center;align-items:center;min-height:100vh;padding:2rem;display:flex}.loader-card{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg), var(--shadow-glow);background:#1e293b99;flex-direction:column;align-items:center;gap:1.25rem;padding:2.5rem 3.5rem;display:flex}.loader-brand{align-items:center;gap:.75rem;display:flex}.loader-logo{background:linear-gradient(135deg, var(--primary), var(--accent-purple));border-radius:var(--radius-md);color:#fff;justify-content:center;align-items:center;width:2.75rem;height:2.75rem;display:flex;box-shadow:0 4px 12px #3b82f666}.loader-title{background:linear-gradient(135deg,#fff,#94a3b8);-webkit-text-fill-color:transparent;letter-spacing:-.02em;-webkit-background-clip:text;font-size:1.5rem;font-weight:700}.loader-text{color:var(--text-muted);font-size:.9rem}.portal-shell{background:radial-gradient(at 78% -16%,#40917e29,#0000 38%),#0b0e15;flex-direction:column;height:100vh;display:flex;overflow:hidden}.portal-header{-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);z-index:4;background:#0c1018c4;border-bottom:1px solid #99adc71f;flex:0 0 76px;justify-content:space-between;align-items:center;height:76px;padding:0 clamp(20px,5vw,76px);display:flex;position:sticky;top:0}.brand{align-items:center;gap:11px;text-decoration:none;display:flex}.brand-mark{color:#7de0bd;background:linear-gradient(145deg,#49bf9d33,#49bf9d0a);border:1px solid #71dab95c;border-radius:12px;place-items:center;width:39px;height:39px;display:grid;box-shadow:0 5px 24px #31b18f17}.brand strong{letter-spacing:-.02em;font-size:14px;display:block}.brand small{color:#69c9aa;letter-spacing:.19em;font:500 9px DM Mono,monospace}.header-right{align-items:center;gap:12px;display:flex}.secure-pill{color:#80cdb4;background:#59c09d14;border:1px solid #59c09d2e;border-radius:99px;align-items:center;gap:7px;padding:7px 11px;font-size:11px;display:inline-flex}.user-badge{background:linear-gradient(110deg,#63c9aa1b,#141a24c2);border:1px solid #63c9aa3d;border-radius:999px;align-items:center;gap:9px;min-width:0;max-width:270px;padding:5px 14px 5px 6px;display:inline-flex}.user-avatar{color:#8dddc0;background:#63c9aa29;border:1px solid #63c9aa30;border-radius:50%;flex:0 0 30px;place-items:center;width:30px;height:30px;display:grid}.user-email{text-overflow:ellipsis;white-space:nowrap;color:#e1e8ed;max-width:210px;font-size:11px;line-height:1.3;overflow:hidden}.logout-button{color:#ff9b9d;background:linear-gradient(135deg,#ff7b861c,#ff7b860b);border:1px solid #ff7b8652;border-radius:10px;align-items:center;gap:8px;padding:10px 14px;font-size:12px;font-weight:600;transition:all .2s;display:inline-flex}.logout-button:hover{color:#ffd7d8;background:#ff7b862e;border-color:#ff7b869e;box-shadow:0 4px 18px #ff5b6f1a}.logout-button:focus-visible{outline-offset:3px;outline:2px solid #ff9199cc}.portal-main{flex-direction:column;flex:1;width:100%;max-width:1640px;min-height:0;margin:auto;padding:clamp(20px,3.4vh,38px) clamp(24px,4.2vw,78px) 16px;display:flex}.welcome-row{justify-content:space-between;align-items:flex-end;gap:24px;margin:0 0 clamp(15px,2.5vh,24px);display:flex}.eyebrow{color:#72d0b2;letter-spacing:.17em;margin-bottom:13px;font:500 10px DM Mono,monospace}.welcome-row h1{letter-spacing:-.05em;margin:0;font-size:clamp(27px,4vw,40px);font-weight:700;line-height:1.16}.welcome-row p{color:#8e99ac;margin:11px 0 0;font-size:13px}.refresh-button{color:#d0d8e4;white-space:nowrap;background:#151b27;border:1px solid #303948;border-radius:10px;align-items:center;gap:9px;padding:10px 14px;font-size:12px;transition:all .2s;display:inline-flex}.refresh-button:hover:not(:disabled),.icon-button:hover:not(:disabled){color:#91e0c3;border-color:#6dd1b17a}.refresh-button:disabled,.icon-button:disabled{opacity:.55;cursor:wait}.refreshing{animation:.9s linear infinite spin}.stats-grid{flex:none;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-bottom:clamp(14px,2.3vh,22px);display:grid}.stat-card{background:linear-gradient(125deg,#161d29f2,#121823f5);border:1px solid #252e3d;border-radius:13px;align-items:center;gap:13px;min-height:83px;padding:16px 18px;display:flex;box-shadow:0 8px 24px #0000001c}.stat-icon{border-radius:11px;place-items:center;width:39px;height:39px;display:grid}.frontend-icon{color:#77d8b9;background:#54c29e1f}.backend-icon{color:#a597ff;background:#9684f71f}.saved-icon{color:#72cbe0;background:#58bfd51f}.stat-card strong{letter-spacing:-.04em;font-size:21px;line-height:1.1;display:block}.stat-card div span{color:#8490a3;margin-top:5px;font-size:11px;display:block}.browser-layout{flex:1;grid-template-columns:minmax(290px,.27fr) minmax(0,.73fr);gap:18px;min-height:0;display:grid}.source-panel,.detail-panel{background:#111721e3;border:1px solid #252e3c;border-radius:15px;min-width:0;overflow:hidden;box-shadow:0 13px 40px #00000029}.source-panel{flex-direction:column;padding:21px 17px 17px;display:flex}.source-heading{justify-content:space-between;align-items:center;padding:0 2px 15px;display:flex}.source-heading h2{letter-spacing:-.02em;margin:0;font-size:14px}.source-heading span{color:#788499;margin-top:4px;font-size:10px;display:block}.icon-button{color:#9aa6b9;background:#151c27;border:1px solid #2d3645;border-radius:9px;place-items:center;width:34px;height:34px;transition:all .2s;display:grid}.search-box{color:#768398;background:#0d121b;border:1px solid #293342;border-radius:9px;align-items:center;gap:9px;height:38px;padding:0 11px;display:flex}.search-box:focus-within{border-color:#66cdab8f;box-shadow:0 0 0 3px #66cdab14}.search-box input{color:#e5eaf1;background:0 0;border:0;outline:0;width:100%;padding:0;font-size:11px}.search-box input::placeholder{color:#637084}.source-list{flex:1;padding-top:21px;overflow:auto}.source-group+.source-group{margin-top:20px}.group-label{color:#8793a8;letter-spacing:.12em;align-items:center;gap:8px;padding:0 8px 9px;font:500 11px DM Mono,monospace;display:flex}.group-dot{border-radius:50%;width:6px;height:6px}.group-dot.frontend{background:#72d7b7;box-shadow:0 0 9px #72d7b780}.group-dot.backend{background:#a294ff;box-shadow:0 0 9px #a294ff73}.group-count{color:#758197;letter-spacing:0;margin-left:auto;font-size:10px}.source-item{text-align:left;color:#bac4d3;background:0 0;border:1px solid #0000;border-radius:9px;align-items:center;gap:11px;width:100%;min-height:46px;margin:3px 0;padding:0 10px;transition:all .16s;display:flex}.source-item:hover{color:#f0f3f8;background:#ffffff09}.source-item:disabled{opacity:.6;cursor:wait}.source-item.selected{color:#e8f5ef;background:linear-gradient(90deg,#52b89421,#52b89409);border-color:#65c6a63d}.source-symbol{border-radius:8px;place-items:center;width:30px;height:30px;display:grid}.source-symbol.frontend{color:#70d4b4;background:#54c29e17}.source-symbol.backend{color:#a597ff;background:#9684f71a}.source-code{text-overflow:ellipsis;white-space:nowrap;min-width:0;font:13px DM Mono,monospace;overflow:hidden}.selected-chevron{color:#8ed9bb;margin-left:auto}.empty-group{color:#657186;margin:5px 8px 8px;font-size:10px}.no-results{color:#8893a7;padding:20px 8px;font-size:11px}.inline-alert{color:#ffb2b3;background:#ff7b860f;border:1px solid #ff7b862e;border-radius:9px;align-items:flex-start;gap:8px;margin-top:13px;padding:10px;font-size:10px;display:flex}.inline-alert span{flex:1}.inline-alert button{color:#ffb2b3;background:0 0;border:0;font-size:10px;text-decoration:underline}.source-skeleton{gap:12px;padding-top:22px;display:grid}.source-skeleton i{background:linear-gradient(90deg,#151c27,#202a38,#151c27) 0 0/200% 100%;border-radius:8px;height:34px;animation:1.6s linear infinite sweep}@keyframes sweep{to{background-position:-200% 0}}.detail-panel{flex-direction:column;min-height:0;padding:23px 25px 17px;display:flex}.empty-detail{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;padding:38px 20px;display:flex}.empty-art{color:#80d9bb;background:radial-gradient(circle at 40% 25%,#60c6a32e,#60c6a309);border:1px solid #6bcfae33;border-radius:20px;place-items:center;width:67px;height:67px;margin-bottom:19px;display:grid;box-shadow:0 12px 40px #46ae8c14}.empty-detail h2{letter-spacing:-.03em;margin:0;font-size:16px}.empty-detail p{color:#8994a7;max-width:330px;margin:9px 0 16px;font-size:11px;line-height:1.8}.empty-detail>span{color:#76c9aa;align-items:center;gap:6px;font-size:10px;display:inline-flex}.detail-heading{border-bottom:1px solid #252e3b;justify-content:space-between;align-items:center;padding-bottom:17px;display:flex}.detail-actions{align-items:center;gap:8px;display:flex}.edit-button,.save-button,.init-button{border-radius:9px;justify-content:center;align-items:center;gap:8px;font-size:11px;font-weight:600;transition:all .18s;display:inline-flex}.edit-button{color:#c8bfff;background:#9684f717;border:1px solid #a294ff47;padding:9px 12px}.edit-button:hover{color:#e6e0ff;background:#9684f729;border-color:#a294ff8c}.save-button{color:#07251d;background:linear-gradient(135deg,#8be6c6,#5cc8a2);border:1px solid #7ce0bb;padding:9px 13px;box-shadow:0 4px 15px #50be9721}.save-button:hover:not(:disabled),.init-button:hover:not(:disabled){filter:brightness(1.08);box-shadow:0 5px 18px #50be9733}.save-button:disabled,.init-button:disabled{opacity:.6;cursor:wait}.detail-title{align-items:center;gap:12px;display:flex}.detail-icon{border-radius:10px;place-items:center;width:39px;height:39px;display:grid}.detail-icon.frontend{color:#73d8b8;background:#54c29e1f}.detail-icon.backend{color:#ac9eff;background:#9684f721}.detail-kicker{color:#8490a5;letter-spacing:.13em;font:500 9px DM Mono,monospace}.detail-title h2{color:#ebeff5;margin:3px 0 0;font:600 16px DM Mono,monospace}.code-meta,.viewer-footer{color:#8290a4;justify-content:space-between;align-items:center;font:10px DM Mono,monospace;display:flex}.code-meta{padding:13px 2px}.code-meta>span:first-child,.viewer-footer>span:first-child{align-items:center;gap:7px;display:inline-flex}.code-meta>span:last-child{color:#9faabd;border:1px solid #303949;border-radius:5px;padding:4px 7px;font-size:9px}.live-dot{background:#6fd4ad;border-radius:50%;width:6px;height:6px;box-shadow:0 0 8px #6fd4ad80}.missing-dot{background:#e6ad69;border-radius:50%;width:6px;height:6px;box-shadow:0 0 8px #e6ad6961}.code-viewer{background:#0b1018;border:1px solid #252e3d;border-radius:10px;flex-direction:column;flex:auto;min-height:0;display:flex;overflow:auto}.code-viewer pre{color:#c7d2e1;tab-size:4;white-space:pre;margin:0;padding:18px 20px;font:11px/1.8 DM Mono,ui-monospace,monospace}.code-viewer code{font:inherit}.detail-loading,.detail-error{box-sizing:border-box;text-align:center;flex-direction:column;flex:auto;justify-content:center;align-items:center;gap:11px;width:100%;min-height:0;padding:24px;display:flex}.detail-loading strong,.detail-error strong{color:#cdd5e2;margin-top:5px;font-size:12px}.detail-loading>span:last-child,.detail-error>span{color:#7e8a9e;max-width:370px;font-size:10px;line-height:1.7}.detail-error>svg{color:#ff989c}.detail-error strong{color:#f3c3c3}.retry-button{color:#c7f1df;background:#54c29e17;border:1px solid #68cca945;border-radius:8px;margin-top:5px;padding:8px 12px;font-size:10px}.missing-config{box-sizing:border-box;text-align:center;flex-direction:column;flex:auto;justify-content:center;align-items:center;gap:11px;width:100%;min-height:0;padding:28px;display:flex}.missing-art{color:#e8b576;background:#e6ad6914;border:1px solid #e6ad6933;border-radius:16px;place-items:center;width:53px;height:53px;display:grid}.missing-config>strong{color:#e4eaf1;margin-top:4px;font-size:13px}.missing-config>span{color:#8490a3;max-width:370px;font-size:10px;line-height:1.7}.action-error,.editor-error{color:#ffb0b3;font-size:10px}.init-button{color:#09251e;background:linear-gradient(135deg,#8be6c6,#5cc8a2);border:1px solid #7ce0bb;margin-top:3px;padding:10px 15px}.editor-wrap{flex-direction:column;flex:auto;gap:10px;width:100%;min-height:0;padding:12px;display:flex}.editor-toolbar{color:#8290a5;letter-spacing:.04em;flex:none;justify-content:space-between;align-items:center;font:10px DM Mono,ui-monospace,monospace;display:flex}.format-button{color:#a9d9c8;background:#54c29e12;border:1px solid #68cca933;border-radius:7px;align-items:center;gap:6px;padding:6px 9px;font:10px Inter,sans-serif;display:inline-flex}.format-button:hover{color:#d6f5e8;border-color:#68cca970}.editor-surface{background:#0b1018;border-radius:7px;flex:auto;min-height:0;position:relative;overflow:hidden}.json-editor{box-sizing:border-box;resize:none;color:#d0e1dc;caret-color:#8de2c2;letter-spacing:normal;word-spacing:normal;tab-size:4;white-space:pre;overflow-wrap:normal;background:0 0;border:0;outline:0;width:100%;height:100%;min-height:0;padding:12px;font:12px/1.8 DM Mono,ui-monospace,monospace;display:block;position:absolute;inset:0;overflow:auto}.json-editor::selection{background:#61aaff40}.json-key{color:#8fc7ff}.json-string{color:#b9dc8f}.json-number{color:#d7a8ff}.json-literal{color:#ffbd78}.json-punctuation{color:#8290a5}.json-editor:focus-visible{outline-offset:3px;outline:1px solid #6cd2b059}.editor-error{background:#ff7b8612;border:1px solid #ff7b8633;border-radius:8px;align-items:center;gap:7px;padding:9px 10px;display:flex}.viewer-footer{padding:12px 2px 0}@media (width<=760px){.portal-shell{height:auto;min-height:100vh;overflow:visible}.portal-header{gap:12px;height:auto;min-height:70px;padding:12px 18px}.secure-pill{display:none}.header-right{gap:10px}.user-email{max-width:115px}.portal-main{min-height:0;padding:35px 16px 18px;display:block}.welcome-row{align-items:flex-start}.welcome-row p{max-width:440px;line-height:1.7}.stats-grid{gap:8px}.stat-card{gap:8px;min-height:77px;padding:11px 10px}.stat-icon{width:32px;height:32px}.stat-card strong{font-size:18px}.stat-card div span{font-size:9px}.browser-layout{grid-template-columns:1fr;min-height:0}.source-panel{max-height:420px;overflow:auto}.detail-panel{min-height:440px}.code-viewer,.detail-loading,.detail-error{min-height:290px}}@media (width<=510px){.portal-header{flex-wrap:wrap}.brand strong{font-size:12px}.header-right{gap:8px;margin-left:auto}.user-badge{gap:7px;max-width:190px;padding-right:9px}.user-avatar{flex-basis:27px;width:27px;height:27px}.user-email{max-width:135px;font-size:10px}.logout-button{padding:9px}.logout-button span{display:none}.welcome-row{flex-direction:column;align-items:stretch}.refresh-button{align-self:flex-start}.stats-grid{grid-template-columns:1fr 1fr}.stat-card:last-child{grid-column:1/-1}}.login-container{background-color:var(--bg-color);background-image:radial-gradient(circle at 10% 20%,#63c9aa26 0%,#0000 40%),radial-gradient(circle at 90% 80%,#8b7cec21 0%,#0000 40%);justify-content:center;align-items:center;min-height:100vh;padding:1.5rem;display:flex}.login-card{-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border:1px solid var(--border-color);border-radius:var(--radius-lg);width:100%;max-width:420px;box-shadow:var(--shadow-lg), var(--shadow-glow);background:#131925cc;flex-direction:column;gap:1.75rem;padding:2.5rem 2.25rem;display:flex}.login-header{text-align:center;flex-direction:column;align-items:center;gap:.75rem;display:flex}.login-logo{background:linear-gradient(135deg, var(--primary), var(--accent-purple));border-radius:var(--radius-md);color:#fff;justify-content:center;align-items:center;width:3.25rem;height:3.25rem;display:flex;box-shadow:0 4px 18px #3fb5934d}.login-title{color:var(--text-main);letter-spacing:-.02em;font-size:1.6rem;font-weight:700}.login-subtitle{color:var(--text-muted);font-size:.875rem}.login-form{flex-direction:column;gap:1.25rem;display:flex}.form-group{flex-direction:column;gap:.4rem;display:flex}.form-label{color:var(--text-muted);font-size:.85rem;font-weight:600}.input-wrapper{align-items:center;display:flex;position:relative}.input-icon{color:var(--text-dim);pointer-events:none;position:absolute;left:.85rem}.form-input{background:var(--bg-input);border:1px solid var(--border-color);border-radius:var(--radius-md);width:100%;color:var(--text-main);outline:none;padding:.75rem .85rem .75rem 2.5rem;transition:border-color .2s,box-shadow .2s}.form-input:focus{border-color:var(--border-focus);box-shadow:0 0 0 3px #63c9aa29}.form-input.has-error{border-color:var(--accent-rose)}.inline-error{color:#fb7185;align-items:center;gap:.35rem;font-size:.8rem;display:flex}.common-error-banner{color:#fda4af;border-radius:var(--radius-md);background:#f43f5e1f;border:1px solid #f43f5e4d;align-items:center;gap:.6rem;padding:.75rem 1rem;font-size:.875rem;display:flex}.btn-submit{color:#fff;border-radius:var(--radius-md);background:linear-gradient(135deg,#63c9aa,#3cae8c);justify-content:center;align-items:center;gap:.5rem;width:100%;margin-top:.5rem;padding:.85rem;font-weight:600;transition:all .2s;display:flex;box-shadow:0 4px 16px #3bb18f40}.btn-submit:hover:not(:disabled){opacity:.92;box-shadow:0 6px 18px #3bb18f5c}.btn-submit:disabled{opacity:.65;cursor:not-allowed}
