:root{--surface-blue:#87ceeb;--surface-pink:#ffb6c1;--surface-green:#90ee90;--primary:#256ca3;--primary-hover:#1f5c8b;--text:#2a2e35;--text-muted:#5b6472;--bg:#f7f9fb;--card:#fff;--border:#2a2e351a;--danger:#b42318;--success:#1e7a46;--tint-blue:#87ceeb40;--tint-green:#90ee904d;--tint-pink:#ffb6c159;--tint-amber:#ffd68c66;--color-diff-removed:#d13b3b;--color-diff-added:#2e9e5b;--color-diff-same:#9aa0a8;--color-changed:#c27c0e;--shadow-soft:0 2px 4px #2a2e350f, 0 8px 24px #2a2e3514;--shadow-lift:0 4px 8px #2a2e3514, 0 12px 32px #2a2e351a;--radius-sm:10px;--radius-md:20px;--radius-pill:999px;--space-1:4px;--space-2:8px;--space-3:16px;--space-4:24px;--space-5:32px;--duration:.25s;--ease:cubic-bezier(.25, .8, .4, 1);--focus-ring:0 0 0 2px var(--bg), 0 0 0 4px var(--primary);--font-sans:-apple-system, "Segoe UI", Roboto, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, Consolas, monospace;--z-content:0;--z-sticky:100;--z-dropdown:200;--z-modal:300;--z-toast:500}*{box-sizing:border-box;margin:0;padding:0}html,body{min-height:100dvh}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:1rem;line-height:1.6}button,input,select{font:inherit;color:inherit}a{color:var(--primary);text-decoration:none}a:hover{color:var(--primary-hover);text-decoration:underline}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{box-shadow:var(--focus-ring);border-radius:var(--radius-sm);outline:none}h1{font-size:1.75rem;font-weight:700;line-height:1.25}h2{font-size:1.125rem;font-weight:600}.muted{color:var(--text-muted)}.small{letter-spacing:.01em;font-size:.875rem;font-weight:500}.mono{font-family:var(--font-mono);word-break:break-all;font-size:.8125rem}.topbar{z-index:var(--z-sticky);background:var(--bg);border-bottom:1px solid var(--border);position:sticky;top:0}.topbar-inner{max-width:1280px;padding:var(--space-2) var(--space-4);align-items:center;gap:var(--space-3);min-height:56px;margin:0 auto;display:flex}.brand{align-items:center;gap:var(--space-2);color:var(--text);font-size:1.125rem;font-weight:700;display:flex}.brand:hover{color:var(--text);text-decoration:none}.nav{gap:var(--space-1);display:flex}.nav a{padding:var(--space-1) var(--space-3);border-radius:var(--radius-pill);color:var(--text);font-weight:500}.nav a:hover{background:var(--tint-blue);text-decoration:none}.spacer{flex:1}.page{max-width:1280px;padding:var(--space-4);gap:var(--space-4);margin:0 auto;display:grid}.page-narrow{max-width:720px}.page-head{align-items:flex-start;gap:var(--space-3);flex-wrap:wrap;display:flex}.row{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.stack{gap:var(--space-3);display:grid}.stack-tight{gap:var(--space-1);display:grid}.grow{flex:1;min-width:0}.ellipsis{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.file-layout{gap:var(--space-4);grid-template-columns:minmax(260px,340px) 1fr;align-items:start;display:grid}@media (max-width:768px){.file-layout{grid-template-columns:1fr}.page{padding:var(--space-3)}}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-soft);padding:var(--space-4);gap:var(--space-3);min-width:0;display:grid}.card-head{align-items:center;gap:var(--space-2);display:flex}.cards{gap:var(--space-3);grid-template-columns:repeat(auto-fill,minmax(260px,1fr));display:grid}.card-link{color:var(--text);transition:box-shadow var(--duration) var(--ease), transform var(--duration) var(--ease)}.card-link:hover{color:var(--text);box-shadow:var(--shadow-lift);text-decoration:none;transform:translateY(-1px)}.list{list-style:none;display:grid}.list>li{align-items:center;gap:var(--space-3);padding:var(--space-2) 0;border-top:1px solid var(--border);display:flex}.list>li:first-child{border-top:none}.empty{justify-items:start;gap:var(--space-2);padding:var(--space-4);border-radius:var(--radius-sm);background:var(--tint-blue);display:grid}.tree{list-style:none;display:grid}.tree .tree{padding-left:var(--space-4)}.tree summary{cursor:pointer;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);font-weight:600;list-style:none;display:flex}.tree summary::-webkit-details-marker{display:none}.tree summary:hover{background:var(--tint-blue)}.tree details>summary .chevron{transition:transform var(--duration) var(--ease)}.tree details[open]>summary .chevron{transform:rotate(90deg)}.toggle>summary{cursor:pointer;list-style:none}.toggle>summary::-webkit-details-marker{display:none}.toggle>summary .chevron{transition:transform var(--duration) var(--ease)}.toggle[open]>summary .chevron{transform:rotate(90deg)}.tree-file{align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);color:var(--text);display:flex}.tree-file:hover{background:var(--tint-blue);color:var(--text);text-decoration:none}.release-dot{border-radius:var(--radius-pill);background:var(--color-changed);flex:none;width:8px;height:8px}.history{gap:var(--space-1);list-style:none;display:grid}.history a{padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);color:var(--text);transition:background-color var(--duration) var(--ease);border:1px solid #0000;gap:2px;display:grid}.history .row>strong{white-space:nowrap}.history a:hover{background:var(--tint-blue);color:var(--text);text-decoration:none}.history a[aria-current=true]{background:var(--tint-blue);border-color:var(--primary)}.tabs{gap:var(--space-1);flex-wrap:wrap;display:flex}.tab{padding:var(--space-1) var(--space-3);border-radius:var(--radius-pill);border:1.5px solid var(--border);cursor:pointer;transition:background-color var(--duration) var(--ease);background:0 0;font-weight:500}.tab:hover{background:var(--tint-blue)}.tab[aria-selected=true]{background:var(--primary);border-color:var(--primary);color:#fff}.viewer{border-radius:var(--radius-sm);border:1px solid var(--border);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;background:#fff;height:min(70dvh,760px);min-height:360px;position:relative;overflow:clip}.viewer.dragging{cursor:grabbing}.viewer-canvas{transform-origin:0 0;position:absolute;top:0;left:0}.viewer-canvas img{object-fit:contain;pointer-events:none;width:100%;height:100%;display:block}.viewer-tools{right:var(--space-2);bottom:var(--space-2);gap:var(--space-1);background:var(--card);border-radius:var(--radius-sm);box-shadow:var(--shadow-soft);padding:var(--space-1);display:flex;position:absolute}.viewer-message{padding:var(--space-4);text-align:center;place-items:center;display:grid;position:absolute;inset:0}.viewer-failed{background:var(--card);color:var(--danger)}.viewer-mark{border:2px solid var(--primary);min-width:14px;min-height:14px;box-shadow:0 0 0 3px var(--tint-blue);pointer-events:none;border-radius:4px;position:absolute}.compare-layout{gap:var(--space-4);grid-template-columns:1fr minmax(260px,360px);align-items:start;display:grid}.compare-side{gap:var(--space-2);grid-template-columns:1fr 1fr;display:grid}@media (max-width:1024px){.compare-layout{grid-template-columns:1fr}}@media (max-width:768px){.compare-side{grid-template-columns:1fr}}.segmented{border-radius:var(--radius-pill);border:1.5px solid var(--border);padding:2px;display:inline-flex}.segmented button{padding:var(--space-1) var(--space-3);border-radius:var(--radius-pill);cursor:pointer;font:inherit;color:var(--text);background:0 0;border:0;font-weight:500}.segmented button[aria-checked=true]{background:var(--primary);color:#fff}.legend{gap:var(--space-3);flex-wrap:wrap;display:flex}.legend span:before{content:"";width:12px;height:3px;margin-right:var(--space-1);vertical-align:middle;border-radius:2px;display:inline-block}.legend-removed:before{background:var(--color-diff-removed)}.legend-added:before{background:var(--color-diff-added)}.legend-same:before{background:var(--color-diff-same)}.chip{gap:var(--space-1);padding:2px var(--space-2);border-radius:var(--radius-pill);background:var(--tint-blue);font-size:.875rem;display:inline-flex}.changes{max-height:min(80dvh,900px);padding-right:var(--space-1);overflow-y:auto}.change-list{gap:2px;list-style:none;display:grid}.change{justify-content:space-between;gap:var(--space-2);width:100%;padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);color:var(--text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;display:flex}.change .mono{white-space:nowrap;flex-shrink:0}.change:hover{background:var(--tint-blue)}.change[aria-current=true]{background:var(--tint-blue);border-color:var(--primary)}.select{padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);border:1.5px solid var(--border);background:var(--card);color:var(--text);font:inherit}.btn{justify-content:center;align-items:center;gap:var(--space-2);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3);cursor:pointer;white-space:nowrap;transition:background-color var(--duration) var(--ease), box-shadow var(--duration) var(--ease), transform var(--duration) var(--ease);border:1.5px solid #0000;font-weight:600;display:inline-flex}.btn:active{transform:translateY(1px)}.btn:disabled{cursor:default;opacity:.55;transform:none}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--primary-hover);box-shadow:var(--shadow-lift)}.btn-ghost{border-color:var(--border);color:var(--primary);background:0 0}.btn-ghost:hover:not(:disabled){background:var(--tint-blue)}.btn-icon{padding:var(--space-2)}.field{gap:var(--space-1);display:grid}.field label{font-size:.875rem;font-weight:600}.field input,.field select{border:1px solid var(--border);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3);background:var(--card)}.form{gap:var(--space-3);display:grid}.form-wide{flex:100%}.form-row{gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(180px,1fr));align-items:end;display:grid}.error{color:var(--danger);font-size:.875rem;font-weight:500}.badge{align-items:center;gap:var(--space-1);padding:2px var(--space-2);border-radius:var(--radius-pill);white-space:nowrap;font-size:.8125rem;font-weight:600;display:inline-flex}.badge-clip{text-overflow:ellipsis;min-width:0;max-width:10em;display:inline-block;overflow:hidden}.badge-ok{background:var(--tint-green)}.badge-wait{background:var(--tint-blue)}.badge-warn{background:var(--tint-amber)}.badge-bad{background:var(--tint-pink)}.notice{align-items:flex-start;gap:var(--space-2);padding:var(--space-3);border-radius:var(--radius-sm);background:var(--tint-amber);display:flex}.notice-bad{background:var(--tint-pink)}.notice-wait{background:var(--tint-blue)}.meta{gap:var(--space-1) var(--space-3);grid-template-columns:max-content 1fr;font-size:.875rem;display:grid}.meta dt{color:var(--text-muted)}.skeleton{border-radius:var(--radius-md);background:linear-gradient(90deg, var(--card) 0%, var(--tint-blue) 50%, var(--card) 100%);background-size:200% 100%;min-height:120px;animation:1.4s linear infinite shimmer}.skeleton-line{border-radius:var(--radius-sm);min-height:24px}.skeleton-user{border-radius:var(--radius-sm);width:140px;min-height:36px}.login{min-height:100dvh;padding:var(--space-4);background:radial-gradient(circle at 15% 20%, var(--tint-blue), transparent 45%), radial-gradient(circle at 85% 85%, var(--tint-pink), transparent 40%), var(--bg);place-items:center;display:grid}.login .card{width:min(420px,100%)}.menu{position:relative}.menu-list{right:0;top:calc(100% + var(--space-1));z-index:var(--z-dropdown);background:var(--card);border:1px solid var(--border);border-radius:var(--radius-sm);min-width:220px;box-shadow:var(--shadow-lift);padding:var(--space-1);display:grid;position:absolute}.menu-list a,.menu-list button{text-align:left;padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);color:var(--text);cursor:pointer;background:0 0;border:none}.menu-list a:hover,.menu-list button:hover{background:var(--tint-blue);color:var(--text);text-decoration:none}.toasts{right:var(--space-4);bottom:var(--space-4);z-index:var(--z-toast);gap:var(--space-2);width:min(420px, calc(100vw - 2 * var(--space-4)));display:grid;position:fixed}.toast{background:var(--card);border:1px solid var(--border);border-left:4px solid var(--danger);border-radius:var(--radius-sm);box-shadow:var(--shadow-lift);padding:var(--space-3);gap:var(--space-1);animation:.3s ease-out both enter;display:grid}@keyframes enter{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}.counts{border-collapse:collapse;width:100%;font-size:.875rem}.counts caption{text-align:left;padding-bottom:var(--space-2);font-weight:600}.counts th,.counts td{padding:var(--space-1) var(--space-2);border-bottom:1px solid var(--border);text-align:left}.counts th{color:var(--text-muted);font-weight:500}.counts td:last-child,.counts th:last-child{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.table-scroll{overflow-x:auto}
