:root{--color-bg: #f7f8fa;--color-surface: #ffffff;--color-text: #1a1d21;--color-muted: #5b6470;--color-border: #d7dbe0;--color-primary: #1f5fb8;--color-primary-dark: #164a91;--color-danger: #b3261e;--color-danger-dark: #8c1d17;--color-success-bg: #e6f4ea;--color-success-text: #1e6b34;--color-warning-bg: #fff4e0;--color-warning-text: #8a5a00;--color-error-bg: #fdecea;--color-error-text: #8a1c15;--focus-ring: 3px solid #ffb400;--radius: 8px}*{box-sizing:border-box}body{margin:0;background:var(--color-bg);color:var(--color-text);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:16px;line-height:1.5}a{color:var(--color-primary)}:focus-visible{outline:var(--focus-ring);outline-offset:2px}.skip-link{position:absolute;left:-9999px;top:0;background:var(--color-primary);color:#fff;padding:8px 12px;z-index:100}.skip-link:focus{left:8px;top:8px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.app-shell{display:flex;flex-direction:column;min-height:100vh}.app-header{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:12px 16px;background:var(--color-surface);border-bottom:1px solid var(--color-border)}.app-title{font-weight:700}.main-nav{display:flex;gap:4px;flex-wrap:wrap}.nav-link{padding:6px 10px;border-radius:var(--radius);text-decoration:none;color:var(--color-text)}.nav-link-active{background:var(--color-primary);color:#fff}.app-header-user{margin-left:auto;display:flex;align-items:center;gap:8px}.app-main{flex:1;padding:16px;max-width:1100px;width:100%;margin:0 auto}.demo-badge{background:#3b2f00;color:#ffd76a;text-align:center;padding:6px 12px;font-weight:600;font-size:.9rem}.btn{border:1px solid transparent;border-radius:var(--radius);padding:8px 14px;font-size:.95rem;cursor:pointer;min-height:40px}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--color-primary-dark)}.btn-secondary{background:var(--color-surface);color:var(--color-text);border-color:var(--color-border)}.btn-danger{background:var(--color-danger);color:#fff}.btn-danger:hover:not(:disabled){background:var(--color-danger-dark)}.btn-small{padding:4px 8px;min-height:32px;font-size:.85rem}.state{padding:24px;text-align:center;border-radius:var(--radius);background:var(--color-surface);border:1px solid var(--color-border)}.state-error{border-color:var(--color-error-text)}.banner{padding:10px 14px;border-radius:var(--radius);margin-bottom:12px}.banner-success{background:var(--color-success-bg);color:var(--color-success-text)}.banner-warning{background:var(--color-warning-bg);color:var(--color-warning-text)}.banner-error{background:var(--color-error-bg);color:var(--color-error-text)}.card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:16px}.plain-list{list-style:none;padding:0;margin:8px 0}.plain-list li{padding:4px 0}.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:.8rem;font-weight:600}.badge-active{background:var(--color-success-bg);color:var(--color-success-text)}.badge-inactive{background:#eceff1;color:var(--color-muted)}.badge-invalid{background:var(--color-error-bg);color:var(--color-error-text)}.badge-status-success{background:var(--color-success-bg);color:var(--color-success-text)}.badge-status-error,.badge-status-crashed{background:var(--color-error-bg);color:var(--color-error-text)}.badge-status-running,.badge-status-waiting,.badge-status-new{background:var(--color-warning-bg);color:var(--color-warning-text)}.badge-status-canceled,.badge-status-unknown{background:#eceff1;color:var(--color-muted)}.data-table{width:100%;border-collapse:collapse;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);overflow:hidden}.data-table th,.data-table td{padding:8px 10px;border-bottom:1px solid var(--color-border);text-align:left;vertical-align:top}.data-table th{background:#eef1f5}.pagination{display:flex;gap:8px;margin-top:12px}.filters{display:flex;flex-wrap:wrap;gap:16px;align-items:center;margin-bottom:12px}.filters label{display:flex;flex-direction:column;gap:4px;font-size:.9rem}.row-form{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:16px;margin:12px 0;max-width:480px}.form-field{display:flex;flex-direction:column;gap:4px;margin-bottom:10px}.form-field input{padding:8px;border:1px solid var(--color-border);border-radius:4px;font-size:1rem}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}.dialog-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center;padding:16px;z-index:50}.dialog{background:var(--color-surface);border-radius:var(--radius);padding:20px;max-width:420px;width:100%;max-height:90vh;overflow-y:auto}.login-page{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:16px}.login-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:24px;max-width:360px;width:100%}.login-card form{display:flex;flex-direction:column;gap:6px}.login-card input{padding:10px;border:1px solid var(--color-border);border-radius:4px;font-size:1rem;margin-bottom:8px}.login-card button{margin-top:8px}.hint{color:var(--color-muted);font-size:.9rem}.detail-list{display:grid;grid-template-columns:max-content 1fr;gap:4px 16px}.detail-list dt{font-weight:600}.detail-list dd{margin:0}@media (max-width: 640px){.app-header{flex-direction:column;align-items:stretch}.app-header-user{margin-left:0;justify-content:space-between}.data-table,.data-table thead,.data-table tbody,.data-table tr{display:block;width:100%}.data-table thead{display:none}.data-table tr{border-bottom:2px solid var(--color-border);padding:8px 0}.data-table td{display:flex;justify-content:space-between;gap:8px;border-bottom:none;padding:4px 10px}.data-table td:before{content:attr(data-label);font-weight:600;color:var(--color-muted)}}@media (prefers-color-scheme: dark){:root{--color-bg: #14171a;--color-surface: #1e2226;--color-text: #edf0f2;--color-muted: #9aa4ad;--color-border: #33393f}.data-table th{background:#262b30}}
