@import url('https://fonts.googleapis.com/css2?family=Cairo:wght@400;500;600;700;800&display=swap');
:root{--bg:#f5f7fb;--surface:#fff;--ink:#182238;--muted:#718096;--line:#e7ebf2;--primary:#6558e8;--primary2:#5145d4;--teal:#0f9d8a;--red:#d94b63;--shadow:0 10px 35px rgba(25,37,65,.055)}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:90px}body{margin:0;background:var(--bg);color:var(--ink);font-family:'Cairo',Tahoma,Arial,sans-serif;font-size:14px;line-height:1.7}a{color:inherit;text-decoration:none}button,input{font:inherit}button{cursor:pointer}.topbar{height:76px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 max(22px,calc((100vw - 1240px)/2));position:sticky;top:0;z-index:20}.brand{display:flex;align-items:center;gap:12px}.brand-icon{display:grid;place-items:center;width:43px;height:43px;border-radius:14px;background:linear-gradient(135deg,#796df6,#5145d4);color:white;font-size:26px;box-shadow:0 7px 18px #6558e833}.brand b{font-size:19px;display:block;letter-spacing:.2px}.brand small{font-size:11px;color:var(--muted);display:block;line-height:1.2}.top-actions{display:flex;align-items:center;gap:12px}.top-actions form{margin:0}.user-pill{padding:7px 12px;border-radius:30px;background:#f4f5fa;color:#48546b;font-size:12px}.container{max-width:1240px;padding:30px 22px 20px;margin:auto}.welcome{display:flex;align-items:center;justify-content:space-between;gap:18px;margin:4px 0 24px}.welcome h1{font-size:28px;line-height:1.35;margin:2px 0 7px;font-weight:800}.welcome p{margin:0}.eyebrow{color:var(--primary);font-size:11px;font-weight:800;letter-spacing:.5px}.muted{color:var(--muted)}.connection{display:inline-flex;align-items:center;gap:8px;padding:9px 13px;border-radius:30px;background:#eaf8f4;color:#14816e;font-size:12px;white-space:nowrap}.connection i{width:7px;height:7px;border-radius:50%;background:#22b98d;box-shadow:0 0 0 4px #22b98d22}.connection.offline{background:#fff0f1;color:#bd334c}.connection.offline i{background:#d94b63;box-shadow:0 0 0 4px #d94b6322}.stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-bottom:22px}.stat-card{background:var(--surface);border:1px solid var(--line);border-radius:17px;padding:20px;display:flex;align-items:center;gap:15px;box-shadow:var(--shadow);min-width:0}.stat-icon{width:48px;height:48px;border-radius:15px;display:grid;place-items:center;font-size:23px}.purple{background:#f0edff;color:#6959e8}.teal{background:#e6f8f4;color:#159a85}.blue{background:#e9f2ff;color:#3576cc}.stat-label{display:block;color:var(--muted);font-size:12px}.stat-card strong{font-size:25px;line-height:1.35;display:block}.status-text{font-size:18px!important;color:#11836e}.node-id{display:block;color:#9aa4b5;font-size:9px;max-width:230px;overflow-wrap:anywhere}.tabs{display:flex;gap:7px;align-items:center;border-bottom:1px solid var(--line);margin-bottom:22px;overflow-x:auto}.tab{padding:11px 15px;color:#7b8799;white-space:nowrap;border-bottom:2px solid transparent;font-weight:700}.tab.active,.tab:hover{color:var(--primary);border-color:var(--primary)}.tab span{font-size:11px;background:#f0edff;padding:1px 7px;border-radius:20px;margin-right:4px}.panel{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:24px;margin-bottom:20px;box-shadow:var(--shadow);scroll-margin-top:90px}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:20px}.panel-head h2{margin:0 0 3px;font-size:18px}.panel-head p{margin:0;font-size:12px}.tag{display:inline-flex;align-items:center;padding:4px 10px;border-radius:8px;background:#f0edff;color:#6558e8;font-size:11px;font-weight:700;white-space:nowrap}.tag-green{background:#e7f8f1;color:#128268}.tag-gray{background:#f0f2f6;color:#788395}.btn{border:1px solid transparent;border-radius:10px;padding:9px 15px;font-weight:700;font-size:12px;display:inline-flex;align-items:center;justify-content:center;gap:6px;white-space:nowrap;transition:.18s ease}.btn:hover{transform:translateY(-1px)}.btn.primary{background:var(--primary);color:#fff;box-shadow:0 5px 13px #6558e822}.btn.primary:hover{background:var(--primary2)}.btn.outline{background:white;border-color:#dce1eb;color:#4d5870}.btn.ghost{background:#f6f7fb;color:#59657a}.btn.danger{background:#fff1f3;color:#c13b53}.btn.small{padding:6px 10px;font-size:11px;border-radius:8px}.btn.full{width:100%;padding:12px}.upload-form{display:flex;gap:14px;align-items:stretch}.dropzone{flex:1;border:1.5px dashed #c9c9ee;background:#fafaff;border-radius:14px;padding:19px;display:flex;align-items:center;justify-content:center;gap:6px;flex-direction:column;min-height:170px;cursor:pointer;text-align:center}.dropzone input{max-width:100%;font-size:12px}.dropzone b{font-size:13px}.dropzone small{color:var(--muted);font-size:11px}.upload-icon{display:grid;place-items:center;width:35px;height:35px;background:#eeecff;color:var(--primary);border-radius:11px;font-size:23px}.submit-upload{align-self:flex-end;min-height:43px}.search{display:flex;align-items:center;gap:8px;background:#f7f8fb;border:1px solid var(--line);border-radius:10px;padding:0 12px;min-width:250px;color:#8994a7}.search input{background:transparent;border:0;outline:0;padding:9px 0;width:100%;min-width:0}.table-wrap{width:100%;overflow-x:auto}table{border-collapse:collapse;width:100%;min-width:850px}th{text-align:right;color:#8994a6;font-weight:600;font-size:11px;background:#fafbfe;padding:12px 13px;border-bottom:1px solid var(--line)}td{padding:14px 13px;border-bottom:1px solid #edf0f5;vertical-align:middle;font-size:12px}tbody tr:last-child td{border-bottom:0}.file-cell{display:flex;align-items:center;gap:10px;min-width:155px}.file-icon{width:38px;height:38px;display:grid;place-items:center;border-radius:11px;background:#f0edff;color:#6558e8;font-size:21px}.file-cell b{display:block;max-width:190px;overflow-wrap:anywhere}.file-cell small{display:block;color:var(--muted);font-size:10px;max-width:180px;overflow-wrap:anywhere}.cid{display:block;max-width:260px;overflow-wrap:anywhere;word-break:break-all;background:#f7f8fc;border:1px solid #edf0f6;border-radius:7px;padding:6px 8px;color:#4c5770;font-size:10px;direction:ltr;text-align:left;font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.text-btn{border:0;background:transparent;color:var(--primary);font-size:11px;padding:4px 0;font-weight:700}.actions{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.actions form,.ipns-footer form{margin:0}.dropdown{position:relative;display:inline-block}.dropdown-menu{display:none;position:absolute;right:0;top:calc(100% + 5px);min-width:190px;max-height:260px;overflow:auto;background:#fff;border:1px solid var(--line);border-radius:11px;box-shadow:0 14px 35px #17223a20;padding:6px;z-index:12}.dropdown.open .dropdown-menu{display:block}.dropdown-menu a{display:block;padding:8px 10px;border-radius:7px;font-size:11px;white-space:nowrap}.dropdown-menu a:hover{background:#f5f4ff;color:var(--primary)}.empty{padding:36px 15px;text-align:center;color:var(--muted)}.empty>span{display:block;font-size:30px;color:#b6b4ed}.empty b{color:#4d5870}.empty p{font-size:12px;margin:5px 0}.empty.compact{padding:20px}.ipns-create{display:grid;grid-template-columns:1fr 1fr auto;align-items:end;gap:12px;background:#fafaff;border:1px solid #eeedff;border-radius:13px;padding:16px;margin-bottom:18px}.ipns-create label,.publish-form label,.form-grid label,.stack label{display:flex;flex-direction:column;gap:6px;color:#566178;font-size:12px;font-weight:700}.ipns-create input,.publish-form input,.form-grid input,.stack input{border:1px solid #dfe4ed;border-radius:9px;padding:10px 11px;min-width:0;width:100%;background:white;color:var(--ink);outline:none}.ipns-create input:focus,.publish-form input:focus,.form-grid input:focus,.stack input:focus{border-color:#8c82f3;box-shadow:0 0 0 3px #6558e814}.ipns-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.ipns-card{border:1px solid var(--line);border-radius:14px;padding:16px;min-width:0}.ipns-title{display:flex;align-items:center;gap:10px;margin-bottom:16px}.ipns-avatar{width:40px;height:40px;flex-shrink:0;display:grid;place-items:center;border-radius:12px;background:#e6f8f4;color:#148e7b;font-size:22px}.ipns-title>div:nth-child(2){flex:1;min-width:0}.ipns-title h3{font-size:14px;margin:0}.ipns-title small{font-size:10px;color:var(--muted);display:block;overflow-wrap:anywhere}.field-block{margin:12px 0}.field-block label{display:block;font-size:10px;color:#8792a5;margin-bottom:5px}.field-block .cid{max-width:none}.publish-form{display:flex;align-items:end;gap:8px;margin:15px 0}.publish-form label{flex:1;min-width:0}.ipns-footer{display:flex;align-items:center;gap:7px;flex-wrap:wrap;border-top:1px solid #edf0f5;padding-top:13px}.check-label{display:flex;align-items:center;gap:4px;font-size:10px;color:#68748a;max-width:160px}.check-label input{accent-color:var(--primary)}.notice{padding:12px 15px;border-radius:11px;margin:0 0 17px;font-size:12px;border:1px solid transparent;overflow-wrap:anywhere}.notice.success{background:#eaf8f2;color:#167b61;border-color:#d3f0e4}.notice.error{background:#fff0f2;color:#b33149;border-color:#ffdbe1}.notice.warning{background:#fff8e8;color:#8c6720;border-color:#f8e9be;margin:18px 0 0}.gateway-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.gateway-item{border:1px solid var(--line);border-radius:12px;padding:12px;display:flex;align-items:center;gap:10px;min-width:0}.gateway-dot{width:8px;height:8px;border-radius:50%;background:#1ab18b;box-shadow:0 0 0 4px #1ab18b18;flex-shrink:0}.gateway-item div{flex:1;min-width:0}.gateway-item b{display:block;font-size:12px}.gateway-item small{display:block;color:var(--muted);font-size:10px;overflow-wrap:anywhere;direction:ltr;text-align:right}.gateway-item>a{font-size:18px;color:var(--primary)}.footer{display:flex;align-items:center;justify-content:space-between;color:#98a1b1;font-size:10px;padding:8px 2px 20px}.toast{position:fixed;bottom:20px;left:20px;background:#20283a;color:#fff;padding:10px 15px;border-radius:10px;box-shadow:0 10px 35px #0002;opacity:0;transform:translateY(8px);transition:.2s;pointer-events:none;z-index:50;font-size:12px}.toast.show{opacity:1;transform:translateY(0)}.auth-body{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(ellipse at top right,#efedff 0,transparent 42%),var(--bg)}.auth-card{background:#fff;border:1px solid var(--line);border-radius:22px;box-shadow:0 25px 80px #25345b12;padding:32px;width:min(100%,420px)}.auth-card.wide{width:min(100%,720px)}.auth-card .brand{margin-bottom:27px}.auth-card h1{font-size:23px;margin:0 0 5px}.auth-card>p{font-size:12px;margin:0 0 20px}.stack{display:grid;gap:15px}.stack .btn{margin-top:5px}.tiny{font-size:10px;margin-top:18px!important}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.span-all{grid-column:1/-1}.auth-card .notice{margin-bottom:15px}
@media(max-width:900px){.ipns-list{grid-template-columns:1fr}.stats{gap:10px}.stat-card{padding:15px}.stat-icon{width:42px;height:42px}.container{padding-top:22px}}
@media(max-width:640px){body{font-size:13px}.topbar{height:65px;padding:0 14px}.brand-icon{width:38px;height:38px;border-radius:12px}.brand b{font-size:17px}.user-pill{display:none}.top-actions{gap:5px}.container{padding:20px 12px 12px}.welcome{align-items:flex-start;flex-direction:column;margin-bottom:18px}.welcome h1{font-size:23px}.connection{align-self:flex-start}.stats{grid-template-columns:1fr 1fr}.stat-card{padding:12px;gap:10px}.stat-card:nth-child(3){grid-column:1/-1}.stat-card strong{font-size:22px}.node-id{max-width:240px}.panel{padding:16px 12px;border-radius:14px;margin-bottom:14px}.panel-head{align-items:flex-start}.responsive-head{flex-direction:column}.search{width:100%;min-width:0}.upload-form{flex-direction:column}.dropzone{min-height:150px}.submit-upload{width:100%;align-self:stretch}.ipns-create{grid-template-columns:1fr;padding:12px}.ipns-create .btn{width:100%}.publish-form{align-items:stretch;flex-direction:column}.publish-form .btn{width:100%}.ipns-footer{align-items:stretch}.ipns-footer>*{max-width:100%}.ipns-footer form{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.gateway-grid{grid-template-columns:1fr}.gateway-item{padding:10px}.footer{gap:8px;flex-direction:column;align-items:flex-start}.form-grid{grid-template-columns:1fr}.span-all{grid-column:auto}.auth-card{padding:24px 18px}.auth-card.wide{padding:22px 16px}.tabs{margin-bottom:15px}.tab{padding:9px 11px}.ipns-title{flex-wrap:wrap}.ipns-title .text-btn{margin-right:auto}}


/* Refined visual layer */
:root{--bg:#f4f6fb;--surface:#fff;--ink:#17233b;--muted:#738099;--line:#e4e9f2;--primary:#6254e7;--primary2:#4d40ce;--shadow:0 12px 32px rgba(30,42,75,.065)}
body{background:linear-gradient(180deg,#f8f9ff 0,#f4f6fb 280px);color:var(--ink)}
.topbar{box-shadow:0 5px 24px rgba(25,38,70,.045);border-bottom-color:#edf0f7;backdrop-filter:blur(12px)}
.brand-icon{background:linear-gradient(145deg,#887cff 0%,#5b4de0 70%,#483ac5 100%);box-shadow:0 8px 20px rgba(98,84,231,.25);font-weight:800}
.brand b{letter-spacing:-.35px}
.container{padding-top:34px}
.welcome{position:relative;overflow:hidden;padding:24px 26px;border:1px solid #e8e7ff;border-radius:22px;background:linear-gradient(115deg,#fff 0%,#fbfaff 62%,#f0efff 100%);box-shadow:0 10px 32px rgba(65,57,150,.045)}
.welcome:after{content:"";position:absolute;left:-35px;top:-90px;width:220px;height:220px;border-radius:50%;background:radial-gradient(circle,rgba(113,99,244,.12),rgba(113,99,244,0) 70%);pointer-events:none}
.welcome h1{letter-spacing:-.5px}
.eyebrow{display:inline-flex;align-items:center;gap:7px;padding:4px 10px;border-radius:8px;background:#efedff;letter-spacing:0}
.connection{border:1px solid #d8f0e7;box-shadow:0 3px 12px rgba(20,150,110,.04)}
.stats{gap:18px}
.stat-card{border-radius:19px;transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}
.stat-card:hover{transform:translateY(-3px);box-shadow:0 17px 36px rgba(25,37,65,.09);border-color:#d9d7ff}
.stat-icon{box-shadow:inset 0 0 0 1px rgba(90,80,180,.04)}
.stat-card strong{letter-spacing:-.5px}
.tabs{gap:9px;border-bottom-color:#e6eaf2}
.tab{border-radius:10px 10px 0 0;padding:12px 16px}
.tab.active{background:linear-gradient(180deg,#f1efff,rgba(241,239,255,0));}
.panel{border-radius:20px;padding:25px;border-color:#e8ebf3;box-shadow:0 8px 26px rgba(25,37,65,.045);transition:box-shadow .2s ease}
.panel-head h2{letter-spacing:-.25px}
.panel-head p{line-height:1.8}
.btn{min-height:36px;border-radius:10px;transition:transform .18s ease,background .18s ease,box-shadow .18s ease}
.btn.primary{background:linear-gradient(135deg,#7568f2,#5748d7);box-shadow:0 6px 15px rgba(98,84,231,.2)}
.btn.primary:hover{background:linear-gradient(135deg,#6658e8,#493acb);box-shadow:0 8px 18px rgba(98,84,231,.27)}
.btn.outline{border-color:#dfe4ee}
.btn.outline:hover,.btn.ghost:hover{background:#f1efff;border-color:#dedaff;color:#5144d1}
.btn.danger:hover{background:#ffe5e9}
.dropzone{border-color:#c9c5fb;background:linear-gradient(145deg,#fcfbff,#f7f6ff);transition:border-color .2s ease,background .2s ease,transform .2s ease}
.dropzone:hover{border-color:#8175ee;background:#f4f2ff;transform:translateY(-1px)}
.upload-icon{box-shadow:0 5px 12px rgba(98,84,231,.09)}
.search{background:#fafbfe;transition:border-color .2s ease,box-shadow .2s ease}
.search:focus-within{border-color:#a7a0f5;box-shadow:0 0 0 3px rgba(98,84,231,.08)}
th{background:#f7f8fc;color:#6d7890;white-space:nowrap}
tbody tr{transition:background .15s ease}
tbody tr:hover{background:#fafaff}
td{line-height:1.7}
.cid{border-color:#e8ebf3;background:#f8f9fd}
.ipns-create{background:linear-gradient(135deg,#fbfaff,#f6f5ff);border-color:#e9e6ff}
.ipns-card{border-radius:17px;background:linear-gradient(180deg,#fff,#fdfdff);transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}
.ipns-card:hover{transform:translateY(-2px);box-shadow:0 12px 25px rgba(25,37,65,.06);border-color:#dcd8ff}
.ipns-avatar{box-shadow:inset 0 0 0 1px rgba(20,150,130,.08)}
.gateway-item{background:#fff;transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease}
.gateway-item:hover{transform:translateY(-2px);border-color:#d8d3ff;box-shadow:0 8px 18px rgba(25,37,65,.045)}
.footer{border-top:1px solid #e8ebf2;margin-top:6px;padding-top:18px}
.auth-body{position:relative;overflow:hidden;background:radial-gradient(ellipse at 12% 15%,rgba(112,98,242,.12),transparent 34%),radial-gradient(ellipse at 90% 90%,rgba(22,166,148,.09),transparent 32%),#f5f6fc}
.auth-card{position:relative;overflow:hidden;border-color:#e8e9f4;border-radius:24px;box-shadow:0 28px 80px rgba(38,43,91,.12);padding:36px}
.auth-card:before{content:"";position:absolute;inset:0 0 auto;height:5px;background:linear-gradient(90deg,#21b59a,#6557e8,#8a7eff)}
.auth-card .brand{padding-bottom:20px;border-bottom:1px solid #eef0f6;margin-bottom:24px}
.auth-card h1{letter-spacing:-.4px}
.stack label{gap:7px;color:#4f5c75;font-weight:700}
.stack input{margin-top:2px;min-height:45px;border-color:#e0e5ef;border-radius:11px;padding:11px 13px;transition:border-color .2s ease,box-shadow .2s ease}
.stack input:focus{border-color:#948af4;box-shadow:0 0 0 4px rgba(98,84,231,.10);outline:0}
.stack .btn{min-height:46px;font-size:13px}
.notice{border-radius:12px}
@media(max-width:640px){
 .container{padding-top:17px}
 .welcome{padding:18px 16px;border-radius:17px;gap:12px}
 .welcome h1{font-size:22px}
 .stats{gap:9px}
 .stat-card{border-radius:14px}
 .panel{padding:17px 13px;border-radius:16px}
 .panel-head h2{font-size:16px}
 .auth-card{padding:29px 20px;border-radius:20px}
}
