:root{--fip-dark: #1a1f2c;--fip-red: #c0392b;--fip-gray: #f6f6f6;--fip-line: #dde2ea;--fip-text: #17202e;--fip-muted: #687385;--fip-green: #16803c;--fip-blue: #09f;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px)}*{box-sizing:border-box}html,body,#root{width:100%;height:100%;margin:0}body{background:var(--fip-gray) url(/dots-bg.png) center repeat;color:var(--fip-text);font-family:Open Sans,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Arial,sans-serif;overscroll-behavior:none}button,input,select{font:inherit}input[type=file]{display:none}.no-select{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.logo{height:34px;object-fit:contain;pointer-events:none;display:block}.app-shell{min-height:100%;display:flex;flex-direction:column}.topbar{background:#fff;min-height:calc(62px + var(--safe-top));padding:calc(var(--safe-top) + 10px) 16px 12px;border-bottom:1px solid var(--fip-line);box-shadow:0 1px 8px #17202e14;display:flex;align-items:center;justify-content:space-between;gap:12px;z-index:20}.topbar .side{flex:1;display:flex;align-items:center;gap:8px;min-width:0}.topbar .side.right{justify-content:flex-end}.topbar-user{color:var(--fip-muted);font-weight:700;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.topbar .center{flex:0 0 auto;display:flex;justify-content:center}.main{flex:1;padding:18px;max-width:1180px;width:100%;margin:0 auto}.login-screen{display:flex;flex-direction:column;min-height:100vh;min-height:100dvh}.login-main{flex:1;display:flex;justify-content:center;align-items:center;padding:calc(var(--safe-top) + 24px) 20px calc(var(--safe-bottom) + 24px)}.login-card{width:min(320px,100%);background:#fff;border:1px solid var(--fip-line);border-radius:18px;padding:32px 28px 28px;box-shadow:0 20px 60px #17202e14;text-align:center}.login-card .logo{margin:0 auto 14px;height:80px}.login-tagline{margin:0;font-size:13px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--fip-muted)}.login-divider{width:40px;height:3px;margin:18px auto 20px;background:#09f;border-radius:999px}.login-footer{margin:16px 0 0;font-size:12px;color:var(--fip-muted)}.login-card h1{margin:0 0 8px;font-size:22px}.login-card .subtle{margin:0 0 22px}.btn{font-family:Open Sans,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Arial,sans-serif;font-size:13px;font-weight:600;text-transform:uppercase;line-height:1;letter-spacing:.5px;border:0;border-radius:10px;min-height:42px;padding:15px;display:inline-flex;align-items:center;justify-content:center;gap:8px;cursor:pointer;background:#fff;color:var(--fip-text);box-shadow:0 1px 3px #17202e1f;transition:transform .12s ease,background .12s ease,border-color .12s ease,opacity .12s ease;white-space:nowrap}.btn:hover{transform:translateY(-1px)}.btn:active{transform:translateY(0)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn.primary{background:#09f;color:#fff}.btn.dark{background:var(--fip-dark);color:#fff}.btn.blue{background:var(--fip-blue);color:#fff}.btn.ghost{background:#fff;color:var(--fip-text);border:1px solid var(--fip-line);box-shadow:none}.btn.danger{background:var(--fip-red);color:#fff}.btn.sm{min-height:34px;padding:8px 12px;font-size:11px;border-radius:8px}.btn.icon{width:42px;padding:0}.btn.icon.sm{width:34px}.status-pill,.role-pill{border-radius:999px;padding:5px 10px;font-size:12px;font-weight:800;line-height:1;background:#eef2f6;color:#4b5565;display:inline-flex;align-items:center;justify-content:center;gap:5px}.status-pill.active{background:#e6f6ec;color:var(--fip-green)}.status-pill.pending{background:#ececec;color:var(--fip-muted)}.status-pill.deactivated,.status-pill.missing{background:#fdebea;color:var(--fip-red)}.status-pill.new{background:#e6f6ec;color:var(--fip-green)}.role-pill.hidden-tag{background:#f1eef9;color:#6b5fa8}.section-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:8px 0 16px}.section-head h1,.section-head h2{margin:0;font-size:26px;letter-spacing:-.02em}.section-subhead{margin:28px 0 14px;font-size:15px;font-weight:700;color:var(--fip-muted);text-transform:uppercase;letter-spacing:.04em}.section-subhead:first-of-type{margin-top:8px}.show-hidden-toggle{display:block;margin:28px auto 0;background:none;border:0;padding:6px 4px;font-size:13px;font-weight:700;color:var(--fip-blue);cursor:pointer}.show-hidden-toggle:hover{text-decoration:underline}.subtle{color:var(--fip-muted);font-size:14px}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:16px}.job-card,.drawing-row,.panel{background:#fff;border:1px solid var(--fip-line);border-radius:20px;box-shadow:0 10px 28px #17202e0f}.job-card{padding:14px;display:flex;flex-direction:column;gap:10px;cursor:pointer;transition:border-color .12s ease,box-shadow .12s ease,transform .06s ease}.job-card:hover{border-color:#c6cdda;box-shadow:0 14px 34px #17202e1a}.job-card:active{transform:scale(.996)}.job-card.pending,.job-card.deactivated{opacity:.58;filter:grayscale(.55)}.job-card.pending{border-style:dashed}.job-tile-wrap{position:relative}.job-tile{height:92px;border-radius:16px;color:#fff;display:flex;align-items:center;justify-content:center;font-size:34px;font-weight:900;letter-spacing:.02em}.job-card-corner-btn{position:absolute;top:4px;right:4px;width:44px;height:44px;flex:none;border-radius:999px;border:0;background:transparent;color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:opacity .12s ease,transform .12s ease}.job-card-corner-btn svg{width:24px;height:24px;flex:none;filter:drop-shadow(0 1px 3px rgba(0,0,0,.6))}.job-card-corner-btn:hover{opacity:.8}.job-card-corner-btn:active{transform:scale(.92)}.job-card h3{margin:0;font-size:16px;line-height:1.25}.card-note{margin:0}.drawing-list{display:flex;flex-direction:column;gap:10px}.drawing-row{position:relative;padding:12px 14px;display:flex;flex-direction:column;gap:8px}.drawing-foot{display:flex;flex-wrap:wrap;align-items:center;gap:12px}.drawing-foot .drawing-actions{margin-left:auto}.drawing-row.openable{cursor:pointer;transition:border-color .12s ease,box-shadow .12s ease,transform .06s ease}.drawing-row.openable:hover{border-color:#c6cdda;box-shadow:0 12px 30px #17202e1a}.drawing-row.openable:active{transform:scale(.996)}.mini-spinner{width:16px;height:16px;border-radius:50%;border:2px solid #d7dbe2;border-top-color:#09f;animation:spin .7s linear infinite;flex-shrink:0}.name-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.name-row .status-pill{flex-shrink:0}.drawing-row .name{font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:0 1 auto;min-width:0}.drawing-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.panel{padding:16px}.empty{text-align:center;color:var(--fip-muted);font-size:14px;padding:40px 20px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a0e147a;z-index:80;display:flex;align-items:center;justify-content:center;padding:18px}.modal{background:#fff;width:min(900px,100%);max-height:min(86vh,760px);overflow:auto;border-radius:24px;box-shadow:0 30px 100px #00000040}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:18px 20px;border-bottom:1px solid var(--fip-line);position:sticky;top:0;background:#fff;z-index:1}.modal-head h2{margin:0;font-size:20px}.modal-body{padding:18px 20px 22px}.field{margin:12px 0}.field label{display:block;font-weight:800;font-size:13px;margin-bottom:7px}.field select,.field input[type=text]{width:100%;min-height:42px;border:1px solid var(--fip-line);border-radius:12px;padding:0 12px;background:#fff}.member-select-wrapper{display:flex;gap:8px;align-items:stretch}.member-select-wrapper .member-select-trigger{flex:1;min-width:0}.member-select-wrapper .btn{flex-shrink:0}.member-select-trigger{min-height:42px;border:1px solid var(--fip-line);border-radius:12px;background:#fff;padding:0 12px;display:flex;align-items:center;justify-content:space-between;gap:8px;cursor:pointer;font:inherit;color:var(--fip-text);text-align:left}.member-select-trigger:hover{border-color:#c6cdda}.member-select-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.member-select-value.placeholder{color:var(--fip-muted)}.member-select-chevron{flex-shrink:0;color:var(--fip-muted);display:flex}.member-select-menu{position:fixed;background:#fff;border:1px solid var(--fip-line);border-radius:14px;box-shadow:0 18px 50px #17202e2e;padding:6px;overflow:auto;z-index:90}.member-select-option{width:100%;display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:9px 10px;border:0;border-radius:10px;background:transparent;cursor:pointer;text-align:left;font:inherit}.member-select-option:hover{background:#f1f4f8}.member-option-name{font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.member-option-email{color:var(--fip-muted);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex-shrink:0;max-width:55%}.member-select-empty{padding:10px;color:var(--fip-muted);font-size:13px;text-align:center}.inline-list{display:flex;flex-wrap:wrap;gap:8px}.person-list{display:flex;flex-direction:column;gap:8px;margin:10px 0}.person-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px;border:1px solid var(--fip-line);border-radius:12px;background:#f8fafc}.person-main{min-width:0}.person-main strong,.person-main span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.person-main span{font-size:12px;color:var(--fip-muted)}.person-aside{display:flex;align-items:center;gap:6px;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end}.modal-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:24px;flex-wrap:wrap}.modal-footer-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}.viewer{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;background:#e5e7eb;overflow:hidden}.viewer-filebar{background:#fff;border-bottom:1px solid var(--fip-line);min-height:32px;display:flex;align-items:center;justify-content:center;padding:4px 12px;font-size:12px;font-weight:700;color:var(--fip-muted);z-index:10}.canvas-wrap{flex:1;position:relative;overflow:hidden;background:#d7dbe2;touch-action:none}.pdf-stage{position:absolute;top:0;left:0;transform-origin:top left;background:#fff;box-shadow:0 12px 40px #00000038}.pdf-stage canvas{display:block;pointer-events:none}.pdf-stage img{display:block;pointer-events:none;max-width:none}.pdf-stage.stacked{background:transparent;box-shadow:none;display:flex;flex-direction:column;align-items:center}.pdf-page-sheet{background:#fff;box-shadow:0 12px 40px #00000038;overflow:hidden}.marker{position:absolute;display:flex;align-items:center;justify-content:center;background:#fff;border:1px solid var(--fip-dark);border-radius:2px;box-shadow:0 4px 12px #00000040;transform:translate(-50%,-50%);touch-action:none}.marker img{width:100%;height:100%;display:block;pointer-events:none}.marker.jiggle{animation:jiggle .3s infinite;z-index:30}.marker-remove{position:absolute;top:-7px;left:-7px;width:13px;height:13px;border-radius:999px;background:var(--fip-red);color:#fff;border:none;display:flex;align-items:center;justify-content:center;font-size:9px;font-weight:900;padding:0;line-height:1;box-shadow:0 2px 6px #00000040}@keyframes jiggle{0%{transform:translate(-50%,-50%) rotate(-1.5deg)}50%{transform:translate(-50%,-50%) rotate(1.5deg)}to{transform:translate(-50%,-50%) rotate(-1.5deg)}}.spinner{display:block;width:42px;height:42px;border-radius:50%;border:4px solid #d7dbe2;border-top-color:#09f;animation:spin .7s linear infinite;margin:0 auto}.loading-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#ffffffeb;z-index:40}@keyframes spin{to{transform:rotate(360deg)}}.zoom-pill{position:absolute;left:50%;bottom:calc(18px + var(--safe-bottom));transform:translate(-50%);display:inline-flex;align-items:center;gap:3px;padding:4px;background:#fffffff5;border:1px solid var(--fip-line);border-radius:999px;box-shadow:0 12px 38px #17202e2e;z-index:30}.zoom-pill .btn{background:transparent;border:0;box-shadow:none;color:var(--fip-text);border-radius:999px}.zoom-pill .btn:hover{background:#17202e0f;transform:none}.zoom-pill .btn:active{transform:scale(.94)}.zoom-pill>*+*{position:relative}.zoom-pill>*+*:before{content:"";position:absolute;left:-2px;top:22%;bottom:22%;width:1px;background:var(--fip-line)}.zoom-menu-wrap{position:relative;display:flex}.zoom-menu{position:absolute;bottom:calc(100% + 10px);left:50%;transform:translate(-50%);background:#fff;border:1px solid var(--fip-line);border-radius:18px;box-shadow:0 18px 60px #17202e38;padding:8px;min-width:max-content;max-height:320px;overflow-x:hidden;overflow-y:auto;z-index:40}.zoom-menu button{display:flex;width:150px;justify-content:center;margin:2px 0;border:0;border-radius:12px;min-height:34px;box-shadow:none;background:transparent}.zoom-menu button:hover{background:#17202e0f;transform:none}.zoom-current{min-width:88px}.scanner-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#000;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:18px}.scanner-title{color:#fff;font-weight:900;margin-bottom:16px}#reader{width:min(520px,100%);background:#111827;border-radius:16px;overflow:hidden}#reader video{object-fit:contain!important;width:100%!important;height:auto!important}.scanner-overlay .btn{margin-top:18px}.toast,.builder-hint{position:fixed;left:50%;bottom:calc(16px + var(--safe-bottom));transform:translate(-50%);background:var(--fip-blue);color:#fff;padding:8px 14px;border-radius:999px;box-shadow:0 10px 28px #0003;font-weight:700;font-size:13px;max-width:min(90vw,560px);text-align:center}.toast{z-index:120}@media (max-width: 720px){.topbar{padding-left:10px;padding-right:10px}.topbar .side{gap:6px}.main{padding:12px}.section-head{flex-direction:column;align-items:stretch}.drawing-foot .drawing-actions{margin-left:0}.drawing-actions{justify-content:flex-start}}.status-pill.locked{background:#fff7ed;color:#c2410c}.drawing-row.locked{border-color:#c2410c47;background:#fffaf5}.viewer-banner{z-index:18;display:flex;align-items:center;justify-content:center;gap:12px;padding:8px 14px;border-bottom:1px solid var(--fip-line);font-size:13px;font-weight:800;text-align:center}.viewer-banner.readonly{background:#fff7ed;color:#9a3412}.viewer-banner.warning{background:#fef3c7;color:#92400e;justify-content:space-between}.viewer-banner .banner-actions{display:flex;gap:8px;align-items:center;flex-shrink:0}.marker.readonly{transition:left .28s ease,top .28s ease}.marker.pulse{animation:markerPulse 1.2s ease-out 1}@keyframes markerPulse{0%{box-shadow:0 0 #c0392b8c,0 4px 12px #00000040;transform:translate(-50%,-50%) scale(.86)}60%{box-shadow:0 0 0 10px #c0392b00,0 4px 12px #00000040;transform:translate(-50%,-50%) scale(1.08)}to{box-shadow:0 0 #c0392b00,0 4px 12px #00000040;transform:translate(-50%,-50%) scale(1)}}@media (max-width: 720px){.viewer-banner{flex-direction:column;align-items:stretch}.viewer-banner.warning,.viewer-banner .banner-actions{justify-content:center}}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}.hide-choice-actions{display:flex;flex-direction:column;gap:10px;margin-top:18px}.hide-choice-actions .btn{width:100%}.small-modal{width:min(560px,100%)}.export-section{margin-bottom:18px}.export-section-head{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--fip-muted);margin-bottom:10px}.linklike{border:0;background:none;padding:0;font-family:inherit;font-size:12px;font-weight:700;color:var(--fip-blue);cursor:pointer}.linklike:disabled{color:var(--fip-muted);cursor:default}.export-drawings{display:flex;flex-direction:column;gap:4px;max-height:320px;overflow:auto;border:1px solid var(--fip-line);border-radius:12px;padding:8px}.export-drawing{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:10px;cursor:pointer}.export-drawing:hover{background:var(--fip-gray)}.export-drawing-name{font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;flex:1}.export-drawing-count{flex-shrink:0;font-size:12px;font-weight:700;color:var(--fip-muted)}.export-drawing.disabled{cursor:default;opacity:.55;padding-left:38px}.export-drawing.disabled:hover{background:none}.export-opt{display:flex;align-items:flex-start;gap:10px;padding:6px 0;cursor:pointer;font-weight:600}.export-modal input[type=checkbox]{-moz-appearance:none;appearance:none;-webkit-appearance:none;width:18px;height:18px;margin:0;flex-shrink:0;border:1.5px solid var(--fip-line);border-radius:5px;background-color:#fff;cursor:pointer}.export-opt input[type=checkbox]{margin-top:1px}.export-modal input[type=checkbox]:checked{background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2309f' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'><path d='M5 12.5l4.5 4.5L19 7'/></svg>");background-repeat:no-repeat;background-position:center;background-size:82%}.export-modal input[type=radio]{accent-color:var(--fip-blue);width:18px;height:18px;margin:0;flex-shrink:0}.export-opt input[type=radio]{margin-top:1px}.upload-item-list{display:flex;flex-direction:column;gap:8px;margin:12px 0 4px}.upload-item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 11px;border:1px solid var(--fip-line);border-radius:12px;background:#fff}.upload-item.active{border-color:#99d6ff;background:#f2faff}.upload-item.done{border-color:#16803c4d;background:#f0fbf4}.upload-item.error{border-color:#c0392b4d;background:#fff5f4}.upload-item-name{font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.upload-item-stage{display:flex;align-items:center;gap:8px;flex-shrink:0;font-size:12px;font-weight:700;color:var(--fip-muted)}.upload-item.done .upload-item-stage{color:var(--fip-green)}.upload-item.error .upload-item-stage{color:var(--fip-red)}.tag-chip-list{display:flex;flex-wrap:wrap;gap:8px}.tag-chip{border:1px solid var(--fip-line);background:#fff;border-radius:999px;padding:8px 12px;font-weight:800;color:var(--fip-text)}.tag-chip.selected{border-color:var(--fip-red);background:#fdebea;color:var(--fip-red)}.detected-tag{border:1px solid var(--fip-line);border-radius:16px;padding:14px;background:#f8fafc;font-size:24px;font-weight:900;text-align:center;letter-spacing:.02em}.progress-block{flex:1 1 220px;min-width:0;max-width:360px}.progress-head{display:flex;justify-content:space-between;align-items:center;gap:10px;font-size:12px;color:var(--fip-muted);margin-bottom:5px}.progress-head strong{color:var(--fip-text)}.progress-track{height:8px;background:#e9eef5;border-radius:999px;overflow:hidden}.progress-fill{height:100%;background:var(--fip-green);border-radius:inherit;transition:width .25s ease}.status-pill.review-green{background:#e6f6ec;color:var(--fip-green)}.status-pill.review-amber{background:#fff7ed;color:#c2410c}.status-pill.review-red{background:#fdebea;color:var(--fip-red)}.compare-bar{z-index:15;display:flex;align-items:center;justify-content:center;gap:12px;padding:8px 12px;background:#fffffff5;border-bottom:1px solid var(--fip-line);font-size:13px;font-weight:800}.compare-bar label{color:var(--fip-muted);font-weight:700}.compare-bar input[type=range]{width:min(260px,38vw);accent-color:var(--fip-red)}.previous-pdf-canvas{position:absolute;top:0;left:0;z-index:0}.current-pdf-canvas{position:relative;z-index:1}.marker{width:auto;height:auto;min-width:24px;min-height:24px;flex-direction:column;gap:2px;padding:1px;border-color:var(--fip-dark)}.marker-qr{display:flex;align-items:center;justify-content:center;background:#fff}.marker-label{font-size:8px;line-height:1;max-width:64px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--fip-dark);font-weight:900;background:#ffffffeb;padding:1px 2px;border-radius:2px}.marker.review-automoved{border-color:var(--fip-green);background:#e6f6ec;box-shadow:0 0 0 3px #16803c29,0 4px 12px #00000040}.marker.review-review{border-color:#c2410c;background:#fff7ed;box-shadow:0 0 0 3px #c2410c29,0 4px 12px #00000040}.marker.review-missing{border-color:var(--fip-red);background:#fdebea;box-shadow:0 0 0 3px #c0392b29,0 4px 12px #00000040}.tag-panel{position:absolute;right:18px;top:calc(120px + var(--safe-top));bottom:calc(84px + var(--safe-bottom));z-index:55;width:min(390px,calc(100vw - 36px));background:#fffffff0;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--fip-line);border-radius:22px;box-shadow:0 24px 80px #17202e3d;display:flex;flex-direction:column;overflow:hidden;touch-action:pan-y}.tag-panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding:14px;border-bottom:1px solid var(--fip-line);background:#ffffffe6}.tag-panel-head h3{margin:0;font-size:18px}.tag-panel-head p{margin:4px 0 0}.tag-list{overflow:auto;padding:10px;display:flex;flex-direction:column;gap:7px}.tag-list-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 10px;border:1px solid var(--fip-line);border-radius:14px;background:#fff}.tag-list-row.done{background:#f8fafc}.tag-list-row.automoved{border-color:#16803c52;background:#f0fbf4}.tag-list-row.review{border-color:#c2410c52;background:#fff7ed}.tag-list-row.missing{border-color:#c0392b52;background:#fff5f4}.tag-list-id{font-weight:900;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media (max-width: 720px){.compare-bar{flex-wrap:wrap}.tag-panel{top:calc(108px + var(--safe-top));left:10px;right:10px;width:auto;bottom:calc(78px + var(--safe-bottom))}.progress-block{max-width:none;flex-basis:100%}}.field textarea{width:100%;min-height:84px;border:1px solid var(--fip-line);border-radius:12px;padding:10px 12px;background:#fff;resize:vertical;font:inherit}.field input[type=number]{width:100%;min-height:42px;border:1px solid var(--fip-line);border-radius:12px;padding:0 12px;background:#fff}.check-row{display:flex;align-items:center;gap:8px;margin:10px 0;font-weight:800;font-size:13px}.check-row input{width:18px;height:18px}.hub-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}@media (max-width: 768px){.hub-grid{grid-template-columns:1fr}}.hub-tile{display:flex;align-items:center;gap:14px;border:1px solid var(--fip-line);border-radius:16px;background:#fff;padding:15px 18px;cursor:pointer;transition:border-color .12s ease,box-shadow .12s ease,transform .06s ease;box-shadow:0 8px 24px #17202e0d}.hub-tile:hover{border-color:#c6cdda;box-shadow:0 14px 34px #17202e1a}.hub-tile:active{transform:scale(.996)}.hub-tile-icon{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:11px;background:var(--fip-gray);color:var(--fip-blue)}.hub-tile h2{margin:0;font-size:18px;letter-spacing:-.01em}.forms-subhead{margin:22px 0 10px;font-size:15px;text-transform:uppercase;letter-spacing:.06em;color:var(--fip-muted)}.form-row{flex-direction:row;align-items:center;flex-wrap:wrap;gap:8px 10px}.form-row .form-meta{flex-shrink:0}.form-row .form-row-actions{margin-left:auto}.form-page{position:relative;width:100%;margin:0 auto 18px;background:#fff;border:1px solid var(--fip-line);border-radius:8px;overflow:hidden;box-shadow:0 8px 24px #17202e14}.form-page canvas{display:block;width:100%;height:auto}.form-overlay{position:absolute;top:0;right:0;bottom:0;left:0}.form-page-num{position:absolute;top:6px;right:8px;font-size:11px;font-weight:800;color:var(--fip-muted);background:#ffffffd1;border-radius:6px;padding:1px 6px;pointer-events:none}.builder-body{flex:1;display:flex;align-items:flex-start;gap:16px;padding:16px;max-width:1400px;width:100%;margin:0 auto}.builder-pages{flex:1;min-width:0}.builder-empty{display:flex;flex-direction:column;align-items:center;gap:14px}.builder-hint{z-index:60;pointer-events:none}.form-overlay.placing{cursor:crosshair;background:#0099ff0a}.form-field-box{position:absolute;border:1.5px solid var(--fip-blue);background:#0099ff1a;border-radius:4px;cursor:move;box-sizing:border-box;touch-action:none;overflow:hidden;user-select:none;-webkit-user-select:none}.form-field-box.selected{border-color:var(--fip-red);background:#c0392b1f;z-index:2}.form-field-box.ff-checkbox{border-radius:3px}.ffb-label{position:absolute;left:2px;top:1px;right:2px;font-size:10px;font-weight:700;color:var(--fip-dark);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none}.ffb-resize{position:absolute;right:-1px;bottom:-1px;width:16px;height:16px;background:var(--fip-red);border-radius:3px 0;cursor:nwse-resize;touch-action:none}.builder-props{flex:0 0 300px;position:sticky;top:12px;align-self:flex-start;max-height:calc(100vh - 24px);overflow:auto;border:1px solid var(--fip-line);border-radius:16px;background:#fff;padding:16px;box-shadow:0 8px 24px #17202e0f}.builder-props .props-head h3{margin:0 0 7px;font-size:13px;font-weight:800}.builder-props .field{margin:10px 0}.builder-menu>.btn{width:100%;margin-top:6px}.tool-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:6px 0}.tool-grid .btn{width:100%}.scope-switch{display:flex;gap:8px}.scope-switch .btn{flex:1}.props-section-label{font-weight:800;font-size:13px;margin:4px 0 7px}.props-divider{height:1px;background:var(--fip-line);margin:14px 0 4px}.filler-head{display:flex;flex-direction:column;gap:2px;padding:10px 16px;border-bottom:1px solid var(--fip-line);background:#fff;position:sticky;top:0;z-index:20}.filler-body{flex:1;padding:16px;max-width:1000px;width:100%;margin:0 auto}.fill-field{position:absolute;box-sizing:border-box}.fill-input{width:100%;height:100%;box-sizing:border-box;border:1px solid rgba(0,153,255,.55);background:#fffff0b8;border-radius:3px;padding:1px 4px;font-size:13px;color:var(--fip-dark);resize:none}.fill-input:focus{outline:2px solid var(--fip-blue);background:#fffef2}textarea.fill-input{line-height:1.15;padding:3px 4px}.fill-checkbox{width:100%;height:100%;box-sizing:border-box;border:1.5px solid rgba(0,153,255,.65);background:#fffff0b8;border-radius:3px;display:flex;align-items:center;justify-content:center;color:var(--fip-dark);cursor:pointer;padding:0;line-height:1}.fill-checkbox.on{background:#e6f5ff}.fill-checkbox svg{width:78%;height:78%;display:block}.fill-signature{width:100%;height:100%;box-sizing:border-box;border:1.5px dashed rgba(0,153,255,.6);background:#fffff0b8;border-radius:4px;display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;overflow:hidden}.fill-signature img{max-width:100%;max-height:100%}.fill-input.missing,.fill-checkbox.missing,.fill-signature.missing{border-color:var(--fip-red);box-shadow:0 0 0 2px #c0392b2e}.signature-modal .signature-canvas{width:100%;height:220px;border:1px solid var(--fip-line);border-radius:12px;background:#fff;touch-action:none;margin:6px 0 2px}.list-manager .scope-switch{display:flex;gap:8px;margin-bottom:8px}.list-editor{border:1px solid var(--fip-line);border-radius:14px;padding:12px 14px;margin:10px 0;background:#fbfcfe}@media (max-width: 820px){.builder-body{flex-direction:column}.builder-pages{order:2}.builder-props{order:1;position:static;flex-basis:auto;width:100%;max-height:none;overflow:visible}}.status-pill.ok{background:#e6f6ec;color:var(--fip-green)}.status-pill.warn{background:#fff7ed;color:#c2410c}.delivery-subhead{margin:6px 0 0}.delivery-panel{margin:14px 0}.delivery-preview{padding:10px;text-align:center}.delivery-preview img{max-width:100%;max-height:60vh;border-radius:12px}.image-zoom-backdrop{padding:0}.image-zoom-modal{display:flex;flex-direction:column;width:100%;height:100%;max-width:100%;max-height:100%;background:transparent;box-shadow:none;border-radius:0;overflow:hidden}.image-zoom-head{display:flex;justify-content:flex-end;padding:calc(var(--safe-top) + 10px) 16px 10px;background:#fff;border-bottom:1px solid var(--fip-line)}.image-zoom-modal .canvas-wrap{flex:1}.delivery-capture-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px;flex-wrap:wrap}.delivery-capture-empty{display:flex;flex-direction:column;align-items:center;gap:12px}.delivery-toggle{display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:700;color:var(--fip-text)}.delivery-toggle input{width:18px;height:18px}.delivery-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:4px 16px}.delivery-fields .field.dl-full{grid-column:1 / -1}.delivery-table-wrap{overflow-x:auto;margin-top:6px}.delivery-table{width:100%;border-collapse:collapse;font-size:13px}.delivery-table th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--fip-muted);padding:6px 8px;border-bottom:1px solid var(--fip-line);white-space:nowrap}.delivery-table td{padding:4px 6px;border-bottom:1px solid var(--fip-line);vertical-align:middle}.delivery-table td input{width:100%;min-width:90px;min-height:36px;border:1px solid var(--fip-line);border-radius:8px;padding:0 8px;background:#fff}.delivery-table th.dl-lg,.delivery-table td.dl-lg{width:100%}.delivery-table td.dl-lg input{min-width:180px}.delivery-table td.dl-sm input{min-width:52px}.delivery-row-remove-cell{width:34px;text-align:center}.delivery-row-remove{width:26px;height:26px;border-radius:999px;border:1px solid var(--fip-line);background:#fff;color:var(--fip-muted);font-size:16px;line-height:1;cursor:pointer}.delivery-row-remove:hover{border-color:var(--fip-red);color:var(--fip-red)}.delivery-match-table td{white-space:nowrap}.delivery-match-row.qty-mismatch{background:#fff7ed}.delivery-match-row.missing-on-invoice,.delivery-match-row.missing-on-receipt{background:#fdf1f0}.delivery-line-pill{display:inline-block;padding:2px 9px;border-radius:999px;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.03em;background:#ececec;color:var(--fip-muted)}.delivery-line-pill.ok{background:#e6f6ec;color:var(--fip-green)}.delivery-line-pill.qty-mismatch{background:#fff7ed;color:#c2410c}.delivery-line-pill.missing-on-invoice,.delivery-line-pill.missing-on-receipt{background:#fdebea;color:var(--fip-red)}.delivery-match-note{font-size:12px;font-weight:800}.delivery-match-note.matched{color:var(--fip-green)}.delivery-match-note.discrepancy{color:#c2410c}.delivery-docs{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px}.delivery-dl{margin:6px 0 0}.delivery-dl-row{display:flex;justify-content:space-between;gap:14px;padding:6px 0;border-bottom:1px solid var(--fip-line)}.delivery-dl-row:last-child{border-bottom:none}.delivery-dl dt{color:var(--fip-muted);font-size:13px}.delivery-dl dd{margin:0;font-weight:700;text-align:right}.delivery-empty-invoice{display:flex;flex-direction:column;gap:10px;align-items:flex-start}.delivery-foot{margin-top:16px;font-size:12px}
