/* DS1: shared shell and components. Values live only in tokens.css. */
*{box-sizing:border-box}html{min-width:320px}body{margin:0;background:var(--zm-paper);color:var(--zm-body);font:15px/1.65 -apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",system-ui,sans-serif;-webkit-font-smoothing:antialiased}a{color:var(--zm-link);text-decoration:none}a:hover{text-decoration:underline}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:3px solid var(--zm-link);outline-offset:3px}h1,h2,h3,p{margin-top:0}h1,h2,h3{color:var(--zm-ink);line-height:1.35}h1{font-size:32px;font-weight:650;letter-spacing:-.8px;margin-bottom:8px}h2{font-size:20px;font-weight:620;margin-bottom:12px}h3{font-size:16px;font-weight:620;margin-bottom:8px}p{margin-bottom:16px}small{font-size:12px}ul,ol{padding-left:24px}li+li{margin-top:8px}strong{font-weight:620}code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;overflow-wrap:anywhere;white-space:normal;color:var(--zm-body)}hr{border:0;border-top:1px solid var(--zm-line);margin:24px 0}.muted{color:var(--zm-muted);font-size:13px}.eyebrow{font-size:12px;letter-spacing:.1em;font-weight:650;color:var(--zm-link);margin-bottom:8px}.text-small{font-size:13px}.text-block{overflow-wrap:anywhere}.nowrap{white-space:nowrap}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:0px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.shell{display:grid;grid-template-columns:232px minmax(0,1fr);min-height:100vh}.sidebar{background:var(--zm-surface);padding:32px 16px 24px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;min-width:0}.brand{display:flex;align-items:center;gap:12px;color:var(--zm-ink);text-decoration:none}.brand:hover{text-decoration:none}.brand-mark{width:39px;height:42px;display:grid;place-items:center;flex-shrink:0;background:var(--zm-link);border-radius:12px 12px 4px 4px;color:var(--zm-surface);font-size:24px;font-weight:600;line-height:1}.brand-text strong{display:block;font-size:20px;letter-spacing:.02em}.brand-text span{display:block;font-size:var(--zm-text-small);letter-spacing:.16em;color:var(--zm-muted)}.sidebar .brand{margin:0 8px 32px}.nav-label{margin:24px 12px 8px;font-size:var(--zm-text-small);color:var(--zm-muted);letter-spacing:.08em}.nav-label:first-child{margin-top:0}.nav-links{display:grid;gap:4px}.nav-link{display:flex;align-items:center;gap:12px;color:var(--zm-body);padding:12px 12px;border-radius:10px;font-size:14px}.nav-link:hover{background:var(--zm-subtle);text-decoration:none}.nav-link.active{color:var(--zm-link);background:var(--zm-subtle);font-weight:650}.nav-icon{width:20px;text-align:center;font-size:18px;line-height:1;opacity:.85}.sidebar-bottom{margin-top:auto;padding:24px 12px 0}.environment{display:inline-flex;align-items:center;gap:8px;font-size:var(--zm-text-small);color:var(--zm-muted)}.environment::before{content:"";width:6px;height:6px;border-radius:100%;background:var(--zm-muted)}.sidebar-note{font-size:var(--zm-text-small);line-height:1.7;margin:8px 0 0;color:var(--zm-muted)}.main-shell{min-width:0}.topbar{min-height:83px;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 32px;background:var(--zm-surface)}.workspace-picker{display:flex;align-items:center;gap:12px;min-width:0}.workspace-picker .picker-label{font-size:var(--zm-text-small);color:var(--zm-muted);white-space:nowrap}.workspace-picker select{width:235px;max-width:100%;background:var(--zm-subtle);border:0;padding:8px 32px 8px 12px;border-radius:8px;font-size:13px;font-weight:550;color:var(--zm-ink)}.workspace-picker button{padding:8px 8px;font-size:12px;white-space:nowrap;flex-shrink:0}.account{display:flex;align-items:center;gap:8px;flex-shrink:0}.avatar{height:30px;width:30px;background:var(--zm-subtle);border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:700;color:var(--zm-link)}.account-name{font-size:12px;color:var(--zm-body);max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.account-role{font-size:var(--zm-text-small);color:var(--zm-muted);line-height:1.3}.account form{margin-left:4px}.account button{border:0;background:none;color:var(--zm-muted);padding:4px;font-size:var(--zm-text-small)}.content{max-width:1350px;margin:0 auto;padding:32px 32px 48px;min-width:0}.page-header{display:flex;justify-content:space-between;align-items:center;gap:24px;margin-bottom:24px}.page-header p{margin-bottom:0;max-width:700px}.page-header .actions{flex-shrink:0}.breadcrumb{display:inline-block;font-size:12px;margin-bottom:24px;color:var(--zm-muted)}.page-heading{min-width:0}.page-heading h1{overflow-wrap:anywhere}.actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.button,button.primary{display:inline-flex;justify-content:center;align-items:center;gap:8px;padding:8px 16px;background:var(--zm-link);color:var(--zm-surface);border:0;border-radius:9px;font-size:13px;font-weight:550;line-height:1.65;text-decoration:none}.button:hover,button.primary:hover{background:var(--zm-link);text-decoration:none}.button.secondary,button.secondary{display:inline-flex;align-items:center;justify-content:center;gap:4px;border:0;background:var(--zm-subtle);color:var(--zm-link);border-radius:9px;padding:8px 16px;font-size:13px;font-weight:550;text-decoration:none}.button.secondary:hover,button.secondary:hover{background:var(--zm-hover);text-decoration:none}.button.ghost,button.ghost{display:inline-flex;align-items:center;gap:4px;background:none;border:0;color:var(--zm-muted);padding:8px 8px;border-radius:8px;font-size:12px;text-decoration:none}.button.ghost:hover,button.ghost:hover{background:var(--zm-subtle);color:var(--zm-link)}.button.compact,button.compact{padding:8px 12px;font-size:12px}.link-arrow{font-size:12px;font-weight:550}.link-arrow::after{content:" ↗";margin-left:4px}.section-header{display:flex;justify-content:space-between;gap:16px;align-items:center;margin-bottom:16px}.section-header h2{margin:0}.section-header p{margin:4px 0 0}.card{background:var(--zm-surface);border-radius:var(--zm-radius-card);padding:24px;margin-bottom:24px;min-width:0}.card:last-child{margin-bottom:0}.card.flat{background:var(--zm-subtle)}.card.soft{background:var(--zm-subtle)}.grid{display:grid;gap:24px;min-width:0}.grid>.card{margin-bottom:0}.grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.split{grid-template-columns:minmax(0,1.55fr) minmax(0,1fr)}.grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.stack{display:grid;gap:24px}.stack>.card{margin-bottom:0}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin:0 0 24px}.stat{border-radius:15px;padding:16px 24px;background:var(--zm-surface);min-width:0}.stat:nth-child(2){background:var(--zm-surface)}.stat:nth-child(3){background:var(--zm-surface)}.stat:nth-child(4){background:var(--zm-surface)}.stat-label{font-size:12px;color:var(--zm-muted)}.stat-value{font-size:31px;line-height:1.25;font-weight:600;color:var(--zm-ink);font-variant-numeric:tabular-nums;margin:8px 0 4px}.stat-note{font-size:var(--zm-text-small);color:var(--zm-muted)}.badge{display:inline-flex;align-items:center;gap:4px;padding:4px 8px;border-radius:7px;background:var(--zm-subtle);color:var(--zm-link);font-size:var(--zm-text-small);line-height:1.5;font-weight:550;white-space:nowrap}.badge.pending,.badge.processing{background:var(--zm-processing-bg);color:var(--zm-processing-fg)}.badge.review,.badge.blocked,.badge.ready,.badge.open,.badge.in_progress,.badge.revision{background:var(--zm-waiting-bg);color:var(--zm-waiting-fg)}.badge.failed,.badge.unknown{background:var(--zm-error-bg);color:var(--zm-error-fg)}.badge.cancelled,.badge.closed,.badge.neutral{background:var(--zm-neutral-bg);color:var(--zm-neutral-fg)}.badge.approved,.badge.delivered,.badge.success{background:var(--zm-subtle);color:var(--zm-link)}.meta-line{display:flex;align-items:center;gap:8px 16px;flex-wrap:wrap;font-size:12px;color:var(--zm-muted);margin-top:12px}.meta-line span{overflow-wrap:anywhere}
.table-wrap{width:100%;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}table{border-collapse:collapse;width:100%;font-size:13px}th,td{text-align:left;padding:12px 12px;vertical-align:middle}th{font-size:var(--zm-text-small);font-weight:550;color:var(--zm-muted);background:var(--zm-subtle);white-space:nowrap}th:first-child{border-radius:8px 0 0 8px}th:last-child{border-radius:0 8px 8px 0}tbody tr+tr{border-top:1px solid var(--zm-line)}tbody tr:hover{background:var(--zm-hover)}td strong{color:var(--zm-ink)}.table-number{font-variant-numeric:tabular-nums}.table-label{display:block;color:var(--zm-ink);font-weight:550}.table-caption{display:block;font-size:var(--zm-text-small);color:var(--zm-muted);margin-top:4px}.table-nowrap{white-space:nowrap}.table-fixed-small{min-width:610px}.table-actions{display:flex;gap:4px;align-items:center}.empty{padding:32px 16px;text-align:center;color:var(--zm-muted)}.empty .empty-mark{display:grid;place-items:center;margin:0 auto 12px;width:42px;height:42px;border-radius:13px;background:var(--zm-subtle);color:var(--zm-muted);font-size:22px}.empty h3{font-size:15px}.empty p{max-width:410px;margin:0 auto 16px;font-size:12px}.empty p:last-child{margin-bottom:0}.note{background:var(--zm-subtle);color:var(--zm-body);padding:16px 16px;border-radius:12px;font-size:13px;margin-bottom:24px}.note p:last-child{margin-bottom:0}.note.warning{background:var(--zm-waiting-bg);color:var(--zm-waiting-fg)}.note.info{background:var(--zm-processing-bg);color:var(--zm-processing-fg)}.error{color:var(--zm-error-fg)}.error-card{background:var(--zm-error-bg);color:var(--zm-error-fg)}.error-card h2{color:var(--zm-error-fg)}.messages{margin-bottom:24px;display:grid;gap:8px}.message{padding:12px 16px;background:var(--zm-subtle);color:var(--zm-link);border-radius:10px;font-size:13px}.message.error{background:var(--zm-error-bg);color:var(--zm-error-fg)}.message.warning{background:var(--zm-waiting-bg);color:var(--zm-waiting-fg)}
.form-layout{max-width:760px}.form-card{padding:24px 32px}.form-card>form>p{margin-bottom:24px}.form-card label,.form-grid label{display:block;margin-bottom:8px;color:var(--zm-ink);font-size:13px;font-weight:550}input,select,textarea{width:100%;min-width:0;max-width:100%;background:var(--zm-surface);border:1px solid var(--zm-control-border);color:var(--zm-body);border-radius:8px;padding:8px 12px;font-size:14px;line-height:1.55}input[type=checkbox],input[type=radio]{width:auto}input[type=file]{background:var(--zm-subtle);padding:16px;font-size:13px;border:1px dashed var(--zm-control-border)}textarea{min-height:125px;resize:vertical}input:disabled,select:disabled,textarea:disabled{opacity:.7}input::placeholder,textarea::placeholder{color:var(--zm-muted)}.helptext{display:block;color:var(--zm-muted);font-size:12px;line-height:1.7;margin-top:4px}.helptext ul{margin-top:4px}.errorlist{margin:0 0 8px;padding:0;list-style:none;color:var(--zm-error-fg);font-size:12px}.errorlist li{padding:4px 0}.form-footer{display:flex;gap:12px;align-items:center;margin-top:24px}.filters{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap;margin-bottom:24px}.filters .filter-field{min-width:140px;flex:1}.filters .filter-field.search{min-width:200px;flex:2}.filters label{display:block;font-size:var(--zm-text-small);color:var(--zm-muted);margin-bottom:4px}.filters select,.filters input{border:0;background:var(--zm-surface);font-size:13px;min-height:41px}.filters .filter-actions{display:flex;gap:4px}.filters .filter-actions .button{min-height:41px}.inline-form{display:flex;gap:8px;align-items:center}.inline-form select{width:auto;min-width:105px;font-size:12px;padding:8px 8px}.inline-form button{white-space:nowrap}.key-values{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:16px 0}.key-value dt{font-size:var(--zm-text-small);color:var(--zm-muted);margin-bottom:4px}.key-value dd{margin:0;color:var(--zm-ink);font-size:14px;overflow-wrap:anywhere}.workspace-card{display:flex;flex-direction:column}.workspace-monogram{width:42px;height:42px;background:var(--zm-subtle);color:var(--zm-link);border-radius:12px;display:grid;place-items:center;font-size:18px;font-weight:600;margin-bottom:16px}.workspace-footer{display:flex;justify-content:space-between;align-items:center;margin-top:auto;padding-top:16px}.application-card{position:relative}.app-icon{width:43px;height:43px;background:var(--zm-subtle);color:var(--zm-link);border-radius:12px;display:flex;align-items:flex-end;justify-content:center;gap:4px;padding:12px;margin-bottom:16px}.app-icon i{width:5px;background:currentColor;border-radius:2px 2px 0 0;display:block}.app-icon i:nth-child(1){height:10px}.app-icon i:nth-child(2){height:18px}.app-icon i:nth-child(3){height:14px}.application-card .version{position:absolute;right:25px;top:29px;color:var(--zm-muted);font-size:var(--zm-text-small)}.application-card h2{font-size:20px}.app-description{font-size:13px;color:var(--zm-muted);max-width:560px}.app-details{display:grid;gap:12px;margin:24px 0}.app-details dt{font-size:var(--zm-text-small);color:var(--zm-muted);margin-bottom:4px}.app-details dd{margin:0;font-size:13px}.app-footer{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:24px;flex-wrap:wrap}.compact-list{list-style:none;padding:0;margin:0}.compact-list li+li{margin-top:0;border-top:1px solid var(--zm-line)}.compact-list li{padding:12px 0}.compact-list li:first-child{padding-top:0}.compact-list li:last-child{padding-bottom:0}.list-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.list-title{display:block;font-size:13px;color:var(--zm-ink);margin-bottom:4px;overflow-wrap:anywhere}.list-meta{font-size:var(--zm-text-small);color:var(--zm-muted)}
.timeline{list-style:none;margin:0;padding:0}.timeline li{position:relative;padding:0 0 24px 24px;margin:0}.timeline li::before{content:"";position:absolute;left:4px;top:7px;width:8px;height:8px;border-radius:50%;background:var(--zm-muted)}.timeline li::after{content:"";position:absolute;left:7px;top:21px;width:1px;bottom:3px;background:var(--zm-line)}.timeline li:last-child{padding-bottom:0}.timeline li:last-child::after{display:none}.event-top{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.timeline h3{font-size:13px;margin:0}.timeline p{font-size:12px;color:var(--zm-muted);margin:8px 0 4px;overflow-wrap:anywhere}.timeline time{font-size:var(--zm-text-small);color:var(--zm-muted)}.review-panel{background:var(--zm-surface)}.reviewer{font-size:12px;color:var(--zm-muted)}.review-panel form>p{margin-bottom:16px}.review-panel label{display:block;font-size:12px;font-weight:550;margin-bottom:4px}.review-panel textarea{min-height:100px;background:var(--zm-surface)}.review-panel select{background:var(--zm-surface)}.details-panel{background:var(--zm-surface);border-radius:var(--zm-radius-card);padding:16px 24px;margin-top:24px}.details-panel summary{cursor:pointer;font-size:14px;font-weight:600;color:var(--zm-ink)}.details-body{padding-top:16px}.details-panel p{font-size:13px}.connection-card{display:grid;grid-template-columns:44px minmax(0,1fr);column-gap:16px}.connection-mark{width:41px;height:41px;border-radius:12px;background:var(--zm-subtle);color:var(--zm-link);display:grid;place-items:center;font-size:18px}.connection-top{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:8px}.connection-card h2{font-size:16px;margin:0}.connection-card p{font-size:12px;color:var(--zm-muted);margin-bottom:16px}.connection-next{padding:12px 12px;background:var(--zm-subtle);border-radius:9px;font-size:12px;color:var(--zm-muted)}.pagination{display:flex;align-items:center;justify-content:center;gap:16px;margin-top:24px;font-size:12px;color:var(--zm-muted)}.pagination a{padding:8px 12px;background:var(--zm-surface);border-radius:8px}.pagination .disabled{opacity:.45}.content-footer{margin-top:24px;color:var(--zm-muted);font-size:var(--zm-text-small)}.dialog{width:min(440px,calc(100vw - 36px));border:0;border-radius:18px;padding:24px;color:var(--zm-body);box-shadow:0 20px 90px var(--zm-shadow-color)}.dialog::backdrop{background:var(--zm-backdrop)}.dialog h2{font-size:20px}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:24px}.public-shell{min-height:100vh;background:linear-gradient(125deg,var(--zm-paper) 0%,var(--zm-paper) 55%,var(--zm-paper) 100%)}.public-header{padding:32px 48px}.public-main{padding:24px 24px 48px;max-width:1050px;margin:0 auto}.login-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,420px);gap:48px;align-items:center;margin:24px 0}.login-intro h1{font-size:37px;line-height:1.45;letter-spacing:-1px}.login-intro>p{color:var(--zm-muted);font-size:14px;max-width:390px}.login-points{margin:32px 0 0;padding:0;list-style:none}.login-points li{display:flex;gap:12px;align-items:flex-start;margin:16px 0;color:var(--zm-body);font-size:13px}.login-point-number{font-size:var(--zm-text-small);color:var(--zm-muted);letter-spacing:.04em;padding-top:0px}.login-card{padding:32px;background:var(--zm-surface);border-radius:21px;box-shadow:0 14px 50px var(--zm-shadow-color)}.login-card h2{font-size:22px;margin-bottom:4px}.login-card form{margin-top:24px}.login-card form>p{margin-bottom:16px}.login-card label{display:block;font-size:12px;font-weight:550;color:var(--zm-ink);margin-bottom:8px}.login-card .button{width:100%;margin-top:8px}.login-footnote{font-size:var(--zm-text-small);color:var(--zm-muted);margin-top:16px;margin-bottom:0}.public-caption{text-align:center;font-size:var(--zm-text-small);color:var(--zm-muted);margin-top:32px}
@media(max-width:1150px){.shell{grid-template-columns:205px minmax(0,1fr)}.sidebar{padding-left:12px;padding-right:12px}.content{padding:24px 24px 48px}.topbar{padding-left:24px;padding-right:24px}.grid.split{grid-template-columns:minmax(0,1fr)}.grid.three{grid-template-columns:repeat(2,minmax(0,1fr))}.workspace-picker select{width:195px}.account-name{max-width:100px}.stat{padding:24px}.stat-value{font-size:28px}}
@media(max-width:800px){.shell{display:block}.sidebar{position:static;width:100%;height:auto;padding:16px 16px 12px;background:var(--zm-surface)}.sidebar .brand{margin:0 0 16px}.brand-mark{width:31px;height:34px;font-size:19px;border-radius:9px 9px 3px 3px}.brand-text strong{font-size:17px}.brand-text span{font-size:var(--zm-text-small)}.sidebar-nav{display:flex;gap:4px;max-width:100%;overflow-x:auto;scrollbar-width:thin;white-space:nowrap;padding-bottom:4px}.nav-links{display:contents}.nav-label,.sidebar-bottom{display:none}.nav-link{padding:8px 12px;font-size:12px;gap:4px;flex-shrink:0}.nav-icon{font-size:14px;width:15px}.topbar{min-height:66px;padding:12px 16px;background:var(--zm-surface);gap:12px}.workspace-picker{gap:8px;flex:1}.workspace-picker .picker-label{display:none}.workspace-picker select{width:180px;font-size:12px;padding:8px}.workspace-picker button{font-size:var(--zm-text-small);padding:8px}.account-role,.avatar{display:none}.account{gap:4px}.account-name{max-width:95px;font-size:var(--zm-text-small)}.account form{margin-left:0}.account button{font-size:var(--zm-text-small)}.content{padding:24px 16px 48px}.page-header{align-items:flex-start;margin-bottom:24px;gap:16px}h1{font-size:27px}.page-header .actions{padding-top:4px}.stats{gap:12px}.stat{padding:24px}.stat-value{font-size:26px}.grid.two{gap:16px}.card{padding:24px}.section-header{margin-bottom:16px}.public-header{padding:24px}.login-layout{gap:32px}.login-intro h1{font-size:31px}.public-main{padding-top:8px}}
@media(max-width:560px){.content{padding:24px 16px 32px}.sidebar{padding-left:16px;padding-right:16px}.topbar{padding:12px 16px;flex-wrap:wrap}.workspace-picker select{width:165px;flex:1}.account-name{max-width:82px}.page-header{display:block}.page-header .actions{margin-top:16px;padding-top:0}.page-header .actions .button{font-size:12px}.page-header p{font-size:12px}.eyebrow{font-size:var(--zm-text-small)}h1{font-size:26px}h2{font-size:18px}.stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-bottom:24px}.stat{padding:16px 16px}.stat-value{font-size:27px}.stat-note{font-size:var(--zm-text-small)}.grid.two,.grid.three{grid-template-columns:minmax(0,1fr)}.grid,.stack{gap:16px}.card{padding:16px;margin-bottom:16px;border-radius:15px}.section-header{align-items:flex-start;gap:12px}.section-header .link-arrow{font-size:var(--zm-text-small);white-space:nowrap}.section-header p{font-size:var(--zm-text-small)}.card .table-wrap{margin-left:-4px;width:calc(100% + 12px);max-width:calc(100% + 12px)}th,td{padding:12px 8px;font-size:12px}th{font-size:var(--zm-text-small)}.filters{gap:8px}.filters .filter-field{min-width:calc(50% - 8px)}.filters .filter-field.search{min-width:100%}.filters .filter-actions{width:100%;justify-content:flex-end}.filters input,.filters select{font-size:12px}.form-card{padding:24px}.form-footer{flex-wrap:wrap}.form-footer .button{flex:1}.note{font-size:12px;padding:12px 16px;margin-bottom:16px}.meta-line{gap:4px 12px;font-size:var(--zm-text-small)}.key-values{gap:16px}.key-value dd{font-size:13px}.connection-card{grid-template-columns:33px minmax(0,1fr);column-gap:12px}.connection-mark{width:33px;height:33px;border-radius:9px;font-size:15px}.connection-top{gap:8px;flex-wrap:wrap}.connection-card h2{font-size:15px}.application-card .version{top:25px;right:20px}.details-panel{padding:16px 16px}.timeline .event-top{gap:8px}.login-layout{display:block;margin:12px 0}.login-intro h1{font-size:28px;margin-bottom:12px}.login-intro>p{font-size:12px}.login-points{display:none}.login-intro{margin-bottom:24px}.login-card{padding:24px}.public-header{padding:24px 16px}.public-main{padding:8px 16px 48px}.public-caption{margin-top:24px}.sidebar .brand-text span{display:none}.sidebar .brand{margin-bottom:12px}.badge{font-size:var(--zm-text-small)}.empty{padding:24px 8px}}
@media(prefers-reduced-motion:no-preference){a,button{transition:background-color .15s,color .15s}}
.permission-nav{margin-bottom:24px}.permission-grid{overflow:auto;max-height:65vh;background:var(--zm-surface);border-radius:16px;margin:24px 0}.permission-grid table{min-width:100%;width:max-content}.permission-grid thead th{position:sticky;top:0;z-index:2;background:var(--zm-subtle);min-width:112px}.permission-grid th:first-child,.permission-grid td:first-child{position:sticky;left:0;z-index:1;min-width:180px;background:var(--zm-surface)}.permission-grid th:first-child{z-index:3;background:var(--zm-subtle)}.permission-grid td{max-width:230px}.permission-grid td a{display:block;min-height:32px}.permission-grid .allowed{background:var(--zm-subtle)}.permission-detail{white-space:pre-wrap;font-size:12px;max-height:280px;overflow:auto}.permission-summary{font-size:13px;white-space:pre-wrap;overflow-wrap:anywhere}.permission-form-fields>p,.permission-form-fields>div{margin-bottom:16px}.permission-form-fields ul{list-style:none;padding:0}.permission-form-fields label{display:block}.permission-form-fields li label{display:flex;gap:8px;align-items:flex-start}.permission-form-fields input[type=checkbox]{flex:none;margin-top:4px}.permission-empty{padding:24px;background:var(--zm-subtle);border-radius:12px}

