:root{color-scheme:light;--bg:#f4f6f8;--card:#fff;--ink:#142033;--muted:#667085;--line:#dfe4ea;--blue:#175cd3;--blue2:#eaf2ff;--green:#067647;--greenbg:#ecfdf3;--amber:#b54708;--amberbg:#fffaeb;--red:#b42318;--redbg:#fef3f2;font-family:Inter,"Segoe UI",system-ui,sans-serif}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink)}button,input{font:inherit}.site-header{max-width:1180px;margin:auto;padding:34px 24px 20px;display:flex;align-items:flex-start;justify-content:space-between;gap:24px}.eyebrow{color:var(--blue);font-size:12px;font-weight:800;letter-spacing:.04em}.site-header h1{font-size:34px;margin:8px 0}.subtitle,.muted{color:var(--muted)}.privacy-badge{background:var(--greenbg);color:var(--green);padding:10px 14px;border-radius:999px;font-weight:700;white-space:nowrap}main{max-width:1180px;margin:auto;padding:0 24px 50px}.workflow{display:grid;grid-template-columns:repeat(3,1fr);background:#fff;border:1px solid var(--line);border-radius:14px;padding:15px 22px;margin-bottom:16px}.workflow span{text-align:center;color:#98a2b3;font-weight:650}.workflow .active{color:var(--blue)}.workflow .done{color:var(--green)}.card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:22px;margin:16px 0;box-shadow:0 1px 2px rgba(16,24,40,.03)}.section-heading{display:flex;justify-content:space-between;gap:20px;align-items:center}.section-heading h2,.card h2{margin:0 0 6px}.section-heading p{margin:0;color:var(--muted)}.button{border:1px solid #cbd2dc;background:#fff;color:#344054;border-radius:9px;padding:11px 17px;cursor:pointer;font-weight:700}.button:hover{background:#f8fafc}.button.primary{background:var(--blue);border-color:var(--blue);color:#fff}.button:disabled{opacity:.45;cursor:not-allowed}.drop-zone{margin-top:20px;border:2px dashed #b9c3d1;border-radius:13px;min-height:160px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:8px;color:var(--muted);cursor:pointer}.drop-zone strong{color:var(--ink);font-size:18px}.drop-zone.drag{border-color:var(--blue);background:var(--blue2)}.file-summary{margin-top:16px;padding:14px;background:#f8fafc;border-radius:10px}.hidden{display:none!important}.progress-head{display:flex;justify-content:space-between;margin-bottom:12px}progress{width:100%;height:16px;accent-color:var(--blue)}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:16px 0}.metric{background:#fff;border:1px solid var(--line);border-radius:14px;padding:18px}.metric strong{display:block;font-size:28px;margin-bottom:6px}.metric span{color:var(--muted);font-size:13px}.metric.amber strong{color:var(--amber)}.table-wrap{overflow:auto;max-height:520px;border:1px solid var(--line);border-radius:10px;margin-top:18px}table{width:100%;border-collapse:collapse;min-width:930px}th,td{padding:11px 12px;text-align:left;border-bottom:1px solid #edf0f3;font-size:13px;vertical-align:top}th{position:sticky;top:0;background:#f8fafc;z-index:1}td small{display:block;color:var(--muted);margin-top:3px}.pill{display:inline-block;padding:4px 8px;border-radius:999px;font-size:11px;font-weight:800}.pill.safe{background:var(--greenbg);color:var(--green)}.pill.review{background:var(--amberbg);color:var(--amber)}.actions{display:flex;justify-content:space-between;gap:12px;margin-top:18px}.actions.centered{justify-content:center}.select-all{font-size:13px;font-weight:700}.success{text-align:center;border-color:#abefc6;background:#fbfffc}.success-mark{margin:0 auto 8px;width:48px;height:48px;border-radius:50%;display:grid;place-items:center;background:var(--greenbg);color:var(--green);font-size:26px;font-weight:900}.success ul{display:inline-block;text-align:left;color:#475467}.error{border-color:#fecdca;background:var(--redbg)}.error h2{color:var(--red)}footer{border-top:1px solid var(--line);padding:22px 24px;color:var(--muted);font-size:12px;text-align:center;background:#fff}code{font-family:"Cascadia Code",monospace;font-size:.9em}@media(max-width:800px){.site-header{display:block}.privacy-badge{display:inline-block;margin-top:10px}.workflow{font-size:12px;padding:13px 5px}.metrics{grid-template-columns:1fr 1fr}.section-heading{align-items:flex-start;flex-direction:column}.actions{flex-direction:column-reverse}.button{width:100%}}@media(max-width:480px){.metrics{grid-template-columns:1fr}.site-header h1{font-size:28px}}
/* Compact two-line privacy status in the application header. */
.privacy-badge{padding:9px 14px;border-radius:14px;line-height:1.3;text-align:left}
.privacy-badge span{display:block}
.privacy-badge span+span{font-size:12px;font-weight:600}
/* Collapse the upload controls after an IFC has been selected. */
#select-card.has-file{padding:14px 18px}
#select-card.has-file>.section-heading,#select-card.has-file>.drop-zone{display:none}
#select-card.has-file .file-summary{margin-top:0;display:flex;align-items:center;justify-content:space-between;gap:18px}
#select-card.has-file .file-summary .button{flex:0 0 auto;padding:8px 13px}
@media(max-width:600px){#select-card.has-file .file-summary{align-items:flex-start;flex-direction:column}#select-card.has-file .file-summary .button{width:100%}}

.download-list{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin:18px 0}
.download-list:empty{display:none}
.file-error{color:var(--red);background:var(--redbg);font-weight:650}
.results-controls{display:flex;align-items:center;gap:12px;margin-top:18px;padding:12px 14px;background:#f8fafc;border:1px solid var(--line);border-radius:10px}
.results-controls label{font-size:13px;font-weight:700;white-space:nowrap}
.results-controls select{max-width:430px;padding:9px 34px 9px 11px;border:1px solid #cbd2dc;border-radius:8px;background:#fff;color:var(--ink)}
.results-controls .muted{margin-left:auto;font-size:13px;text-align:right}
.table-wrap{max-height:none;overflow-x:auto;overflow-y:visible;margin-top:12px}
.pagination{display:flex;align-items:center;justify-content:center;gap:14px;margin-top:14px}
.pagination .button{padding:8px 13px;width:auto}
.pagination span{font-size:13px;font-weight:700;color:#475467;min-width:110px;text-align:center}
@media(max-width:800px){.results-controls{align-items:stretch;flex-direction:column}.results-controls select{max-width:none;width:100%}.results-controls .muted{margin-left:0;text-align:left}.pagination .button{width:auto}}
.compact-success{margin-top:18px;padding:15px 17px;border:1px solid #abefc6;border-radius:10px;background:var(--greenbg);color:var(--green);font-weight:700}
.exception-heading{margin-top:20px}.exception-heading h3{margin:0 0 4px;color:var(--amber)}.exception-heading p{margin:0;color:var(--muted)}
.download-progress-panel{max-width:620px;margin:18px auto;padding:15px;text-align:left;border:1px solid #b2ccff;border-radius:10px;background:var(--blue2)}
.download-progress-panel .muted{margin:8px 0 0}
.repair-file-summary{margin-top:8px!important;color:#344054!important;font-weight:700}
.result-details{margin-top:16px;border:1px solid var(--line);border-radius:10px;background:#fff;overflow:hidden}
.result-details>summary{padding:13px 15px;cursor:pointer;background:#f8fafc;color:var(--blue);font-weight:800;list-style-position:inside}
.result-details[open]>summary{border-bottom:1px solid var(--line)}
.result-details .results-controls{margin:14px 14px 0}
.result-details .table-wrap{margin:12px 14px 0}
.result-details .pagination{margin:14px}
.table-wrap{max-height:370px;overflow:auto}
.result-details table{min-width:1450px}
.result-details tbody tr{height:64px}
.result-details td{height:64px;max-width:300px;vertical-align:middle}
.result-details .cell-text{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;line-height:1.35}
.package-summary{max-width:900px;margin:12px auto;color:#344054;font-weight:700}
#progress-card{position:relative;min-height:125px;padding-right:22px;overflow:hidden}
.download-progress-panel{position:relative;min-height:112px;padding-right:15px;overflow:hidden}
.surf-bot{position:absolute;right:10px;bottom:5px;width:49px;height:28px;pointer-events:none;animation:surf-travel 1.15s cubic-bezier(.45,0,.55,1) infinite alternate}
.surf-bot svg{display:block;width:100%;height:100%;overflow:visible;shape-rendering:geometricPrecision}
.wave{fill:none;stroke-linecap:round;stroke-width:4;stroke-dasharray:12 8;animation:wave-slide .42s linear infinite}
.wave-back{stroke:#98a2b3;opacity:.65}.wave-front{stroke:#344054}
.robot{transform-origin:78px 58px;animation:robot-flip 1.15s cubic-bezier(.35,0,.2,1) infinite}
.board{fill:#667085;stroke:#101828;stroke-width:3}
.bot-body,.bot-head{fill:#fff;stroke:#101828;stroke-width:3}
.bot-eye{fill:#101828}.bot-line,.antenna{fill:none;stroke:#101828;stroke-width:3;stroke-linecap:round}
@keyframes surf-travel{from{transform:translateX(-24px) rotate(-3deg)}to{transform:translateX(3px) rotate(3deg)}}
@keyframes robot-flip{0%,12%{transform:translateY(0) rotate(0)}45%{transform:translateY(-34px) rotate(-180deg)}78%{transform:translateY(-10px) rotate(-360deg)}88%,100%{transform:translateY(0) rotate(-360deg)}}
@keyframes wave-slide{to{stroke-dashoffset:-20}}
@media(max-width:650px){#progress-card{padding-right:22px}.download-progress-panel{padding-right:15px}.surf-bot{right:7px;width:49px}}
@media(prefers-reduced-motion:reduce){.surf-bot,.wave,.robot{animation:none}}

.breakdown{list-style:none;margin:12px 0 0;padding:10px 0 0;border-top:1px solid var(--line);display:grid;gap:6px;font-size:13px}.breakdown li{display:flex;justify-content:space-between;gap:10px;color:var(--muted)}.breakdown li b{color:var(--ink);font-variant-numeric:tabular-nums}.breakdown li.shell b{color:var(--amber)}.issue-panel{margin-top:16px;border:1px solid var(--line);background:#f8fafc;border-radius:12px}.issue-panel.shell{border-color:#fedf89;background:var(--amberbg)}.issue-panel>summary{cursor:pointer;padding:14px 16px;display:flex;align-items:center;justify-content:space-between;gap:16px;list-style:none}.issue-panel>summary:focus-visible{outline:2px solid var(--blue);outline-offset:2px}.panel-title{font-weight:800;color:var(--ink)}.issue-panel.shell .panel-title{color:var(--amber)}.panel-sub{color:var(--muted);font-size:13px}.issue-panel.shell .panel-sub{color:#7a2e0e}.panel-body{padding:14px 16px 16px;background:#fff;border-top:1px solid var(--line);border-radius:0 0 12px 12px}.issue-panel.shell .panel-body{border-top-color:#fedf89}.panel-explain{padding:14px 16px;border-radius:10px;background:var(--blue2);font-size:14px;line-height:1.55;display:grid;gap:10px}.panel-explain.shell{background:var(--amberbg);border:1px solid #fedf89}.panel-explain p{margin:0;max-width:85ch}.panel-explain b{display:block;margin-bottom:2px}.issue-table{min-width:640px}.issue-table td.mono{font-family:"Cascadia Code",monospace;font-size:12px}.issue-table td.strong{font-weight:700;font-size:13px}.issue-table .pill{margin-right:8px}.file-errors{margin:14px 0 0;padding:12px 14px 12px 32px;border:1px solid #fecdca;border-radius:10px;background:var(--redbg);color:var(--red);font-size:13px}
.issue-panel>summary::-webkit-details-marker{display:none}.panel-heading{display:grid;gap:4px;min-width:0}.expand-cue{flex:none;display:inline-flex;align-items:center;gap:10px;padding:9px 15px;border:1px solid #cbd2dc;border-radius:9px;background:#fff;color:#344054;font-size:13px;font-weight:700;white-space:nowrap}.expand-cue::before{content:"Show list"}.issue-panel[open]>summary .expand-cue::before{content:"Hide list"}.expand-cue::after{content:"";width:7px;height:7px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:translateY(-2px) rotate(45deg);transition:transform .2s}.issue-panel[open]>summary .expand-cue::after{transform:translateY(2px) rotate(-135deg)}.issue-panel>summary:hover .expand-cue{border-color:var(--blue);color:var(--blue);background:var(--blue2)}.issue-panel.shell .expand-cue{border-color:#f7b27a;color:var(--amber)}.issue-panel.shell>summary:hover .expand-cue{border-color:var(--amber);color:var(--amber);background:#fff4e5}@media(max-width:640px){.issue-panel>summary{flex-wrap:wrap}.expand-cue{width:100%;justify-content:center}}@media(prefers-reduced-motion:reduce){.expand-cue::after{transition:none}}
footer .version{margin-top:10px;font-weight:700;font-variant-numeric:tabular-nums}
.issue-panel.space{border-color:#fedf89;background:var(--amberbg)}.issue-panel.space .panel-title{color:var(--amber)}.issue-panel.space .panel-sub{color:#7a2e0e}.issue-panel.space .panel-body{border-top-color:#fedf89}.panel-explain.space{background:var(--amberbg);border:1px solid #fedf89}
.report-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:16px;padding:14px 16px;border:1px solid #b2ccff;background:var(--blue2);border-radius:12px}.report-bar strong{display:block;color:var(--ink)}.report-bar .muted{display:block;font-size:13px;margin-top:2px}.report-bar .button{white-space:nowrap}
@media(max-width:800px){.report-bar{flex-direction:column;align-items:stretch}}
#results-section .metrics{grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}.metric.blocked{border-color:#fda29b;background:var(--redbg)}.metric.blocked strong,.metric.blocked span{color:var(--red)}.schema-note{margin:10px 0 0;font-size:13px;line-height:1.45;color:var(--red);font-weight:700}

/* Header stays secondary: one line, with the check details folded away. */
.site-header .subtitle{max-width:70ch;margin:0;font-size:15px;line-height:1.5}
.about-checks{margin-top:8px;font-size:14px}
.about-checks summary{display:inline-block;cursor:pointer;color:var(--blue);font-weight:700;list-style:none}
.about-checks summary::-webkit-details-marker{display:none}
.about-checks summary::after{content:" +"}
.about-checks[open] summary::after{content:" \2212"}
.about-checks summary:focus-visible{outline:2px solid var(--blue);outline-offset:2px;border-radius:4px}
.check-list{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:6px;max-width:820px}
.check-list li{display:grid;grid-template-columns:76px 96px 1fr;align-items:baseline;gap:10px;padding:7px 12px;background:#fff;border:1px solid var(--line);border-radius:8px;font-size:13px;line-height:1.5;color:#475467}
.check-tag{justify-self:start;padding:1px 8px;border-radius:999px;font-size:11px;font-weight:800}
.check-tag.repair{background:var(--greenbg);color:var(--green)}
.check-tag.blocked{background:var(--redbg);color:var(--red)}
.check-tag.report{background:var(--amberbg);color:var(--amber)}
.check-code{font-family:"Cascadia Code",monospace;font-size:12px;font-weight:700;color:var(--ink)}
.check-text strong{color:var(--ink);margin-right:8px}
.check-text code{color:var(--muted);font-size:12px;overflow-wrap:anywhere}
.tab-hint{font-size:13px;margin:6px 0 0}
@media(max-width:640px){.check-list li{grid-template-columns:auto 1fr;row-gap:4px}.check-text{grid-column:1/-1}.check-text strong{display:block}}
.site-header{padding-top:24px;padding-bottom:14px}.site-header h1{font-size:28px;margin:4px 0 6px}
.drop-zone{padding:16px;text-align:center}
/* Privacy and keep-open status: same card style and type scale as the rest of the page. */
.privacy-badge{flex:0 0 auto;max-width:300px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 14px;color:var(--muted);font-size:13px;font-weight:400;line-height:1.5;white-space:normal;box-shadow:0 1px 2px rgba(16,24,40,.03)}
.privacy-badge span+span{font-size:13px;font-weight:400}
.privacy-badge span:first-child{position:relative;padding-left:16px;color:var(--ink);font-weight:700}
.privacy-badge span:first-child::before{content:"";position:absolute;left:0;top:.45em;width:8px;height:8px;border-radius:50%;background:var(--green)}
.privacy-badge .keep-open{margin-top:8px;padding-top:8px;border-top:1px solid var(--line);color:var(--ink)}
/* Shown only while the tab is working: sticky, so it stays visible while scrolling. */
.working-banner{position:sticky;top:0;z-index:20;display:flex;flex-wrap:wrap;gap:4px 12px;align-items:baseline;justify-content:center;padding:10px 24px;background:var(--amberbg);border-bottom:1px solid #fedf89;color:#7a2e0e;font-size:14px;line-height:1.5;text-align:center}
.working-banner strong{color:var(--amber)}
.privacy-badge .keep-open{color:var(--amber);font-weight:700}
footer .disclaimer{max-width:900px;margin:0 auto 12px;font-size:14px;line-height:1.6;color:#475467}
/* Header: disclaimer card on the right, two short notes under "What it checks". */
.disclaimer-card{flex:0 0 auto;max-width:360px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 14px;color:#475467;font-size:13px;line-height:1.5;box-shadow:0 1px 2px rgba(16,24,40,.03)}
.disclaimer-card strong{display:block;color:var(--ink);margin-bottom:4px}
.disclaimer-card p{margin:0}
.header-notes{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:6px 24px;font-size:13px;line-height:1.5;color:var(--muted)}
.header-notes li{position:relative;padding-left:16px}
.header-notes li::before{content:"";position:absolute;left:0;top:.5em;width:8px;height:8px;border-radius:50%}
.header-notes .note-local strong{color:var(--ink)}
.header-notes .note-local::before{background:var(--green)}
.header-notes .note-keep{color:var(--amber)}
.header-notes .note-keep::before{background:var(--amber)}
@media(max-width:800px){.disclaimer-card{max-width:none;margin-top:14px}}
/* Disclaimer confirmation before repair. */
.confirm-dialog{max-width:560px;width:calc(100% - 32px);border:1px solid var(--line);border-radius:14px;padding:22px;color:var(--ink);box-shadow:0 20px 40px rgba(16,24,40,.18)}
.confirm-dialog::backdrop{background:rgba(16,24,40,.45)}
.confirm-dialog h2{margin:0 0 6px;font-size:20px}
.confirm-dialog .dialog-lead{margin:0 0 12px;color:var(--muted)}
.confirm-dialog .dialog-disclaimer{margin:0 0 14px;padding:12px 14px;background:var(--amberbg);border:1px solid #fedf89;border-radius:10px;font-size:14px;line-height:1.6;color:#344054}
.confirm-check{display:flex;gap:10px;align-items:flex-start;font-weight:700;font-size:14px;cursor:pointer}
.confirm-check input{margin-top:3px;width:16px;height:16px}
.dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}
@media(max-width:480px){.dialog-actions{flex-direction:column-reverse}}
.site-header>div{flex:1 1 auto;min-width:0}
.check-caption{margin:10px 0 0;font-size:12px;color:var(--muted)}
.check-caption+.check-list{margin-top:6px}
.check-code[title]{cursor:help}
.check-code.no-code{color:var(--muted);font-weight:400}
