:root{--bg:#f7f7f5;--surface:#fff;--text:#111;--text-secondary:#5c5c5c;--text-muted:#8a8a8a;--hairline:#e5e5e2;--focus:#111;--danger:#8a2b2b;--ok:#1f5c3d;--sidebar-width:220px;--font:"IBM Plex Sans", "Source Han Sans SC", "Noto Sans SC", "PingFang SC", "Helvetica Neue", Arial, sans-serif;--font-display:"IBM Plex Sans", "Source Han Sans SC", "Noto Sans SC", "PingFang SC", "Helvetica Neue", Arial, sans-serif}*,:before,:after{box-sizing:border-box}html,body,#root{min-height:100%}body{font-family:var(--font);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0}button,input,select,textarea{font:inherit;color:inherit}a{color:inherit;text-decoration:none}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:1px solid var(--focus);outline-offset:2px}.sr-only{clip:rect(0, 0, 0, 0);border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@font-face{font-family:TokenXDisplay;src:url(/assets/TOKENX-q11zj0mr.ttf)format("truetype");font-weight:400;font-style:normal;font-display:swap}.signin{background:#fff;place-items:center;min-height:100dvh;padding:2rem 20px 3rem;display:grid}.signin-cluster{text-align:center;flex-direction:column;align-items:center;width:min(100vw - 40px,520px);display:flex;transform:translateY(-3vh)}.signin-brand{width:max-content;max-width:100%;margin:0 auto}.signin-wordmark-tokenx{font-family:"TokenXDisplay", var(--font-display);letter-spacing:.055em;text-indent:.055em;text-transform:uppercase;color:#111;white-space:nowrap;margin:0 0 clamp(10px,.9vw,14px);font-size:clamp(86px,7.5vw,114px);font-weight:400;line-height:.92}.signin-motto-zh{letter-spacing:.2em;text-indent:.2em;color:#1a1a1a;margin:0 0 clamp(4px,.35vw,5px);font-size:clamp(15px,1.1vw,17px);font-weight:400}.signin-motto-en{letter-spacing:.18em;text-indent:.18em;text-transform:uppercase;color:#8a8a8a;margin:0 0 clamp(28px,2.6vw,38px);font-size:clamp(10px,.72vw,11px);font-weight:500}.signin-page-title{letter-spacing:.04em;color:#111;margin:0 0 .5rem;font-size:clamp(1.02rem,1.1vw,1.15rem);font-weight:500}.signin-page-sub{width:min(100%,320px);color:var(--text-secondary);margin:0 auto clamp(28px,2.6vw,38px);font-size:.86rem;font-weight:400;line-height:1.55}.signin-form-block{width:min(100vw - 48px,clamp(268px,22vw,320px));margin:0 auto}.signin-remembered{margin:0 0 1rem}.signin-identity{letter-spacing:.02em;margin:0 0 .28rem;font-size:1.05rem;font-weight:500}.signin-role{color:var(--text-secondary);margin:0;font-size:.86rem}.signin-form{text-align:left;width:100%}.signin-field{margin-bottom:16px}.signin-field:last-of-type{margin-bottom:0}.signin-field label{letter-spacing:.06em;color:var(--text-secondary);margin-bottom:.35rem;font-size:13px;display:block}.signin-control{background:#f6f6f4;border:1px solid #e8e8e4;border-radius:4px;align-items:stretch;min-height:50px;display:flex;position:relative}.signin-control:after{content:"";transform-origin:50%;pointer-events:none;background:#111;border-radius:0 0 4px 4px;height:2px;transition:transform .16s;position:absolute;bottom:-1px;left:0;right:0;transform:scaleX(0)}.signin-control:focus-within:after{transform:scaleX(1)}.signin-control input{background:0 0;border:0;border-radius:4px;flex:1;width:100%;min-width:0;height:50px;padding:0 14px;font-size:15px}.signin-control--password input{padding-right:.35rem}.signin .signin-control input:focus,.signin .signin-control input:focus-visible{outline:none}.signin input:-webkit-autofill{-webkit-text-fill-color:#111;caret-color:#111;transition:background-color 9999s ease-out;box-shadow:inset 0 0 0 1000px #f6f6f4}.signin input:-webkit-autofill:hover{-webkit-text-fill-color:#111;caret-color:#111;transition:background-color 9999s ease-out;box-shadow:inset 0 0 0 1000px #f6f6f4}.signin input:-webkit-autofill:focus{-webkit-text-fill-color:#111;caret-color:#111;transition:background-color 9999s ease-out;box-shadow:inset 0 0 0 1000px #f6f6f4}.signin-form-block .arrow-submit,.signin-cluster .arrow-submit{color:#fff;cursor:pointer;background:#111;border:0;border-radius:4px;flex-shrink:0;align-self:center;width:38px;min-height:38px;margin:6px;font-size:1.05rem;line-height:1}.signin-form-block .arrow-submit:disabled,.signin-cluster .arrow-submit:disabled{opacity:.35;cursor:not-allowed}.signin-form-block .arrow-submit:focus-visible,.signin-cluster .arrow-submit:focus-visible{outline-offset:2px;outline:1px solid #111}.signin-error{color:var(--danger);text-align:left;margin:.6rem 0 0;font-size:.84rem}.signin-status{color:var(--ok);text-align:left;margin:.6rem 0 0;font-size:.84rem}.signin-links{color:var(--text-muted);flex-direction:column;gap:.65rem;margin-top:1.15rem;font-size:.84rem;display:flex}.signin-links a:hover,.signin-links button:hover{color:var(--text-secondary)}.signin-links button{cursor:pointer;color:inherit;font:inherit;background:0 0;border:0;padding:0}.signin-inner{text-align:center;width:min(320px,100%)}.signin-mark{width:44px;height:44px;margin:0 auto 1.25rem}.signin-wordmark{font-family:var(--font-display);letter-spacing:.42em;text-indent:.42em;margin:0 0 2.75rem;font-size:.72rem;font-weight:500}.arrow-submit{color:inherit;cursor:pointer;background:0 0;border:0;width:2.75rem;font-size:1.05rem;line-height:1}.arrow-submit:disabled{opacity:.35;cursor:not-allowed}.arrow-submit:focus-visible{outline-offset:2px;outline:1px solid #111}@media (width<=420px){.signin{padding:1.35rem 20px 2.4rem}.signin-cluster{transform:translateY(-2vh)}.signin-wordmark-tokenx{font-size:clamp(90px,25vw,96px)}.signin-form-block{width:min(100vw - 48px,clamp(270px,74vw,296px))}.signin-field{margin-bottom:14px}.signin-control,.signin-control input{height:48px;min-height:48px}.signin-control input{padding:0 14px;font-size:16px}.signin-form-block .arrow-submit{width:36px;min-height:36px;margin:6px}.signin-field label{font-size:13px}.signin-motto-zh{font-size:15px}.signin-motto-en{margin-bottom:clamp(28px,7vw,34px);font-size:10px}}.field{text-align:left;margin-bottom:1rem}.field label{letter-spacing:.08em;color:var(--text-secondary);margin-bottom:.45rem;font-size:.78rem;display:block}.field input,.field select,.field textarea{border:1px solid var(--hairline);background:var(--surface);border-radius:0;width:100%;padding:.7rem .8rem}.password-row{border:1px solid var(--hairline);background:var(--surface);grid-template-columns:1fr auto;gap:0;display:grid}.password-row input{border:0}.password-row .arrow-submit{color:inherit;background:0 0;border-radius:0;width:2.75rem;margin:0}.form-error{color:var(--danger);text-align:left;margin:0 0 1rem;font-size:.88rem}.form-status{color:var(--ok);margin:0 0 1rem;font-size:.88rem}.shell{grid-template-columns:var(--sidebar-width) 1fr;grid-template-rows:52px 1fr;grid-template-areas:"top top""side main";min-height:100vh;display:grid}.shell-top{border-bottom:1px solid var(--hairline);background:var(--surface);grid-area:top;justify-content:space-between;align-items:center;padding:0 1.25rem;display:flex}.shell-brand{align-items:center;gap:.65rem;display:flex}.shell-brand img{width:22px;height:22px}.shell-brand span{letter-spacing:.28em;font-size:.72rem;font-weight:500}.shell-user{position:relative}.shell-user>button{cursor:pointer;background:0 0;border:0;font-size:.92rem}.shell-menu{background:var(--surface);border:1px solid var(--hairline);z-index:20;min-width:160px;padding:.35rem 0;position:absolute;top:calc(100% + .4rem);right:0}.shell-menu button{text-align:left;cursor:pointer;background:0 0;border:0;width:100%;padding:.55rem .9rem;font-size:.9rem;display:block}.shell-menu button:hover{background:#f2f2ef}.shell-side{border-right:1px solid var(--hairline);background:var(--surface);grid-area:side;padding:1rem .75rem 2rem;overflow:auto}.nav-section{margin-bottom:1.1rem}.nav-section-label,.nav-link{padding:.35rem .55rem;font-size:.9rem;display:block}.nav-section-label{color:var(--text-muted);letter-spacing:.04em;margin-bottom:.15rem;font-size:.78rem}.nav-link{color:var(--text-secondary);border-left:2px solid #0000}.nav-link.active{color:var(--text);border-left-color:var(--text)}.nav-link.disabled,.nav-link[aria-disabled=true]{opacity:.45;cursor:default}.nav-child{padding-left:1.1rem;font-size:.86rem}.shell-main{grid-area:main;padding:1.5rem 1.75rem 2.5rem;overflow:auto}.page-title{margin:0 0 .35rem;font-size:1.35rem;font-weight:500}.page-sub{color:var(--text-secondary);margin:0 0 1.5rem;font-size:.92rem}.toolbar{justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem;display:flex}.btn{border:1px solid var(--text);background:var(--text);color:#fff;cursor:pointer;padding:.45rem .85rem;font-size:.88rem}.btn:disabled{opacity:.4;cursor:not-allowed}.btn-ghost{color:var(--text);background:0 0}.btn-danger{border-color:var(--danger);color:var(--danger);background:0 0}.table-wrap{border:1px solid var(--hairline);background:var(--surface);overflow:auto}table.data{border-collapse:collapse;width:100%;font-size:.9rem}table.data th,table.data td{text-align:left;border-bottom:1px solid var(--hairline);white-space:nowrap;padding:.7rem .85rem}table.data th{color:var(--text-secondary);letter-spacing:.04em;font-size:.78rem;font-weight:500}table.data tr:last-child td{border-bottom:0}.row-actions{gap:.65rem;display:flex}.row-actions button{cursor:pointer;color:var(--text-secondary);text-underline-offset:2px;background:0 0;border:0;padding:0;font-size:.86rem;text-decoration:underline}.panel{border:1px solid var(--hairline);background:var(--surface);max-width:560px;padding:1.1rem 1.15rem}.panel .field{margin-bottom:.85rem}.panel-actions{flex-wrap:wrap;gap:.6rem;margin-top:1rem;display:flex}.toast{background:var(--text);color:#fff;z-index:40;padding:.65rem .9rem;font-size:.88rem;position:fixed;bottom:1.25rem;right:1.25rem}.coming{color:var(--text-muted);margin-top:2rem;font-size:.95rem}.perm-table{border-collapse:collapse;background:var(--surface);border:1px solid var(--hairline);width:100%;font-size:.88rem}.perm-table th,.perm-table td{border-bottom:1px solid var(--hairline);text-align:center;padding:.55rem .7rem}.perm-table th:first-child,.perm-table td:first-child{text-align:left}.perm-table tr:last-child td{border-bottom:0}.role-tabs{flex-wrap:wrap;gap:.5rem;margin-bottom:1rem;display:flex}.role-tabs button{border:1px solid var(--hairline);background:var(--surface);cursor:pointer;padding:.4rem .7rem;font-size:.88rem}.role-tabs button.active{border-color:var(--text)}.boot{min-height:100vh;color:var(--text-muted);place-items:center;font-size:.9rem;display:grid}.work-grid{gap:.85rem;max-width:640px;display:grid}.work-item{border:1px solid var(--hairline);background:var(--surface);padding:.9rem 1rem}.work-item h3{margin:0 0 .25rem;font-size:.98rem;font-weight:500}.work-item p{color:var(--text-muted);margin:0;font-size:.86rem}.dialog-backdrop{z-index:30;background:#11111147;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.dialog{background:var(--surface);border:1px solid var(--hairline);width:min(420px,100%);padding:1.15rem 1.2rem}.dialog h2{margin:0 0 .5rem;font-size:1.05rem;font-weight:500}.dialog p{color:var(--text-secondary);margin:0 0 1rem;font-size:.9rem}.dialog-wide{width:min(720px,100%)}.filter-bar{flex-wrap:wrap;align-items:flex-end;gap:.75rem 1rem;margin-bottom:1rem;display:flex}.filter-bar label{letter-spacing:.04em;color:var(--text-secondary);flex-direction:column;gap:.35rem;font-size:.78rem;display:flex}.filter-bar input,.filter-bar select{border:1px solid var(--hairline);background:var(--surface);min-width:140px;color:var(--text);border-radius:0;padding:.5rem .65rem}.ops-table{border-collapse:collapse;background:var(--surface);width:100%;font-size:.88rem}.ops-table th,.ops-table td{text-align:left;border-bottom:1px solid var(--hairline);vertical-align:top;padding:.65rem .8rem}.ops-table th{color:var(--text-secondary);letter-spacing:.04em;white-space:nowrap;font-size:.76rem;font-weight:500}.ops-table tr:last-child td{border-bottom:0}.dropzone{border:1px dashed var(--text-muted);background:var(--surface);text-align:center;margin-bottom:1.25rem;padding:2rem 1.25rem}.dropzone.is-active{border-color:var(--text);background:#f2f2ef}.dropzone p{color:var(--text-secondary);margin:0 0 .85rem;font-size:.92rem}.upload-queue{border:1px solid var(--hairline);background:var(--surface);overflow:auto}.progress-track{align-items:center;gap:.5rem;min-width:120px;display:flex}.progress-fill{background:var(--text);flex:1;max-width:80px;height:2px}.progress-indeterminate{color:var(--text-secondary);font-size:.86rem}.status-text{font-weight:500}.muted-line{color:var(--text-muted);margin-top:.25rem;font-size:.82rem}.danger-text{color:var(--danger)}.stat-row{border-top:1px solid var(--hairline);border-bottom:1px solid var(--hairline);flex-wrap:wrap;gap:1rem 1.75rem;margin-bottom:1.25rem;padding:.85rem 0;display:flex}.stat-label{letter-spacing:.06em;color:var(--text-muted);margin-bottom:.2rem;font-size:.72rem;display:block}.section-title{margin:0 0 .65rem;font-size:.98rem;font-weight:500}.pager{color:var(--text-secondary);justify-content:space-between;align-items:center;margin-top:.85rem;font-size:.86rem;display:flex}.pager .row-actions button:disabled{opacity:.35;cursor:not-allowed}.sync-storage-status{flex-wrap:wrap;gap:.85rem 1.75rem;margin-top:.45rem;display:flex}.sync-storage-status>div{flex-direction:column;gap:.15rem;display:flex}.sync-storage-status strong{font-size:.92rem;font-weight:600}.sync-settings{border-bottom:1px solid var(--hairline);margin-bottom:1.75rem;padding-bottom:1.25rem}.sync-settings-grid{flex-wrap:wrap;align-items:center;gap:.85rem 1.5rem;margin-bottom:1rem;display:flex}.sync-check{cursor:pointer;align-items:center;gap:.45rem;font-size:.9rem;display:inline-flex}.sync-check input{width:.95rem;height:.95rem;accent-color:var(--text)}.sync-interval{letter-spacing:.04em;color:var(--text-secondary);align-items:center;gap:.55rem;font-size:.78rem;display:inline-flex}.sync-interval select{border:1px solid var(--hairline);background:var(--surface);min-width:120px;color:var(--text);border-radius:0;padding:.45rem .6rem}.sync-meta{flex-wrap:wrap;gap:.85rem 2rem;margin:0;display:flex}.sync-meta div{margin:0}.sync-meta dt{letter-spacing:.06em;color:var(--text-muted);margin-bottom:.2rem;font-size:.72rem}.sync-meta dd{margin:0;font-size:.9rem}.sync-section{margin-top:1.75rem}.dash-root{max-width:1600px}.dash-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:.85rem;display:flex}.dash-title{margin:0;font-size:1.2rem;font-weight:500;line-height:1.2}.dash-subtitle{color:var(--text-secondary);margin:.15rem 0 0;font-size:.84rem}.dash-header-right{color:var(--text-secondary);flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.65rem;font-size:.82rem;display:flex}.dash-region select{border:1px solid var(--hairline);background:var(--surface);padding:.25rem .45rem;font-size:.82rem}.dash-currency{color:var(--text-muted)}.dash-updated{font-variant-numeric:tabular-nums;color:var(--text)}.dash-refresh{padding:.25rem .55rem;font-size:.8rem}.dash-banner-error,.dash-empty-page{border:1px solid var(--hairline);background:var(--surface);margin-bottom:.85rem;padding:.75rem .9rem;font-size:.88rem}.dash-empty-page p{margin:0 0 .35rem}.dash-empty-page p:last-child{color:var(--text-muted);margin:0}.dash-grid{grid-template-columns:1fr;grid-template-areas:"movement""trend""up""down""recent""freshness";gap:.65rem;display:grid}.dash-cell-movement{grid-area:movement}.dash-cell-freshness{grid-area:freshness}.dash-cell-trend{grid-area:trend}.dash-cell-up{grid-area:up}.dash-cell-down{grid-area:down}.dash-cell-recent{grid-area:recent}@media (width>=900px){.dash-grid{grid-template-columns:1.4fr 1fr;grid-template-areas:"movement freshness""trend up""trend down""recent recent"}.dash-cell-trend .dash-panel-body{min-height:260px}}@media (width>=1200px){.dash-grid{grid-template-columns:1.35fr .9fr;grid-template-areas:"movement freshness""trend up""trend down""recent recent"}.dash-trend-chart{height:280px}}@media (width>=1600px){.dash-grid{grid-template-columns:1.2fr .85fr .85fr;grid-template-areas:"movement movement freshness""trend trend up""trend trend down""recent recent recent"}.dash-trend-chart{height:300px}}.dash-panel{border:1px solid var(--hairline);background:var(--surface);border-radius:2px;min-width:0}.dash-panel-head{border-bottom:1px solid var(--hairline);justify-content:space-between;align-items:center;gap:.75rem;padding:.45rem .7rem;display:flex}.dash-panel-title-row{flex-wrap:wrap;align-items:baseline;gap:.55rem;min-width:0;display:flex}.dash-panel-title{letter-spacing:.02em;margin:0;font-size:.82rem;font-weight:500}.dash-panel-meta{color:var(--text-muted);font-size:.75rem}.dash-panel-action{flex-shrink:0}.dash-link{color:var(--text-secondary);text-underline-offset:2px;font-size:.75rem;text-decoration:underline}.dash-panel-body{padding:.55rem .7rem .7rem}.dash-state{color:var(--text-muted);margin:.4rem 0;font-size:.84rem}.dash-state-error{color:var(--danger)}.dash-skeleton{background:linear-gradient(90deg,#f3f3f1,#fafaf8,#f3f3f1) 0 0/200% 100%;height:3.2rem}.dash-metric-rows{gap:.28rem;display:grid}.dash-metric-rows>div{border-bottom:1px solid #f0f0ed;justify-content:space-between;align-items:baseline;padding:.18rem 0;font-size:.84rem;display:flex}.dash-metric-rows>div:last-child{border-bottom:0}.dash-metric-rows span{color:var(--text-secondary)}.dash-metric-rows strong{font-variant-numeric:tabular-nums;font-weight:500}.dash-dist-bar{background:#f0f0ed;height:4px;margin-top:.55rem;display:flex;overflow:hidden}.dash-dist-bar i{height:100%;display:block}.dash-dist-bar .up{background:#3d6b52}.dash-dist-bar .down{background:#8a4a4a}.dash-dist-bar .flat{background:#b0b0aa}.dash-dist-bar .insuf{background:#d2d2cc}.dash-dist-bar .nodata{background:#ecece9}.mkt-up{color:#1f5c3d}.mkt-down{color:#8a2b2b}.mkt-flat{color:var(--text-muted)}.dash-mover-list,.dash-tape{margin:0;padding:0;list-style:none}.dash-mover-row{border-bottom:1px solid #f0f0ed;gap:.2rem;padding:.4rem 0;display:grid}.dash-mover-row:last-child{border-bottom:0}.dash-mover-name{flex-direction:column;gap:.05rem;min-width:0;display:flex}.dash-mover-name strong{font-size:.84rem;font-weight:500}.dash-mover-name span{color:var(--text-muted);font-size:.72rem}.dash-mover-nums{font-variant-numeric:tabular-nums;flex-wrap:wrap;gap:.55rem;font-size:.8rem;display:flex}.dash-tape li{border-bottom:1px solid #f0f0ed;grid-template-columns:3.2rem 1fr auto auto;align-items:baseline;gap:.45rem;padding:.32rem 0;font-size:.8rem;display:grid}.dash-tape li:last-child{border-bottom:0}.dash-tape-time{color:var(--text-muted);font-variant-numeric:tabular-nums}.dash-tape-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.dash-tape-prices{font-variant-numeric:tabular-nums;color:var(--text-secondary)}.dash-trend-controls{flex-wrap:wrap;align-items:center;gap:.45rem;display:flex}.dash-trend-controls select{border:1px solid var(--hairline);background:#fff;max-width:220px;padding:.15rem .35rem;font-size:.75rem}.dash-range{border:1px solid var(--hairline);display:inline-flex}.dash-range button{cursor:pointer;color:var(--text-secondary);background:0 0;border:0;padding:.15rem .4rem;font-size:.72rem}.dash-range button.active{color:#fff;background:#111}.dash-trend-chart{width:100%;height:220px}@media (width<=899px){.dash-tape li{grid-template-rows:auto auto;grid-template-columns:3rem 1fr}.dash-tape-prices,.dash-tape li>:last-child{grid-column:2}.dash-header-right{justify-content:flex-start}.shell-main{padding:1rem .9rem 2rem}}@media (width<=900px){.shell{grid-template-columns:1fr;grid-template-areas:"top""main"}.shell-side{display:none}}