/* v2 components: shared by the shell, login, errors, permissions and AI pages. */
body{font-family:var(--zm-font);font-size:var(--zm-text-body);line-height:var(--zm-leading);font-variant-numeric:tabular-nums}
h1,.ai-pages h1,.login-intro h1{font-size:var(--zm-text-title);font-weight:600;line-height:1.35;letter-spacing:0}
h2,.ai-pages h2,.application-card h2,.login-card h2,.dialog h2{font-size:var(--zm-text-section);font-weight:600}
h3,.ai-pages h3{font-size:var(--zm-text-heading);font-weight:600}
small,.brand-text span,.nav-label,.sidebar-note,.account-role,.environment,.workspace-picker .picker-label,.account button,.stat-note,.table-caption,.table-wrap th,.table-wrap td,.login-footnote,.public-caption,.timeline time,.list-meta,.content-footer{font-size:var(--zm-text-small)}
.stat-label,.muted,.helptext{font-size:var(--zm-text-help);color:var(--zm-muted)}
:focus-visible{outline:3px solid var(--zm-link);outline-offset:3px}
a{color:var(--zm-link)}.skip-link{position:absolute;left:16px;top:-80px;padding:12px;background:var(--zm-surface);z-index:40}.skip-link:focus{top:8px}
.brand-mark{background:var(--zm-brand);color:var(--zm-ink)}
.sidebar{overflow-y:auto}.nav-link{color:var(--zm-body);border-radius:var(--zm-radius-control)}.nav-link:hover{background:var(--zm-hover)}.nav-link.active,.nav-link[aria-current=page]{color:var(--zm-link);background:var(--zm-selected)}
.nav-link:active{background:var(--zm-hover)}.nav-link[aria-disabled=true]{color:var(--zm-disabled-fg);pointer-events:none;background:var(--zm-disabled-bg)}
.topbar,.public-shell{background:var(--zm-surface)}.public-shell{background:var(--zm-paper)}
.avatar,.workspace-monogram,.app-icon,.connection-mark{background:var(--zm-subtle);color:var(--zm-body)}.eyebrow{color:var(--zm-muted)}
.button,button.primary,.zm-button{min-height:40px;padding:8px 16px;border:0;border-radius:var(--zm-radius-control);background:var(--zm-primary);color:var(--zm-surface);font-size:14px;font-weight:600;line-height:1.6;display:inline-flex;align-items:center;justify-content:center;gap:8px;text-decoration:none;cursor:pointer}
.button:hover,button.primary:hover,.zm-button:hover{background:var(--zm-primary-hover);color:var(--zm-surface);text-decoration:none}
.button:active,button.primary:active,.zm-button:active,.zm-button.is-active{background:var(--zm-primary-active)}
.button.secondary,button.secondary,.zm-button.secondary{background:var(--zm-subtle);color:var(--zm-body);border-radius:var(--zm-radius-control);font-size:14px}
.button.secondary:hover,button.secondary:hover,.zm-button.secondary.is-hover{background:var(--zm-hover);color:var(--zm-body)}
.button.secondary:active,button.secondary:active,.zm-button.secondary.is-active{background:var(--zm-line)}
.button.ghost,button.ghost,.zm-button.text{background:transparent;color:var(--zm-link);border:0;border-radius:8px;padding:8px 12px;font-size:14px}
.button.ghost:hover,button.ghost:hover,.zm-button.text:hover,.zm-button.text.is-hover{background:var(--zm-hover);color:var(--zm-link)}
.button.ghost:active,button.ghost:active,.zm-button.text:active,.zm-button.text.is-active{background:var(--zm-line)}
/* Page danger actions stay quiet; solid red belongs to final dialog confirmation only. */
:is(button,.button,.zm-button).danger{border:0;background:transparent;color:var(--zm-error-fg);border-radius:8px;padding:8px 16px;font-size:14px;box-shadow:none}
:is(button,.button,.zm-button).danger:is(:hover,.is-hover,:active,.is-active){background:var(--zm-error-bg);color:var(--zm-error-fg);box-shadow:none}
:where(dialog.dialog) :is(button,.button,.zm-button).danger{background:var(--zm-danger);color:var(--zm-surface)}
:where(dialog.dialog) :is(button,.button,.zm-button).danger:is(:hover,.is-hover,:active,.is-active){background:var(--zm-error-fg);color:var(--zm-surface)}
.zm-button.icon{width:40px;padding:8px;aspect-ratio:1;background:var(--zm-subtle);color:var(--zm-body)}.zm-button.icon:hover,.zm-button.icon.is-hover{background:var(--zm-hover)}.zm-button.icon:active,.zm-button.icon.is-active{background:var(--zm-line)}
button:disabled,.button[aria-disabled=true],.zm-button:disabled,input:disabled,select:disabled,textarea:disabled{opacity:1;background:var(--zm-disabled-bg);color:var(--zm-disabled-fg);cursor:not-allowed;box-shadow:none}.button[aria-disabled=true]{pointer-events:none}
.zm-button.is-hover{background:var(--zm-primary-hover)}.zm-button.is-focus,.zm-control.is-focus{outline:3px solid var(--zm-link);outline-offset:3px}
.card,.stat,.stat:nth-child(n),.card.flat,.card.soft,.review-panel,.error-card,.login-card,.details-panel,.ai-pages .card{background:var(--zm-surface);border:0;border-radius:var(--zm-radius-card);padding:24px;box-shadow:none}
.card,.details-panel{margin-bottom:16px}.grid,.stack,.stats{gap:16px}.stats{margin-bottom:24px}.grid>.card,.stack>.card{margin-bottom:0}
.error-card{color:var(--zm-body)}.error-card h2{color:var(--zm-ink)}
input,textarea,select,.workspace-picker select,.filters input,.filters select,.ai-pages input,.ai-pages textarea,.ai-pages select{background:var(--zm-surface);color:var(--zm-body);border:1px solid var(--zm-control-border);border-radius:var(--zm-radius-control);padding:8px 12px;min-height:40px;font-size:14px;line-height:1.6}
input:hover:not(:disabled),textarea:hover:not(:disabled),select:hover:not(:disabled),.zm-control.is-hover{border-color:var(--zm-body)}
input:active:not(:disabled),textarea:active:not(:disabled),select:active:not(:disabled),.zm-control.is-active{border-color:var(--zm-link)}
input::placeholder,textarea::placeholder{color:var(--zm-muted)}
[aria-invalid=true],.zm-control.is-error{border-color:var(--zm-error-fg)}.errorlist{color:var(--zm-error-fg)}
input[type=checkbox],input[type=radio],.ai-pages input[type=checkbox]{width:18px;height:18px;min-height:18px;flex-shrink:0;padding:0;accent-color:var(--zm-link);cursor:pointer}
input[type=checkbox]:disabled,input[type=radio]:disabled{cursor:not-allowed}.zm-choice{display:inline-flex;align-items:center;gap:8px;min-height:40px;cursor:pointer}.zm-choice:has(:disabled){color:var(--zm-disabled-fg);cursor:not-allowed}
:is(.zm-switch,input[role=switch]){appearance:none;position:relative;width:40px!important;height:24px!important;min-height:24px!important;border-radius:24px;background:var(--zm-control-border);border:0}:is(.zm-switch,input[role=switch])::before{content:"";position:absolute;width:16px;height:16px;top:4px;left:4px;background:var(--zm-surface);border-radius:50%;transition:transform .15s}:is(.zm-switch,input[role=switch]):checked{background:var(--zm-primary)}:is(.zm-switch,input[role=switch]):checked::before{transform:translateX(16px)}:is(.zm-switch,input[role=switch]):disabled{background:var(--zm-disabled-bg)}:is(.zm-switch,input[role=switch]):disabled::before{background:var(--zm-disabled-fg)}
th,.permission-grid thead th,.permission-grid th:first-child{background:var(--zm-subtle);color:var(--zm-muted);font-size:12px}thead th{position:sticky;top:0;z-index:1}.table-wrap{isolation:isolate;max-height:65vh;overflow:auto}tbody tr+tr{border-color:var(--zm-line)}tbody tr:hover{background:var(--zm-hover)}
.permission-grid{border-radius:12px;margin:24px 0}.permission-grid .allowed{background:var(--zm-subtle)}.permission-grid th,.permission-grid td{padding:12px}.permission-empty{background:var(--zm-subtle)}.permission-grid td:first-child{background:var(--zm-surface)}
.badge,.badge.neutral,.badge.cancelled,.badge.closed{background:var(--zm-neutral-bg);color:var(--zm-neutral-fg);border-radius:var(--zm-radius-tag);font-size:12px;padding:4px 8px}
.badge.success,.badge.approved,.badge.delivered{background:var(--zm-success-bg);color:var(--zm-success-fg)}
.badge.processing{background:var(--zm-processing-bg);color:var(--zm-processing-fg)}
.badge.pending,.badge.review,.badge.blocked,.badge.ready,.badge.open,.badge.in_progress,.badge.revision,.badge.waiting{background:var(--zm-waiting-bg);color:var(--zm-waiting-fg)}
.badge.failed,.badge.unknown,.badge.error{background:var(--zm-error-bg);color:var(--zm-error-fg)}
.note,.message,.permission-empty{background:var(--zm-subtle);color:var(--zm-body);padding:12px 16px;border-radius:8px;margin-bottom:16px}
.note.success,.message.success{background:var(--zm-success-bg);color:var(--zm-success-fg)}.note.warning,.message.warning{background:var(--zm-waiting-bg);color:var(--zm-waiting-fg)}.note.info,.message.info{background:var(--zm-processing-bg);color:var(--zm-processing-fg)}.note.error,.message.error{background:var(--zm-error-bg);color:var(--zm-error-fg)}
.dialog,.ai-pages .dialog{border-radius:12px;box-shadow:var(--zm-shadow);padding:24px;background:var(--zm-surface);color:var(--zm-body)}.dialog::backdrop{background:var(--zm-backdrop)}
.zm-tabs{display:flex;gap:8px;border-bottom:1px solid var(--zm-line);overflow-x:auto;margin-bottom:24px}.zm-tabs a,.zm-tabs button{white-space:nowrap;padding:12px 16px;border:0;background:transparent;color:var(--zm-body);font-size:14px}.zm-tabs [aria-selected=true],.zm-tabs [aria-current=page]{color:var(--zm-link);border-bottom:2px solid var(--zm-link)}.zm-tabs a:hover,.zm-tabs button:hover{background:var(--zm-hover)}.zm-tabs a:active,.zm-tabs button:active{background:var(--zm-selected)}.zm-tabs [aria-disabled=true]{color:var(--zm-disabled-fg);pointer-events:none}
.pagination a{background:var(--zm-subtle);color:var(--zm-body);border-radius:8px;padding:8px 12px}.pagination a:hover{background:var(--zm-hover)}.pagination a:active{background:var(--zm-line)}.pagination [aria-current=page]{background:var(--zm-selected);color:var(--zm-link)}.pagination .disabled{opacity:1;color:var(--zm-disabled-fg)}
.zm-savebar{position:sticky;bottom:16px;z-index:4;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:16px;padding:16px 24px;background:var(--zm-surface);border-radius:12px;outline:1px solid var(--zm-line)}
.zm-return{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 16px;background:var(--zm-subtle);border-radius:8px;margin-bottom:24px}
.zm-skeleton{height:16px;border-radius:6px;background:var(--zm-subtle);margin:12px 0}.zm-skeleton.short{width:60%}.zm-loading{display:inline-flex;align-items:center;gap:8px;color:var(--zm-muted)}.zm-spinner{width:16px;height:16px;border:2px solid var(--zm-line);border-top-color:var(--zm-link);border-radius:50%;animation:zm-spin 1s linear infinite}@keyframes zm-spin{to{transform:rotate(360deg)}}
.access-members,.access-member,.access-system,.access-form,.access-entries,.access-entry,.access-field{min-width:0;max-width:100%;overflow-wrap:anywhere}.access-member-header{display:flex;align-items:center;flex-wrap:wrap;gap:12px;margin-bottom:24px}.access-member-header h2{margin:0}.access-system{background:var(--zm-surface);border-radius:12px;padding:24px;margin-top:16px}.access-entry{margin:16px 0;padding:16px;border:0;border-radius:12px;background:var(--zm-subtle);width:100%}.access-entry legend{font-weight:600;max-width:100%;white-space:normal}.access-field{margin:12px 0}.access-field>label{display:block;font-weight:600}.access-field select,.access-field input[type=date]{width:100%;max-width:100%;min-width:0;min-height:44px}.access-field div[id] label,.access-check{display:flex;align-items:flex-start;gap:12px;min-height:44px;padding:8px 0;cursor:pointer;font-weight:400}.access-field input[type=checkbox]{margin:4px 0}.access-field small{display:block;color:var(--zm-muted);font-size:13px;font-weight:400}.access-field .helptext{font-size:13px;color:var(--zm-muted);margin:4px 0}.access-form .actions{display:flex;flex-wrap:wrap;gap:12px}.access-form button{min-height:44px}
@media(max-width:800px){.sidebar{overflow-y:visible}.topbar{background:var(--zm-surface)}.account{flex-wrap:wrap}.account a{font-size:12px}.workspace-picker{flex-wrap:wrap}.brand-text span{font-size:12px}.card,.stat,.ai-pages .card{padding:24px}.grid,.stack,.stats{gap:16px}}
@media(max-width:560px){.card,.login-card,.details-panel,.ai-pages .card{border-radius:12px;padding:24px}.stat{padding:24px}.stat-note,.badge,.eyebrow,.page-header p,.section-header p,.sidebar .brand-text span{font-size:12px}.page-header h1,h1{font-size:28px}.page-header .actions .button{font-size:14px}.table-wrap th,.table-wrap td{font-size:12px}.access-system{padding:16px}.access-entry{padding:12px}.zm-return{align-items:flex-start;flex-wrap:wrap}.zm-savebar{padding:16px}.dialog-actions{flex-wrap:wrap}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}

@media(max-width:767px){.access-member-header{align-items:flex-start}.access-form .actions>*{max-width:100%;white-space:normal}.access-form .dialog{width:min(480px,calc(100vw - 32px));min-width:0}}
/* Permission structures stay unchanged; contain legacy bare tables on narrow screens. */
.card:has(>table){overflow-x:auto}.inline-form{flex-wrap:wrap}
.card>table button,.card>table .button{white-space:nowrap}

.card.access-system{padding:var(--zm-space-6)}
/* Disabled controls retain their visual state under pointer hover and press. */
button:is(.primary,.secondary,.ghost,.danger,.zm-button,.button):disabled,button:is(.primary,.secondary,.ghost,.danger,.zm-button,.button):disabled:hover,button:is(.primary,.secondary,.ghost,.danger,.zm-button,.button):disabled:active,.zm-tabs button:disabled,.zm-tabs button:disabled:hover,.zm-tabs button:disabled:active{background:var(--zm-disabled-bg);color:var(--zm-disabled-fg);cursor:not-allowed;box-shadow:none}

/* LG2: C16 glyph with standard interface lettering. */
.brand-symbol{display:block;width:auto;height:28px;flex:none}.brand-text strong{color:var(--zm-ink);font-size:20px;font-weight:600}
