252:            <button class="btn-gps" onclick="captureGPS()"><i class="ti ti-current-location" aria-hidden="true"></i> Capture GPS</button>
289:                <td><button class="del-btn" onclick="delRow(this)"><i class="ti ti-x" aria-hidden="true"></i></button></td>
293:          <button class="add-row-btn" onclick="addSoilRow()"><i class="ti ti-plus" aria-hidden="true" style="font-size:12px"></i> Add Horizon</button>
339:              <select class="field-input" onchange="updateWeatherBar(this)">
349:              <select class="field-input" onchange="updateStrengthBar(this)" id="rockStrengthSel">
402:                <td><button class="del-btn" onclick="delRow(this)"><i class="ti ti-x" aria-hidden="true"></i></button></td>
406:          <button class="add-row-btn" onclick="addDiscRow()"><i class="ti ti-plus" aria-hidden="true" style="font-size:12px"></i> Add Discontinuity Set</button>
492:                <td><button class="del-btn" onclick="delRow(this)"><i class="ti ti-x" aria-hidden="true"></i></button></td>
496:          <button class="add-row-btn" onclick="addSampleRow()"><i class="ti ti-plus" aria-hidden="true" style="font-size:12px"></i> Add Sample</button>
545:function toggleSection(id){
553:function now(){
560:function captureGPS(){
565:  showToast('GPS coordinates captured · UTM Zone 37N');
568:function updateStrengthBar(sel){
574:function updateWeatherBar(sel){}
576:function addSoilRow(){
581:  row.innerHTML='<td><input type="text" value="'+letters[Math.min(n,7)]+'" style="width:36px"></td><td><input type="number" value="'+(n*0.5).toFixed(1)+'" step="0.1"></td><td><input type="number" value="'+((n+1)*0.5).toFixed(1)+'" step="0.1"></td><td><select><option>Dark Brown</option><option>Brown</option><option>Reddish Brown</option><option>Yellow</option><option>Grey</option><option>Black</option></select></td><td><select><option>Soft</option><option>Firm</option><option>Stiff</option><option>Very Stiff</option><option>Hard</option></select></td><td><select><option>Dry</option><option>Slightly Moist</option><option>Moist</option><option>Wet</option></select></td><td><select><option>Clay</option><option>Silt</option><option>Fine Sand</option><option>Medium Sand</option><option>Coarse Sand</option><option>Gravel</option></select></td><td><select><option>Low (CL)</option><option>Medium (CI)</option><option>High (CH)</option><option>Non-plastic</option></select></td><td><select><option>CL</option><option>CI</option><option>CH</option><option>SM</option><option>SC</option><option>SP</option><option>SW</option><option>GC</option><option>GM</option></select></td><td><button class="del-btn" onclick="delRow(this)"><i class="ti ti-x"></i></button></td>';
585:function addDiscRow(){
590:  row.innerHTML='<td><input type="text" value="'+label+'" style="width:36px"></td><td><select><option>Joint</option><option>Fault</option><option>Bedding</option><option>Foliation</option><option>Shear Zone</option><option>Tension Crack</option></select></td><td><input type="number" placeholder="0–360" min="0" max="360" style="width:64px"></td><td><input type="number" placeholder="0–90" min="0" max="90" style="width:54px"></td><td><input type="number" placeholder="m" step="0.01" style="width:54px"></td><td><input type="number" placeholder="mm" step="0.1" style="width:54px"></td><td><select><option>Very Rough</option><option>Rough</option><option>Slightly Rough</option><option>Smooth</option><option>Slickensided</option></select></td><td><select><option>None</option><option>Clay</option><option>Calcite</option><option>Quartz</option><option>Chlorite</option></select></td><td><input type="number" placeholder="m" style="width:54px"></td><td><button class="del-btn" onclick="delRow(this)"><i class="ti ti-x"></i></button></td>';
594:function addSampleRow(){
598:  row.innerHTML='<td><input type="text" value="S-0'+n+'" style="width:52px"></td><td><input type="number" value="'+(n*0.5).toFixed(1)+'" step="0.1" style="width:54px"></td><td><select><option>Disturbed</option><option>Undisturbed</option><option>Bulk</option><option>Rock Core</option></select></td><td><select><option>Atterberg Limits</option><option>Grain Size Analysis</option><option>Compaction</option><option>Shear Strength</option><option>UCS</option><option>Permeability</option></select></td><td><input type="text" placeholder="A" style="width:40px"></td><td><input type="text" placeholder="Notes…"></td><td><button class="del-btn" onclick="delRow(this)"><i class="ti ti-x"></i></button></td>';
602:function delRow(btn){btn.closest('tr').remove();}
604:function showToast(msg){
611:function saveDraft(){showToast('Draft saved · EXP-2026-0047');}
613:function submitRecord(){showToast('Record submitted to PostgreSQL · PostGIS geometry written');}
