:root{--bg:#f5f6f8;--surface:#ffffff;--border:#d9dce1;--text:#1f2430;--muted:#6b7280;--primary:#2563eb;--primary-hover:#1d4ed8;--danger:#dc2626;--danger-hover:#b91c1c;--nav-bg:#1f2937;--nav-text:#e5e7eb;--radius:8px;color-scheme:light}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:15px;line-height:1.5}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}.navbar{background:var(--nav-bg);color:var(--nav-text)}.navbar-inner{max-width:1100px;margin:0 auto;padding:0 1.25rem;display:flex;align-items:center;gap:.25rem;min-height:52px}.navbar-wide .navbar-inner{max-width:none}.navbar .brand{color:#fff;font-weight:600;margin-right:1.5rem;white-space:nowrap}.navbar .brand:hover{text-decoration:none}.nav-item{position:relative}.nav-link{display:inline-block;padding:.5rem .85rem;color:var(--nav-text);border-radius:6px;cursor:pointer;background:none;border:none;font:inherit}.nav-link:hover{background:rgba(255,255,255,.08);text-decoration:none}.nav-link.active{background:rgba(255,255,255,.16);color:#fff}.nav-spacer{flex:1 1}.dropdown-menu{position:absolute;top:100%;left:0;background:var(--surface);border:1px solid var(--border);border-radius:6px;box-shadow:0 6px 20px rgba(0,0,0,.12);min-width:220px;padding:.25rem;z-index:20}.dropdown-menu a{display:block;padding:.5rem .75rem;color:var(--text);border-radius:4px}.dropdown-menu a:hover{background:var(--bg);text-decoration:none}.page{max-width:1100px;margin:1.5rem auto;padding:0 1.25rem 3rem}.page-wide{max-width:none;width:100%;margin:1.5rem 0}.table-scroll{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.page-wide .table-scroll{margin-inline:-1.25rem;width:calc(100% + 2.5rem)}.page-wide .table-scroll table.data{border-radius:0;border-left:none;border-right:none}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem;gap:1rem}.page-header h1{font-size:1.4rem;margin:0}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1rem 1.25rem;margin-bottom:1rem}.filter-panel{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.75rem}table.data{width:100%;border-collapse:collapse;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}table.data td,table.data th{text-align:left;padding:.6rem .75rem;border-bottom:1px solid var(--border);vertical-align:middle}table.data th{background:#eef1f5;font-weight:600;font-size:.85rem;text-transform:uppercase;letter-spacing:.02em;color:var(--muted)}table.data tr:last-child td{border-bottom:none}table.data th.sortable{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}table.data th.sortable:hover{background:#e3e8ef;color:var(--text)}table.data th.sortable.is-sorted{color:var(--primary)}.sort-arrow{display:inline-block;margin-left:.35rem;font-size:.7rem;line-height:1;opacity:.35}table.data th.sortable.is-sorted .sort-arrow{opacity:1}.filter-status{align-self:center;font-size:.85rem}tr.deleted td{color:#9aa1ad;font-style:italic}.row-actions{display:flex;gap:.5rem;flex-wrap:wrap;justify-content:flex-end}.btn{display:inline-flex;align-items:center;gap:.4rem;padding:.45rem .85rem;border-radius:6px;border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;font:inherit;font-size:.9rem}.btn,.btn:hover{text-decoration:none}.btn:hover{background:var(--bg)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-hover)}.btn-danger{color:var(--danger);border-color:var(--danger)}.btn-danger:hover{background:#fef2f2}.btn-sm{padding:.3rem .6rem;font-size:.82rem}.btn-link{border:none;background:none;color:var(--primary);padding:.3rem .4rem;cursor:pointer;font:inherit;font-size:.85rem}.btn-link:hover{text-decoration:underline}.icon-btn{display:inline-flex;align-items:center;justify-content:center;gap:.3rem;width:30px;height:30px;padding:0;border:1px solid transparent;border-radius:6px;background:none;color:var(--muted);cursor:pointer;text-decoration:none}.icon-btn:hover{background:var(--bg);border-color:var(--border);color:var(--text);text-decoration:none}.icon-btn:disabled{opacity:.5;cursor:not-allowed}.icon-btn-danger:hover{color:var(--danger);border-color:var(--danger);background:#fef2f2}.icon-btn-labeled{width:auto;padding:0 .5rem;font-size:.82rem}@keyframes icon-spin{to{transform:rotate(1turn)}}.icon-spin{animation:icon-spin .8s linear infinite}.run-details>.run-summary{display:flex;justify-content:space-between;align-items:center;gap:.75rem;cursor:pointer;list-style-position:inside}.run-details[open]>.run-summary{margin-bottom:.5rem}.run-summary-title{flex:1 1}.run-name{font-weight:600}.glyph-preview-grid{display:flex;flex-wrap:wrap;gap:.75rem;margin:.5rem 0 1rem}.glyph-preview-cell{display:flex;flex-direction:column;align-items:center;gap:.25rem;font-size:.8rem}.asset-preview{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border);border-radius:6px;background:#fff;object-fit:contain;vertical-align:middle;overflow:hidden}.asset-preview-empty{color:#c2c7d0;background:var(--bg)}.asset-preview-empty.is-loading{background:linear-gradient(90deg,#eef1f5 25%,#e2e6ec 37%,#eef1f5 63%);background-size:400% 100%;animation:preview-shimmer 1.2s ease-in-out infinite}@keyframes preview-shimmer{0%{background-position:100% 0}to{background-position:0 0}}.preview-sample{display:inline-flex;gap:3px;align-items:center;flex-wrap:nowrap}.preview-overlay{position:fixed;inset:0;background:rgba(0,0,0,.7);display:flex;align-items:center;justify-content:center;z-index:100;cursor:zoom-out;padding:2rem}.preview-overlay-img{max-width:90vw;max-height:90vh;background:#fff;border-radius:8px;padding:1rem}.form{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem 1.5rem;max-width:720px}.form-wide{max-width:100%}.field{margin-bottom:1rem}.field label{display:block;font-weight:600;font-size:.85rem;margin-bottom:.3rem}.field .help{color:var(--muted);font-size:.8rem;margin-top:.2rem}input[type=date],input[type=email],input[type=number],input[type=password],input[type=search],input[type=text],select{width:100%;padding:.45rem .55rem;border:1px solid var(--border);border-radius:6px;font:inherit;background:#fff;color:var(--text)}.field-inline{display:flex;align-items:center;gap:.5rem}.field-inline input[type=checkbox]{width:auto}.field-inline label{margin-bottom:0}fieldset{border:1px solid var(--border);border-radius:var(--radius);padding:1rem 1.25rem;margin:0 0 1.25rem}fieldset legend{font-weight:600;padding:0 .5rem}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));grid-gap:0 1.25rem;gap:0 1.25rem}.form-actions{display:flex;gap:.75rem;margin-top:1rem}.error{color:var(--danger);margin:.75rem 0}.badge,.muted{color:var(--muted)}.badge{display:inline-block;padding:.15rem .5rem;border-radius:999px;font-size:.78rem;background:#eef1f5}.badge-active{background:#dcfce7;color:#166534}.badge-progress{background:#fef9c3;color:#854d0e}.pagination{display:flex;align-items:center;gap:.75rem;margin-top:1rem}.login-wrap{max-width:380px;margin:8vh auto}.login-wrap h1{text-align:center;font-size:1.5rem}.tabs{display:flex;gap:.25rem;border-bottom:1px solid var(--border);margin-bottom:1rem}.tab{padding:.5rem .9rem;border:1px solid transparent;border-bottom:none;border-radius:6px 6px 0 0;background:none;cursor:pointer;font:inherit}.tab.active{background:var(--surface);border-color:var(--border);margin-bottom:-1px;font-weight:600}.grid-form{width:100%;border-collapse:collapse}.grid-form td,.grid-form th{padding:.35rem .5rem;border-bottom:1px solid var(--border);overflow:visible}.combobox{position:relative}.combobox,.combobox-input{width:100%}.combobox-clear{position:absolute;top:50%;right:.4rem;transform:translateY(-50%);border:none;background:transparent;color:var(--muted);font-size:1.1rem;line-height:1;cursor:pointer;padding:0 .2rem}.combobox-clear:hover{color:var(--text)}.combobox-list{position:absolute;z-index:80;top:calc(100% + 2px);left:0;right:0;max-height:240px;overflow-y:auto;margin:0;padding:.25rem;list-style:none;background:var(--surface);border:1px solid var(--border);border-radius:6px;box-shadow:0 6px 18px rgba(0,0,0,.12)}.combobox-option{padding:.4rem .55rem;border-radius:4px;cursor:pointer;font-size:.9rem}.combobox-option.is-active{background:var(--bg)}.combobox-option.is-selected{color:var(--primary);font-weight:600}.combobox-empty{padding:.45rem .55rem;color:var(--muted);font-size:.85rem}