:root{color-scheme:light;--ink: #172033;--ink-soft: #34405a;--muted: #687287;--line: #dfe4ec;--line-strong: #cbd3df;--paper: #ffffff;--canvas: #f3f5f8;--canvas-warm: #f8f6f2;--brand: #1f3665;--brand-dark: #14254a;--brand-soft: #edf7fd;--brand-cyan: #65bbea;--action-blue: #0868f7;--action-blue-bright: #0d73ff;--action-blue-dark: #0752c8;--action-blue-soft: #edf5ff;--action-blue-line: #82b5ff;--action-red: #df3333;--action-red-dark: #c9252b;--green: #11845a;--red: #c83532;--amber: #a75c00;--blue: #235fa7;--radius-sm: 10px;--radius: 16px;--radius-lg: 22px;--shadow-sm: 0 4px 14px rgb(23 32 51 / 6%);--shadow: 0 18px 50px rgb(23 32 51 / 11%);--content: 1380px;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html{min-height:100%;background:var(--canvas);scroll-behavior:smooth}body{margin:0;min-width:320px;min-height:100vh;color:var(--ink);background:radial-gradient(circle at 100% 0,#edf7fd 0,transparent 32rem),var(--canvas)}button,input,select,textarea{font:inherit}button{cursor:pointer;-webkit-tap-highlight-color:transparent}button:disabled{cursor:not-allowed;opacity:.48;box-shadow:none!important;transform:none!important}a{color:inherit}img{max-width:100%}[hidden]{display:none!important}:focus-visible{outline:3px solid rgb(101 187 234 / 52%);outline-offset:2px}.shell{min-height:100vh}.topbar{position:sticky;top:0;z-index:40;color:var(--ink);background:#fffffff5;border-bottom:1px solid var(--line);box-shadow:0 8px 25px #0c121f14;backdrop-filter:blur(16px)}.topbar-inner{width:min(var(--content),calc(100% - 2rem));min-height:72px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:1rem}.brand{display:inline-flex;align-items:center;gap:.85rem;min-width:0;padding:.25rem;border:0;color:var(--ink);background:none;text-align:left}.brand-logo{display:block;width:148px;height:auto;flex:0 0 auto;object-fit:contain}.brand-app-name{padding-left:.85rem;border-left:1px solid var(--line-strong);font-size:.98rem;font-weight:800;letter-spacing:-.01em;white-space:nowrap}.top-actions{display:flex;align-items:center;gap:.6rem}.profile-button{display:flex;align-items:center;gap:.65rem;min-height:46px;padding:.35rem .7rem .35rem .38rem;border:1px solid #d5e4f8;border-radius:12px;color:var(--ink);background:#f7faff;transition:border-color .16s ease,background .16s ease,box-shadow .16s ease,transform .16s ease}.profile-button:hover{border-color:var(--action-blue-line);background:var(--action-blue-soft);box-shadow:0 7px 18px #0868f71c;transform:translateY(-1px)}.avatar{display:grid;place-items:center;width:34px;height:34px;flex:0 0 34px;border-radius:10px;color:#fff;background:#48536d;font-size:.72rem;font-weight:900;letter-spacing:.03em}.user-chip{display:flex;flex-direction:column;min-width:0;text-align:left;line-height:1.2}.user-chip strong{max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.78rem}.user-chip small{color:var(--muted);font-size:.67rem}.network-pill{display:inline-flex;align-items:center;gap:.45rem;min-height:38px;padding:.45rem .7rem;border:1px solid #d5e4f8;border-radius:999px;color:#164d9f;background:#f4f8ff;font-size:.73rem;font-weight:800;transition:border-color .16s ease,background .16s ease}.network-pill:hover{border-color:var(--action-blue-line);background:var(--action-blue-soft)}.network-pill:before{content:"";width:8px;height:8px;flex:0 0 8px;border-radius:50%;background:#38cf8c;box-shadow:0 0 0 4px #38cf8c1f}.network-pill.offline:before{background:#ff9d42;box-shadow:0 0 0 4px #ff9d4224}.page{width:min(var(--content),calc(100% - 2.5rem));margin:0 auto;padding:clamp(1.25rem,3vw,2.5rem) 0 5rem}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:1.25rem;margin-bottom:1.5rem}.page-head h1,.detail-title h1{margin:0;font-size:clamp(1.8rem,3vw,2.7rem);line-height:1.04;letter-spacing:-.045em}.eyebrow,.card-kicker{margin:0 0 .38rem;color:var(--brand);font-size:.69rem;font-weight:900;text-transform:uppercase;letter-spacing:.13em}.lede{margin:.45rem 0 0;color:var(--muted);line-height:1.55}.toolbar{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.55rem}.breadcrumb{display:flex;align-items:center;flex-wrap:wrap;gap:.42rem;margin:0 0 1.3rem;color:var(--muted);font-size:.82rem}.breadcrumb button{display:inline-flex;align-items:center;gap:.38rem;min-height:34px;padding:.35rem .58rem;border:1px solid #bbd5fb;border-radius:9px;color:var(--action-blue-dark);background:#ffffffe0;font-weight:750;transition:color .15s ease,border-color .15s ease,background .15s ease}.breadcrumb button:hover{color:#fff;border-color:var(--action-blue);background:var(--action-blue)}.breadcrumb strong{color:var(--ink-soft)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.58rem;min-height:48px;padding:.76rem 1.15rem;border:1.5px solid transparent;border-radius:12px;font-weight:820;line-height:1.1;letter-spacing:-.01em;transition:transform .16s ease,box-shadow .16s ease,background .16s ease,border-color .16s ease,color .16s ease}.btn:hover:not(:disabled){transform:translateY(-2px)}.btn:active:not(:disabled){transform:translateY(0) scale(.985);box-shadow:none}.btn-primary,.btn-success{color:#fff;background:linear-gradient(135deg,var(--action-blue-bright),var(--action-blue));border-color:var(--action-blue);box-shadow:0 9px 22px #0868f73d}.btn-primary:hover:not(:disabled),.btn-success:hover:not(:disabled){background:linear-gradient(135deg,#2584ff,#0a65e8);border-color:#0a65e8;box-shadow:0 12px 27px #0868f74f}.btn-primary:active:not(:disabled),.btn-success:active:not(:disabled){background:linear-gradient(135deg,#075bda,var(--action-blue-dark))}.btn-dark{color:#104aab;background:linear-gradient(135deg,#e5f0ff,#f2f7ff);border-color:#d1e2fb;box-shadow:0 7px 18px #0868f717}.btn-dark:hover:not(:disabled){color:#fff;background:var(--action-blue);border-color:var(--action-blue);box-shadow:0 10px 22px #0868f738}.btn-light,.btn-ghost{color:var(--action-blue-dark);background:#fff;border-color:var(--action-blue-line);box-shadow:0 3px 10px #0868f70d}.btn-light:hover:not(:disabled),.btn-ghost:hover:not(:disabled){color:#075bd7;border-color:var(--action-blue);background:var(--action-blue-soft);box-shadow:0 8px 18px #0868f721}.btn-light:active:not(:disabled),.btn-ghost:active:not(:disabled){color:#fff;background:var(--action-blue);border-color:var(--action-blue)}.btn-danger{color:#fff;background:linear-gradient(135deg,#eb4541,var(--action-red));border-color:var(--action-red);box-shadow:0 9px 21px #df333338}.btn-danger:hover:not(:disabled){background:linear-gradient(135deg,#f04b47,var(--action-red-dark));border-color:var(--action-red-dark);box-shadow:0 12px 25px #df33334a}.btn-danger:active:not(:disabled){background:var(--action-red-dark)}.btn-warning{color:#613500;background:linear-gradient(135deg,#fff0c9,#ffd98a);border-color:#e6a83c;box-shadow:0 8px 19px #a75c0026}.btn-warning:hover:not(:disabled){color:#4c2900;background:linear-gradient(135deg,#ffe7ad,#ffca61);border-color:#cf8719;box-shadow:0 11px 23px #a75c0038}.btn-reject{color:#a12b2b;border-color:#ee9f9f}.btn-reject:hover:not(:disabled){color:#8d2020;border-color:#df5b5b;background:#fff2f2}.btn-small{min-height:38px;padding:.5rem .78rem;border-radius:10px;gap:.42rem;font-size:.78rem}.button-icon{width:1.12em;height:1.12em;flex:0 0 1.12em;overflow:visible}.btn-small .button-icon,.breadcrumb .button-icon,.unit-move-action .button-icon{width:1.05em;height:1.05em;flex-basis:1.05em}.icon-btn{display:grid;place-items:center;width:42px;height:42px;flex:0 0 42px;padding:0;border:1.5px solid var(--action-blue-line);border-radius:11px;color:var(--action-blue);background:#fff;box-shadow:0 3px 10px #0868f712;transition:color .15s ease,border-color .15s ease,background .15s ease,transform .15s ease}.icon-btn:hover{color:#fff;border-color:var(--action-blue);background:var(--action-blue);transform:translateY(-1px)}.icon-btn .button-icon{width:20px;height:20px}.grid{display:grid;gap:1rem}.card{min-width:0;background:#fffffff5;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.card-head{display:flex;align-items:center;justify-content:space-between;gap:.9rem;min-height:64px;padding:1rem 1.15rem;border-bottom:1px solid var(--line)}.card-head h2,.card-head h3{margin:0;font-size:1rem}.card-body{padding:1.15rem}.project-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr))}.project-card{display:flex;flex-direction:column;min-height:225px;padding:1.25rem;border:1px solid var(--line);text-align:left;transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}.project-card:hover{transform:translateY(-3px);border-color:#b8c1cf;box-shadow:var(--shadow)}.project-card h2{margin:1.2rem 0 .35rem;font-size:1.35rem;line-height:1.2}.project-card footer{display:flex;justify-content:space-between;align-items:center;margin-top:auto;padding-top:1rem;border-top:1px solid #edf0f4;color:var(--muted);font-size:.8rem}.badge{display:inline-flex;align-items:center;width:max-content;padding:.34rem .6rem;border-radius:999px;font-size:.69rem;line-height:1;font-weight:850;white-space:nowrap}.badge-green{color:#09633f;background:#d9f7e9}.badge-red{color:#9e2926;background:#ffe0df}.badge-amber{color:#7c4500;background:#ffedcc}.badge-blue{color:#154a86;background:#deedff}.badge-gray{color:#465169;background:#e9edf3}.code{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.75rem;color:var(--muted)}.unit-search-panel{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1rem;padding:.7rem .8rem;border-color:#cbd9eb;box-shadow:0 5px 18px #1737610f}.unit-search-field{display:grid;grid-template-columns:38px minmax(150px,auto) minmax(220px,430px);align-items:center;gap:.75rem;flex:1 1 auto;cursor:text}.unit-search-icon{display:grid;place-items:center;width:38px;height:38px;color:var(--action-blue);background:var(--action-blue-soft);border-radius:10px}.unit-search-icon svg{width:20px;height:20px}.unit-search-copy{display:grid;gap:.08rem}.unit-search-copy strong{color:var(--ink);font-size:.82rem}.unit-search-copy span{color:var(--muted);font-size:.68rem}.unit-search-field .input{min-height:42px;padding-block:.55rem;background:#f9fbfe}.unit-search-field .input:focus{background:#fff}.unit-search-result{display:flex;align-items:center;justify-content:flex-end;gap:.7rem;flex:0 0 auto;color:var(--muted);font-size:.75rem;white-space:nowrap}.unit-search-result strong{color:var(--ink)}.unit-search-empty{gap:.5rem;min-height:210px}.unit-search-empty .btn{margin-top:.4rem}.unit-groups{display:grid;gap:.8rem}.unit-group{overflow:hidden;transition:border-color .16s ease,box-shadow .16s ease,transform .16s ease}.unit-group-title{padding:.58rem .8rem;color:var(--ink-soft);background:#f3f5f8}.unit-group-heading{display:flex;align-items:center;justify-content:space-between;gap:1rem}.unit-group-toggle{display:flex;align-items:center;gap:.55rem;min-width:0;min-height:40px;flex:1 1 auto;padding:.35rem .45rem;border:0;border-radius:9px;color:var(--ink-soft);background:transparent;text-align:left;transition:color .15s ease,background .15s ease}.unit-group-toggle:hover{color:var(--action-blue-dark);background:#e9eef6}.unit-group-chevron{display:grid;place-items:center;width:26px;height:26px;flex:0 0 26px;border:1px solid #d4dce8;border-radius:8px;color:#61718a;background:#fff;font-size:1.25rem;line-height:1;transition:color .16s ease,border-color .16s ease,background .16s ease,transform .16s ease}.unit-group.is-expanded .unit-group-chevron{color:#fff;border-color:var(--action-blue);background:var(--action-blue);transform:rotate(90deg)}.unit-group-label{display:flex;align-items:baseline;min-width:0;gap:.4rem;text-transform:uppercase;letter-spacing:.075em}.unit-group-label strong{overflow:hidden;font-size:.8rem;text-overflow:ellipsis;white-space:nowrap}.unit-group-label small{color:var(--muted);font-size:.7rem;font-weight:750;white-space:nowrap}.group-name-form{display:flex;align-items:center;gap:.5rem}.group-name-form .input{width:min(360px,100%);min-height:38px;padding-block:.45rem;background:#fff}.unit-list{display:grid;grid-template-columns:1fr;gap:.35rem;padding:.55rem}.unit-card{position:relative;display:flex;min-height:58px;overflow:hidden;border:1px solid #e2e7ef;border-radius:10px;color:var(--ink);background:#fff;transition:border-color .15s ease,background .15s ease,box-shadow .15s ease,opacity .15s ease}.unit-card[draggable=true]{cursor:grab}.unit-card:hover{border-color:#92b9ef;background:#fbfdff;box-shadow:0 5px 14px #17376114}.unit-card.is-dragging{opacity:.38;transform:scale(.995)}.unit-card-open{display:grid;grid-template-columns:minmax(180px,1fr) minmax(130px,auto) minmax(125px,auto) 24px 32px;align-items:center;gap:.8rem;width:auto;min-width:0;min-height:58px;flex:1 1 auto;padding:.45rem .55rem .45rem .8rem;border:0;color:inherit;background:transparent;text-align:left}.unit-card:not([draggable=true]) .unit-card-open{grid-template-columns:minmax(180px,1fr) minmax(130px,auto) minmax(125px,auto) 24px}.unit-card-name{display:grid;min-width:0;gap:.08rem}.unit-card-name strong{overflow:hidden;font-size:.88rem;text-overflow:ellipsis;white-space:nowrap}.unit-card-name small{color:var(--muted);font-size:.66rem}.unit-card-status{display:flex;align-items:center}.unit-defect-count{display:grid;grid-template-columns:auto auto;align-items:baseline;justify-content:end;gap:.35rem;color:var(--muted);text-align:right}.unit-defect-count strong{color:var(--ink);font-size:.95rem}.unit-defect-count small{font-size:.67rem;white-space:nowrap}.unit-defect-count em{color:var(--amber);font-style:normal;font-weight:850}.unit-card-chevron{color:#7d91ad;font-size:1.45rem;line-height:1;text-align:center;transition:color .15s ease,transform .15s ease}.unit-card:hover .unit-card-chevron{color:var(--action-blue);transform:translate(2px)}.unit-drag-handle{display:grid;place-items:center;width:30px;height:30px;border:1px solid var(--line);border-radius:8px;color:var(--muted);background:#f7f9fc;cursor:grab;font-size:1rem;line-height:1}.unit-move-action{position:static;display:inline-flex;align-items:center;align-self:center;gap:.3rem;min-height:34px;margin-right:.55rem;padding:.36rem .55rem;border:1px solid var(--action-blue-line);border-radius:8px;color:var(--action-blue-dark);background:#fff;font-size:.66rem;font-weight:850;white-space:nowrap;transition:color .15s ease,border-color .15s ease,background .15s ease}.unit-move-action:hover{color:#fff;border-color:var(--action-blue);background:var(--action-blue)}.unit-group.is-drop-target{border-color:var(--brand);box-shadow:0 0 0 4px #1f366524,var(--shadow);transform:translateY(-2px)}.unit-group.is-drop-target .unit-group-title{color:#172a52;background:#edf7fd}.unit-group.is-drop-target .unit-list{background:#f7fbfe}.unit-layout{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(330px,.72fr);gap:1rem;align-items:start}.plan-card{position:sticky;top:88px;overflow:hidden}.plan-stage{position:relative;min-height:430px;display:grid;place-items:center;overflow:hidden;background:linear-gradient(135deg,#e8ecf2,#f3f5f8);cursor:crosshair}.plan-image-wrap{position:relative;display:inline-block;width:auto;max-width:100%;line-height:0;user-select:none}.plan-stage img{display:block;width:auto;height:auto;max-width:100%;max-height:calc(100vh - 190px)}.protected-image-frame>img{opacity:0;transition:opacity .18s ease}.protected-image-frame.is-ready>img{opacity:1}.protected-image-frame:not(.is-ready)>.pin,.protected-image-frame:not(.is-ready)>.plan-crosshair,.protected-image-frame:not(.is-ready)>.location-crosshair{visibility:hidden}.plan-image-wrap.is-loading,.plan-image-wrap.is-error{width:min(520px,82vw);min-height:310px}.protected-image-status{position:absolute;z-index:8;inset:0;display:none;place-items:center;align-content:center;gap:.65rem;min-width:250px;min-height:190px;padding:1.25rem;color:var(--ink-soft);background:#f4f7fbf0;text-align:center;line-height:1.35}.protected-image-frame.is-loading>.protected-image-status,.protected-image-frame.is-error>.protected-image-status{display:grid}.protected-image-status strong{font-size:.84rem}.protected-image-spinner{width:30px;height:30px;border:3px solid #cfe1f7;border-top-color:var(--action-blue);border-radius:50%;animation:spin .8s linear infinite}.protected-image-frame.is-error>.protected-image-status .protected-image-spinner{display:none}.protected-image-frame.is-error>.protected-image-status{color:#7d3432;background:#fff7f6}.plan-empty{min-height:380px;display:grid;place-items:center;align-content:center;gap:.55rem;padding:2.5rem;text-align:center;color:var(--muted);cursor:default}.plan-empty h3{margin:.3rem 0 0;color:var(--ink)}.plan-empty p{max-width:480px;margin:0 0 .55rem;line-height:1.55}.plan-empty-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:.6rem}.empty-icon{display:grid;place-items:center;width:58px;height:58px;border-radius:17px;color:var(--brand);background:var(--brand-soft);font-size:1.65rem}.pin-instruction{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.8rem 1rem;color:#6f3800;background:#fff2dd;border-bottom:1px solid #f3d5aa}.pin-instruction div{display:grid;gap:.12rem}.pin-instruction strong{font-size:.86rem}.pin-instruction span{color:#8f5b22;font-size:.75rem}.plan-card.is-picking{border-color:#65bbea;box-shadow:0 0 0 3px #65bbea2e,var(--shadow)}.plan-card.is-picking .plan-stage{background:#fff4e8}.plan-card.is-picking .plan-image-wrap{cursor:crosshair}.plan-card.is-picking .pin{pointer-events:none;opacity:.38}.pin{position:absolute;z-index:3;display:grid;place-items:center;width:32px;height:32px;transform:translate(-50%,-100%) rotate(-45deg);border:3px solid #fff;border-radius:50% 50% 50% 0;color:#fff;background:var(--red);box-shadow:0 4px 13px #00000052;font-size:.68rem;font-weight:900}.pin span{transform:rotate(45deg);line-height:1}.pin.pending{background:#dc850c}.pin.resolved{background:var(--green)}.plan-crosshair{position:absolute;z-index:6;width:34px;height:34px;transform:translate(-50%,-50%);border:2px solid #fff;border-radius:50%;background:#65bbea2e;box-shadow:0 0 0 2px var(--brand),0 5px 18px #00000047;pointer-events:none}.plan-crosshair:before,.plan-crosshair:after{content:"";position:absolute;left:50%;top:50%;background:var(--brand);transform:translate(-50%,-50%)}.plan-crosshair:before{width:48px;height:2px}.plan-crosshair:after{width:2px;height:48px}.plan-crosshair i{position:absolute;z-index:1;left:50%;top:50%;width:7px;height:7px;transform:translate(-50%,-50%);border:2px solid #fff;border-radius:50%;background:var(--red);box-shadow:0 0 0 1px var(--red)}.plan-crosshair output{position:absolute;left:50%;top:calc(100% + 10px);min-width:max-content;padding:.42rem .58rem;transform:translate(-50%);border-radius:8px;color:#fff;background:#172033f0;box-shadow:var(--shadow-sm);font-size:.68rem;font-weight:800;line-height:1.2}.plan-crosshair.edge-left output{left:-12px;transform:none}.plan-crosshair.edge-right output{right:-12px;left:auto;transform:none}.plan-crosshair.edge-bottom output{top:auto;bottom:calc(100% + 10px)}.defect-list{display:grid;gap:.65rem}.defect-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:.75rem;align-items:start;min-height:88px;padding:.85rem;border:1px solid var(--line);border-radius:12px;color:var(--ink);background:#fff;text-align:left;transition:border-color .15s ease,background .15s ease}.defect-row:hover{border-color:#aeb8ca;background:#fbfcfd}.defect-index{display:grid;place-items:center;width:32px;height:32px;border-radius:9px;color:#fff;background:var(--red);font-size:.76rem;font-weight:900}.defect-row.pending{border-color:#efd5a6;background:#fffcf6}.defect-row.pending .defect-index{background:#dc850c}.defect-row.resolved .defect-index{background:var(--green)}.defect-row h3{margin:.04rem 0 .22rem;overflow-wrap:anywhere;font-size:.9rem}.defect-row p{margin:0;display:-webkit-box;overflow:hidden;color:var(--muted);font-size:.76rem;line-height:1.4;-webkit-box-orient:vertical;-webkit-line-clamp:2}.detail-title{display:flex;align-items:flex-start;justify-content:space-between;gap:1.25rem;margin-bottom:1.35rem}.detail-title h1{margin:.15rem 0 .55rem}.detail-grid{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(320px,.75fr);gap:1rem;align-items:start}.description{margin:0;white-space:pre-wrap;line-height:1.55;color:#3e485d}.defect-description-card .card-body{padding-block:.8rem}.meta-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.38rem;margin-top:.7rem;padding-top:.7rem;border-top:1px solid #e9edf3}.meta-item{display:grid;grid-template-columns:minmax(82px,auto) minmax(0,1fr);align-items:baseline;gap:.45rem;min-height:38px;padding:.42rem .55rem;border:1px solid #edf0f4;border-radius:8px;background:#f8f9fb}.meta-item span{color:var(--muted);font-size:.58rem;text-transform:uppercase;font-weight:850;letter-spacing:.035em;white-space:nowrap}.meta-item strong{overflow-wrap:anywhere;font-size:.72rem;line-height:1.3;text-align:right}.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:.7rem}.photo-item{position:relative;min-width:0}.photo-card{position:relative;display:block;width:100%;aspect-ratio:4 / 3;overflow:hidden;padding:0;border:0;border-radius:12px;background:#e8ecf2}.photo-card img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .25s ease,filter .25s ease}.photo-card span{position:absolute;right:.55rem;bottom:.55rem;padding:.32rem .5rem;border-radius:8px;color:#fff;background:#0d1320c7;font-size:.67rem;font-weight:800;opacity:0;transform:translateY(4px);transition:opacity .2s ease,transform .2s ease}.photo-card:hover img{transform:scale(1.035);filter:brightness(.88)}.photo-card:hover span{opacity:1;transform:none}.photo-remove{position:absolute;z-index:2;top:.5rem;right:.5rem;display:inline-flex;align-items:center;gap:.34rem;min-height:36px;padding:.4rem .58rem;border:1px solid #f26c6c;border-radius:9px;color:#fff;background:linear-gradient(135deg,#eb4541,var(--action-red));box-shadow:0 6px 16px #5d101047;font-size:.7rem;font-weight:850;transition:background .15s ease,transform .15s ease,box-shadow .15s ease}.photo-remove:hover{background:var(--action-red-dark);box-shadow:0 8px 19px #5d101057;transform:translateY(-1px)}.photo-remove .button-icon{width:16px;height:16px}.defect-location{display:grid;gap:.8rem}.defect-location-map{position:relative;width:min(100%,820px);margin-inline:auto;overflow:hidden;border:1px solid var(--line-strong);border-radius:12px;background:#edf0f4;line-height:0}.defect-location-map img{display:block;width:100%;height:auto}.defect-location-map.is-loading,.defect-location-map.is-error{min-height:260px}.location-crosshair{position:absolute;z-index:2;width:32px;height:32px;transform:translate(-50%,-50%);border:2px solid #fff;border-radius:50%;background:#c8353226;box-shadow:0 0 0 3px var(--red),0 5px 15px #00000059}.location-crosshair:before,.location-crosshair:after{content:"";position:absolute;left:50%;top:50%;background:var(--red);transform:translate(-50%,-50%)}.location-crosshair:before{width:48px;height:2px}.location-crosshair:after{width:2px;height:48px}.location-crosshair i{position:absolute;z-index:1;left:50%;top:50%;width:7px;height:7px;transform:translate(-50%,-50%);border-radius:50%;background:#fff;box-shadow:0 0 0 2px var(--red)}.location-coordinates{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;padding:.75rem .85rem;border:1px solid #f0d2bd;border-radius:10px;background:#fff7f0}.location-coordinates strong{font-size:.8rem}.location-coordinates span{color:#8a4a20;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.72rem}.defect-location.compact{margin-top:.75rem}.defect-location.compact .defect-location-map{width:min(100%,520px)}.defect-location.compact .location-crosshair{width:26px;height:26px}.location-unassigned{display:flex;align-items:center;gap:.8rem;padding:.9rem;border:1px dashed #c8d0dc;border-radius:11px;color:var(--ink-soft);background:#f6f7f9}.location-unassigned>span{display:grid;place-items:center;width:42px;height:42px;flex:0 0 42px;border-radius:11px;color:#fff;background:#7a869d;font-size:1.25rem}.location-unassigned strong{display:block;font-size:.84rem}.location-unassigned p{margin:.2rem 0 0;color:var(--muted);font-size:.75rem;line-height:1.45}.comments{display:grid;gap:.65rem}.comment{padding:.8rem;border:1px solid #e6eaf0;border-left:3px solid var(--brand);border-radius:0 11px 11px 0;background:#f8f9fb}.comment header{display:flex;justify-content:space-between;gap:1rem;margin-bottom:.35rem;color:var(--muted);font-size:.72rem}.comment p{margin:0;white-space:pre-wrap;line-height:1.5}.table-wrap{overflow-x:auto;border-radius:0 0 var(--radius) var(--radius)}table{width:100%;border-collapse:collapse}th,td{padding:.85rem .95rem;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle}th{color:var(--muted);background:#f8f9fb;font-size:.67rem;text-transform:uppercase;letter-spacing:.065em}td{font-size:.82rem}tbody tr:hover{background:#fcfcfd}.row-actions{display:flex;justify-content:flex-end;gap:.4rem}.tabs{display:flex;gap:0;width:max-content;max-width:100%;margin-bottom:1rem;border:1px solid #b9d4fa;border-radius:12px;background:#fff;overflow-x:auto;box-shadow:0 4px 13px #0868f70f}.tab{display:inline-flex;align-items:center;justify-content:center;gap:.48rem;min-height:44px;padding:.65rem 1rem;border:0;border-right:1px solid #d7e6fa;color:#315e9e;background:#fff;font-weight:800;white-space:nowrap;transition:color .15s ease,background .15s ease}.tab:last-child{border-right:0}.tab:hover{color:var(--action-blue);background:var(--action-blue-soft)}.tab.active{color:var(--action-blue-dark);background:#e7f1ff;box-shadow:inset 0 0 0 1px #9fc6ff}.tab .button-icon{width:17px;height:17px}.empty{padding:3.5rem 1.5rem;text-align:center}.empty h1,.empty h2,.empty h3{margin:0 0 .45rem}.empty p{max-width:560px;margin:0 auto 1rem;color:var(--muted);line-height:1.55}.loading{min-height:60vh;display:grid;place-items:center;color:var(--muted)}.spinner{width:36px;height:36px;margin:0 auto .8rem;border:4px solid #d8deea;border-top-color:var(--brand);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.login-page{position:relative;min-height:100vh;min-height:100dvh;display:grid;place-items:center;overflow:hidden;padding:clamp(1.25rem,4vw,3rem);background:radial-gradient(circle at 52% 44%,#fff 0,rgb(255 255 255 / 78%) 22rem,transparent 48rem),linear-gradient(135deg,#f9fcfe,#eef8fd 53%,#f8fcfe)}.login-architecture{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.login-card{position:relative;z-index:1;width:min(330px,100%);padding:1.7rem 1.45rem .9rem;border:1.5px solid rgb(40 83 111 / 72%);border-radius:14px;background:#fffffff0;box-shadow:0 26px 70px #1f366524,0 4px 14px #1f366514;backdrop-filter:blur(18px)}.login-brand{margin-bottom:1.4rem}.login-logo{display:block;width:126px;height:auto;margin:0 auto 1.45rem;object-fit:contain}.login-brand h1{margin:0;color:var(--brand-dark);font-size:1.62rem;font-weight:850;letter-spacing:-.055em;line-height:1}.login-brand h1 em{color:var(--brand-cyan);font-style:normal}.login-form{gap:.78rem}.login-form .field{gap:.35rem}.login-form .field>label{color:#26344f;font-size:.56rem;letter-spacing:.055em}.login-form .input{min-height:40px;padding-block:.55rem;border-color:#d3dbe7;border-radius:7px;background:#fff;box-shadow:inset 0 1px 2px #17203308;font-size:.76rem}.login-form .input::placeholder{color:#9aa6b8}.login-form .input:hover{border-color:#9eafc5}.login-form .input:focus{border-color:#438ed0;box-shadow:0 0 0 3px #65bbea30,0 3px 10px #1f366512}.password-input-wrap{position:relative}.password-input-wrap .input{padding-right:3rem}.password-toggle{position:absolute;top:50%;right:4px;display:grid;place-items:center;width:32px;height:32px;padding:0;transform:translateY(-50%);border:0;border-radius:7px;color:#75839a;background:transparent;transition:color .15s ease,background .15s ease,box-shadow .15s ease}.password-toggle:hover{color:var(--action-blue);background:var(--action-blue-soft)}.password-toggle:focus-visible{outline:2px solid rgb(8 104 247 / 48%);outline-offset:1px}.password-eye{width:17px;height:17px}.password-eye-closed{display:none}.password-toggle[aria-pressed=true]{color:var(--action-blue);background:#edf5ff}.password-toggle[aria-pressed=true] .password-eye-open{display:none}.password-toggle[aria-pressed=true] .password-eye-closed{display:block}.login-submit{width:100%;min-height:40px;margin-top:.05rem;padding-block:.55rem;border-radius:7px;font-size:.64rem;font-weight:900;text-transform:uppercase;letter-spacing:.025em;box-shadow:0 10px 22px #0868f742}.login-error{margin-bottom:1rem}.login-footer{display:flex;align-items:center;justify-content:space-between;gap:.55rem;margin-top:1.55rem;padding-top:.8rem;border-top:1px solid #e3e8ef;color:#8994a6;font-size:.45rem;white-space:nowrap}.login-footer-icons{display:inline-flex;align-items:center;gap:.55rem;color:#6f7c90}.login-footer-icons svg{width:14px;height:14px}.form{display:grid;gap:1rem}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.field{display:grid;gap:.42rem;min-width:0}.field-full{grid-column:1 / -1}.field>label,.field>legend,.field-label{color:#465169;font-size:.71rem;font-weight:850;text-transform:uppercase;letter-spacing:.045em}.input{width:100%;min-height:46px;padding:.74rem .82rem;border:1px solid var(--line-strong);border-radius:11px;color:var(--ink);background:#fff;outline:none;transition:border-color .15s ease,box-shadow .15s ease}.input:hover{border-color:#adb7c7}.input:focus{border-color:var(--brand);box-shadow:0 0 0 3px #65bbea38}textarea.input{min-height:120px;resize:vertical;line-height:1.5}input[type=file].input{min-height:52px;padding:.36rem;color:var(--muted);background:#fbfdff}input[type=file].input::file-selector-button{min-height:38px;margin-right:.7rem;padding:.52rem .78rem;border:1px solid var(--action-blue-line);border-radius:9px;color:var(--action-blue-dark);background:#fff;font-weight:800;cursor:pointer;transition:color .15s ease,border-color .15s ease,background .15s ease,box-shadow .15s ease}input[type=file].input::file-selector-button:hover{color:#fff;border-color:var(--action-blue);background:var(--action-blue);box-shadow:0 6px 14px #0868f729}.hint{margin:0;color:var(--muted);font-size:.74rem;line-height:1.45}.csv-import-guide{display:grid;gap:.85rem;margin-bottom:1rem;padding:1rem;border:1px solid #cfe0f7;border-radius:14px;background:linear-gradient(145deg,#f5f9ff,#fff)}.csv-import-guide-copy{display:flex;align-items:flex-start;gap:.8rem}.csv-import-guide-copy strong{display:block;color:var(--ink);font-size:.86rem}.csv-import-guide-copy p{margin:.24rem 0 0;color:var(--muted);font-size:.73rem;line-height:1.48}.csv-import-guide-icon{display:grid;place-items:center;width:42px;height:42px;flex:0 0 42px;border-radius:11px;color:var(--action-blue);background:#e7f1ff}.csv-import-guide-icon .button-icon{width:21px;height:21px}.csv-template-download{width:100%;justify-content:center;text-decoration:none}.csv-format-help{display:grid;gap:.45rem;margin-top:1rem;padding:.85rem;border:1px solid var(--line);border-radius:11px;background:#f8f9fb}.csv-format-help strong{color:var(--ink);font-size:.76rem}.csv-format-help code{width:fit-content;padding:.3rem .48rem;border:1px solid #d9e2ef;border-radius:7px;color:#153a71;background:#fff;font-size:.76rem}.csv-format-help p{margin:0;color:var(--muted);font-size:.72rem;line-height:1.48}.checkbox-field label{display:flex;align-items:center;gap:.65rem;min-height:46px;padding:.7rem .8rem;border:1px solid var(--line);border-radius:11px;background:#f8f9fb;text-transform:none;letter-spacing:0}.checkbox-field input{width:18px;height:18px;accent-color:var(--brand)}.pin-selection{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:.8rem;padding:.8rem;border:1px solid #bedecf;border-radius:12px;background:#f0faf6}.pin-selection.missing{border-color:#a7cce2;background:#f2f9fd}.pin-selection.unavailable{grid-template-columns:auto minmax(0,1fr);border-color:#ccd4df;background:#f4f6f9}.pin-selection-icon{display:grid;place-items:center;width:40px;height:40px;border-radius:11px;color:#fff;background:var(--green);font-size:1.2rem}.pin-selection.missing .pin-selection-icon{background:var(--brand)}.pin-selection.unavailable .pin-selection-icon{background:#7a869d}.pin-selection strong{display:block;font-size:.82rem}.pin-selection p{margin:.16rem 0 0;color:var(--muted);font-size:.72rem;line-height:1.4}.profile-password-heading{margin-top:.2rem;padding-top:1rem;border-top:1px solid var(--line)}.profile-password-heading strong,.profile-password-heading span{display:block}.profile-password-heading strong{color:var(--ink);font-size:.82rem}.profile-password-heading span{margin-top:.22rem;color:var(--muted);font-size:.71rem;line-height:1.45}.photo-picker{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem}.photo-choice{position:relative;isolation:isolate;display:grid;grid-template-columns:auto minmax(0,1fr) 24px;align-items:center;gap:.8rem;min-height:88px;padding:.9rem 1rem;overflow:hidden;border:1px solid #d7e2f1;border-radius:16px;color:var(--ink);background:linear-gradient(145deg,#fff,#fbfdff);box-shadow:0 6px 18px #254a800d;cursor:pointer;transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease,background .18s ease}.photo-choice:before{content:"";position:absolute;inset:0;z-index:-1;opacity:0;background:linear-gradient(135deg,rgb(15 102 230 / 7%),transparent 62%);transition:opacity .18s ease}.photo-choice:hover{transform:translateY(-2px);border-color:#8bb9fa;box-shadow:0 12px 28px #1453b01f}.photo-choice:hover:before,.photo-choice.is-selected:before{opacity:1}.photo-choice-icon{display:grid;place-items:center;width:46px;height:46px;border:1px solid #d9e9ff;border-radius:13px;color:#0866e5;background:#eef6ff;transition:color .18s ease,border-color .18s ease,background .18s ease,transform .18s ease}.photo-choice-icon .button-icon{width:21px;height:21px}.photo-choice:hover .photo-choice-icon,.photo-choice.is-selected .photo-choice-icon{color:#fff;border-color:#0a67e8;background:linear-gradient(145deg,#1677f3,#0755cb);transform:scale(1.04);box-shadow:0 6px 14px #0759d238}.photo-choice-copy{min-width:0}.photo-choice strong,.photo-choice small{display:block}.photo-choice strong{color:#14223a;font-size:.86rem;font-weight:850;letter-spacing:-.01em}.photo-choice small{margin-top:.22rem;color:#6c7a90;font-size:.68rem;line-height:1.4}.photo-choice-state{display:grid;place-items:center;width:24px;height:24px;border:1px solid #dbe5f2;border-radius:50%;color:#8190a6;background:#fff;transition:color .18s ease,border-color .18s ease,background .18s ease,transform .18s ease}.photo-choice-state:before{content:"\203a";font-size:1.2rem;line-height:1;transform:translateY(-1px)}.photo-choice-state .button-icon{display:none;width:13px;height:13px;stroke-width:2.5}.photo-choice.is-selected{border-color:#3f8cf5;background:#f7fbff;box-shadow:0 0 0 3px #0f66e61a,0 12px 28px #1453b01a}.photo-choice.is-selected .photo-choice-state{color:#fff;border-color:#0a67e8;background:#0a67e8;transform:scale(1.04)}.photo-choice.is-selected .photo-choice-state:before{display:none}.photo-choice.is-selected .photo-choice-state .button-icon{display:block}.photo-input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.photo-choice:has(.photo-input:focus-visible){outline:3px solid rgb(25 113 239 / 28%);outline-offset:3px}.photo-selection-status{min-height:1.2rem;padding:.45rem .15rem 0;color:#78869a;background:transparent;font-size:.7rem;text-align:left}.photo-selection-status:before{content:"";display:inline-block;width:6px;height:6px;margin:0 .45rem .08rem .1rem;border-radius:50%;background:#b2bdcb}.photo-selection-status.selected{color:#08734b;font-weight:800}.photo-selection-status.selected:before{background:#0b9a64;box-shadow:0 0 0 3px #0b9a641f}.error-box{padding:.8rem;border:1px solid #f1b5b4;border-radius:10px;color:#962825;background:#fff0ef;font-size:.84rem}.modal-backdrop{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:1rem;background:#0d1320b8;backdrop-filter:blur(6px);animation:fade-in .16s ease-out}.modal{width:min(640px,100%);max-height:calc(100dvh - 2rem);overflow:auto;border:1px solid rgb(255 255 255 / 25%);border-radius:var(--radius-lg);background:#fff;box-shadow:0 30px 90px #00000061}.modal-wide{width:min(900px,100%)}.modal-head,.photo-modal-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem 1.2rem;border-bottom:1px solid var(--line)}.modal-head h2,.photo-modal-head h2{margin:0;font-size:1.13rem}.modal-body{padding:1.2rem}.modal-actions{position:sticky;bottom:0;display:flex;justify-content:flex-end;gap:.65rem;padding:1rem 1.2rem;border-top:1px solid var(--line);background:#f8f9fbf5;backdrop-filter:blur(10px)}.photo-modal{width:min(1120px,100%);max-height:calc(100dvh - 2rem);display:grid;grid-template-rows:auto minmax(0,1fr);overflow:hidden;border-radius:var(--radius-lg);background:#101724;box-shadow:0 35px 100px #0000007f}.photo-modal-head{color:#fff;background:#172033;border-color:#ffffff1f}.photo-modal-title{min-width:0}.photo-modal-title h2{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.photo-modal-head .card-kicker{margin-bottom:.2rem;color:var(--brand-cyan)}.photo-modal-head .icon-btn{color:#fff;background:#ffffff14;border-color:#ffffff2e}.photo-viewer-actions{display:flex;align-items:center;gap:.4rem}.viewer-control{display:grid;place-items:center;min-width:42px;height:42px;padding:0 .55rem;border:1px solid rgb(130 181 255 / 52%);border-radius:11px;color:#fff;background:#0868f72e;font-size:1.15rem;font-weight:850;transition:background .15s ease,border-color .15s ease,transform .15s ease}.viewer-control:hover{border-color:#7eb5ff;background:var(--action-blue);transform:translateY(-1px)}.viewer-control .button-icon{width:20px;height:20px}.viewer-reset{font-size:.7rem}.viewer-delete{color:#fff;border-color:#ff7d7da6;background:#df33334d}.viewer-delete:hover{border-color:#f77;background:var(--action-red)}.photo-zoom-value{min-width:62px;color:#d4dbea;font-size:.72rem;font-weight:800;text-align:center}.photo-modal-body{position:relative;min-height:0;display:grid;place-items:center;padding:1rem;overflow:hidden;touch-action:none;cursor:default}.photo-modal-body.is-zoomed{cursor:grab}.photo-modal-body.is-dragging{cursor:grabbing}.photo-canvas{display:grid;place-items:center;max-width:100%;max-height:100%;transform-origin:center;transition:transform .08s ease-out;will-change:transform}.photo-modal-body.is-dragging .photo-canvas{transition:none}.photo-modal-body img{display:block;max-width:100%;max-height:calc(100dvh - 140px);object-fit:contain;border-radius:8px;user-select:none;-webkit-user-drag:none}.photo-gesture-help{position:absolute;right:1rem;bottom:1rem;margin:0;padding:.48rem .65rem;border:1px solid rgb(255 255 255 / 12%);border-radius:9px;color:#d8deea;background:#101724d1;font-size:.68rem;pointer-events:none}@keyframes fade-in{0%{opacity:0}}.toast-region{position:fixed;z-index:200;right:1rem;bottom:1rem;display:grid;gap:.6rem;width:min(390px,calc(100% - 2rem))}.toast{padding:.9rem 1rem;border-radius:12px;color:#fff;background:var(--ink);box-shadow:var(--shadow);animation:toast-in .22s ease-out}.toast.error{background:#9f2d2a}.toast.success{background:#0d7550}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}}.sync-panel{display:grid;gap:.65rem}.sync-item{display:flex;justify-content:space-between;gap:.7rem;align-items:center;padding:.75rem;border:1px solid var(--line);border-radius:10px}.sync-item.error{border-color:#e3a5a3;background:#fff5f4}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.pdf-document{width:760px;padding:22px;color:#20242b;background:#fff;font-family:Arial,Helvetica,sans-serif;print-color-adjust:economy;-webkit-print-color-adjust:economy}.pdf-masthead{height:64px;display:flex;align-items:center;justify-content:space-between;gap:24px;padding:5px 18px 5px 8px;color:#26364f;background:#fff;border-bottom:1px solid #dfe3e8}.pdf-logo{display:block;width:180px;height:auto;object-fit:contain}.pdf-app-name{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.pdf-title{padding:20px 0 14px;text-align:center}.pdf-kicker{margin:0 0 5px;color:#34445c;font-size:9px;font-weight:700;letter-spacing:.14em;text-transform:uppercase}.pdf-title h1{margin:0;color:#181c22;font-size:25px;line-height:1.08}.pdf-project-name{margin:5px 0 0;color:#46505f;font-size:16px}.pdf-meta{display:grid;grid-template-columns:145px 1fr;min-height:68px;overflow:hidden;border:1px solid #e0e3e7;border-radius:7px;background:#fff}.pdf-meta-primary{display:grid;align-content:center;padding:10px 15px;color:#20242b;background:#fff;border-right:1px solid #e0e3e7}.pdf-meta-primary span{color:#667080;font-size:9px;font-weight:700;letter-spacing:.1em;text-transform:uppercase}.pdf-meta-primary strong{margin-top:2px;font-size:23px;line-height:1}.pdf-meta-details{display:grid;align-content:center;padding:9px 14px}.pdf-meta-details p{margin:2px 0;font-size:10px;line-height:1.25}.pdf-defects-section{margin-top:17px}.pdf-defects-section h2{margin:0 0 7px;color:#20242b;font-size:13px;line-height:1.2;text-transform:lowercase}.pdf-defects-table{width:100%;table-layout:fixed;border-collapse:collapse;color:#20242b;font-size:9px}.pdf-defects-table thead{display:table-header-group}.pdf-defects-table tr{break-inside:avoid;page-break-inside:avoid}.pdf-defects-table th,.pdf-defects-table td{padding:7px 6px;border:1px solid #e0e3e7;vertical-align:middle;overflow-wrap:anywhere}.pdf-defects-table th{height:48px;color:#343a43;background:#fafbfc;border-bottom-color:#cfd4da;font-size:8px;font-weight:700;line-height:1.15;text-align:left}.pdf-defects-table th:first-child,.pdf-cell-number,.pdf-cell-status,.pdf-cell-date{text-align:center}.pdf-defects-table tbody tr:nth-child(2n){background:#fdfdfd}.pdf-col-number{width:5%}.pdf-col-defect{width:55%}.pdf-col-status{width:10%}.pdf-col-created,.pdf-col-resolved{width:15%}.pdf-cell-defect strong,.pdf-cell-defect small{display:block}.pdf-cell-defect strong{font-size:9.5px;line-height:1.25}.pdf-cell-defect small{margin-top:3px;color:#626872;font-size:7.5px;line-height:1.3}.pdf-cell-date{white-space:nowrap}.pdf-status-mark{position:relative;display:inline-block;width:19px;height:19px;border:1.5px solid #454a52;border-radius:50%;color:transparent;background:#fff;font-size:0;line-height:0;vertical-align:middle}.pdf-status-mark.is-open:before,.pdf-status-mark.is-open:after{content:"";position:absolute;top:50%;left:50%;width:8px;height:1.4px;border-radius:1px;background:#30343a;transform-origin:center}.pdf-status-mark.is-open:before{transform:translate(-50%,-50%) rotate(45deg)}.pdf-status-mark.is-open:after{transform:translate(-50%,-50%) rotate(-45deg)}.pdf-status-mark.is-resolved:before{content:"";position:absolute;top:46%;left:50%;width:4px;height:8px;border:solid #30343a;border-width:0 1.5px 1.5px 0;transform:translate(-50%,-50%) rotate(45deg)}.pdf-table-empty{height:56px;color:#687287;text-align:center}.pdf-consent{min-height:82px;margin-top:27px;break-inside:avoid;page-break-inside:avoid}.pdf-consent p{margin:0;font-size:12px;line-height:1.35}.pdf-consent-space{height:54px;margin-top:8px;border-bottom:1px solid #d7dade}@media (max-width: 1100px){.unit-layout,.detail-grid{grid-template-columns:1fr}.plan-card{position:static}.plan-stage img{max-height:72vh}}@media (max-width: 820px){.topbar-inner{width:min(100% - 1rem,var(--content))}.page{width:min(100% - 1.25rem,var(--content))}.detail-title{flex-direction:column}.detail-title .toolbar{justify-content:flex-start}.user-chip{display:none}.profile-button{padding-right:.38rem}.unit-search-field{grid-template-columns:38px minmax(130px,.55fr) minmax(190px,1fr)}.unit-card-open,.unit-card:not([draggable=true]) .unit-card-open{grid-template-columns:minmax(150px,1fr) minmax(115px,auto) minmax(105px,auto) 22px}.unit-drag-handle{display:none}}@media (max-width: 640px){.topbar-inner{min-height:62px;gap:.45rem}.brand{gap:.45rem}.brand-logo{width:105px;height:auto}.brand-app-name{padding-left:.55rem;font-size:.72rem}.top-actions{gap:.35rem}.network-pill{width:36px;min-height:36px;justify-content:center;padding:0}.network-pill span{display:none}.profile-button{min-height:38px;padding:.2rem;border:0;background:transparent}.avatar{width:34px;height:34px}.logout-button{width:38px;min-height:38px;padding:0}.logout-button span:last-child{display:none}.page{width:min(100% - 1rem,var(--content));padding-top:1rem;padding-bottom:3.5rem}.page-head{align-items:stretch;flex-direction:column;margin-bottom:1rem}.page-head h1,.detail-title h1{font-size:1.85rem}.toolbar{width:100%;justify-content:flex-start}.toolbar .btn{flex:1 1 calc(50% - .35rem);padding-inline:.65rem}.breadcrumb{margin-bottom:.85rem;flex-wrap:nowrap;overflow-x:auto;padding-bottom:.15rem}.breadcrumb button,.breadcrumb strong,.breadcrumb span{flex:0 0 auto}.project-grid{gap:.75rem}.project-card{min-height:190px}.unit-search-panel{align-items:stretch;flex-direction:column;gap:.6rem;padding:.7rem}.unit-search-field{grid-template-columns:38px minmax(0,1fr);gap:.55rem}.unit-search-field .input{grid-column:1 / -1}.unit-search-result{justify-content:space-between}.unit-list{grid-template-columns:1fr;gap:.4rem;padding:.5rem}.unit-card{min-height:68px}.unit-card-open,.unit-card:not([draggable=true]) .unit-card-open{grid-template-columns:minmax(0,1fr) auto 22px;grid-template-areas:"name status chevron" "defects defects chevron";gap:.22rem .5rem;min-height:68px;padding:.45rem .35rem .45rem .65rem}.unit-card-name{grid-area:name}.unit-card-name small{display:none}.unit-card-status{grid-area:status;justify-self:end}.unit-card-status .badge{padding:.3rem .48rem;font-size:.62rem}.unit-defect-count{grid-area:defects;grid-template-columns:auto auto;justify-content:start;text-align:left}.unit-defect-count strong{font-size:.78rem}.unit-defect-count small{font-size:.63rem}.unit-card-chevron{grid-area:chevron}.unit-move-action{justify-content:center;width:38px;height:38px;min-height:38px;margin-right:.4rem;padding:0;font-size:0}.unit-move-action .button-icon{width:16px;height:16px;flex-basis:16px}.unit-group-heading{align-items:flex-start}.unit-group-heading .btn{flex:0 0 auto}.group-name-form{flex-wrap:wrap}.group-name-form .input{width:100%;flex:1 1 100%}.group-name-form .btn{flex:1}.card-head{min-height:58px;padding:.85rem}.card-body{padding:.85rem}.plan-stage{min-height:260px}.plan-stage img{max-height:58vh}.plan-empty{padding:1.5rem 1rem}.plan-empty-actions{width:100%;flex-direction:column}.plan-empty-actions .btn{width:100%}.pin{width:34px;height:34px}.pin-instruction{align-items:stretch;flex-direction:column}.pin-instruction .btn{width:100%}.defect-row{grid-template-columns:auto minmax(0,1fr)}.defect-row>.badge{grid-column:2}.detail-title{margin-bottom:1rem}.form-grid{grid-template-columns:1fr}.meta-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:.32rem}.meta-item{grid-template-columns:1fr;align-content:center;gap:.14rem;min-height:48px;padding:.38rem .45rem}.meta-item span{font-size:.55rem}.meta-item strong{font-size:.68rem;text-align:left}.field-full{grid-column:auto}.photo-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.photo-card span{display:none}.comment header{align-items:flex-start;flex-direction:column;gap:.2rem}.table-wrap{overflow:visible;padding:.65rem}.table-wrap table,.table-wrap tbody,.table-wrap tr,.table-wrap td{display:block;width:100%}.table-wrap thead{display:none}.table-wrap tbody{display:grid;gap:.7rem}.table-wrap tr{overflow:hidden;border:1px solid var(--line);border-radius:12px;background:#fff;box-shadow:0 3px 10px #1720330a}.table-wrap td{display:grid;grid-template-columns:minmax(86px,.38fr) minmax(0,1fr);gap:.7rem;align-items:center;padding:.7rem .8rem;border-bottom:1px solid #edf0f4;overflow-wrap:anywhere}.table-wrap td:last-child{border-bottom:0}.table-wrap td:before{content:attr(data-label);color:var(--muted);font-family:Inter,ui-sans-serif,system-ui,sans-serif;font-size:.65rem;font-weight:850;text-transform:uppercase;letter-spacing:.05em}.table-wrap .row-actions{justify-content:flex-start}.pin-selection{grid-template-columns:auto minmax(0,1fr)}.pin-selection .btn{grid-column:1 / -1;width:100%}.location-coordinates{align-items:flex-start;flex-direction:column;gap:.25rem}.photo-picker{grid-template-columns:1fr}.photo-choice{min-height:82px}.modal-backdrop{align-items:end;padding:0}.modal{width:100%;max-height:calc(100dvh - .5rem);border-radius:20px 20px 0 0}.modal-head,.modal-body,.modal-actions{padding-inline:1rem}.modal-actions .btn{flex:1}.photo-viewer{align-items:center}.photo-modal{width:100%;height:100dvh;max-height:100dvh;border-radius:0}.photo-modal-head{flex-wrap:wrap;gap:.55rem;padding:.65rem .75rem}.photo-modal-title{flex:1 1 100%}.photo-viewer-actions{width:100%;justify-content:center}.photo-modal-body img{max-height:calc(100dvh - 165px)}.photo-gesture-help{right:.6rem;bottom:.6rem;left:.6rem;text-align:center}.toast-region{right:.5rem;bottom:.5rem;width:calc(100% - 1rem)}.login-page{padding:.85rem}.login-architecture{width:135%;max-width:none;left:-17.5%;opacity:.62}.login-card{width:min(340px,100%);padding:1.8rem 1.35rem 1rem;border-radius:15px}.login-brand{margin-bottom:1.5rem}.login-logo{width:138px;margin-bottom:1.55rem}.login-brand h1{font-size:1.75rem}.login-footer{margin-top:1.7rem}}@media (max-width: 370px){.login-footer{align-items:flex-start;white-space:normal;line-height:1.4}}@media (max-height: 620px) and (min-width: 641px){.login-page{align-items:start;overflow-y:auto}.login-card{margin-block:1rem;padding-block:1.55rem 1rem}.login-brand{margin-bottom:1.35rem}.login-logo{width:125px;margin-bottom:1.15rem}.login-footer{margin-top:1.55rem}}@media (max-width: 430px){.toolbar .btn{flex-basis:100%}.photo-grid{grid-template-columns:1fr}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
