.icon{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.icon-sm{width:17px;height:17px}
.icon-lg{width:24px;height:24px}

.network-banner{
  position:fixed;top:0;left:0;right:0;z-index:1000;
  background:#17212B;color:#fff;padding:8px 14px;text-align:center;font-size:12px;font-weight:800
}

.app-shell{min-height:100dvh}
.sidebar{
  display:none;position:fixed;left:0;top:0;bottom:0;width:var(--sidebar-w);
  background:var(--c-navy);color:#D6E3EC;padding:20px 14px;z-index:40
}
.sidebar-brand{display:flex;align-items:center;gap:10px;color:#fff;font-size:19px;font-weight:900;padding:0 8px 18px}
.brand-mark{width:34px;height:34px;border-radius:10px;background:#fff;color:var(--c-navy);display:grid;place-items:center}
.side-nav{display:grid;gap:4px;margin-top:8px}
.side-link{
  min-height:42px;border:0;background:transparent;color:#C6D5E0;border-radius:10px;
  padding:9px 11px;display:flex;align-items:center;gap:10px;text-align:left;font-size:13px;font-weight:800
}
.side-link:hover,.side-link.active{background:rgba(255,255,255,.10);color:#fff}
.sidebar-profile{
  position:absolute;left:14px;right:14px;bottom:18px;
  display:flex;align-items:center;gap:10px;padding:10px;border:1px solid rgba(255,255,255,.12);border-radius:10px
}
.sidebar-profile strong{font-size:12px;color:#fff}
.sidebar-profile span{display:block;margin-top:2px;font-size:11px;color:#B9CAD7}

.topbar{
  position:sticky;top:0;z-index:30;background:rgba(255,255,255,.96);backdrop-filter:blur(14px);
  border-bottom:1px solid var(--c-line);padding:calc(9px + var(--safe-top)) 14px 9px
}
.topbar-inner{max-width:var(--content-max);margin:auto;display:flex;align-items:center;justify-content:space-between;gap:12px}
.mobile-brand{display:flex;align-items:center;gap:8px;color:var(--c-navy);font-weight:900}
.mobile-mark{width:32px;height:32px;border-radius:10px;background:var(--c-navy);color:#fff;display:grid;place-items:center}
.top-actions{display:flex;align-items:center;gap:8px}
.icon-btn{
  width:var(--tap);height:var(--tap);border:1px solid var(--c-line);background:#fff;color:var(--c-navy);
  border-radius:10px;display:grid;place-items:center;position:relative
}
.unread-dot{width:8px;height:8px;background:var(--c-danger);border:2px solid #fff;border-radius:50%;position:absolute;right:7px;top:7px}
.avatar{width:38px;height:38px;border-radius:11px;background:#EDF2F5;display:grid;place-items:center;font-size:22px;border:0}

.main{max-width:var(--content-max);margin:auto;padding:20px 14px calc(84px + var(--safe-bottom))}

.bottom-nav{
  position:fixed;left:0;right:0;bottom:0;z-index:50;background:rgba(255,255,255,.98);backdrop-filter:blur(14px);
  border-top:1px solid var(--c-line);padding:6px 8px max(6px,var(--safe-bottom))
}
.bottom-inner{max-width:720px;margin:auto;display:grid;grid-template-columns:repeat(5,1fr);gap:3px}
.bottom-link{
  min-height:50px;border:0;background:transparent;color:#74828D;border-radius:10px;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:10px;font-weight:850
}
.bottom-link.active{background:#EEF4F8;color:var(--c-navy)}

.card{background:#fff;border:1px solid var(--c-line);border-radius:var(--radius-md);padding:16px;box-shadow:var(--shadow-sm)}
.card-flat{background:#fff;border:1px solid var(--c-line);border-radius:var(--radius-md);padding:16px}
.hero{background:#fff;border:1px solid var(--c-line);border-radius:var(--radius-md);padding:20px}
.hero-grid{display:grid;grid-template-columns:1fr auto;gap:18px;align-items:start}
.hero-label{font-size:12px;color:var(--c-muted);font-weight:800}
.amount{font-size:36px;line-height:1;font-weight:950;letter-spacing:-.04em;color:var(--c-navy);margin:10px 0 8px}
.hero-icon{width:48px;height:48px;border-radius:12px;background:#EEF4F8;color:var(--c-navy);display:grid;place-items:center}

.badge{display:inline-flex;align-items:center;gap:5px;padding:5px 8px;border-radius:999px;font-size:10px;font-weight:900}
.badge-success{background:var(--c-success-bg);color:var(--c-success)}
.badge-warning{background:var(--c-warning-bg);color:var(--c-warning)}
.badge-danger{background:var(--c-danger-bg);color:var(--c-danger)}
.badge-neutral{background:#EEF4F8;color:var(--c-navy-2)}
.badge-gray{background:#EDF1F4;color:#63717C}

.btn{
  min-height:var(--tap);border:1px solid var(--c-line);border-radius:9px;background:#fff;color:var(--c-navy);
  padding:9px 12px;font-weight:900;font-size:12px;display:inline-flex;align-items:center;justify-content:center;gap:7px
}
.btn-primary{background:var(--c-navy);border-color:var(--c-navy);color:#fff}
.btn-soft{background:#EEF4F8;border-color:transparent}
.btn-danger{background:#fff;border-color:#E8BFC3;color:var(--c-danger)}
.btn-block{width:100%}
.action-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:18px}

.grid{display:grid;gap:14px}
.home-grid{grid-template-columns:1fr}
.quick-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.quick-link{
  min-height:66px;border:1px solid var(--c-line);border-radius:10px;background:#fff;padding:12px;
  display:flex;align-items:center;gap:10px;text-align:left;color:var(--c-text)
}
.flat-icon{width:38px;height:38px;border-radius:10px;background:#EEF4F8;color:var(--c-navy);display:grid;place-items:center;flex:0 0 auto}
.quick-link strong{font-size:13px}
.quick-link span{display:block;font-size:11px;color:var(--c-muted);margin-top:2px}

.list{padding:0;overflow:hidden}
.list-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 14px;border-bottom:1px solid var(--c-line)}
.list-row:last-child{border-bottom:0}
.list-left{display:flex;align-items:center;gap:10px;min-width:0}
.list-title{font-size:13px;font-weight:900}
.list-sub{font-size:11px;color:var(--c-muted);margin-top:2px}
.list-meta{text-align:right;flex:0 0 auto}

.kv{display:grid;grid-template-columns:120px 1fr;gap:10px;padding:9px 0;border-bottom:1px dashed var(--c-line)}
.kv:last-child{border-bottom:0}
.kv span{font-size:11px;color:var(--c-muted)}
.kv strong{text-align:right;font-size:12px}

.utility-grid{display:grid;grid-template-columns:1fr;gap:10px}
.utility-item{display:flex;align-items:flex-start;gap:10px}
.utility-item p{margin-top:4px;font-size:12px;color:var(--c-muted);line-height:1.55}

.notice{border-left:4px solid var(--c-navy-3)}
.notice-warning{border-left-color:var(--c-warning)}
.notice-danger{border-left-color:var(--c-danger)}

.empty-state{text-align:center;padding:34px 16px;color:var(--c-muted)}
.empty-icon{width:48px;height:48px;border-radius:12px;background:#EEF4F8;color:var(--c-navy);display:grid;place-items:center;margin:0 auto 10px}
.empty-state h3{color:var(--c-text);margin-bottom:4px}

.skeleton{background:linear-gradient(90deg,#EDF1F4 25%,#F6F8F9 37%,#EDF1F4 63%);background-size:400% 100%;animation:skeleton 1.4s ease infinite;border-radius:8px}
@keyframes skeleton{0%{background-position:100% 50%}100%{background-position:0 50%}}
.skeleton-line{height:14px;margin:8px 0}
.skeleton-title{height:28px;width:45%;margin-bottom:12px}
.skeleton-card{height:150px}

.form-grid{display:grid;grid-template-columns:1fr;gap:12px}
.form-field small{display:block;color:var(--c-danger);font-size:11px;margin-top:5px}
.form-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}
.avatar-big{width:64px;height:64px;border-radius:16px;background:#EDF2F5;display:grid;place-items:center;font-size:36px}
.avatar-picks{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.avatar-choice{width:44px;height:44px;border:1px solid var(--c-line);background:#fff;border-radius:10px;font-size:22px}
.avatar-choice.active{border-color:var(--c-navy-3);box-shadow:0 0 0 2px rgba(43,107,159,.10)}

.identity-mask{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;letter-spacing:.04em}
.rules-content{white-space:pre-line;line-height:1.68;font-size:14px}
.rule-page{padding:20px 0;border-bottom:1px solid var(--c-line)}
.rule-page:last-child{border-bottom:0}

.chat-shell{display:grid;grid-template-rows:1fr auto;min-height:62vh}
.chat-list{display:grid;gap:10px;align-content:start}
.message{max-width:78%;padding:10px 12px;border:1px solid var(--c-line);border-radius:12px;background:#fff}
.message.mine{justify-self:end;background:#EEF4F8}
.message-meta{font-size:10px;color:var(--c-muted);margin-bottom:3px}
.message-text{white-space:pre-wrap;overflow-wrap:anywhere}
.reply-chip{border-left:3px solid var(--c-navy-3);padding-left:8px;margin-bottom:6px;color:var(--c-muted);font-size:11px}
.chat-composer{position:sticky;bottom:0;background:var(--c-bg);padding-top:10px}
.composer-row{display:grid;grid-template-columns:1fr auto;gap:8px}
.composer-row textarea{min-height:44px;max-height:140px}

.toast-region{position:fixed;z-index:1100;left:14px;right:14px;bottom:calc(88px + var(--safe-bottom));display:grid;gap:8px;pointer-events:none}
.toast{max-width:420px;margin:auto;background:#17212B;color:#fff;border-radius:10px;padding:11px 13px;box-shadow:0 18px 40px rgba(0,0,0,.18);font-size:12px}

.login{
  min-height:100dvh;display:grid;grid-template-columns:1fr;background:var(--c-navy)
}
.login-left{display:none}
.login-right{min-height:100dvh;display:grid;place-items:center;padding:20px}
.login-card{width:min(420px,100%);background:#fff;border:1px solid var(--c-line);border-radius:18px;padding:26px;box-shadow:var(--shadow-md)}
.login-card h1{font-size:24px}
.login-brand{display:flex;align-items:center;gap:10px;margin-bottom:24px;color:var(--c-navy);font-weight:900;font-size:20px}
.field-password{position:relative}
.field-password input{padding-right:52px}
.field-password button{position:absolute;right:4px;top:4px;border:0;background:transparent;color:var(--c-muted);width:40px;height:40px;display:grid;place-items:center}
.login-copy{max-width:560px}
.login-copy h1{font-size:clamp(44px,5vw,68px);line-height:.98;letter-spacing:-.045em;color:#fff;margin-bottom:18px}
.login-copy p{color:#D8E5EE;font-size:16px;line-height:1.65}
.login-point{display:flex;align-items:center;gap:10px;color:#E5EEF4;margin-top:12px}

.update-bar{
  position:fixed;z-index:1050;left:14px;right:14px;bottom:calc(86px + var(--safe-bottom));
  max-width:680px;margin:auto;background:#fff;border:1px solid var(--c-line);border-radius:12px;padding:12px;
  box-shadow:var(--shadow-md);display:flex;align-items:center;justify-content:space-between;gap:12px
}
