.ip-steps{list-style:none;display:grid;grid-template-columns:repeat(4,1fr);padding:0;margin:0 0 25px;gap:12px}.ip-steps li{display:flex;align-items:center;gap:8px;color:#849188;font-size:12px;padding-bottom:16px;border-bottom:2px solid #e3e8df}.ip-steps li>span{display:grid;place-items:center;width:26px;height:26px;flex:0 0 26px;border-radius:50%;background:#edf0e9}.ip-steps .current{color:#1d4c40;border-color:#345e4d;font-weight:600}.ip-steps .current>span,.ip-steps .complete>span{color:#fff;background:#345e4d}.ip-steps .complete{color:#527765}
.ip-upload{text-align:center;padding:45px 20px;background:linear-gradient(135deg,#f3f7ed,#fff);border:1px dashed #a8bba4}.ip-upload.dragover{border:2px solid #3f745e;background:#e9f3e5}.ip-upload h2{font-size:29px}.ip-upload p{font-size:13px;color:#5f7566;line-height:1.8;margin:14px 0 22px}.ip-upload .small{font-size:11px;margin-bottom:0}.ip-upload-symbol{display:grid;place-items:center;border-radius:18px;background:#dfebd9;color:#345e4d;margin:0 auto 20px;width:60px;height:60px;font-size:32px}.ip-file-label{position:relative;cursor:pointer;overflow:hidden}.ip-file-label input{position:absolute;inset:0;opacity:0;width:100%;height:100%;cursor:pointer}.ip-file-label:focus-within{outline:3px solid #548a71;outline-offset:3px}.ip-progress{margin-top:18px;min-height:18px;font-size:12px;color:#446c57}.ip-feature-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin:22px 0}.ip-feature-grid>div{font-size:12px;padding:18px 0}.ip-feature-grid p{font-size:12px;color:#65766c;line-height:1.7;margin-top:8px}.ip-history{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:18px 22px;border-bottom:1px solid var(--line);font-size:13px}.ip-history p{margin-top:5px;line-height:1.6}.ip-file-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:20px;padding:16px 18px;background:#eaf1e6;border-radius:8px;font-size:13px}.ip-file-bar>div{flex:1;min-width:160px;overflow-wrap:anywhere}.ip-file-bar span{display:block;font-size:11px;color:#5a7061;margin-top:5px}.ip-controls{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 20px}.ip-controls .field{margin:0 0 10px}.ip-controls small{display:block;color:#718273;font-size:10px;margin-top:5px}.ip-alert{padding:12px 16px;border-radius:7px;background:#fcf3e3;color:#7b633c;font-size:12px;line-height:1.7;margin-bottom:14px}.ip-alert .actions{margin-top:12px}.ip-map-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding:20px}.ip-map-card{display:flex;flex-direction:column;padding:14px;background:#f6f8f2;border-radius:8px;min-width:0;gap:8px;font-size:12px}.ip-map-card small{font-size:10px;color:#6b7d70;min-height:28px;overflow-wrap:anywhere}.ip-map-card select{width:100%;font-size:12px}.ip-panel-note{padding:14px 22px 5px}.ip-preview-row{border-top:1px solid var(--line);font-size:12px}.ip-preview-row>summary{padding:16px 22px;display:flex;justify-content:space-between;gap:16px;cursor:pointer}.ip-preview-row>summary>span:first-child{min-width:0}.ip-preview-row small{display:block;color:#7a897e;font-size:11px;margin-top:6px;overflow-wrap:anywhere}.ip-preview-row.excluded>summary{opacity:.55}.ip-row-detail{padding:5px 22px 22px}.ip-edit-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px 15px;margin-top:16px}.ip-edit-grid input,.ip-edit-grid textarea{font-size:12px}.ip-check{display:flex;align-items:center;gap:10px;font-size:12px;line-height:1.6}.ip-check input{width:17px;height:17px;flex:0 0 17px}.ip-error{color:#aa4444;font-size:12px;margin:5px 0}.ip-error-banner{border:1px solid #dbb3a5;background:#fff0eb;color:#923c34;padding:14px 18px;border-radius:8px;font-size:13px;margin-bottom:20px}.ip-error-banner[hidden]{display:none}.ip-pagination{display:flex;gap:14px;align-items:center;justify-content:center;padding:16px;font-size:11px;color:#65776a}.ip-footer{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-top:22px;font-size:12px;color:#5c7062}.ip-review-card{margin-bottom:18px}.ip-review-card .panel-head p{margin-top:7px}.ip-review-card .panel-body>p{margin-bottom:16px}.ip-candidates{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:20px}.ip-candidate{flex:1;min-width:200px;display:block;text-align:left;background:#edf3e8;white-space:normal;font-size:12px}.ip-candidate small{display:block;font-size:10px;color:#728271;margin-top:5px}.ip-review-card details{font-size:12px;margin-top:14px}#import-root pre{font-size:11px;white-space:pre-wrap;overflow-wrap:anywhere;background:#f5f7f2;padding:12px;max-height:300px;overflow:auto}.ip-success{text-align:center;padding:40px 25px}.ip-success h2{font-size:27px}.ip-success p{font-size:13px;line-height:1.8;margin:15px 0 24px}.ip-success .actions{justify-content:center}.ip-success-mark{background:#e3efda;color:#4c7551;border-radius:50%;width:55px;height:55px;margin:0 auto 18px;display:grid;place-items:center;font-size:25px}.ip-profile-links{display:flex;gap:10px;flex-wrap:wrap;padding:22px}.ip-local-note{font-size:11px;color:#77877c;line-height:1.7;margin-top:22px}.ip-profile-evidence{border-bottom:1px solid var(--line);padding:16px 22px;font-size:12px}.ip-profile-evidence summary{cursor:pointer;line-height:1.6}.ip-profile-evidence p{margin-top:8px;white-space:pre-wrap;overflow-wrap:anywhere}.ip-profile-evidence pre{white-space:pre-wrap;overflow-wrap:anywhere;font-size:11px;max-height:250px;overflow:auto;margin-top:10px}.ip-profile-evidence code{font-size:10px;overflow-wrap:anywhere}
@media(max-width:900px){.ip-map-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.ip-steps{gap:7px}.ip-steps li{font-size:11px}}@media(max-width:600px){.ip-steps{grid-template-columns:repeat(2,1fr)}.ip-controls,.ip-edit-grid,.ip-feature-grid,.ip-map-grid{grid-template-columns:1fr}.ip-feature-grid{gap:0}.ip-upload{padding:30px 16px}.ip-upload h2{font-size:24px}.ip-footer,.ip-history{align-items:stretch;flex-direction:column}.ip-preview-row>summary{padding:14px;gap:8px}.ip-map-grid{padding:14px}.ip-candidate{min-width:0;width:100%;flex:auto}.ip-row-detail{padding:5px 14px 18px}.ip-review-card .panel-head{align-items:start;gap:10px}}
