.catalog-heading p{margin:.5rem 0 0;color:var(--muted)}
.catalog-heading button,.process-card button,.shop-actions button,.danger-button{border:0;border-radius:12px;padding:11px 16px;background:var(--red);color:#fff;font-weight:750;cursor:pointer}.danger-button{background:#fff;border:1px solid #b36a60!important;color:#963a2d!important}
.process-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:20px}.process-summary article{display:flex;align-items:baseline;gap:10px;padding:18px 22px;border:1px solid var(--line);border-radius:18px;background:var(--card)}.process-summary strong{font:800 1.9rem Literata,serif}.process-summary span{color:var(--muted)}
.process-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-bottom:24px}.process-card{display:flex;min-width:0;min-height:285px;flex-direction:column;padding:25px;border:1px solid var(--line);border-radius:24px;background:var(--card);box-shadow:0 14px 34px rgba(70,45,25,.06)}.process-card>header{display:flex;gap:16px}.process-card h2{margin:4px 0 8px;font-size:1.35rem}.process-card p{margin:0 0 18px;color:var(--muted);line-height:1.55}.process-card form{margin-top:auto}.process-icon{display:grid;width:52px;height:52px;flex:0 0 52px;place-items:center;border-radius:16px;background:#efe4d3;color:#805a29;font-size:1.5rem;font-weight:800}
.job-progress{height:10px;margin:10px 0 5px;overflow:hidden;border-radius:99px;background:#e7dfd3}.job-progress>div{height:100%;border-radius:inherit;background:linear-gradient(90deg,#27734c,#62af7d);transition:width .3s}.job-numbers{display:block;color:var(--muted);font-size:.82rem;text-align:right}
.process-shops{margin-bottom:24px}.process-shops>header,.job-log>header{display:flex;align-items:end;justify-content:space-between;gap:20px}.process-shops h2,.job-log h2{margin:4px 0}.process-shops>header p{max-width:520px;color:var(--muted);text-align:right}.shop-process-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:22px}.shop-process-list>article{padding:18px;border:1px solid #e8ddcf;border-radius:17px;background:#fffdf8}.shop-process-head{display:flex;justify-content:space-between;gap:10px}.shop-process-head span{color:var(--muted);font-size:.75rem}.shop-track{display:grid;grid-template-columns:65px 1fr 95px;align-items:center;gap:10px;margin-top:9px}.shop-track .job-progress{margin:0}.shop-track .job-numbers{text-align:right}.shop-actions{margin-top:13px}.shop-actions form{display:flex;flex-wrap:wrap;gap:8px}.shop-actions button{padding:8px 11px;font-size:.78rem}.shop-actions .secondary{border:1px solid var(--line);background:#fff;color:var(--ink)}.policy-note{align-self:center;color:var(--green);font-size:.74rem;font-weight:700}
.job-log{overflow:hidden}
.schedule-panel{margin-bottom:24px}
.schedule-form{margin-top:14px}
.schedule-rows{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px;margin-bottom:18px}
.schedule-row{display:flex;flex-direction:column;gap:12px;padding:16px;border:1px solid var(--line);border-radius:16px;background:#fffdf8;transition:opacity .15s ease}
.schedule-row.is-disabled{opacity:.55}
.schedule-switch-row{display:flex;align-items:center;gap:10px;cursor:pointer}
.schedule-switch-row strong{font-size:.9rem}
.schedule-fields{display:flex;gap:10px}
.schedule-field{display:flex;flex:1;flex-direction:column;gap:4px;color:var(--muted);font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.02em}
.schedule-field input{padding:8px 9px;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--ink);font-size:.85rem;font-weight:600;font-family:inherit;text-transform:none;letter-spacing:normal}
.schedule-field input:focus{outline:2px solid rgba(44,99,174,.18);border-color:#6d8fbd}
.maintenance-panel{margin-bottom:24px}
.maintenance-group{border-top:1px solid #ece3d7}
.maintenance-group:first-of-type{border-top:1px solid #ece3d7;margin-top:18px}
.maintenance-group summary{padding:12px 4px;font-weight:800;font-size:.95rem;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;color:var(--ink)}
.maintenance-group summary::before{content:"▸";display:inline-block;color:var(--muted);transition:transform .15s}
.maintenance-group[open] summary::before{transform:rotate(90deg)}
.maintenance-group summary::-webkit-details-marker{display:none}
.maintenance-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:11px 6px 11px 20px;border-top:1px solid #f2ebe1}
.maintenance-copy{display:flex;min-width:0;flex-direction:column;gap:2px}
.maintenance-copy strong{font-size:.9rem}
.maintenance-copy span{overflow:hidden;color:var(--muted);font-size:.78rem;line-height:1.4;text-overflow:ellipsis}
.maintenance-actions{display:flex;flex:0 0 auto;align-items:center;gap:10px}
.maintenance-actions button.secondary{border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--ink);padding:8px 13px;font-size:.8rem;font-weight:700;cursor:pointer;white-space:nowrap}
.maintenance-actions button.secondary:hover{background:#fbf6ee}
.maintenance-actions .secondary-action{font-size:.78rem;white-space:nowrap}
.job-table-toolbar{margin-top:16px}.job-table-toolbar input{width:100%;max-width:340px;padding:10px 13px;border:1px solid var(--line);border-radius:11px;background:#fff;font-size:.85rem}.job-table-toolbar input:focus{outline:3px solid rgba(44,99,174,.12);border-color:#6d8fbd}
.job-table{margin-top:12px;overflow-x:auto;border:1px solid #ece3d7;border-radius:16px}
.job-row{display:grid;grid-template-columns:minmax(210px,1.5fr) 130px 150px 168px minmax(150px,auto);gap:14px;align-items:center;min-width:980px;padding:13px 14px;border-top:1px solid #ece3d7;transition:background-color .12s ease}
.job-time{display:flex;flex-direction:column;gap:2px}
.job-time-row{display:flex;gap:6px;color:var(--ink);font-size:.72rem;white-space:nowrap}
.job-time-label{min-width:52px;color:var(--muted);font-weight:700}
.job-time-duration{color:var(--muted)}
.job-row:first-child{border-top:0}
.job-row:not(.job-head):hover{background:#fbf6ee}
.job-row[hidden]{display:none}
.job-row-name{display:flex;min-width:0;flex-direction:column}
.job-row small{overflow:hidden;color:var(--muted);text-overflow:ellipsis;white-space:nowrap}
.job-head{position:sticky;top:0;z-index:1;border:0;background:#fbf6ee;color:var(--muted);font-size:.72rem;font-weight:800;letter-spacing:.03em;text-transform:uppercase}
.job-sort-btn{display:flex;align-items:center;gap:5px;border:0;padding:0;background:none;color:inherit;font:inherit;font-weight:800;letter-spacing:.03em;text-transform:uppercase;text-align:left;cursor:pointer}
.job-sort-btn:hover{color:#5d4f44}
.job-sort-btn::after{content:"↕";opacity:.35;font-size:.85em}
.job-sort-btn.is-sorted::after{opacity:1;color:#a94737}
.job-sort-btn.is-sorted[data-dir="asc"]::after{content:"↑"}
.job-sort-btn.is-sorted[data-dir="desc"]::after{content:"↓"}
.job-table-empty{padding:26px;color:var(--muted);text-align:center}
.status{width:max-content;padding:5px 9px;border-radius:99px;background:#eee;font-size:.78rem;font-weight:700}.status-running{background:#dff1e5;color:#17663f}.status-queued{background:#f1e9d8;color:#76551f}.status-failed{background:#f7dfda;color:#a13729}.status-completed{background:#e6efe4;color:#356436}.status-cancelled{background:#eee9e3;color:#7b7067}.link-button{border:0;background:none;color:var(--red);font-weight:700;cursor:pointer}.job-actions{display:flex;align-items:center;gap:8px}.job-actions form{display:inline}.resume-button{color:var(--green,#1a7a4c)}.job-counts{color:var(--muted);font-size:.68rem;font-weight:500;white-space:nowrap}.job-phase{color:var(--muted);font-size:.68rem;font-weight:500;white-space:nowrap}.job-error-vpn{color:#a13729;font-weight:700;font-size:.72rem;white-space:nowrap;cursor:help}.job-actions{flex-wrap:wrap;row-gap:4px}
.job-archive{margin-top:16px;border-top:1px solid #ece3d7;padding-top:4px}
.job-archive summary{display:flex;align-items:center;gap:8px;padding:12px 4px;font-weight:800;font-size:.9rem;cursor:pointer;list-style:none;color:var(--ink)}
.job-archive summary::before{content:"▸";display:inline-block;color:var(--muted);transition:transform .15s}
.job-archive[open] summary::before{transform:rotate(90deg)}
.job-archive summary::-webkit-details-marker{display:none}
.job-archive-count{color:var(--muted);font-weight:700;font-size:.78rem}
.job-archive-day{margin-bottom:16px}
.job-archive-day:last-child{margin-bottom:4px}
.job-archive-day-head{display:flex;align-items:center;gap:8px;margin:0 0 8px;color:var(--muted);font-size:.76rem;font-weight:800;letter-spacing:.03em;text-transform:uppercase}
.job-archive-day-head span{padding:1px 8px;border-radius:99px;background:#f1e9d8;color:#76551f;font-size:.7rem}
.job-table-archive .job-row{min-width:980px}
@media(max-width:680px){.job-table-toolbar input{max-width:none}}
@media(max-width:1000px){.process-grid{grid-template-columns:1fr 1fr}.shop-process-list{grid-template-columns:1fr}}@media(max-width:680px){.process-summary{grid-template-columns:1fr 1fr}.process-grid{grid-template-columns:1fr}.shop-track{grid-template-columns:55px 1fr}.shop-track .job-numbers{grid-column:2}.process-shops>header{align-items:start;flex-direction:column}.process-shops>header p{text-align:left}.maintenance-row{flex-direction:column;align-items:stretch;gap:8px;padding-left:8px}.maintenance-actions{justify-content:flex-start}}
/* Search suggestions styling lives in header-search.css + ui-polish-2.css
   (.suggestion-item/.suggestion-cover/.suggestion-copy/.suggestion-price) -
   this file used to duplicate it with an older, incompatible 2-column
   grid (`.search-suggestions a{grid-template-columns:42px 1fr}`, no room
   for the price column) that had *higher* specificity than the newer
   `.suggestion-item` rules (descendant selector beats a single class,
   regardless of stylesheet load order), so it silently won and broke the
   redesigned layout - price wrapped onto its own line instead of sitting
   beside the title. Removed rather than patched around. */
.collection-form{display:grid;grid-template-columns:2fr 1fr 2fr 110px auto auto;gap:12px;align-items:end}.collection-form label{display:grid;gap:5px;color:var(--muted);font-size:.78rem}.collection-form input,.collection-add-book input{min-width:0;padding:10px;border:1px solid var(--line);border-radius:10px}.collection-form button,.collection-add-book button{border:0;border-radius:10px;padding:11px 14px;background:var(--red);color:#fff;font-weight:750}.collection-admin-list{display:grid;gap:14px;margin-top:18px}.collection-add-book{display:flex;align-items:center;gap:10px;margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}@media(max-width:1000px){.collection-form{grid-template-columns:1fr 1fr}.collection-form label:nth-of-type(3){grid-column:1/-1}}
.book-skeleton{height:530px;overflow:hidden;border:1px solid var(--line);border-radius:22px;background:var(--card)}.book-skeleton div,.book-skeleton span{display:block;background:linear-gradient(100deg,#e8dfd3 30%,#f7f1e8 48%,#e8dfd3 66%);background-size:250% 100%;animation:skeleton-wave 1.25s infinite}.book-skeleton div{height:320px}.book-skeleton span{height:18px;margin:22px 18px 0;border-radius:7px}.book-skeleton span:nth-child(3){width:64%;margin-top:10px}.book-skeleton span:nth-child(4){height:45px;margin-top:35px}@keyframes skeleton-wave{to{background-position-x:-250%}}@media(prefers-reduced-motion:reduce){.book-skeleton div,.book-skeleton span{animation:none}}
