:root{--bg: #f4efe6;--bg-card: #fbf8f1;--ink: #1a1815;--ink-soft: #524d44;--ink-faint: #8a8378;--rule: #c9c0ae;--rule-soft: #e3dccb;--accent: #a0421f;--accent-soft:#d3a48b;--good: #2f6b3a;--warn: #8a5a00;--grid: rgba(26,24,21,.04);--serif: "Fraunces", Georgia, serif;--sans: "Inter", system-ui, sans-serif;--mono: "JetBrains Mono", ui-monospace, monospace}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--sans);font-size:15px;line-height:1.55;color:var(--ink);background:var(--bg);background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:32px 32px;min-height:100vh}a{color:var(--accent);text-decoration-thickness:1px;text-underline-offset:3px}a:hover{color:var(--ink)}.page{max-width:1100px;margin:0 auto;padding:48px 56px 96px}.doc-header{display:grid;grid-template-columns:1fr auto;align-items:end;gap:24px;padding-bottom:24px;border-bottom:1px solid var(--rule);margin-bottom:56px}.job-banner{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 18px;margin:-28px 0 36px;border:1px solid var(--accent-soft);background:#a0421f14;color:var(--ink)}.job-banner strong,.job-banner span{display:block}.job-banner strong{font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase}.job-banner span{font-size:14px;color:var(--ink-soft)}.doc-title{font-family:var(--serif);font-weight:500;font-size:38px;line-height:1.05;letter-spacing:-.02em;margin:0;font-variation-settings:"opsz" 144;cursor:pointer}.doc-title .accent{color:var(--accent);font-style:italic;font-weight:400}.doc-subtitle{font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-faint);margin:8px 0 0}.doc-meta{font-family:var(--mono);font-size:11px;color:var(--ink-faint);letter-spacing:.04em;text-align:right;line-height:1.7}.doc-meta strong{color:var(--ink);font-weight:500}.brand-mark{display:inline-flex;align-items:center;gap:12px;text-decoration:none;color:inherit}.brand-mark img{display:block;width:52px;height:52px;border-radius:50%;background:var(--ink, #111);padding:8px;object-fit:contain;box-sizing:border-box}.brand-mark--sm img{width:26px;height:26px;padding:4px}.brand-text{display:flex;flex-direction:column;align-items:flex-start;line-height:1.15}.brand-text strong{font-family:var(--mono);font-weight:600;font-size:14px;letter-spacing:.22em;color:var(--ink)}.brand-text span{font-family:var(--mono);font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:var(--ink-faint);margin-top:2px}.brand-mark--sm{gap:8px}.brand-mark--sm .brand-text strong{font-size:11px;letter-spacing:.18em}.brand-mark--sm .brand-text span{font-size:9px;margin-top:1px}.section{margin-bottom:48px}.section-label{font-family:var(--mono);font-size:10px;font-weight:600;letter-spacing:.15em;text-transform:uppercase;color:var(--ink-faint);margin:0 0 12px;display:flex;align-items:center;gap:12px}.section-label:before{content:"";display:inline-block;width:18px;height:1px;background:var(--ink-faint);flex-shrink:0}.section-title{font-family:var(--serif);font-weight:500;font-size:24px;line-height:1.2;letter-spacing:-.01em;margin:0 0 20px}.lede{font-family:var(--serif);font-size:18px;line-height:1.45;color:var(--ink-soft);max-width:680px;margin:0 0 24px}.card{background:var(--bg-card);border:1px solid var(--rule);border-radius:2px;padding:32px;box-shadow:0 1px #1a18150a}.card+.card{margin-top:16px}.field{margin-bottom:28px}.field-label{display:block;font-family:var(--mono);font-size:11px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:8px}.field-hint{font-size:13px;color:var(--ink-faint);margin:6px 0 0;font-style:italic}.input,.textarea{width:100%;font-family:var(--mono);font-size:14px;padding:12px 14px;background:#fff;border:1px solid var(--rule);border-radius:2px;color:var(--ink);transition:border-color .15s ease,box-shadow .15s ease}.input:focus,.textarea:focus{outline:none;border-color:var(--ink);box-shadow:0 0 0 3px #a0421f1f}.textarea{min-height:72px;resize:vertical}input[type=file].input{font-family:var(--sans);padding:10px 12px}.row-2{display:grid;grid-template-columns:1fr 1fr;gap:24px}@media (max-width: 720px){.row-2{grid-template-columns:1fr}.job-banner{margin-top:-20px;flex-direction:column;align-items:flex-start}.upload-steps{grid-template-columns:1fr}}.button{display:inline-block;font-family:var(--sans);font-size:14px;font-weight:500;letter-spacing:.02em;padding:12px 28px;background:var(--ink);color:var(--bg);border:1px solid var(--ink);border-radius:2px;cursor:pointer;transition:all .15s ease;text-decoration:none;white-space:nowrap}.button:hover{background:var(--accent);border-color:var(--accent);color:#fff}.button.secondary{background:transparent;color:var(--ink)}.button.secondary:hover{background:var(--ink);color:var(--bg)}.button.accent{background:var(--accent);border-color:var(--accent);color:#fff}.button.accent:hover{background:var(--ink);border-color:var(--ink)}.button.dark{background:#1f2937;border-color:#1f2937;color:#fff}.button.dark:hover{background:var(--accent);border-color:var(--accent)}.button:disabled{opacity:.5;cursor:not-allowed}.button:disabled:hover{background:var(--ink);border-color:var(--ink);color:var(--bg)}.page-nav{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px;flex-wrap:wrap}.page-nav-group{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.page-nav--end{justify-content:flex-end}.dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#110c0761;display:flex;align-items:center;justify-content:center;padding:24px;z-index:1200}.dialog-card{width:min(100%,520px);background:var(--bg-card);border:1px solid var(--rule);box-shadow:0 24px 80px #110c072e;padding:24px}.dialog-title{margin:0 0 12px;font-family:var(--serif);font-size:24px;font-weight:500}.dialog-body{color:var(--ink-soft);line-height:1.6}.dialog-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:20px;flex-wrap:wrap}.notice{font-family:var(--mono);font-size:12px;padding:12px 16px;border-left:2px solid var(--accent);background:#a0421f0d;margin:16px 0;line-height:1.55}.notice.good{border-left-color:var(--good);background:#2f6b3a0d}.notice.warn{border-left-color:var(--warn);background:#8a5a000d}.notice.info{border-left-color:#3b82f6;background:#3b82f60d}.tag{display:inline-block;font-family:var(--mono);font-size:11px;font-weight:500;letter-spacing:.04em;padding:3px 9px;border:1px solid var(--rule);border-radius:100px;background:var(--bg-card);color:var(--ink-soft);margin:0 4px 4px 0}.tag.pinboard{color:var(--accent);border-color:var(--accent-soft);background:#a0421f0f}.tag.whiteboard{color:#2c4f7c;border-color:#b8c8de;background:#2c4f7c0f}.tag.confirmed{color:var(--good);border-color:#a8c4ad;background:#2f6b3a0f}.tag.unconfirmed{color:var(--warn);border-color:#d4c2a0;background:#8a5a000d}.tag.leader{background:#fef3c7;color:#92400e;border-color:#fde68a}.dl{display:grid;grid-template-columns:200px 1fr;gap:8px 24px;font-size:14px}.dl dt{font-family:var(--mono);font-size:11px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);padding-top:3px}.dl dd{margin:0;color:var(--ink)}pre.code{font-family:var(--mono);font-size:12.5px;line-height:1.5;background:#25221d;color:#e8e2d4;padding:20px 24px;border-radius:2px;overflow-x:auto;margin:0;white-space:pre-wrap;word-break:break-all}details{margin-top:8px}details summary{cursor:pointer;font-family:var(--mono);font-size:11px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);padding:8px 0;list-style:none;-webkit-user-select:none;user-select:none}details summary::-webkit-details-marker{display:none}details summary:before{content:"+ ";color:var(--accent);font-weight:600}details[open] summary:before{content:"− "}.code-card{border:1px solid var(--rule);border-radius:2px;background:var(--bg-card);padding:20px 24px;margin-bottom:12px}.code-card-head{display:flex;align-items:baseline;gap:12px;margin-bottom:12px;padding-bottom:12px;border-bottom:1px dashed var(--rule);flex-wrap:wrap}.code-card-code{font-family:var(--mono);font-size:18px;font-weight:600;color:var(--ink)}.code-card-desc{font-family:var(--serif);font-style:italic;font-size:16px;color:var(--ink-soft);flex:1}.page-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:6px;font-family:var(--mono);font-size:11px}.page-cell{padding:8px 10px;border:1px solid var(--rule-soft);border-radius:2px;background:var(--bg-card)}.page-cell.has-target{border-color:var(--accent);background:#a0421f0f}.page-cell-num{font-weight:600;color:var(--ink)}.page-cell-type{color:var(--ink-faint);font-size:10px;text-transform:uppercase;letter-spacing:.05em}.page-cell-codes{color:var(--accent);font-size:10px;margin-top:2px}.doc-footer{margin-top:80px;padding-top:24px;border-top:1px solid var(--rule);font-family:var(--mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);display:flex;justify-content:space-between}.btn-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:24px}.spinner{display:inline-block;width:18px;height:18px;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite;vertical-align:middle;margin-right:8px}.spinner.dark{border-color:#1a181533;border-top-color:var(--ink)}@keyframes spin{to{transform:rotate(360deg)}}.loading-full{padding:80px 0;text-align:center;font-family:var(--mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint)}.sub-section-title{font-family:var(--serif);font-size:18px;font-weight:500;margin:24px 0 12px}.viewport-item{border-left:3px solid var(--rule);padding:8px 0 8px 14px;margin-bottom:10px}.occ-item{border:1px solid var(--rule-soft);border-radius:6px;padding:12px 14px;margin-bottom:10px;background:var(--bg)}.occ-leader-box{font-size:13px;color:#92400e;background:#fef9ec;border-radius:4px;padding:6px 10px;margin-bottom:8px}table.panels-table{width:100%;border-collapse:collapse;font-size:13px}table.panels-table th{font-family:var(--mono);font-size:11px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);padding:8px 12px 8px 0;text-align:left;border-bottom:1px dashed var(--rule)}table.panels-table td{padding:10px 12px 10px 0;border-bottom:1px solid var(--rule-soft);vertical-align:top}table.panels-table tr.issue-row td{background:#fef9f0;padding:4px 12px 8px 24px;font-size:12px;color:#92400e;border-bottom:none}.confidence-bar{display:flex;align-items:center;gap:8px}.stagger>*{opacity:0;animation:rise .5s ease forwards}.stagger>*:nth-child(1){animation-delay:0ms}.stagger>*:nth-child(2){animation-delay:60ms}.stagger>*:nth-child(3){animation-delay:.12s}.stagger>*:nth-child(4){animation-delay:.18s}.stagger>*:nth-child(5){animation-delay:.24s}.stagger>*:nth-child(6){animation-delay:.3s}.stagger>*:nth-child(7){animation-delay:.36s}.stagger>*:nth-child(8){animation-delay:.42s}@keyframes rise{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.tag.good{color:var(--good);border-color:#a8c4ad;background:#2f6b3a0f}.tag.neutral{color:var(--ink-soft);border-color:var(--rule);background:var(--bg-card)}.tag.accent{color:var(--accent);border-color:var(--accent-soft);background:#a0421f0f}.tag.warn{color:var(--warn);border-color:#d4c2a0;background:#8a5a000d}.home-hero{padding-bottom:16px}.home-title{font-size:36px;margin-bottom:16px}.analyses-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:16px}.analysis-card{background:var(--bg-card);border:1px solid var(--rule-soft);border-radius:3px;padding:20px 22px;display:flex;flex-direction:column;gap:10px;transition:border-color .15s ease,box-shadow .15s ease}.analysis-card:hover{border-color:var(--rule);box-shadow:0 2px 12px #1a18150f}.analysis-card-top{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.analysis-card-id{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.analysis-card-drawing{font-family:var(--serif);font-size:17px;font-weight:500;letter-spacing:-.01em;color:var(--ink);line-height:1.2}.analysis-card-file{font-family:var(--mono);font-size:11px;color:var(--ink-faint);margin:0;letter-spacing:.02em}.analysis-card-meta{display:flex;gap:14px;flex-wrap:wrap;font-family:var(--mono);font-size:11px;color:var(--ink-faint);letter-spacing:.04em}.analysis-card-meta strong{color:var(--ink-soft);font-weight:600}.analysis-card-codes{display:flex;flex-wrap:wrap;gap:0}.analysis-card-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:4px}.analysis-card-actions .button{padding:8px 18px;font-size:13px}.upload-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.upload-step{display:grid;grid-template-columns:36px 1fr;gap:14px;padding:18px;border:1px solid var(--rule-soft);background:var(--bg-card);align-items:start}.upload-step--current{border-color:var(--accent-soft);background:#a0421f0f}.upload-step--done{border-color:#b8c8b6;background:#2f6b3a0d}.upload-step-index{width:36px;height:36px;display:grid;place-items:center;border:1px solid var(--rule);border-radius:999px;font-family:var(--mono);font-size:12px;color:var(--ink-soft);background:#fff}.upload-step--current .upload-step-index{border-color:var(--accent);color:var(--accent)}.upload-step--done .upload-step-index{border-color:var(--good);color:var(--good)}.upload-step-title{font-family:var(--serif);font-size:18px;font-weight:500;margin:0 0 6px}.upload-step-body{margin:0;color:var(--ink-soft);font-size:14px}.header-right{display:flex;align-items:center;gap:16px}.user-nav{display:flex;align-items:center;gap:10px}.user-chip{font-size:12px;color:#4a5568;background:#edf2f7;padding:4px 10px;border-radius:999px;max-width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.button.small{padding:6px 12px;font-size:12px}.button.danger{background:#c53030;color:#fff;border-color:#c53030}.button.danger:hover{background:#9b2c2c}.form-stack{display:flex;flex-direction:column;gap:12px}.form-stack label{display:flex;flex-direction:column;gap:4px;font-size:13px}.form-stack input,.form-stack select{padding:8px 10px;border:1px solid #cbd5e0;border-radius:6px;font-size:14px}.error-banner{background:#fed7d7;color:#742a2a;border:1px solid #fc8181;padding:8px 12px;border-radius:6px;font-size:13px}.info-banner{background:#c6f6d5;color:#22543d;border:1px solid #68d391;padding:8px 12px;border-radius:6px;font-size:13px}.table{width:100%;border-collapse:collapse;font-size:14px}.table th,.table td{text-align:left;padding:8px 10px;border-bottom:1px solid #e2e8f0}.table th{font-weight:600;color:#4a5568;background:#f7fafc}
