:root{--color-bg:#fbf5f5;--color-surface:#fffdfd;--color-border:#e7d5d8;--color-text:#3f3035;--color-text-muted:#746268;--color-primary:#9c596b;--color-primary-contrast:#fff;--color-danger:#b64d5c;--color-success:#5c856f;--color-warning:#a57b45;--radius:6px}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,Segoe UI,PingFang TC,Microsoft JhengHei,system-ui,sans-serif;background:var(--color-bg);color:var(--color-text)}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}.app-header{display:flex;align-items:center;gap:24px;padding:12px 24px;background:var(--color-surface);border-bottom:1px solid var(--color-border)}.app-header__brand{font-weight:700;font-size:1.1rem}.app-header__nav{display:flex;gap:16px;flex:1 1}.app-main{padding:24px;max-width:1200px;margin:0 auto}.role-switcher{display:flex;align-items:center;gap:8px;font-size:.85rem}.role-switcher__badge{color:var(--color-text-muted)}.role-switcher__input{width:100px}.role-switcher__input,.role-switcher__select{padding:4px 8px;border:1px solid var(--color-border);border-radius:var(--radius);font-size:.85rem}.card{border:1px solid var(--color-border);padding:16px;margin-bottom:16px}.button,.card{background:var(--color-surface);border-radius:var(--radius)}.button{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border:1px solid var(--color-border);color:var(--color-text);cursor:pointer;font-size:.9rem}.button:hover{border-color:var(--color-primary)}.button:disabled{opacity:.5;cursor:not-allowed}.button--primary{background:var(--color-primary);border-color:var(--color-primary);color:var(--color-primary-contrast)}.button--danger{background:var(--color-danger);border-color:var(--color-danger);color:#fff}.button--ghost{background:transparent}.field-row{display:flex;flex-direction:column;gap:4px;margin-bottom:12px}.field-row label{font-size:.85rem;color:var(--color-text-muted)}.field-row input,.field-row select,.field-row textarea{padding:8px 10px;border:1px solid var(--color-border);border-radius:var(--radius);font-size:.95rem;font-family:inherit}.status-badge{display:inline-block;padding:2px 10px;border-radius:999px;font-size:.78rem;font-weight:600;color:#fff;background:var(--color-text-muted)}.status-badge[data-status=Draft]{background:#76636b}.status-badge[data-status=Pending]{background:var(--color-warning)}.status-badge[data-status=Approved]{background:#806a92}.status-badge[data-status=Published]{background:var(--color-success)}.status-badge[data-status=Rejected]{background:var(--color-danger)}.status-badge[data-status=Deprecated]{background:#a8949c}.designer-layout{display:grid;grid-template-columns:260px 1fr 1fr;grid-gap:16px;gap:16px;align-items:start}.section-tabs{display:flex;gap:4px;margin-bottom:12px}.section-tabs button{flex:1 1;padding:8px;border:1px solid var(--color-border);background:var(--color-surface);cursor:pointer;border-radius:var(--radius)}.section-tabs button[data-active=true]{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.field-card{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 12px;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);margin-bottom:8px;cursor:default}.field-card__drag-handle{cursor:-webkit-grab;cursor:grab;color:var(--color-text-muted);padding-right:4px}.field-card__meta{flex:1 1}.field-card__meta strong{display:block}.field-card__meta span{font-size:.8rem;color:var(--color-text-muted)}.field-card__actions{display:flex;gap:6px}.property-panel{position:-webkit-sticky;position:sticky;top:12px}.soap-form__section{margin-bottom:20px}.soap-form__section-title{margin:0 0 8px;font-size:1rem}.soap-form__section-key{display:inline-block;width:22px;height:22px;line-height:22px;text-align:center;border-radius:4px;background:var(--color-primary);color:#fff;font-size:.8rem;margin-right:6px}.soap-form__empty{color:var(--color-text-muted);font-size:.85rem}.soap-field{margin-bottom:12px}.soap-field__label{display:block;font-size:.85rem;color:var(--color-text-muted);margin-bottom:4px}.soap-field__required{color:var(--color-danger);margin-left:2px}.soap-field input,.soap-field select,.soap-field textarea{width:100%;padding:8px 10px;border:1px solid var(--color-border);border-radius:var(--radius);font-family:inherit}.soap-field__number-row{display:flex;align-items:center;gap:8px}.soap-field__unit{color:var(--color-text-muted);font-size:.85rem}.soap-field__checkbox-group{display:flex;flex-wrap:wrap;gap:12px}.soap-field__checkbox-option{display:flex;align-items:center;gap:4px;font-size:.9rem}.diff-added{background:#e7f1e9}.diff-removed{background:#fae9eb;text-decoration:line-through}.diff-changed{background:#f8eedf}.diff-table{width:100%;border-collapse:collapse;font-size:.9rem}.diff-table td,.diff-table th{border:1px solid var(--color-border);padding:6px 10px;text-align:left;vertical-align:top}.list-table{width:100%;border-collapse:collapse}.list-table td,.list-table th{border-bottom:1px solid var(--color-border);padding:10px;text-align:left}.error-banner{background:#fae9eb;border:1px solid var(--color-danger);color:var(--color-danger);border-radius:var(--radius);padding:10px 14px;margin-bottom:16px;white-space:pre-wrap}.toolbar{display:flex;gap:8px;align-items:center;margin-bottom:16px;flex-wrap:wrap}.viz-root{color-scheme:light;--surface-1:snow;--text-primary:#3f3035;--text-secondary:#746268;--text-muted:#9a858c;--gridline:#eadcdf;--baseline:#cfbbc1;--series-1:#9c596b;--series-2:#5c856f}.analytics-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:16px;gap:16px}.analytics-card--wide{grid-column:1/-1}.analytics-card__label{margin:0 0 12px}.analytics-card__caption,.analytics-card__label{font-size:.85rem;color:var(--text-secondary,var(--color-text-muted))}.analytics-card__caption{margin:8px 0 0}.analytics-hero{margin:0;font-size:48px;font-weight:600;color:var(--text-primary,var(--color-text));font-feature-settings:"pnum";font-variant-numeric:proportional-nums}.analytics-axis-label{font-size:11px;fill:var(--text-muted)}.bar-chart{display:flex;flex-direction:column;gap:16px}.bar-chart__row{display:flex;align-items:center;gap:10px}.bar-chart__row-label{width:110px;font-size:.85rem;color:var(--text-secondary);flex-shrink:0}.bar-chart__track{flex:1 1;height:20px;background:var(--gridline);border-radius:4px;overflow:hidden}.bar-chart__fill{height:100%;border-radius:4px;transition:width .2s ease}.bar-chart__row-value{width:56px;text-align:right;font-size:.85rem;color:var(--text-primary);flex-shrink:0}