@font-face{font-family:MiSans;src:url('/assets/MiSans-Regular.ttf') format('truetype');font-weight:400;font-display:swap}
@font-face{font-family:MiSans;src:url('/assets/MiSans-Semibold.ttf') format('truetype');font-weight:600 900;font-display:swap}
:root{font-family:MiSans,'Microsoft YaHei',sans-serif;font-size:13px;color:#242824;background:#edf0ea;--accent:#005fb8;--muted:#727970;--plate:#fafbf8;--line:#e9ede6;--shadow:0 3px 15px #18221b0b;--radius:18px}
*{box-sizing:border-box}body{margin:0}button,input,textarea,select{font:inherit}button,a,input,select,summary{-webkit-tap-highlight-color:transparent}button{cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:6px;border:0;min-height:30px;padding:5px 12px;border-radius:16px;background:#eef0ec;color:inherit;transition:background .14s,transform .1s}button:hover{background:#e5e9e2}button:active{transform:translateY(1px)}button:disabled{opacity:.48;cursor:default}button.accent{background:var(--accent);color:#fff}button.accent:hover{background:#1974c5}button.danger{color:#b72521}button.quiet{background:transparent}button:focus-visible,a:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:2px}button svg,svg.icon{width:16px;height:16px;flex:none;stroke:currentColor;fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.icon-button{width:30px;height:30px;padding:0;background:transparent}.muted{color:var(--muted);font-size:12px}h1,h2,h3,p{margin:0}h1{font-size:20px;font-weight:600}h2{font-size:20px;font-weight:600}h3{font-size:15px;font-weight:600}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}[hidden]{display:none!important}.row{display:flex;align-items:center;gap:8px}.surface{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow)}.error{color:#c42b1c;white-space:pre-wrap}.dot{display:inline-block;flex:none;width:6px;height:6px;border-radius:50%;background:#109a49;margin-right:7px}.dot.gray{background:#888}.dot.red{background:#c42b1c}.empty{display:grid;place-items:center;min-height:100px;color:var(--muted);font-size:12px;padding:16px}.spinner{display:inline-block;width:17px;height:17px;border:2px solid #005fb826;border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
input:not([type=checkbox]):not([type=file]),textarea,select{display:block;min-width:0;width:100%;min-height:32px;border:1px solid transparent;background:#f0f2ee;border-radius:8px;padding:6px 10px;color:#242824;outline:none;box-shadow:inset 0 1px 2px #00000005;transition:background .15s,border-color .15s}input:not([type=checkbox]):not([type=file]):not(:placeholder-shown):not(:focus),textarea:not(:placeholder-shown):not(:focus){background:transparent;color:#5b605c;font-weight:600;box-shadow:none}input:focus,textarea:focus,select:focus{background:#f0f2ee!important;border-color:#b9c4b6!important;box-shadow:0 0 0 2px #005fb815!important}input[readonly]{cursor:default}input[type=number]{font-variant-numeric:tabular-nums}textarea{resize:vertical;min-height:58px;line-height:1.5}input::placeholder,textarea::placeholder{color:#969e93;font-weight:400}label{display:block;font-size:12px}.field{display:grid;gap:6px;margin:0 0 12px}.field .row>input{flex:1}.field .row>button{flex:none}select{cursor:pointer}input[type=checkbox]{width:17px;height:17px;accent-color:var(--accent);flex:none;margin:0}.check{display:flex;gap:9px;align-items:center;min-height:30px}.toggle{position:relative;display:flex;align-items:center;gap:9px}.toggle input{appearance:none;width:38px;height:20px;background:#e4e8e1;border:1px solid #879184;border-radius:12px;cursor:pointer;transition:.2s}.toggle input:after{content:'';position:absolute;top:4px;left:4px;width:12px;height:12px;border-radius:50%;background:#677262;transition:.2s}.toggle input:checked{background:var(--accent);border-color:var(--accent)}.toggle input:checked:after{left:22px;background:#fff}.two-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px}details summary{font-size:13px;cursor:pointer;list-style:none;padding:10px 0}details summary:before{content:'›';display:inline-block;margin-right:8px}details[open] summary:before{transform:rotate(90deg)}
.login-screen{min-height:calc(100dvh - 24px);display:grid;place-items:center;padding:24px;background:radial-gradient(ellipse at 50% 25%,#f9fbf6 0,#edf1e9 62%)}.login-card{width:min(410px,100%);padding:34px;border-radius:32px;box-shadow:0 12px 50px #303d3312;background:var(--plate);display:grid;gap:12px}.login-brand{display:flex;gap:13px;align-items:center;margin-bottom:22px}.login-brand h1{display:flex;flex-direction:column;font-size:29px;line-height:1.1;gap:5px}.login-brand h1 span{font-size:12px;font-weight:400;color:var(--muted)}.login-card>h2{font-size:21px}.login-card>label{margin-top:12px}.login-card input{min-height:40px!important;background:#eef1e9!important}.login-card>button{min-height:40px;justify-content:space-between;margin-top:2px}.login-card>.error:empty{display:none}.login-address{margin-top:8px;text-align:center;color:#8a9385;font-size:11px;letter-spacing:.4px}
.app-shell{height:calc(100dvh - 24px);min-height:480px;display:grid;grid-template-rows:48px minmax(0,1fr) 48px}.titlebar{display:flex;align-items:center;padding:0 16px 0 11px;gap:9px}.titlebar>#nav-toggle{display:none}.brand{display:flex;align-items:center;gap:7px}.brand img{filter:drop-shadow(0 2px 6px #8dac7c55)}.brand strong{font-size:16px}.brand>span{background:#00000012;padding:2px 6px;border-radius:4px;font-size:10px;margin-top:2px}.titlebar-spacer{flex:1}.titlebar .quiet{font-size:11px;color:var(--muted)}.app-body{min-height:0;display:flex}.sidebar{width:200px;flex:none;padding:4px 8px 0;display:flex;flex-direction:column;gap:8px}.sidebar>nav{overflow:auto;flex:1;min-height:0}.nav-item{width:100%;justify-content:flex-start;text-align:left;padding:10px 12px;gap:12px;min-height:40px;border-radius:6px;background:transparent;position:relative;margin-bottom:4px;font-size:13px}.nav-item.active{background:#fff9}.nav-item.active:before{content:'';position:absolute;left:0;top:13px;bottom:13px;width:3px;background:var(--accent);border-radius:2px}.nav-item .nav-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nav-item img{width:18px;height:18px;object-fit:contain}.nav-item svg{width:18px;height:18px}.content-surface{background:var(--plate);min-width:0;min-height:0;flex:1;border-radius:28px 0 0 28px;box-shadow:-3px 3px 18px #202b2010;padding:10px;display:flex;flex-direction:column;position:relative;overflow:hidden}.page-header{display:flex;align-items:center;gap:12px;min-height:40px;flex:none;margin-bottom:16px}.page-header h1{margin-left:16px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.connection-label{display:flex;align-items:center;gap:8px;white-space:nowrap;font-size:12px;color:#5b6657}.page-host{flex:1;min-height:0;min-width:0;display:flex;flex-direction:column}.statusbar{display:flex;align-items:center;gap:16px;padding:0 16px 0 20px;font-size:12px;color:#5e6859;overflow:hidden;white-space:nowrap}.statusbar>span:first-child{display:flex;align-items:center}.statusbar .dot{width:8px;height:8px}.status-details{flex:1;overflow:hidden;text-overflow:ellipsis}#transfer-bar{height:3px;width:calc(100% - 20px);position:absolute;bottom:0;left:10px;accent-color:var(--accent)}
.home-page{display:grid;gap:16px;grid-template-rows:auto auto minmax(160px,1fr);height:100%;min-height:0}.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.metric{padding:12px 16px;background:#fff;border-radius:18px;box-shadow:var(--shadow);min-height:98px;display:flex;flex-direction:column;gap:8px}.metric-label{font-size:12px;color:var(--muted)}.metric-value{font-size:clamp(20px,2vw,30px);font-weight:600;line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums;margin-top:auto}.metric:first-child .metric-value{color:var(--accent);font-size:clamp(22px,2.3vw,34px)}.site-page .metric-value{font-size:28px}.summary{display:grid;grid-template-columns:repeat(5,1fr);padding:12px 16px;gap:10px;border-radius:18px;background:#fff;box-shadow:var(--shadow)}.summary>div{padding-left:16px;position:relative}.summary>div:first-child{padding-left:0}.summary>div+div:before{content:'';position:absolute;left:0;top:2px;bottom:2px;width:1px;background:linear-gradient(transparent,#aab1a366,transparent);box-shadow:0 0 3px #7e897a20}.summary small{font-size:12px;color:var(--muted)}.summary strong{display:block;font-size:20px;font-weight:600;margin-top:4px}.home-tables{display:grid;grid-template-columns:minmax(0,2.2fr) minmax(245px,1fr);gap:16px;min-height:0}.table-panel{display:flex;flex-direction:column;gap:16px;min-height:0;min-width:0}.table-panel>h3{display:flex;gap:8px;align-items:center}.count{font-size:12px;font-weight:400;color:var(--muted)}.table-surface{padding:8px;border-radius:22px;background:#fff;box-shadow:var(--shadow);min-height:0;min-width:0;overflow:hidden;display:flex;flex-direction:column;flex:1}.table-scroll{overflow:auto;flex:1;min-height:0;scrollbar-width:thin;scrollbar-color:#c7cdc3 transparent}table{border-collapse:collapse;width:100%;font-size:12px;text-align:left}thead{position:sticky;top:0;z-index:1;background:#f5f7f3}th{font-weight:400;color:var(--muted);height:34px}th,td{padding:8px 12px}tbody tr{border-bottom:1px solid #f4f6f1}tbody tr:last-child{border:0}td{height:50px;vertical-align:middle;overflow-wrap:anywhere}.site-table{min-width:570px;table-layout:fixed}.site-table th:nth-child(1){width:30%}.site-table th:nth-child(2){width:100px}.site-table th:nth-child(3){width:70px}.site-table th:nth-child(4){width:100px}.site-table tbody tr,.file-table tbody tr{cursor:pointer}.site-table tbody tr:hover,.file-table tbody tr:hover,.file-table tbody tr.selected{background:#eff3eb;border-radius:8px}.site-name{font-size:13px;font-weight:600}.site-id{font-size:11px;color:var(--muted);margin-top:2px}.state-label{white-space:nowrap}.ports-table th:first-child{width:100px}.ports-table td:first-child>strong{font-size:13px;font-weight:600}.ports-table small{display:block;font-size:11px;color:var(--muted);margin-top:2px}.table-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 0 6px 10px;min-height:32px;flex:none}.table-heading button{height:26px;min-height:26px;padding:2px 10px;font-size:12px}
.site-page{height:100%;min-height:0;display:grid;grid-template-rows:auto auto minmax(120px,1fr) 100px;gap:16px}.toolbar{display:flex;gap:4px;overflow:auto;flex:none;min-height:27px}.toolbar button{font-size:12px;min-height:26px;height:26px;padding:1px 7px;white-space:nowrap;background:#eef1eb}.toolbar button svg{width:14px;height:14px}.site-tables{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(310px,1fr);gap:16px;min-height:0}.log-table{table-layout:fixed}.log-table th:first-child{width:112px}.log-table th:nth-child(2){width:48px}.log-table th:nth-child(3){width:48px}.log-table td{font-size:12px;vertical-align:top;line-height:1.6;height:auto;white-space:pre-wrap}.log-table td:first-child{font-size:11px;color:var(--muted)}.log-error{color:#c42b1c}.config-panel{gap:0}.config-columns{display:grid;grid-template-columns:108px 1fr;gap:12px;padding:6px 12px;color:var(--muted);font-size:12px;background:#f5f7f3}.property-row{display:grid;grid-template-columns:108px minmax(0,1fr);align-items:center;gap:12px;padding:6px 12px;min-height:38px}.property-row>label{color:var(--muted)}.property-row .field{margin:0;gap:6px}.property-row .field>label{display:none}.property-row .field p{font-size:10px}.property-row .row{flex-wrap:wrap}.property-row .row input{flex-basis:100%}.property-row .row button{font-size:11px;min-height:26px}.property-row .row .icon-preview{margin-left:auto}.config-form .form-section{padding:2px 0}.config-form details{border-top:1px solid var(--line);margin-top:8px}.config-form summary{padding:12px}.config-form .two-fields{display:block}.config-form>.property-row>.field textarea{min-height:52px}.server-path{font-size:12px;overflow-wrap:anywhere;user-select:text;color:#5b605c}.files-toolbar{display:flex;flex-wrap:wrap;gap:4px;margin:0 0 6px}.files-toolbar button{font-size:11px;padding:2px 8px;min-height:26px}.breadcrumb{display:flex;flex-wrap:wrap;gap:1px;padding:0 4px 8px;font-size:12px}.breadcrumb button{padding:1px 5px;min-height:24px;background:transparent}.breadcrumb>span{color:#a4ad9e;align-self:center}.file-table th:nth-child(1){width:48%}.file-table td{height:38px;font-weight:600;color:#5b605c;font-size:12px}.file-name{display:flex;gap:8px;align-items:center}.file-table{min-width:470px}.console{color:#fff;background:#000;border-radius:22px;padding:8px 10px;min-height:0;display:flex;flex-direction:column;gap:4px;box-shadow:var(--shadow)}.console-header{display:flex;align-items:center;gap:8px;font-size:12px;flex:none}.console-header>span{flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.console button,.console select{background:#181818;color:#fff;min-height:23px;height:23px;font-size:12px;padding:1px 8px;max-width:150px;border-radius:12px}.console select{border:0;width:140px}.console-body{flex:1;overflow:auto;font-size:13px;scrollbar-width:thin;scrollbar-color:#555 #000}.console pre{font:600 13px MiSans,monospace;white-space:pre-wrap;overflow-wrap:anywhere;margin:0;line-height:1.5}.command-line{display:flex;gap:8px;align-items:center;color:#61d6a8}.command-line input{color:#fff!important;background:transparent!important;box-shadow:none!important;padding:2px 6px!important;min-height:23px!important;border:0!important;border-radius:0!important;font-weight:400!important}.connection-page{max-width:680px;overflow:auto;padding:16px}.connection-page>form{display:grid;gap:6px}.connection-notice{padding:12px 14px;background:#f0f3ec;border-radius:14px;line-height:1.8;font-size:12px;margin-bottom:12px}.progress-page{margin:auto;width:min(620px,100%);padding:16px;display:grid;gap:12px}.progress-page progress{width:100%;height:6px;accent-color:var(--accent)}.progress-page pre{font:12px MiSans;white-space:pre-wrap;max-height:230px;overflow:auto;line-height:1.8}.progress-page h2{font-size:18px}
dialog{padding:0;border:0;border-radius:32px;background:var(--plate);color:inherit;width:min(680px,calc(100vw - 36px));max-height:calc(100dvh - 60px);box-shadow:0 12px 60px #15201833;overflow:hidden}dialog::backdrop{background:#14201342;backdrop-filter:blur(2px)}dialog>form{display:flex;flex-direction:column;max-height:calc(100dvh - 60px);background:var(--plate)}.dialog-heading{padding:24px 24px 16px;display:flex;align-items:center;justify-content:space-between;gap:12px;flex:none}.dialog-heading h2{font-size:20px}.dialog-body{overflow:auto;padding:0 24px 20px;min-height:0;scrollbar-width:thin;background:var(--plate)}.dialog-actions{border-top:1px solid #e4e8e0;display:flex;justify-content:flex-end;gap:8px;padding:16px 24px;background:#f3f5ef;flex:none}.dialog-actions button{min-width:100px;min-height:32px}.dialog-body>p{line-height:1.8;white-space:pre-wrap}.dialog-body .form-intro{margin-bottom:16px}.icon-preview{width:40px;height:40px;object-fit:contain;border-radius:8px;background:#f0f2ee;padding:5px}.notifications{position:fixed;right:24px;top:60px;width:min(390px,calc(100vw - 32px));z-index:1000;display:grid;gap:12px;pointer-events:none}.notification{background:#fff;box-shadow:0 6px 30px #19231b22;border-radius:28px;padding:14px;display:grid;grid-template-columns:24px 1fr 20px;gap:12px;animation:slide-in .22s ease-out;pointer-events:auto;border:1px solid #edf0e9}.notification>svg{width:22px;height:22px;margin-top:2px}.notification strong{font-size:14px;font-weight:600;display:block;margin-bottom:4px}.notification p{font-size:12px;line-height:1.6;white-space:pre-wrap;overflow-wrap:anywhere;max-height:160px;overflow:auto}.notification button{height:20px;width:20px;min-height:20px;padding:0;font-size:18px;background:transparent}.notification.info>svg{color:var(--accent)}.notification.error>svg{color:#c42b1c}.notification.warning>svg{color:#9d5d00}.notification.success>svg{color:#107c41}@keyframes slide-in{from{transform:translateX(110%);opacity:.3}to{transform:translateX(0);opacity:1}}#iisplus-icp-footer{height:24px;line-height:24px;text-align:center;position:fixed;bottom:0;left:0;width:100%;font:11px/24px MiSans,sans-serif;color:#8a9184;z-index:5;background:#edf0ea}#iisplus-icp-footer a{color:inherit}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
@media(min-width:1450px){.metric-value{font-size:30px}.metric:first-child .metric-value{font-size:34px}}
@media(max-width:1100px){.sidebar{width:180px}.home-tables{grid-template-columns:1fr;grid-template-rows:1.3fr 1fr}.site-tables{grid-template-columns:minmax(0,1.3fr) minmax(270px,1fr)}.property-row{grid-template-columns:85px 1fr;padding:6px 8px;gap:8px}.config-columns{grid-template-columns:85px 1fr}.site-page{gap:12px}.metric-value,.site-page .metric-value{font-size:23px}.metric:first-child .metric-value{font-size:26px}.metric{padding:12px}.connection-label{font-size:11px}}
@media(max-width:820px){.sidebar{width:48px;padding:4px}.nav-item{justify-content:center;padding:10px 4px}.nav-item .nav-text{display:none}.metrics{grid-template-columns:repeat(2,1fr)}.metric{min-height:85px}.home-page{overflow:auto;grid-template-rows:auto auto minmax(450px,1fr)}.site-page{overflow:auto;grid-template-rows:auto auto minmax(480px,1fr) 160px}.site-tables{grid-template-columns:1fr;grid-template-rows:250px 400px;min-height:665px}.site-page{grid-template-rows:auto auto auto 160px}.site-tables>.table-surface{flex:none}.statusbar{gap:10px;padding:0 12px;font-size:10px}.statusbar #status-port{display:none}.page-header h1{margin-left:8px}.summary{grid-template-columns:repeat(3,1fr);row-gap:12px}.summary>div:nth-child(4){padding-left:0}.summary>div:nth-child(4):before{display:none}.app-shell{min-height:440px}.page-header{gap:6px}.page-header .connection-label{display:none}.sidebar.expanded{width:200px;position:absolute;z-index:20;top:48px;bottom:72px;background:#edf0ea;box-shadow:10px 0 25px #0001}.sidebar.expanded .nav-item{justify-content:flex-start;padding:10px 12px}.sidebar.expanded .nav-text{display:inline}.titlebar>#nav-toggle{display:inline-flex}.property-row{grid-template-columns:108px 1fr}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition:none!important}}
/* Notifications use the top layer so validation remains visible above dialogs. */
.notifications{margin:0 0 0 auto;left:auto;bottom:auto;border:0;padding:0;background:transparent;overflow:visible;max-height:calc(100dvh - 80px)}
.notifications:popover-open{display:grid}
.property-row .field>label.check,.property-row .field>label.toggle{display:flex}
.entry-picker{padding:8px;background:#eef1e9;border-radius:12px;display:grid;gap:8px;margin-top:6px}.entry-picker select{min-height:100px}.entry-picker .row{justify-content:flex-end}
