:root{--bg:#fafaf9;--fg:#1a1a1a;--card:#fff;--border:#e5e5e3;--accent:#5b4dc7;--accent-fg:#fff;--muted:#6b6b6b;--danger:#c0382c;--radius:10px}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--bg);color:var(--fg);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:15px;line-height:1.5}a{color:var(--accent)}.app-shell{display:flex;flex-direction:column;min-height:100vh}header.app-header{padding:1rem 2rem;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;background:var(--card)}header.app-header h1{margin:0;font-size:1.25rem}.app-brand{text-decoration:none;color:var(--fg);display:inline-flex;align-items:center;padding:.25rem .5rem;margin:-.25rem -.5rem;border-radius:6px}.app-brand:hover{background:var(--bg)}header.app-header .user{color:var(--muted);font-size:.9rem}.app-header-right{display:flex;align-items:center;gap:1rem}.app-header-right form{margin:0}.app-header-right button{font-size:.9rem;padding:.35rem .85rem}.app-body{display:flex;flex:1;min-height:0}.app-sidebar{width:220px;border-right:1px solid var(--border);background:var(--card);padding:1.25rem .75rem;flex-shrink:0}.app-sidebar nav{gap:.25rem}.app-sidebar nav,.nav-section{display:flex;flex-direction:column}.nav-section{margin-top:1.25rem;gap:.1rem}.nav-section-label{font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);padding:0 .75rem;margin-bottom:.35rem}.nav-link{display:block;padding:.45rem .75rem;border-radius:6px;text-decoration:none;color:var(--fg);font-size:.92rem}.nav-link:hover{background:var(--bg)}.nav-link-active{color:var(--accent-fg)}.nav-link-active,.nav-link-active:hover{background:var(--accent)}.app-main{flex:1;padding:2rem;max-width:1100px;margin:0 auto;width:100%}.app-main:has(.cbn-editor-page){max-width:min(1600px,calc(100vw - 1rem));padding-left:1rem;padding-right:1rem}.app-main:has(.ads-metrics-page),.app-main:has(.reporting-page){max-width:min(1180px,92vw)}main:not(.app-main){padding:2rem;max-width:1100px;margin:0 auto}.hub-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:1.5rem}.tile{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:1.5rem}.tile-header h2{margin:0 0 .25rem;font-size:1.15rem}.tile-header p{margin:0 0 1rem;color:var(--muted);font-size:.92rem}.tile-items{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.5rem}.tile-item{display:block;padding:.75rem 1rem;border:1px solid var(--border);border-radius:8px;text-decoration:none;color:var(--fg);transition:border-color .1s ease,background .1s ease}.tile-item:hover{border-color:var(--accent);background:var(--bg)}.tile-item-label{display:block;font-weight:600}.tile-item-desc{display:block;font-size:.88rem;color:var(--muted);margin-top:.15rem}.tile-item-disabled{display:block;padding:.75rem 1rem;border:1px dashed var(--border);border-radius:8px;color:var(--muted);cursor:not-allowed}.tile-item-disabled .tile-item-label{color:var(--muted)}.placeholder-page{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:2rem}.placeholder-page h1{margin-top:0}.placeholder-page p{color:var(--muted);margin-bottom:0}.step{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:1.5rem;margin-bottom:1.5rem}.step-header{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem}.step-num{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;background:var(--accent);color:var(--accent-fg);border-radius:50%;font-weight:600}.step h2{margin:0;font-size:1.1rem}label{display:block;font-size:.9rem;color:var(--muted);margin:.75rem 0 .25rem}input[type=text],select,textarea{width:100%;padding:.5rem .75rem;border:1px solid var(--border);border-radius:6px;font-size:1rem;font-family:inherit;background:var(--card);color:var(--fg)}textarea{min-height:80px;resize:vertical}button{background:var(--accent);color:var(--accent-fg);border:none;border-radius:6px;padding:.55rem 1rem;font-weight:600;cursor:pointer}button:disabled{opacity:.4;cursor:not-allowed}button.secondary{background:transparent;color:var(--accent);border:1px solid var(--accent)}.step-controls{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap;margin-top:1rem}.status{color:var(--muted);font-size:.9rem}.status.error{color:var(--danger)}.preview{margin-top:1rem;aspect-ratio:1/1;border:1px dashed var(--border);border-radius:var(--radius);display:flex;align-items:center;justify-content:center;overflow:hidden;background:#f0f0ee}.preview img,.preview svg{max-width:100%;max-height:100%}.preview .placeholder{color:var(--muted);padding:1rem;text-align:center}.step-outputs{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-top:1rem}.step-outputs .output>.output-label{display:block;margin-bottom:.4rem;color:var(--muted)}.downloads{margin-top:.5rem;display:flex;gap:.5rem}.downloads a{font-size:.85rem;padding:.3rem .6rem;border:1px solid var(--border);border-radius:6px;text-decoration:none;color:var(--fg)}.checkbox-row{display:flex;align-items:center;gap:.5rem;margin-top:.5rem}.checkbox-row input[type=checkbox]{width:auto}.hint{font-size:.85rem;margin-top:.25rem}.hint,.style-info{color:var(--muted)}.style-info{font-size:.9rem;margin:0 0 .5rem}.style-info strong{color:var(--fg)}.admin-users-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.admin-users-header h1{margin:0}.primary-link{background:var(--accent);color:var(--accent-fg);text-decoration:none;padding:.55rem 1rem;border-radius:6px;font-weight:600}.primary-link:hover{filter:brightness(1.1)}.secondary-link{color:var(--accent);text-decoration:none;padding:.35rem .75rem;border-radius:6px;border:1px solid var(--accent);display:inline-block;background:transparent;cursor:pointer;font:inherit;font-size:.9rem}.secondary-link:hover:not(:disabled){background:var(--bg)}.secondary-link:disabled{opacity:.55;cursor:not-allowed}.danger-link{color:var(--danger);text-decoration:none;background:transparent;padding:.35rem .75rem;border-radius:6px;border:1px solid var(--danger);display:inline-block;cursor:pointer;font:inherit;font-size:.9rem;font-weight:600}.danger-link:hover{background:var(--danger);color:#fff}.danger-link:disabled{opacity:.5;cursor:not-allowed}.danger-button{background:var(--danger);color:#fff;border:1px solid var(--danger);border-radius:6px;padding:.45rem .9rem;font-weight:600;cursor:pointer;font-size:.9rem}.danger-button:hover:not(:disabled){filter:brightness(.92)}.danger-button:disabled{opacity:.5;cursor:not-allowed}.user-table{width:100%;border-collapse:collapse;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.user-table td,.user-table th{text-align:left;padding:.85rem 1rem;border-bottom:1px solid var(--border);vertical-align:middle}.user-table th{background:var(--bg);font-size:.85rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.user-table tr:last-child td{border-bottom:none}.user-table .row-inactive td{opacity:.55}.user-table .row-actions{display:flex;gap:.5rem;justify-content:flex-end}.chips{display:flex;flex-wrap:wrap;gap:.35rem}.chip{display:inline-block;background:var(--bg);border:1px solid var(--border);border-radius:999px;padding:.2rem .65rem;font-size:.8rem}.chip-test{background:#fff7d6;border-color:#e6d68a;color:#856700;margin-left:.4rem}.status-ok{color:#186e3a;font-weight:600}.status-muted{color:var(--muted)}.admin-form-page{max-width:560px}.admin-form-page h1{margin-top:0}.user-form{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:1.5rem}.user-form input[type=email],.user-form input[type=password],.user-form input[type=text]{width:100%;padding:.5rem .75rem;border:1px solid var(--border);border-radius:6px;font-size:1rem;font-family:inherit;background:var(--card);color:var(--fg)}.user-form input[readonly]{background:var(--bg);color:var(--muted);cursor:not-allowed}.user-form .permissions{margin:1.25rem 0 .5rem;padding:1rem;border:1px solid var(--border);border-radius:8px}.user-form .permissions legend{padding:0 .5rem;font-weight:600}.user-form .permissions .hint{margin-top:0;margin-bottom:.5rem}.form-actions{display:flex;justify-content:flex-end;gap:.75rem;margin-top:1.5rem}.pipelines-page{display:flex;flex-direction:column;gap:1rem}.pipelines-header h1{margin:0 0 .25rem}.pipelines-header p{margin:.15rem 0;color:var(--muted);font-size:.9rem}.pipelines-header p a{word-break:break-all}.pipelines-header-top{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.pipelines-header-top>div{flex:1;min-width:0}.pipeline-row-actions{display:flex;gap:.75rem;justify-content:flex-end;align-items:center}.pipeline-row-name{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:.75rem;color:var(--muted);margin-top:.15rem;overflow:hidden;text-overflow:ellipsis}.pipelines-toolbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.4rem .1rem}.show-all-toggle{display:inline-flex;align-items:center;gap:.5rem;font-size:.9rem;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.show-all-toggle input[type=checkbox]{cursor:pointer}.show-all-toggle input[type=checkbox]:disabled,.show-all-toggle:has(input:disabled){cursor:progress;opacity:.7}.pipelines-table{width:100%;border-collapse:separate;border-spacing:0;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;table-layout:fixed}.pipelines-table td,.pipelines-table th{text-align:left;padding:.7rem 1rem;border-bottom:1px solid var(--border);vertical-align:middle;font-size:.92rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pipelines-table th{background:var(--bg);font-size:.78rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:600}.pipelines-table tr:last-child td{border-bottom:none}.pipelines-table tbody tr:hover td{background:var(--bg)}.pipelines-table td:first-child,.pipelines-table th:first-child{width:8rem}.pipelines-table td:nth-child(2),.pipelines-table th:nth-child(2){width:7rem}.pipelines-table td:nth-child(3),.pipelines-table th:nth-child(3){width:auto}.pipelines-table td:nth-child(4),.pipelines-table th:nth-child(4){width:9rem}.pipelines-table td:nth-child(5),.pipelines-table th:nth-child(5){width:11rem}.pipelines-table td:nth-child(6),.pipelines-table th:nth-child(6){width:14rem;text-align:right;overflow:visible}.pipelines-table code{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:.85rem;background:var(--bg);border:1px solid var(--border);padding:.1rem .45rem;border-radius:6px;color:var(--fg);max-width:100%;display:inline-block;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}.pipelines-table .muted-cell{color:var(--muted)}.pipeline-jobs-toggle{background:none;border:1px solid var(--border);border-radius:6px;padding:.2rem .55rem;font:inherit;font-size:.82rem;color:var(--fg);cursor:pointer;white-space:nowrap}.pipeline-jobs-toggle:hover:not(:disabled){background:var(--bg)}.pipeline-jobs-toggle:disabled{cursor:progress;opacity:.7}.pipeline-jobs-row td{background:var(--bg);white-space:normal;overflow:visible;padding:.9rem 1rem 1.1rem}.pipeline-jobs-toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:.6rem}.pipeline-stage+.pipeline-stage{margin-top:.7rem}.pipeline-stage-name{margin:0 0 .35rem;font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.pipeline-stage-jobs{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.4rem}.pipeline-job{display:inline-flex;align-items:center;gap:.4rem;padding:.2rem .55rem .2rem .3rem;background:var(--card);border:1px solid var(--border);border-radius:999px;text-decoration:none;color:var(--fg);font-size:.82rem;max-width:22rem}.pipeline-job:hover{background:var(--bg)}.pipeline-job-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pipeline-status{display:inline-block;padding:.15rem .55rem;border-radius:999px;font-size:.78rem;font-weight:600;letter-spacing:.02em;text-transform:lowercase;border:1px solid transparent;line-height:1.4}.pipeline-status--success{background:#e6f4ec;color:#186e3a;border-color:#b9dec7}.pipeline-status--running{background:#e7efff;color:#1e40af;border-color:#b9cdf2}.pipeline-status--failed{background:#fbe8e6;color:#9b1d13;border-color:#f0bdb7}.pipeline-status--canceled{background:#efefef;color:#555;border-color:#d8d8d8}.pipeline-status--skipped{background:#efefef;color:#777;border-color:#d8d8d8}.pipeline-status--manual{background:#f1ecfb;color:#4a3ba6;border-color:#d4c8ee}.pipeline-status--scheduled{background:#eef7f2;color:#2e6b48;border-color:#c4ddcf}.pipeline-status--created,.pipeline-status--pending,.pipeline-status--preparing,.pipeline-status--waiting_for_resource{background:#fff4d6;color:#7a5302;border-color:#f0d488}.trigger-page{padding-bottom:3rem}.pipeline-trigger-form{display:flex;flex-direction:column;gap:1.5rem}.trigger-form-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.trigger-form-header h1{margin:0}.trigger-form-header>div{flex:1;min-width:0}.trigger-form-section{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:1rem 1.25rem}.trigger-form-section h2{margin:0 0 .75rem;font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.trigger-form-section input[type=text],.trigger-form-section select,.trigger-form-section textarea{width:100%;padding:.5rem .65rem;border:1px solid var(--border);border-radius:8px;background:var(--card);color:var(--fg);font:inherit;font-size:.9rem}.trigger-form-section input[type=text]:focus,.trigger-form-section select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(91,77,199,.18)}.preset-row{display:flex;gap:.75rem;align-items:center}.preset-row select{flex:1}.branch-autocomplete{position:relative;width:100%}.branch-autocomplete input{width:100%;padding:.5rem .65rem;border:1px solid var(--border);border-radius:8px;background:var(--card);color:var(--fg);font:inherit;font-size:.9rem}.branch-autocomplete input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(91,77,199,.18)}.branch-autocomplete-menu{list-style:none;margin:.25rem 0 0;padding:.25rem 0;position:absolute;top:100%;left:0;right:0;z-index:10;max-height:14rem;overflow-y:auto;background:var(--card);color:var(--fg);border:1px solid var(--border);border-radius:8px;box-shadow:0 6px 20px rgba(0,0,0,.08)}.branch-autocomplete-option{padding:.4rem .7rem;font-size:.88rem;cursor:pointer;font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.branch-autocomplete-option--active,.branch-autocomplete-option:hover{background:var(--bg)}.variables-grid{display:flex;flex-direction:column;gap:1rem}.variable-field{display:grid;grid-template-columns:minmax(14rem,1fr) minmax(18rem,2fr);align-items:start;gap:.5rem 1.5rem;padding-bottom:1rem;border-bottom:1px solid var(--border)}.variable-field:last-child{border-bottom:none;padding-bottom:0}.variable-field label{display:flex;flex-direction:column;font-size:.85rem;font-weight:500}.variable-field .variable-key{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:.82rem;color:var(--fg);word-break:break-word}.variable-field .variable-label{font-size:.78rem;color:var(--muted);font-weight:400;margin-top:.15rem}.variable-description{margin:.3rem 0 0;font-size:.78rem;color:var(--muted);line-height:1.4;grid-column:1/-1}@media (max-width:720px){.variable-field{grid-template-columns:1fr}}.save-preset-section{background:#fbfaf6}.save-preset-row{display:flex;gap:.75rem;align-items:center}.save-preset-row input{flex:1}.primary-button{display:inline-block;padding:.55rem 1rem;background:var(--accent);color:var(--accent-fg);border:1px solid var(--accent);border-radius:8px;font:inherit;font-weight:600;cursor:pointer}.primary-button:hover:not(:disabled){filter:brightness(1.1)}.primary-button:disabled{opacity:.55;cursor:not-allowed}.postit{background:#fff5b8;color:#3a2a00;border:1px solid #ead87a;border-radius:8px;box-shadow:0 6px 18px rgba(0,0,0,.08);font-size:.8rem;margin:0 0 1rem;overflow:hidden}html.dark .postit{background:#3d3414;color:#ffe89a;border-color:#5a4d20;box-shadow:0 6px 18px rgba(0,0,0,.55)}.postit>.postit-header{list-style:none;cursor:pointer;padding:.55rem .75rem;display:flex;align-items:center;justify-content:space-between;gap:.5rem;border-bottom:1px solid rgba(0,0,0,.08)}.postit:not([open])>.postit-header{border-bottom:none}.postit>.postit-header::-webkit-details-marker{display:none}.postit-title{font-weight:700;font-size:.85rem;letter-spacing:.02em}.postit-copy{padding:.25rem .6rem;border:1px solid rgba(0,0,0,.15);background:hsla(0,0%,100%,.55);color:inherit;border-radius:999px;font-size:.72rem;font-weight:600;cursor:pointer}.postit-copy:hover{background:hsla(0,0%,100%,.85)}.postit-body{margin:0;padding:.7rem .85rem;white-space:pre-wrap;word-break:break-word;font-family:inherit;font-size:.75rem;line-height:1.45;max-height:240px;overflow-y:auto}.hint-inline{font-size:.78rem;color:var(--muted);font-weight:400}.refs{align-items:center;gap:.6rem;margin-bottom:.5rem}.refs,.refs-list{display:flex;flex-wrap:wrap}.refs-list{gap:.5rem}.ref-thumb{position:relative;width:64px;height:64px;border-radius:8px;border:1px solid var(--border);overflow:hidden;background:var(--bg)}.ref-thumb img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;display:block}.ref-remove{position:absolute;top:2px;right:2px;width:18px;height:18px;padding:0;border-radius:50%;border:none;background:rgba(0,0,0,.7);color:#fff;font-size:14px;line-height:16px;cursor:pointer;display:flex;align-items:center;justify-content:center}.ref-remove:hover{background:rgba(0,0,0,.9)}.prompt-input{width:100%;resize:vertical;min-height:3.5rem;font:inherit;line-height:1.4}.history{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap;margin-top:.5rem}.history-label{font-size:.78rem;color:var(--muted)}.history-thumb{width:44px;height:44px;padding:0;border-radius:6px;border:1px solid var(--border);overflow:hidden;background:var(--bg);cursor:pointer}.history-thumb img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;display:block}.history-thumb.active{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent)}.output-actions{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;margin-top:.5rem}.output-actions button.secondary{padding:.4rem .8rem;font-size:.85rem}.status.done{color:#1a5e2a}html.dark .status.done{color:#98e2b1}html.dark .status.error{color:#ff8d8a}.preview{position:relative}.preview.loading:before{content:"";position:absolute;width:48px;height:48px;border:4px solid rgba(91,77,199,.22);border-top:4px solid var(--accent);border-radius:50%;animation:pipeline-spin .9s linear infinite;z-index:2}.preview.loading:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,hsla(0,0%,100%,0),hsla(0,0%,100%,.35) 50%,hsla(0,0%,100%,0));animation:pipeline-shimmer 1.2s infinite}html.dark .preview.loading:after{background:linear-gradient(90deg,hsla(0,0%,100%,0),hsla(0,0%,100%,.06) 50%,hsla(0,0%,100%,0))}.preview.loading .placeholder{opacity:0}.preview.clickable{cursor:zoom-in}@keyframes pipeline-spin{to{transform:rotate(1turn)}}@keyframes pipeline-shimmer{0%{transform:translateX(-100%)}to{transform:translateX(100%)}}.lightbox{position:fixed;inset:0;background:rgba(0,0,0,.88);z-index:1000;cursor:zoom-out}.lightbox,.lightbox-content{display:flex;align-items:center;justify-content:center}.lightbox-content{max-width:92vw;max-height:92vh;cursor:default}.lightbox-content img,.lightbox-content svg{max-width:92vw;max-height:92vh;width:auto;height:auto;display:block;background:#fff;border-radius:4px}.lightbox-close{position:absolute;top:1rem;right:1rem;width:40px;height:40px;padding:0;border:none;border-radius:50%;background:hsla(0,0%,100%,.15);color:#fff;font-size:1.5rem;line-height:1;cursor:pointer}.lightbox-close:hover{background:hsla(0,0%,100%,.25)}.overlay-block{display:grid;gap:.6rem;margin-top:1rem}.overlay-preview{position:relative}.overlay-preview>.overlay-svg,.overlay-preview>img{position:absolute;inset:0;width:100%;height:100%}.overlay-preview>img{-o-object-fit:contain;object-fit:contain;background:var(--bg)}.overlay-preview>.overlay-svg svg{width:100%;height:100%}.overlay-controls{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.overlay-controls label{margin:0;flex:0 0 auto}.overlay-controls input[type=range]{flex:1;min-width:160px;max-width:320px}.overlay-actions{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.step-controls .output-label{display:inline-flex;align-items:center;gap:.4rem;margin:0}.step-controls .output-label input[type=checkbox]{margin:0;cursor:pointer}@media (max-width:600px){.step-outputs{grid-template-columns:1fr}}html.dark{--bg:#15151a;--card:#1f1f25;--fg:#ececf0;--muted:#8a8a93;--border:#2f2f37;--accent:#6c9bf5;--accent-fg:#0a0a0d;--danger:#ff8d8a;color-scheme:dark}html.dark body{background:var(--bg);color:var(--fg)}html.dark .preview{background:#25252c}html.dark .chip-test{background:#4a3e15;color:#f3d77c;border-color:#5a4d20}html.dark .status-ok{color:#98e2b1}html.dark .pipeline-status--success{background:#163a25;color:#98e2b1;border-color:#245c3c}html.dark .pipeline-status--running{background:#1a2a55;color:#b8cbff;border-color:#2c4486}html.dark .pipeline-status--failed{background:#4a1c18;color:#ff9b94;border-color:#6e2c25}html.dark .pipeline-status--canceled,html.dark .pipeline-status--skipped{background:#2a2a30;color:#b5b5bd;border-color:#3c3c44}html.dark .pipeline-status--manual{background:#2b2148;color:#c8b6f4;border-color:#443478}html.dark .pipeline-status--scheduled{background:#1f3a2c;color:#a9d6bc;border-color:#2f5a45}html.dark .pipeline-status--created,html.dark .pipeline-status--pending,html.dark .pipeline-status--preparing,html.dark .pipeline-status--waiting_for_resource{background:#3a2f15;color:#f3d77c;border-color:#5a4d20}html.dark .save-preset-section{background:#25252c}.theme-toggle{border-radius:999px;font-size:.85rem;padding:.35rem .85rem}.pipeline-list-section,.preview-section{margin-top:2rem;padding:1.25rem 1.5rem;background:var(--card);border:1px solid var(--border);border-radius:var(--radius)}.preview-section-header h2{margin:0 0 .25rem;font-size:1.05rem}.preview-section-header p{margin:0 0 1rem}.new-images-grid{list-style:none;padding:0;margin:1rem 0 0;display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:1rem}.new-image-card{display:flex;flex-direction:column;gap:.4rem;border:1px solid var(--border);border-radius:8px;overflow:hidden;background:var(--bg)}.new-image-thumb{width:100%;aspect-ratio:1/1;-o-object-fit:cover;object-fit:cover;background:var(--card);display:block}.new-image-meta{padding:.4rem .5rem .55rem}.new-image-id{font-size:.78rem;font-family:ui-monospace,SFMono-Regular,monospace;word-break:break-all;margin-bottom:.25rem}.new-image-tags{display:flex;flex-wrap:wrap;gap:.25rem}.badge{display:inline-block;font-size:.7rem;padding:.1rem .4rem;border-radius:999px;background:var(--bg);border:1px solid var(--border);color:var(--muted)}.badge-free{background:#e8f5ee;color:#1f6b3a;border-color:#cfe5d8}.badge-paid{background:#fdecec;color:#8a2a23;border-color:#f1cfcc}html.dark .badge{background:#2a2a30;border-color:#3c3c44}html.dark .badge-free{background:#163a25;color:#98e2b1;border-color:#245c3c}html.dark .badge-paid{background:#4a1c18;color:#ff9b94;border-color:#6e2c25}.cbn-editor-page{display:flex;flex-direction:column;gap:1rem;padding-bottom:3rem}.cbn-editor-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.cbn-editor-header h1{margin:0 0 .2rem}.cbn-editor-header>div{flex:1;min-width:0}.cbn-editor-toolbar{display:flex;align-items:center;gap:.5rem;padding:.5rem;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);flex-wrap:wrap}.cbn-toolbar-spacer{flex:1}.cbn-editor-pagination{display:flex;align-items:center;gap:.75rem;padding:.4rem .6rem;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);flex-wrap:wrap;font-size:.85rem}.cbn-search-input{flex:1;min-width:14rem;padding:.35rem .6rem;border:1px solid var(--border);border-radius:6px;background:var(--card);color:var(--fg);font:inherit;font-size:.85rem}.cbn-search-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px rgba(91,77,199,.18)}.cbn-page-size{display:inline-flex;align-items:center;gap:.4rem;color:var(--muted);font-size:.85rem;white-space:nowrap}.cbn-page-size select{padding:.25rem .4rem;border:1px solid var(--border);border-radius:6px;background:var(--card);color:var(--fg);font:inherit;font-size:.85rem}.cbn-page-status{color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}.cbn-page-nav{display:inline-flex;align-items:center;gap:.25rem}.cbn-page-nav .secondary-link{padding:.25rem .55rem;font-size:.9rem;line-height:1}.cbn-page-jump{display:inline-flex;align-items:center;gap:.3rem;color:var(--muted);font-variant-numeric:tabular-nums;padding:0 .2rem;white-space:nowrap}.cbn-page-jump input{width:3.5rem;padding:.2rem .35rem;border:1px solid var(--border);border-radius:6px;background:var(--card);color:var(--fg);font:inherit;font-size:.85rem;text-align:center}.cbn-editor-table-wrap{border:1px solid var(--border);border-radius:var(--radius);background:var(--card);overflow-x:auto}.cbn-editor-table{width:100%;border-collapse:separate;border-spacing:0;font-size:.88rem;min-width:1100px}.cbn-editor-table td,.cbn-editor-table th{padding:.45rem .6rem;border-bottom:1px solid var(--border);vertical-align:middle;text-align:left}.cbn-editor-table th{background:var(--bg);font-size:.74rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:600;white-space:nowrap;position:sticky;top:0;z-index:1}.cbn-editor-table tr:last-child td{border-bottom:none}.cbn-editor-table tr.cbn-row-selected td{background:rgba(91,77,199,.06)}.cbn-editor-table tbody tr:hover td{background:var(--bg)}.cbn-editor-table tr.cbn-row-selected:hover td{background:rgba(91,77,199,.1)}.cbn-editor-table input[type=date],.cbn-editor-table input[type=number],.cbn-editor-table input[type=text],.cbn-editor-table select{width:100%;padding:.3rem .4rem;border:1px solid var(--border);border-radius:6px;background:var(--card);color:var(--fg);font:inherit;font-size:.85rem}.cbn-editor-table input:focus,.cbn-editor-table select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px rgba(91,77,199,.18)}.cbn-col-select{width:2rem;text-align:center}.cbn-col-preview{width:4rem}.cbn-col-asset{width:18rem}.cbn-col-date{width:9rem}.cbn-col-type{width:5rem}.cbn-col-free{width:3.5rem;text-align:center}.cbn-col-tags{width:18rem}.cbn-col-holiday{width:11rem}.cbn-col-notes{width:12rem}.cbn-holidays-table{min-width:520px}.cbn-col-day{width:8rem}.cbn-col-key{width:auto;min-width:14rem}.cbn-col-delete{width:3rem;text-align:center}.cbn-col-delete .cbn-tab-delete{width:1.9rem;height:1.9rem}.cbn-empty-row{text-align:center;color:var(--muted);padding:2rem!important;font-style:italic}.cbn-preview-image,.cbn-preview-placeholder{width:48px;height:48px;border-radius:6px;border:1px solid var(--border);-o-object-fit:cover;object-fit:cover;display:block}.cbn-preview-placeholder{background:var(--bg);color:var(--muted);display:flex;align-items:center;justify-content:center;font-size:1.2rem}.cbn-preview-button{padding:0;margin:0;border:none;background:none;cursor:zoom-in;display:block}.cbn-lightbox-backdrop{position:fixed;inset:0;z-index:1000;background:rgba(0,0,0,.8);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;padding:2rem;cursor:zoom-out}.cbn-lightbox-img{max-width:90vw;max-height:82vh;-o-object-fit:contain;object-fit:contain;border-radius:8px;background:#fff;box-shadow:0 8px 40px rgba(0,0,0,.5);cursor:default}.cbn-lightbox-caption{color:#fff;font-size:.9rem;font-family:var(--mono,ui-monospace,monospace);cursor:default}.cbn-lightbox-close{position:fixed;top:1rem;right:1.25rem;width:2.4rem;height:2.4rem;border-radius:50%;border:none;background:hsla(0,0%,100%,.16);color:#fff;font-size:1.6rem;line-height:1;cursor:pointer}.cbn-lightbox-close:hover{background:hsla(0,0%,100%,.3)}.cbn-editor-table--resizable{table-layout:fixed;min-width:0}.cbn-editor-table--resizable th{position:relative}.cbn-editor-table--resizable th .cbn-col-label{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cbn-col-resizer{position:absolute;top:0;right:-3px;width:7px;height:100%;cursor:col-resize;-webkit-user-select:none;-moz-user-select:none;user-select:none;touch-action:none;z-index:2}.cbn-col-resizer:hover{background:var(--accent);opacity:.45}.cbn-asset-autocomplete{position:relative}.cbn-asset-menu{list-style:none;margin:.2rem 0 0;padding:.2rem 0;position:absolute;top:100%;left:0;right:0;z-index:5;max-height:14rem;overflow-y:auto;background:var(--card);color:var(--fg);border:1px solid var(--border);border-radius:6px;box-shadow:0 6px 20px rgba(0,0,0,.08)}.cbn-asset-option{padding:.3rem .6rem;font-size:.82rem;cursor:pointer;font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cbn-asset-option--active,.cbn-asset-option:hover{background:var(--bg)}.cbn-tag-editor{display:flex;flex-wrap:wrap;gap:.3rem;align-items:center}.cbn-tag-chip{display:inline-flex;align-items:center;gap:.2rem;padding:.1rem .45rem;background:var(--bg);color:var(--fg);border:1px solid var(--border);border-radius:999px;font-size:.75rem}.cbn-tag-chip-remove{background:none;border:none;color:var(--muted);cursor:pointer;font:inherit;line-height:1;padding:0 .15rem}.cbn-tag-chip-remove:hover{color:var(--danger)}.cbn-tag-add-button{background:transparent;border:1px dashed var(--border);color:var(--muted);cursor:pointer;border-radius:999px;padding:.1rem .5rem;font:inherit;font-size:.75rem}.cbn-tag-add-button:hover{color:var(--fg);border-color:var(--accent)}.cbn-tag-add-wrap{position:relative;display:inline-block}.cbn-tag-add-wrap input{padding:.15rem .4rem!important;border-radius:999px!important;font-size:.78rem!important;min-width:7rem}.cbn-tag-suggestions{list-style:none;margin:.2rem 0 0;padding:.2rem 0;position:absolute;top:100%;left:0;right:0;z-index:4;background:var(--card);border:1px solid var(--border);border-radius:6px;box-shadow:0 6px 20px rgba(0,0,0,.08)}.cbn-tag-suggestions li{padding:.25rem .55rem;font-size:.78rem;cursor:pointer}.cbn-tag-suggestions li:hover{background:var(--bg)}.cbn-modal-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.35);display:flex;align-items:center;justify-content:center;z-index:100}.cbn-modal{background:var(--card);color:var(--fg);border:1px solid var(--border);border-radius:12px;box-shadow:0 20px 60px rgba(0,0,0,.25);width:min(560px,calc(100vw - 2rem));max-height:calc(100vh - 2rem);overflow-y:auto;padding:1.25rem}.cbn-modal--wide{width:min(820px,calc(100vw - 2rem))}.cbn-modal header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.cbn-modal header h2{margin:0;font-size:1.05rem}.cbn-modal-close{background:none;border:none;color:var(--muted);font-size:1.4rem;cursor:pointer;line-height:1}.cbn-modal textarea{width:100%;padding:.5rem;border:1px solid var(--border);border-radius:8px;background:var(--card);color:var(--fg);font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:.85rem}.cbn-modal textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(91,77,199,.18)}.cbn-modal-actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:.75rem}html.dark .cbn-editor-table tr.cbn-row-selected td{background:rgba(140,124,240,.1)}html.dark .cbn-editor-table tr.cbn-row-selected:hover td{background:rgba(140,124,240,.16)}.cbn-editor-filters{display:flex;align-items:center;gap:.75rem;padding:.4rem .6rem;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);flex-wrap:wrap;font-size:.85rem}.cbn-filter-control{display:inline-flex;align-items:center;gap:.4rem;color:var(--muted);font-size:.85rem;white-space:nowrap}.cbn-filter-control select{padding:.25rem .4rem;border:1px solid var(--border);border-radius:6px;background:var(--card);color:var(--fg);font:inherit;font-size:.85rem;max-width:16rem}.cbn-editor-table tr.cbn-row-dirty td{background:rgba(255,184,0,.1);box-shadow:inset 3px 0 0 0 #f5a623}.cbn-editor-table tr.cbn-row-dirty:hover td{background:rgba(255,184,0,.16)}.cbn-editor-table tr.cbn-row-dirty.cbn-row-selected td{background:rgba(255,184,0,.16);box-shadow:inset 3px 0 0 0 #f5a623}html.dark .cbn-editor-table tr.cbn-row-dirty td{background:rgba(245,166,35,.12)}html.dark .cbn-editor-table tr.cbn-row-dirty.cbn-row-selected td,html.dark .cbn-editor-table tr.cbn-row-dirty:hover td{background:rgba(245,166,35,.2)}.cbn-save-button{display:inline-flex;align-items:center;gap:.45rem}.cbn-save-button:disabled{opacity:.45;cursor:not-allowed}.cbn-pending-badge{display:inline-flex;align-items:center;justify-content:center;min-width:1.4rem;padding:0 .4rem;background:hsla(0,0%,100%,.25);border-radius:999px;font-size:.75rem;font-weight:600;font-variant-numeric:tabular-nums}.cbn-diff-list{max-height:min(60vh,480px);overflow-y:auto;border:1px solid var(--border);border-radius:8px;background:var(--bg);padding:.4rem .6rem;margin:.25rem 0 .5rem}.cbn-diff-row{padding:.5rem 0;border-bottom:1px dashed var(--border)}.cbn-diff-row:last-child{border-bottom:none}.cbn-diff-row-title{font-size:.85rem;margin-bottom:.25rem}.cbn-diff-row-title code{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:.82rem}.cbn-diff-fields{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.2rem}.cbn-diff-fields li{font-size:.82rem;color:var(--muted)}.cbn-diff-field-label{color:var(--fg);font-weight:600}.cbn-diff-old{color:var(--muted);text-decoration:line-through}.cbn-diff-new{color:var(--fg);font-weight:600}.cbn-diff-arrow{color:var(--muted)}.cbn-hub-breadcrumb{margin-bottom:.5rem;font-size:.85rem}.cbn-hub-breadcrumb .secondary-link{display:inline-block;padding:.25rem .5rem;font-size:.85rem}.cbn-hub-platforms{display:flex;flex-direction:column;gap:1.5rem;margin-bottom:1rem}.cbn-platform-section{display:flex;flex-direction:column;gap:.5rem}.cbn-platform-header{display:flex;align-items:baseline;gap:.75rem;padding-bottom:.25rem;border-bottom:1px solid var(--border)}.cbn-platform-header h2{margin:0;font-size:1rem;text-transform:uppercase;letter-spacing:.06em;color:var(--fg)}.cbn-platform-count{font-size:.82rem;color:var(--muted)}.cbn-tab-row{display:flex;align-items:stretch;gap:.5rem}.cbn-tab-tile{flex:1;min-width:0}.cbn-tab-delete,.cbn-tab-locked{display:inline-flex;align-items:center;justify-content:center;width:2.4rem;border-radius:8px;font-size:1.1rem;line-height:1}.cbn-tab-delete{background:transparent;border:1px solid var(--border);color:var(--muted);cursor:pointer;padding:0;font-weight:500}.cbn-tab-delete:hover{border-color:#d04646;background:rgba(208,70,70,.08);color:#d04646}.cbn-tab-locked{border:1px solid transparent;color:var(--muted);cursor:not-allowed;background:transparent}.cbn-new-table-btn{align-self:flex-start;background:transparent;color:var(--accent);border:1px dashed var(--accent);border-radius:8px;padding:.4rem .8rem;font-size:.88rem;font-weight:500;cursor:pointer;margin-top:.25rem}.cbn-new-table-btn:hover{background:rgba(91,77,199,.06)}.cbn-new-table-form{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:.5rem}.cbn-new-table-form input{padding:.4rem .6rem;border:1px solid var(--border,#d6d6e0);border-radius:8px;font-size:.88rem;min-width:14rem}.cbn-tab-badge{display:inline-block;margin-left:.5rem;padding:.05rem .5rem;border-radius:999px;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;vertical-align:middle}.cbn-tab-badge--prod{background:rgba(38,154,87,.14);color:#1f7a44;border:1px solid rgba(38,154,87,.35)}.cbn-tab-badge--stag{background:rgba(245,166,35,.14);color:#a87213;border:1px solid rgba(245,166,35,.4)}html.dark .cbn-tab-badge--prod{background:rgba(82,196,132,.18);color:#7bd8a4;border-color:rgba(82,196,132,.45)}html.dark .cbn-tab-badge--stag{background:rgba(245,166,35,.18);color:#f5c66b;border-color:rgba(245,166,35,.45)}.cbn-tab-source-badge--pg{background:rgba(91,77,199,.16);color:#4a3aa8;border:1px solid rgba(91,77,199,.45)}.cbn-tab-source-badge--sheets{background:hsla(0,0%,47%,.14);color:#555;border:1px solid hsla(0,0%,47%,.35)}html.dark .cbn-tab-source-badge--pg{background:rgba(140,124,240,.2);color:#b6abf8;border-color:rgba(140,124,240,.5)}html.dark .cbn-tab-source-badge--sheets{background:hsla(0,0%,78%,.1);color:#bbb;border-color:hsla(0,0%,78%,.3)}.cbn-editor-error{padding:.5rem .75rem;background:rgba(208,70,70,.1);border:1px solid rgba(208,70,70,.45);border-radius:var(--radius);color:#b13838;font-size:.88rem}html.dark .cbn-editor-error{background:hsla(0,100%,70%,.1);border-color:hsla(0,100%,70%,.4);color:#ff9595}.cbn-seed-prompt{background:var(--card);border:1px dashed var(--border);border-radius:var(--radius);padding:1.5rem;text-align:center;display:flex;flex-direction:column;gap:.75rem;align-items:center}.cbn-seed-prompt h2{margin:0;font-size:1.1rem}.cbn-seed-prompt p{margin:0;color:var(--muted);max-width:480px}.cbn-seed-error{color:#b13838;font-size:.9rem;margin:0}html.dark .cbn-seed-error{color:#ff9595}.cbn-import-pick{display:flex;flex-direction:column;gap:.5rem;margin:.5rem 0 .75rem}.cbn-import-pick input[type=file]{font-size:.85rem}.cbn-import-pick-label{font-size:.85rem;color:var(--muted)}.cbn-import-pick-label code{background:var(--bg);padding:.1rem .35rem;border-radius:4px;color:var(--fg)}.cbn-import-preview{display:flex;flex-direction:column;gap:.75rem;margin-top:.5rem}.cbn-import-preview h3{margin:0;font-size:.95rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.cbn-import-summary{margin:0;padding:.6rem .8rem;border-radius:8px;font-size:.9rem}.cbn-import-summary--populate{background:rgba(38,154,87,.1);border:1px solid rgba(38,154,87,.4);color:#1f7a44}.cbn-import-summary--replace{background:rgba(208,70,70,.1);border:1px solid rgba(208,70,70,.45);color:#b13838}html.dark .cbn-import-summary--populate{background:rgba(82,196,132,.14);color:#7bd8a4;border-color:rgba(82,196,132,.45)}html.dark .cbn-import-summary--replace{background:hsla(0,100%,70%,.14);color:#ff9595;border-color:hsla(0,100%,70%,.45)}.cbn-import-sample{width:100%;border-collapse:collapse;font-size:.8rem}.cbn-import-sample td,.cbn-import-sample th{text-align:left;padding:.35rem .5rem;border-bottom:1px solid var(--border)}.cbn-import-sample th{background:var(--bg);font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:600;white-space:nowrap}.cbn-import-sample td code{font-size:.78rem}.cbn-import-empty{color:var(--muted);font-style:italic}.cbn-import-warnings summary{cursor:pointer;color:#a87213;font-size:.85rem}.cbn-import-warnings ul{list-style:disc;padding-left:1.25rem;margin-top:.4rem;font-size:.82rem;color:var(--muted);max-height:12rem;overflow-y:auto}.cbn-import-ack{display:flex;gap:.5rem;align-items:flex-start;padding:.6rem .75rem;border:1px solid rgba(208,70,70,.45);background:rgba(208,70,70,.06);border-radius:8px;font-size:.85rem;line-height:1.35;cursor:pointer}.cbn-import-ack input[type=checkbox]{margin-top:.15rem}html.dark .cbn-import-ack{border-color:hsla(0,100%,70%,.4);background:hsla(0,100%,70%,.08)}.cbn-import-success{display:flex;flex-direction:column;gap:.5rem;padding:.75rem .9rem;border-radius:8px;background:rgba(38,154,87,.1);border:1px solid rgba(38,154,87,.4);color:#1f7a44}.cbn-import-success p{margin:0}html.dark .cbn-import-success{background:rgba(82,196,132,.14);color:#7bd8a4;border-color:rgba(82,196,132,.45)}.table-scroll{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius)}.data-table{width:100%;border-collapse:collapse;font-size:.85rem}.data-table td,.data-table th{padding:.4rem .6rem;text-align:left;border-bottom:1px solid var(--border);white-space:nowrap}.data-table thead th{background:var(--card);font-weight:600}.upload-form{gap:1rem;max-width:640px}.upload-form,.upload-form .field{display:flex;flex-direction:column}.upload-form .field{gap:.3rem}.upload-form .field>span{font-size:.85rem;color:var(--muted)}.upload-form .field input,.upload-form .field select{padding:.45rem .6rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);color:var(--fg)}.upload-form .field-group{display:flex;flex-direction:column;gap:.75rem;border:1px solid var(--border);border-radius:var(--radius);padding:.9rem 1rem}.upload-form .field-group>legend{padding:0 .4rem;font-weight:600}.upload-form .field-inline{display:flex;align-items:center;gap:.5rem;font-size:.9rem}.form-error{color:var(--danger);font-size:.9rem}.form-success{color:var(--accent);font-size:.9rem}.version-filters{display:flex;gap:1rem;flex-wrap:wrap;align-items:flex-end;margin-bottom:1rem}.version-filters>div{display:flex;flex-direction:column}.version-filters label{margin:0 0 .25rem}.version-filters select{width:auto;min-width:11rem}.version-filters>a{margin-left:auto}