:root{--bg:#f5f4f1;--surface:#fff;--ink:#1b1f2a;--ink-muted:#6b7280;--accent:#8a6d3b;--accent-ink:#fff;--danger:#b3261e;--line:#e2e0da;--radius:14px;--shadow:0 1px 2px #1b1f2a0f, 0 6px 20px #1b1f2a0d;--gap:16px}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--ink);-webkit-text-size-adjust:100%;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif;font-size:16px;line-height:1.45}h1,h2,p,ol,ul{margin:0}.muted{color:var(--ink-muted);font-size:.9rem}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.app{flex-direction:column;min-height:100%;display:flex}.app__header{z-index:5;justify-content:space-between;align-items:center;gap:var(--gap);padding:10px max(12px, env(safe-area-inset-left)) 10px max(12px, env(safe-area-inset-right));padding-top:calc(10px + env(safe-area-inset-top));background:var(--surface);border-bottom:1px solid var(--line);display:flex;position:sticky;top:0}.app__logo{font:inherit;letter-spacing:.02em;color:var(--ink);cursor:pointer;background:0 0;border:0;padding:0;font-weight:600}.app__user{align-items:center;gap:10px;min-width:0;display:flex}.app__user .muted{text-overflow:ellipsis;white-space:nowrap;max-width:40vw;overflow:hidden}.app__main{width:100%;max-width:900px;padding:var(--gap) max(12px, env(safe-area-inset-left)) calc(var(--gap) + env(safe-area-inset-bottom)) max(12px, env(safe-area-inset-right));flex:1;margin:0 auto}.screen{min-height:100%;padding:var(--gap)}.screen--center{justify-content:center;align-items:center;display:flex}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:var(--gap)}.page{gap:var(--gap);flex-direction:column;display:flex}.page__head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.page__title{font-size:1.35rem;font-weight:600}.empty{flex-direction:column;gap:6px;display:flex}.list{flex-direction:column;gap:12px;padding:0;list-style:none;display:flex}.project{flex-direction:column;gap:10px;padding:12px;display:flex}.project__main{text-align:left;font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;flex-direction:column;gap:2px;padding:0;display:flex}.project__title{font-weight:600}.project__actions{border-top:1px solid var(--line);flex-wrap:wrap;gap:8px;padding-top:10px;display:flex}.field{margin-bottom:12px;display:block}.field__label{color:var(--ink-muted);margin-bottom:4px;font-size:.85rem;display:block}.input{width:100%;font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:11px 12px;font-size:16px}.input:focus{outline:2px solid var(--accent);outline-offset:1px}.btn{font:inherit;border:1px solid var(--line);background:var(--surface);color:var(--ink);cursor:pointer;border-radius:10px;justify-content:center;align-items:center;min-height:40px;padding:9px 14px;font-size:.95rem;text-decoration:none;display:inline-flex}.btn:disabled{opacity:.6;cursor:default}.btn--primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn--ghost{background:0 0}.btn--danger{background:var(--danger);border-color:var(--danger);color:#fff}.btn--danger-ghost{color:var(--danger);border-color:var(--line);background:0 0}.btn--wide{width:100%}.alert{color:var(--danger);background:#fdecea;border:1px solid #f5c6c2;border-radius:10px;padding:10px 12px;font-size:.9rem}.login{width:100%;max-width:360px}.login__title{font-size:1.6rem;font-weight:600}.login__subtitle{margin-bottom:var(--gap)}.login__hint{text-align:center;margin-top:12px}.login__guide{text-align:center;margin-top:14px;display:block}.overlay{padding:var(--gap);z-index:20;background:#1b1f2a73;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{width:100%;max-width:400px;max-height:90vh;overflow-y:auto}.modal__title{margin-bottom:12px;font-size:1.1rem;font-weight:600}.modal__actions{margin-top:var(--gap);justify-content:flex-end;gap:8px;display:flex}.editor__block{flex-direction:column;gap:12px;display:flex}.editor__row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.editor__subtitle{font-size:1.05rem;font-weight:600}.plan{border:1px solid var(--line);background:#fbfaf8;border-radius:10px;max-height:70vh;overflow:auto}.plan__image{width:100%;height:auto;display:block}.stub__steps{color:var(--ink-muted);margin:0;padding-left:1.2em;font-size:.9rem}.canvas{border:1px solid var(--line);background:#fbfaf8;border-radius:10px;height:min(62vh,520px);min-height:280px;position:relative;overflow:hidden}.canvas__svg{touch-action:none;-webkit-user-select:none;user-select:none;display:block}.canvas__svg--contour{cursor:crosshair}.canvas__svg--view{cursor:grab}.canvas__tools{flex-direction:column;gap:6px;display:flex;position:absolute;bottom:8px;right:8px}.btn--icon{background:#ffffffeb;width:36px;min-height:36px;padding:0;font-size:1.1rem;line-height:1}.handle{fill:#fff;stroke:#8a6d3b;stroke-width:2px;vector-effect:non-scaling-stroke;cursor:move}.handle--first{fill:#8a6d3b}.map-label{fill:#1b1f2a;paint-order:stroke;stroke:#fff;stroke-width:3px;stroke-linejoin:round;vector-effect:non-scaling-stroke;pointer-events:none;font-weight:600}.map-label--defect{fill:#7a1d16;font-weight:700}.editor__row--tools{align-items:flex-end;gap:12px}.segmented{border:1px solid var(--line);border-radius:10px;display:inline-flex;overflow:hidden}.segmented__item{font:inherit;background:var(--surface);min-height:40px;color:var(--ink);cursor:pointer;border:0;padding:8px 14px;font-size:.95rem}.segmented__item.is-active{background:var(--accent);color:var(--accent-ink)}@media (width<=560px){.segmented{-webkit-overflow-scrolling:touch;max-width:100%;overflow-x:auto}.segmented__item{flex:none;padding:8px 10px}}.field--inline{margin-bottom:0}.input--num{width:7em}.check{color:var(--ink);align-items:center;gap:6px;min-height:40px;font-size:.9rem;display:inline-flex}.hint{color:var(--ink-muted);border:1px solid var(--line);background:#f7f5f0;border-radius:10px;padding:8px 10px;font-size:.88rem}.hint--warn{color:#7a5a12;background:#fff7e6;border-color:#f0d9a8}.note{color:var(--ink-muted);font-size:.88rem}.note>summary{cursor:pointer;color:var(--accent)}.note__list{flex-direction:column;gap:4px;margin:8px 0 0;padding-left:1.2em;display:flex}.save{color:var(--ink-muted);font-size:.85rem}.save--error,.save--retry{color:var(--danger)}.alert--info{color:#274b7a;background:#eef4fd;border-color:#c5d8f2;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.defects{flex-direction:column;gap:8px;padding:0;list-style:none;display:flex}.defects__item{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.defects__swatch{border:1px solid var(--line);border-radius:4px;flex:none;width:16px;height:16px}.defects__text{flex:1;min-width:0;font-size:.95rem}.canvas__svg--rooms{cursor:crosshair}.room--live{cursor:move}.map-label--room{fill:#22262f;font-weight:500}.markup__type{flex:1;min-width:220px}.markup__list{flex-direction:column;gap:8px;padding:0;list-style:none;display:flex}.markup__item{border:1px solid var(--line);border-radius:10px;align-items:center;gap:10px;padding:8px;display:flex}.markup__item.is-selected{border-color:var(--accent);background:#fbf7ef}.markup__pick{cursor:pointer;background:0 0;border:0;padding:4px;line-height:0}.markup__body{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.markup__label{padding:6px 8px;font-size:1rem}.findings{flex-direction:column;gap:8px;display:flex}.findings__zone{align-items:center;gap:8px;margin-top:6px;font-size:.95rem;font-weight:600;display:flex}.finding{border:1px solid var(--line);border-left:4px solid var(--ink-muted);border-radius:10px;flex-direction:column;gap:6px;padding:10px 12px;display:flex}.finding--defect{border-left-color:var(--danger)}.finding--advice{border-left-color:#c79a2e}.finding--ok{border-left-color:#2e8b57}.finding.is-hidden{opacity:.55}.finding.is-focused{border-color:var(--accent);background:#fbf7ef}.finding__head{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.finding__title{text-align:left;font:inherit;color:var(--ink);cursor:pointer;background:0 0;border:0;flex:1;padding:0;font-weight:600}.finding__title--plain{cursor:default}.finding__actions{gap:6px;display:flex}.btn--small{min-height:32px;padding:4px 10px;font-size:.85rem}.finding__meta{font-size:.85rem}.finding__list{flex-direction:column;gap:6px;padding:0;font-size:.92rem;list-style:none;display:flex}.finding__match{border-left:2px solid var(--line);padding-left:12px}.finding__source{font-size:.78rem;display:block}.finding__flags{color:#7a5a12;background:#fff7e6;border:1px solid #f0d9a8;border-radius:8px;flex-direction:column;gap:4px;margin:0;padding:8px 10px;font-size:.85rem;list-style:none;display:flex}.finding__flags--condition{color:#2b4a7a;background:#eef3fb;border-color:#c9d8ef}.finding__install,.correction__install{color:#2f5533;background:#f2f8f2;border-left:3px solid #9bbf9b;border-radius:0 8px 8px 0;flex-direction:column;gap:4px;margin:6px 0 0;padding:6px 10px;font-size:.85rem;list-style:none;display:flex}.manual__text{flex:1;min-width:220px}.editor__layout,.editor__canvas,.editor__side,.editor__view{gap:var(--gap);flex-direction:column;min-width:0;display:flex}.editor__views{display:none}.editor__notes{resize:vertical;min-height:96px}.segmented--small .segmented__item{min-height:34px;padding:6px 10px;font-size:.85rem}.correction{border-left:3px solid var(--line)}.correction--plan{border-left-color:var(--accent)}.correction--done{border-left-color:#00b050}.correction--skip{opacity:.65}.correction__note{color:var(--ink-muted);font-size:.9rem}.correction__body{border-top:1px solid var(--line);flex-direction:column;gap:8px;padding-top:10px;display:flex}.correction__materials{flex-direction:column;gap:6px;display:flex}.correction__material{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.correction__material .input:first-child{flex:1;min-width:160px}.correction__unit{width:6em}.editor__tabs{align-self:flex-start}.shopping__lines{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.shopping__line{flex-direction:column;gap:4px;display:flex}.shopping__origins{border-left:2px solid var(--line);color:var(--ink-muted);flex-direction:column;gap:4px;margin:2px 0 0;padding:0 0 0 10px;font-size:.85rem;list-style:none;display:flex}.shopping__qty{color:var(--ink);font-variant-numeric:tabular-nums}.shopping__day{color:#7a5c1e}.shopping__alt{color:#2f5533}.shopping__choice{border-left-color:#c79a2e}.shopping__line--unknown b{color:#7a5c1e}.canvas__svg--artifacts{cursor:default}.artifacts-layer{pointer-events:none}.artifact--live{pointer-events:auto;cursor:move}.artifact__label{pointer-events:none;-webkit-user-select:none;user-select:none;font-weight:700}.editor__layers{flex-wrap:wrap;align-items:center;gap:6px 14px}.legend{border:1px solid var(--line);border-radius:10px;flex-direction:column;gap:6px;padding:8px 10px;display:flex}.legend__title{margin:0;font-size:1rem}.legend__group{flex-direction:column;gap:4px;display:flex}.legend__head{text-align:left;width:100%;font:inherit;cursor:pointer;color:var(--ink);background:0 0;border:0;align-items:center;gap:8px;padding:4px 0;font-size:.9rem;display:flex}.legend__num{color:#5b21b6;background:#fff;border:2px solid #5b21b6;border-radius:10px;justify-content:center;align-items:center;min-width:26px;height:20px;padding:0 6px;font-size:.8rem;font-weight:700;display:inline-flex}.legend__num--done{color:#fff;background:#5b21b6}.legend__num--undecided{border-style:dashed;border-width:1.5px}.legend__where{font-weight:600}.legend__list{flex-direction:column;gap:4px;margin:0;padding-left:34px;font-size:.88rem;list-style:none;display:flex}.legend__item{line-height:1.35}@media (width>=640px){.project{flex-direction:row;justify-content:space-between;align-items:center;padding:14px 16px}.project__actions{border-top:0;padding-top:0}}@media (width>=1100px){.app__main--editor{max-width:1440px}.editor__layout{grid-template-columns:minmax(0,1fr) minmax(400px,44%);align-items:start;display:grid}.editor__canvas{top:var(--gap);max-height:calc(100vh - 2 * var(--gap));position:sticky;overflow:auto}.editor__views{align-self:flex-start;max-width:100%;display:inline-flex}.editor__view[data-active=false]{display:none}}.report{gap:var(--gap);flex-direction:column;display:flex}.report__toolbar{z-index:4;background:var(--bg);justify-content:space-between;gap:10px;padding:4px 0;display:flex;position:sticky;top:0}.report__doc{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:var(--gap);gap:var(--gap);flex-direction:column;display:flex}.report__head{border-bottom:1px solid var(--line);padding-bottom:var(--gap);flex-direction:column;gap:10px;display:flex}.report__title{font-size:1.35rem;font-weight:600}.report__meta{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:8px 16px;margin:0;display:grid}.report__meta dt{color:var(--ink-muted);font-size:.78rem}.report__meta dd{margin:0;font-size:.95rem}.report__map{justify-content:center;display:flex}.report__map svg{border:1px solid var(--line);border-radius:10px;width:100%;height:auto}.report__section-title{font-size:1.1rem;font-weight:600}.report__sector{break-inside:avoid;page-break-inside:avoid;margin-top:16px}.report__sector-title{border-bottom:3px solid;align-items:center;gap:8px;padding:4px 0 8px;font-size:.98rem;font-weight:600;display:flex}.report__swatch{border:1px solid var(--line);border-radius:4px;flex:none;width:16px;height:16px}.report__table-scroll{max-width:100%;overflow-x:auto}.report__table-el{border-collapse:collapse;table-layout:fixed;width:100%;min-width:480px;font-size:.9rem}.report__table-el th:first-child,.report__table-el td:first-child{width:30%}.report__table-el th:nth-child(2),.report__table-el td:nth-child(2){width:46%}.report__table-el th:nth-child(3),.report__table-el td:nth-child(3){width:24%}.report__table-el th,.report__table-el td{text-align:left;vertical-align:top;border-bottom:1px solid var(--line);overflow-wrap:break-word;padding:8px 10px}.report__legend th:first-child,.report__legend td:first-child{width:8%;font-weight:700}.report__legend th:nth-child(2),.report__legend td:nth-child(2){width:52%}.report__legend th:nth-child(3),.report__legend td:nth-child(3){width:22%}.report__section{flex-direction:column;gap:10px;display:flex}.report__toc ol{flex-direction:column;gap:4px;margin:6px 0 0;padding-left:22px;display:flex}.report__toc a{color:var(--ink)}.report__toggle{color:var(--ink-muted);align-items:center;gap:6px;font-size:.85rem;display:flex}.report__note{color:#7a5c1e;font-size:.85rem}.report__chosen{color:#00733a}.report__notes-text{white-space:pre-wrap}.report__origins{color:var(--ink-muted);flex-direction:column;gap:6px;margin:0;padding:0;font-size:.82rem;list-style:none;display:flex}.report__plan th:first-child,.report__plan td:first-child{width:34%}.report__plan th:nth-child(2),.report__plan td:nth-child(2){width:30%}.report__plan th:nth-child(3),.report__plan td:nth-child(3),.report__shopping th:first-child,.report__shopping td:first-child,.report__shopping th:nth-child(2),.report__shopping td:nth-child(2){width:22%}.report__shopping th:nth-child(3),.report__shopping td:nth-child(3){width:56%}.report__table-el th{color:var(--ink-muted);font-size:.8rem;font-weight:600}.report__defect-title{font-weight:600}.report__flag{color:#7a5a12;margin-top:4px;font-size:.8rem}.report__corrections,.report__sources{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.report__install{color:#2f5533;border-left:2px solid #9bbf9b;flex-direction:column;gap:3px;margin:4px 0 0;padding:0 0 0 10px;font-size:.82rem;list-style:none;display:flex}.report__sources{color:var(--ink-muted);font-size:.82rem}@media screen and (width<=600px){.report__table-scroll{overflow-x:visible}.report__table-el{min-width:0}.report__table-el thead{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}.report__table-el,.report__table-el tbody,.report__table-el tr,.report__table-el td{display:block;width:100%!important}.report__table-el tr{border:1px solid var(--line);border-radius:10px;margin-bottom:12px;padding:4px 10px}.report__table-el tr:last-child{margin-bottom:0}.report__table-el td{border-bottom:1px solid var(--line);padding:8px 0}.report__table-el td:last-child{border-bottom:0}.report__table-el td:before{content:attr(data-label);color:var(--ink-muted);margin-bottom:4px;font-size:.72rem;font-weight:600;display:block}}@page{size:A4;margin:14mm 14mm 18mm}@media print{.no-print{display:none!important}.app__header{display:none}.app__main--report{max-width:none;padding:0}.report__doc{box-shadow:none;border:0;border-radius:0;padding:0}*{-webkit-print-color-adjust:exact;print-color-adjust:exact}.report,.report__doc,.report__section,.report__head{display:block}.report__section>*+*,.report__head>*+*{margin-top:8px}.report__meta{display:grid}.report__table-el{font-size:10.5pt}.report__section{break-before:page;page-break-before:always}.report__toc{break-inside:avoid;page-break-inside:avoid}.report__section-title,.report__sector-title,.report__head{break-after:avoid;page-break-after:avoid}.report__sector{break-inside:auto;page-break-inside:auto}.report__table-el tr,.report__map,.report__install{break-inside:avoid;page-break-inside:avoid}.report__table-el thead{display:table-header-group}.report__table-el tfoot{display:table-footer-group}p,li{orphans:3;widows:3}.report__section:before,.report__toc:before{content:var(--doc,"");color:#6b7280;border-bottom:1px solid #e2e0da;margin-bottom:6mm;padding-bottom:2mm;font-size:8.5pt;display:block}.report__table-scroll{overflow-x:visible}.report__table-el{min-width:0}}
