*,:before,:after{box-sizing:border-box}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--surface-1:#f4f4f4;--page:#f4f4f4;--raised:#fdfdfd;--text-primary:#121826;--text-secondary:#4e5463;--text-muted:#6a7181;--grid:#d5d7dc;--axis:#8c95a4;--border:#12182621;--series-1:#059669;--series-2:#f59e0b;--series-3:#1d4ed8;--series-4:#991b1b;--neutral:#8c95a4;--ramp-1:#9da8ff;--ramp-2:#635bfe;--ramp-3:#4226d3;--ramp-4:#2f1e80;--good:#065f46;--critical:#7f1d1d;--warn:#92400e;--infobg:#e1e7f8;--infofg:#2f1e80;--hover:#1218260b}html,body{background:var(--page);margin:0}body{font:14px/1.5 system-ui,-apple-system,Segoe UI,sans-serif}.viz-root{color:var(--text-primary);background:var(--page);max-width:1248px;margin:0 auto;padding:22px 26px 64px}.viz-root.wide{max-width:1640px}h1{letter-spacing:-.02em;margin:0;font-size:22px;font-weight:600}h2{margin:0 0 2px;font-size:14px;font-weight:600}h3{margin:14px 0 6px;font-size:13px;font-weight:600}h4{color:var(--text-secondary);margin:12px 0 4px;font-size:12px;font-weight:600}.sub{color:var(--text-secondary);margin:0;font-size:13px}.muted{color:var(--text-muted)}.topbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px;display:flex}.brand img{width:auto;height:27px;display:block}.titleblock{text-align:right}.titleblock .dates{color:var(--text-secondary);margin:3px 0 0;font-size:13px}.titleblock nav{margin-top:6px;font-size:12px}.pagenav{font-variant-numeric:tabular-nums;flex-wrap:wrap;justify-content:flex-end;gap:10px;margin-top:7px;font-size:12px;display:flex}.pagenav a{color:var(--text-secondary);text-decoration:none}.pagenav a:hover{color:var(--text-primary);text-decoration:underline}.pagenav .on{color:var(--text-primary);font-weight:600}.badge{background:var(--hover);border:1px solid var(--border);letter-spacing:.02em;color:var(--text-secondary);vertical-align:3px;border-radius:999px;margin-left:8px;padding:2px 9px;font-size:11px;font-weight:500;display:inline-block}.banner{background:var(--infobg);color:var(--infofg);border-radius:8px;margin-bottom:16px;padding:9px 12px;font-size:13px}.banner:empty{display:none}.banner b{font-weight:600}button,select,input,textarea{font:inherit;color:inherit}.tbtn{background:var(--surface-1);border:1px solid var(--border);cursor:pointer;border-radius:8px;padding:6px 10px}.tbtn:hover{background:var(--hover)}.flabel,.field>label:not(.check),.field>legend{text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);font-size:11px}.seg{border:1px solid var(--border);border-radius:8px;display:flex;overflow:hidden}.seg button{cursor:pointer;font-variant-numeric:tabular-nums;color:var(--text-secondary);background:0 0;border:0;padding:5px 11px}.seg button+button{border-left:1px solid var(--border)}.seg button[aria-pressed=true]{background:var(--text-primary);color:var(--surface-1);font-weight:600}.segs{flex-wrap:wrap;gap:8px;display:flex}.btn{border:1px solid var(--border);background:var(--surface-1);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;gap:8px;padding:8px 14px;font-weight:500;text-decoration:none;display:inline-flex;position:relative}.btn:hover:not(:disabled){background:var(--hover)}.btn.primary{background:var(--text-primary);border-color:var(--text-primary);color:var(--surface-1);font-weight:600}.btn.primary:hover:not(:disabled){background:var(--text-primary);opacity:.88}.btn:disabled{opacity:.6;cursor:default}.btn:focus-visible{outline:2px solid var(--text-primary);outline-offset:2px}.btn:has(>input:focus-visible){outline:2px solid var(--text-primary);outline-offset:2px}.btn>input[type=file]{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute;top:0;left:0;overflow:hidden}.field{border:0;min-width:0;margin:0 0 16px;padding:0}.field>label:not(.check),.field>legend{width:fit-content;margin:0 0 6px;padding:0;display:block}.field>:is(input,textarea,select){border:1px solid var(--border);background-color:var(--raised);border-radius:8px;width:100%;margin:0;padding:7px 10px;display:block}.field>:is(input,textarea)::placeholder{color:var(--text-muted);opacity:1}.field>textarea{resize:vertical;min-height:92px}.field>select{appearance:none;cursor:pointer;background:var(--raised) no-repeat right 11px center url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='11' height='11' viewBox='0 0 11 11'%3E%3Cpath d='M2 4l3.5 3.5L9 4' fill='none' stroke='%236a7181' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");padding-right:32px}.field>:is(input,textarea,select):hover{border-color:var(--axis)}.field>:is(input,textarea,select):focus-visible{outline:2px solid var(--text-primary);outline-offset:-1px}.field>:is(input,textarea,select)[aria-invalid=true]{border-color:var(--critical)}.field>[aria-invalid=true]:focus-visible{outline-color:var(--critical)}.field>:is(input,textarea,select):disabled{border-color:var(--border);background-color:var(--hover);color:var(--text-muted);opacity:1;cursor:not-allowed}.field>.hint,.field>.error{margin:6px 0 0;font-size:12px}.field>.hint{color:var(--text-muted)}.field>.error{color:var(--critical)}.field>.seg{width:fit-content}.check{cursor:pointer;align-items:flex-start;gap:8px;width:fit-content;display:flex}.check>input[type=checkbox]{appearance:none;border:1px solid var(--axis);background:var(--raised) no-repeat center / 12px;width:16px;height:16px;cursor:inherit;border-radius:4px;flex:none;margin:calc(.75em - 8px) 0 0}.check:hover>input[type=checkbox]:not(:checked,:disabled){border-color:var(--text-secondary)}.check>input[type=checkbox]:checked{border-color:var(--text-primary);background-color:var(--text-primary);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23f4f4f4' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E")}.check>input[type=checkbox]:focus-visible{outline:2px solid var(--text-primary);outline-offset:2px}.check>input[type=checkbox]:disabled{border-color:var(--grid);background-color:var(--hover)}.check>input[type=checkbox]:checked:disabled{border-color:var(--axis);background-color:var(--axis)}.check:has(>input:disabled){color:var(--text-muted);cursor:not-allowed}.drop{border:1.5px solid var(--axis);background:var(--raised);text-align:center;border-radius:10px;flex-direction:column;justify-content:center;align-items:center;gap:10px;min-height:300px;padding:24px;display:flex}.drop>svg{width:32px;height:32px;color:var(--text-muted);fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round}.drop>b{font-size:16px;font-weight:600}.drop>p{color:var(--text-secondary);margin:0;font-size:13px}.drop>.btn{margin-top:6px}.drop.over{border-color:var(--ramp-2);background:var(--infobg)}.drop.over>svg{color:var(--ramp-2)}.progress{appearance:none;background:var(--grid);border:0;border-radius:4px;width:100%;height:8px;margin:10px 0;display:block;overflow:hidden}.progress::-webkit-progress-bar{background:0 0}.progress::-webkit-progress-value{background:var(--ramp-2);border-radius:4px}.progress::-moz-progress-bar{background:var(--ramp-2);border-radius:4px}.progress>span{background:var(--ramp-2);border-radius:4px;height:100%;display:block}@media (forced-colors:active){.check>input[type=checkbox]{appearance:auto}.progress{forced-color-adjust:none}}.kpis{grid-template-columns:repeat(auto-fit, minmax(var(--tile-min,176px), 1fr));gap:12px;margin-bottom:18px;display:grid}.tile{background:var(--surface-1);border:1px solid var(--border);border-radius:10px;padding:13px 15px}.tile .lab{color:var(--text-secondary);font-size:12px}.tile .val{letter-spacing:-.02em;font-variant-numeric:tabular-nums;overflow-wrap:anywhere;margin-top:3px;font-size:26px;font-weight:600}.tile .val .unit{color:var(--text-secondary);font-size:14px;font-weight:400}.tile .val.sm{font-size:20px;line-height:1.25}.tile .sub2{color:var(--text-muted);margin-top:3px;font-size:12px}.delta{align-items:center;gap:4px;margin-top:5px;font-size:12px;display:flex}.delta.up-good{color:var(--good)}.delta.up-bad{color:var(--critical)}.delta.neutral{color:var(--text-secondary)}.card{background:var(--surface-1);border:1px solid var(--border);border-radius:10px;margin-bottom:16px;padding:15px 16px 12px}.card[hidden]{display:none}.chead{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:10px;display:flex}.empty{color:var(--text-muted);padding:16px 0;font-size:13px}.note{color:var(--text-muted);margin:4px 0 0;font-size:12px}details{margin-top:8px}details summary{color:var(--text-secondary);cursor:pointer;font-size:12px}.cbody[hidden]{display:none}.card:has(.ctog[aria-expanded=false]){padding-bottom:13px}.ctitle{align-items:flex-start;gap:8px;min-width:0;display:flex}.ctog{cursor:pointer;width:22px;height:22px;color:var(--text-muted);background:0 0;border:0;border-radius:5px;flex:none;place-items:center;margin:-2px 0 0 -5px;padding:3px;display:grid}.ctog:hover{background:var(--hover);color:var(--text-primary)}.ctog svg{transition:transform .15s}.ctog[aria-expanded=false] svg{transform:rotate(-90deg)}.chead h2{cursor:pointer}.scroll{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:13px}th,td{text-align:left;border-bottom:1px solid var(--border);white-space:nowrap;vertical-align:top;padding:6px 9px}th{text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);background:var(--surface-1);font-size:11px;font-weight:600}thead{border-bottom:1px solid var(--axis)}thead th{border-bottom:0}td.n,th.n{text-align:right;font-variant-numeric:tabular-nums}td.t{white-space:normal;min-width:220px;max-width:460px}tbody tr:hover{background:var(--hover)}tfoot td{border-top:1px solid var(--axis);background:var(--surface-1);border-bottom:0;font-weight:600}tfoot td.t{color:var(--text-secondary);font-weight:400}th.s{cursor:pointer;-webkit-user-select:none;user-select:none}th.s:hover{color:var(--text-primary)}th.s .arrow{opacity:0;margin-left:5px;font-size:10px}th.s .arrow.on{opacity:1;color:var(--text-primary)}th.s:hover .arrow{opacity:.55}th.s:focus-visible{outline:2px solid var(--text-primary);outline-offset:-2px}th.s:focus-visible .arrow{opacity:.55}table.fit{table-layout:auto;font-size:12.5px}table.fit th,table.fit td{white-space:normal;padding:6px 7px}table.fit td.n,table.fit th.n{white-space:nowrap}table.fit td.t{min-width:150px;max-width:320px}a{color:var(--text-primary);text-decoration:underline;-webkit-text-decoration-color:var(--axis);text-decoration-color:var(--axis);text-underline-offset:2px}a:hover{-webkit-text-decoration-color:var(--text-primary);text-decoration-color:var(--text-primary)}.tag{border:1px solid var(--border);color:var(--text-secondary);white-space:nowrap;border-radius:999px;padding:1px 7px;font-size:11px;display:inline-block}.tag.good{color:var(--good);background:#dcfce7;border-color:#0000;font-weight:600}.tag.warn{color:var(--warn);background:#fef3c7;border-color:#0000;font-weight:600}.tag.bad{color:var(--critical);background:#fee2e2;border-color:#0000;font-weight:600}.tag.info{background:var(--infobg);color:var(--infofg);border-color:#0000;font-weight:600}.dot{vertical-align:-1px;border-radius:3px;width:9px;height:9px;margin-right:6px;display:inline-block}.ico{fill:currentColor;vertical-align:-2px;flex:none;width:14px;height:14px;margin-right:3px}ul.plain{margin:4px 0 0;padding-left:18px}ul.plain li{margin:2px 0}.kv{grid-template-columns:max-content 1fr;gap:4px 18px;font-size:13px;display:grid}.kv dt{color:var(--text-secondary)}.kv dd{margin:0}.legend{color:var(--text-secondary);flex-wrap:wrap;gap:14px;font-size:12px;display:flex}.legend .item{cursor:pointer;color:inherit;font:inherit;background:0 0;border:0;align-items:center;gap:6px;padding:0;display:flex}.legend .item[aria-pressed=false]{opacity:.4}.legend .sw{border-radius:3px;flex:none;width:11px;height:11px}.chart{width:100%;overflow-x:auto}.chart svg{display:block}.chart svg text{fill:var(--text-muted);font-size:11px}.chart svg text.val{fill:var(--text-secondary);font-weight:600}.hit{fill:#0000;cursor:pointer;outline:none}.hit:hover,.hit:focus-visible{fill:var(--hover)}.tt{z-index:30;pointer-events:none;background:var(--surface-1);border:1px solid var(--border);opacity:0;border-radius:10px;min-width:178px;max-width:290px;padding:11px 13px 12px;font-size:12.5px;line-height:1.45;transition:opacity .1s;position:fixed;box-shadow:0 8px 28px #12182621}.tt.on{opacity:1}.tt b{text-transform:uppercase;letter-spacing:.06em;color:var(--text-secondary);white-space:nowrap;border-bottom:1px solid var(--border);margin-bottom:8px;padding-bottom:8px;font-size:11px;font-weight:600;display:block}.tt .r{justify-content:space-between;align-items:baseline;gap:20px;padding:2.5px 0;display:flex}.tt .r>span:first-child{color:var(--text-secondary)}.tt .r>span:last-child{color:var(--text-primary);white-space:nowrap;font-variant-numeric:tabular-nums;font-weight:500}.tt .r.sum{border-top:1px solid var(--border);margin-top:7px;padding-top:8px}.tt .sw{vertical-align:.5px;border-radius:2px;width:8px;height:8px;margin-right:8px;display:inline-block}code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12.5px}pre{background:var(--raised);border:1px solid var(--border);border-radius:8px;margin:10px 0 14px;padding:12px 14px;font-size:12px;line-height:1.55;overflow-x:auto}pre code{background:0 0;padding:0;font-size:12px}p code,li code,td code{background:var(--hover);border-radius:4px;padding:0 4px}p code,li code{white-space:nowrap}td code{overflow-wrap:anywhere}.viz-root.guide{max-width:1160px}.toc{padding-bottom:14px}.toc ol{columns:2;column-gap:40px;margin:6px 0 0;padding-left:20px;font-size:13px}.toc li{break-inside:avoid;margin:3px 0}.prose p{max-width:82ch;margin:6px 0 10px;font-size:14px;line-height:1.6}.prose ul.plain li{max-width:86ch;margin:6px 0;font-size:14px;line-height:1.55}figure{margin:18px 0 4px}figure img{width:100%;max-width:760px;height:auto;margin:0 auto;display:block}figcaption{color:var(--text-muted);text-align:center;margin-top:6px;font-size:12px}section.card{scroll-margin-top:12px}footer{color:var(--text-muted);margin-top:30px;font-size:12px}footer p{margin:0 0 12px}footer ul{margin:6px 0 0;padding-left:18px}footer li{margin:3px 0}@media (max-width:720px){.toc ol{columns:1}.titleblock{text-align:left}}@media (max-width:560px){.viz-root{padding:16px 12px 48px}.tile .val{font-size:25px}td.t{min-width:190px}p code,li code{white-space:normal;overflow-wrap:anywhere}}
a.btn{color:var(--text-primary);text-decoration:none}.linkish{cursor:pointer;color:inherit;text-decoration:underline;-webkit-text-decoration-color:var(--axis);text-decoration-color:var(--axis);text-underline-offset:2px;background:0 0;border:0;padding:0}.linkish:hover{-webkit-text-decoration-color:var(--text-primary);text-decoration-color:var(--text-primary)}.linkish:disabled{opacity:.6;cursor:default}.linkish.subtle{text-decoration-color:#0000}.linkish.subtle:hover,.linkish.subtle:focus-visible{-webkit-text-decoration-color:var(--text-primary);text-decoration-color:var(--text-primary)}.quiet{color:var(--text-secondary)}.action-error{white-space:normal;max-width:300px;color:var(--critical);margin-top:2px;font-size:12px;display:block}.signin{max-width:440px;padding-top:12vh}.signin .brand{margin-bottom:18px}.signin h1{margin-bottom:4px}.signin .sub{margin-bottom:16px}.signin-error{color:var(--critical);margin:0 0 12px;font-size:13px}:root{--cover-blank:#e4e5e9}.cover{aspect-ratio:2/3;object-fit:cover;border:1px solid var(--border);background:var(--cover-blank);border-radius:2px 3px 3px 2px;width:100%;display:block}.cover.thumb{width:28px}.cover.large{width:184px}.cover.blank{flex-direction:column;justify-content:space-between;padding:12px 10px 10px 13px;display:flex;overflow:hidden}.cover.blank .t{color:var(--text-secondary);font-size:13px;font-weight:600;line-height:1.25}.cover.blank .a{color:var(--text-muted);font-size:10px}.cover.thumb.blank{padding:0}.cover.thumb.blank span{display:none}.covers{grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:18px 16px;display:grid}.covercard{color:inherit;flex-direction:column;gap:1px;font-size:12px;text-decoration:none;display:flex}.covercard .cover{margin-bottom:10px}.covercard b{color:var(--text-primary);font-size:13px;font-weight:600;line-height:1.3}.covercard:hover b{text-decoration:underline}.bookcell{align-items:flex-start;gap:10px;display:flex}.bookcell .cover{flex:none}.bookcell .muted{font-size:12px}table.log .cover.thumb{width:22px}table.books .bookcell>div{min-width:0}table.books .bookcell a{text-overflow:ellipsis;max-width:34em;display:block;overflow:hidden}.about{align-items:flex-start;gap:32px;padding:4px 0 6px;display:flex}.about>.cover{flex:none}.about .details{flex-direction:column;gap:20px;min-width:0;padding-top:2px;display:flex}.about .description{max-width:760px}.about h3{margin:0 0 6px}.about .description p{margin:0;line-height:22px}.about .kv .line{display:block}.about .actions{flex-wrap:wrap;align-items:flex-start;gap:8px;display:flex}.about .download .note{max-width:560px;margin-top:8px}td.filename{color:var(--text-secondary)}@media (max-width:720px){.about{flex-direction:column}}.book-controls{flex-wrap:wrap;justify-content:flex-end;align-self:flex-start;gap:8px;display:flex}.book-controls .action-error{text-align:right;flex-basis:100%;max-width:none;margin:0}.delete-files{flex-wrap:wrap;align-items:center;gap:8px 12px;margin-top:14px;display:flex}.delete-files .note{margin:0}.delete-files>p:not(.note){flex-basis:100%;margin:0 0 2px;font-size:13px}.delete-files .action-error{flex-basis:100%;max-width:none;margin:0}.book-form{max-width:640px;padding-top:4px}.form-actions{flex-wrap:wrap;align-items:center;gap:8px 12px;margin-top:4px;display:flex}.form-actions .action-error{margin:0}.chead .actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;display:flex}.bookcell button.linkish{text-align:left}button.tag{cursor:pointer}.problem{white-space:normal;max-width:420px;color:var(--critical);margin-top:2px;font-size:12px}td.verdict{white-space:normal;min-width:190px}td.verdict .muted{margin-top:4px;font-size:12px}tr.on,tr.on+tr.detail,tr.on+tr.detail:hover{background:var(--hover)}tr.detail>td{white-space:normal;padding:12px 9px 4px}.edit-read{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 20px;max-width:820px;display:grid}.edit-read .wide{grid-column:1/-1}.edit-read>.note{margin:0 0 12px}.edit-topic{flex-wrap:wrap;align-items:flex-start;gap:0 16px;display:flex}.edit-topic .field{width:280px}.edit-read .buttons,.edit-topic .buttons{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px;display:flex}.edit-topic .buttons{align-self:flex-start;margin-top:21.5px;margin-bottom:16px}@media (max-width:720px){.edit-read{grid-template-columns:minmax(0,1fr)}}.addbooks{align-items:flex-start;gap:24px;padding:4px 0;display:flex}.addbooks-drop{flex:1 1 0;min-width:0}.shapes{flex:none;width:470px;max-width:100%}.shapes h4:first-child{margin-top:0}.shapes pre{margin:6px 0 14px}@media (max-width:900px){.addbooks{flex-direction:column;align-items:stretch}.shapes{width:auto}}.upload-error{color:var(--critical);margin:10px 0 0;font-size:13px}.ctrls{gap:8px;display:flex}.ico.line{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;color:var(--text-muted)}.upload-actions{flex-wrap:wrap;justify-content:flex-end;align-items:baseline;gap:4px 10px;display:inline-flex}.upload-actions .action-error{flex-basis:100%;margin:0}
