:root{--navy:#1a184d;--orange:#ffcc70;--orange-dark:#f3b944;--coral:#ff5878;--coral-dark:#e0405f;--green:#61ce70;--bg:#f5f6fa;--surface:#fff;--border:#e2e4ee;--text:#1a184d;--muted:#6d6f8c;--good:var(--green);--medium:var(--orange);--radius:14px;--shadow:0 2px 16px #1a184d14;--font-head:"Montserrat", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-body:"Nunito", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:var(--font-body);-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%}h1,h2,h3,.card h2{font-family:var(--font-head)}.app{flex-direction:column;min-height:100%;display:flex}.page{width:100%;max-width:1100px;padding:20px 16px calc(24px + env(safe-area-inset-bottom));flex-direction:column;gap:20px;margin:0 auto;display:flex}.page-header{background:var(--navy);border-radius:var(--radius);box-shadow:var(--shadow);padding:22px 24px}.subtitle,.muted{color:var(--muted);margin:0}.page-header .subtitle{color:#ffffffb8;margin-top:12px}.small{font-size:12px}.brand{align-items:center;gap:16px;display:flex}.brand-logo{width:auto;height:30px;display:block}.brand-title{font-family:var(--font-head);letter-spacing:-.3px;color:#fff;border-left:1px solid #ffffff38;padding-left:16px;font-size:22px;font-weight:700}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;gap:14px;padding:18px;display:flex}.card h2{text-transform:uppercase;letter-spacing:1px;color:var(--navy);margin:0;font-size:16px}.grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;display:grid}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.field{color:var(--navy);flex-direction:column;gap:6px;font-size:13px;font-weight:600;display:flex}.field input,.field select,.field textarea{font:inherit;color:var(--text);border:1px solid var(--border);background:#fbfbfe;border-radius:10px;outline:none;width:100%;padding:11px 12px;font-size:16px;font-weight:400;transition:border-color .15s,box-shadow .15s}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--coral);box-shadow:0 0 0 3px #ff587826}.field textarea{resize:vertical}.btn{font:inherit;cursor:pointer;border:1px solid #0000;border-radius:10px;min-height:44px;padding:11px 16px;font-size:14px;font-weight:600;transition:background .15s,opacity .15s}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--orange);color:var(--navy);font-weight:700}.btn-primary:not(:disabled):hover,.btn-secondary{background:var(--coral);color:#fff}.btn-secondary:not(:disabled):hover{background:var(--coral-dark)}.btn-ghost{color:var(--navy);border-color:var(--border);background:0 0}.btn-ghost:hover{background:#eeeff6}.btn-danger{color:var(--coral);background:0 0;border-color:#ff587859}.btn-danger:hover{background:#ff587814}.btn-block{width:100%}.study-list,.point-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.study-list li,.point-list li{border:1px solid var(--border);background:#fbfbfe;border-radius:10px;align-items:center;gap:12px;padding:10px 12px;display:flex}.study-info,.point-info{flex-direction:column;flex:1;gap:2px;min-width:0;font-size:14px;display:flex}.study-actions{gap:8px;display:flex}.badge{color:#fff;background:var(--navy);border-radius:50%;flex-shrink:0;place-items:center;width:30px;height:30px;font-size:12px;font-weight:700;display:grid}.badge.good{background:var(--good)}.badge.medium{background:var(--medium)}.badge.poor{background:var(--coral)}.capture{gap:16px;max-width:1400px}.capture-header{z-index:5;background:var(--navy);border-radius:var(--radius);max-width:100%;box-shadow:var(--shadow);align-items:center;gap:10px;padding:8px 12px;display:flex;position:sticky;top:0}.capture-header .brand-logo{flex-shrink:0;height:20px}.capture-study{min-width:0;font-family:var(--font-head);color:#fff;white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:15px;font-weight:700;overflow:hidden}.capture-counter{font-variant-numeric:tabular-nums;color:#fff;background:#ffffff1f;border-radius:999px;flex-shrink:0;padding:4px 12px;font-size:14px;font-weight:700}.icon-btn{color:#fff;cursor:pointer;background:0 0;border:1px solid #ffffff47;border-radius:10px;flex-shrink:0;place-items:center;width:36px;height:36px;font-size:18px;line-height:1;display:grid}.icon-btn:hover{background:#ffffff1f}.capture-body{grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);grid-template-areas:"primary map""secondary map";align-items:start;gap:16px;display:grid}.capture-primary{flex-direction:column;grid-area:primary;gap:16px;display:flex}.capture-map{grid-area:map;position:sticky;top:64px}.capture-secondary{flex-direction:column;grid-area:secondary;gap:16px;display:flex}.map-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.map-wrap{background:#e8eaf2;height:min(60vh,520px)}.map-placeholder{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:6px;height:100%;padding:20px;display:flex}code{background:#eeeff6;border-radius:4px;padding:1px 5px;font-size:13px}.gps-bar{border-top:1px solid var(--border);font-variant-numeric:tabular-nums;align-items:center;gap:8px;padding:10px 14px;font-size:13px;display:flex}.gps-dot{background:var(--muted);border-radius:50%;width:9px;height:9px}.gps-dot.live{background:var(--good);animation:1.6s infinite pulse}.gps-error{color:var(--coral)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.3}}.side-panel{flex-direction:column;gap:16px;display:flex}.timer{border-radius:var(--radius);background:var(--navy);color:#fff;box-shadow:var(--shadow);align-items:center;gap:16px;padding:16px;display:flex}.timer.done{background:var(--good)}.timer-ring{flex-shrink:0;width:74px;height:74px;position:relative}.timer-ring svg{width:100%;height:100%;transform:rotate(-90deg)}.timer-track,.timer-progress{fill:none;stroke-width:8px}.timer-track{stroke:#fff3}.timer-progress{stroke:var(--orange);stroke-linecap:round;stroke-dasharray:283;transition:stroke-dashoffset 1s linear}.timer.done .timer-progress{stroke:#fff}.timer-value{font-variant-numeric:tabular-nums;place-items:center;font-size:24px;font-weight:700;display:grid;position:absolute;inset:0}.timer-text{flex-direction:column;flex:1;gap:2px;font-size:14px;display:flex}.timer .muted{color:#ffffffbf}.timer .btn-ghost{color:#fff;border-color:#ffffff4d}.timer .btn-ghost:hover{background:#ffffff1f}@media (width<=900px){.capture-body{grid-template-columns:1fr;grid-template-areas:"primary""map""secondary"}.capture-map{position:static}.map-wrap{height:42vh}.brand-title{font-size:19px}.study-list li{flex-wrap:wrap}}@media (width<=400px){.capture-header{flex-wrap:wrap;row-gap:8px}.capture-study{flex:auto}}.page-header .btn-back{color:#fff;border-color:#ffffff47;align-self:flex-start;margin-bottom:14px}.page-header .btn-back:hover{background:#ffffff1f}.home-actions{grid-template-columns:1fr 1fr;gap:16px;display:grid}.home-card{text-align:left;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);box-shadow:var(--shadow);cursor:pointer;font:inherit;color:var(--text);flex-direction:column;align-items:flex-start;gap:6px;padding:22px 20px;transition:transform .12s,box-shadow .12s,background .12s;display:flex}.home-card:not(:disabled):hover{transform:translateY(-2px);box-shadow:0 8px 24px #1a184d24}.home-card:disabled{opacity:.55;cursor:not-allowed}.home-card-primary{background:var(--navy);border-color:var(--navy);color:#fff}.home-card-icon{background:var(--orange);width:44px;height:44px;color:var(--navy);border-radius:12px;place-items:center;margin-bottom:6px;font-size:24px;font-weight:700;display:grid}.home-card-title{font-family:var(--font-head);font-size:18px;font-weight:700}.home-card-desc{color:var(--muted);font-size:13px}.home-card-primary .home-card-desc{color:#ffffffb8}.help-steps{flex-direction:column;gap:8px;margin:0;padding-left:20px;font-size:14px;line-height:1.5;display:flex}.help-steps li::marker{color:var(--coral);font-weight:700}.help-links{border-top:1px solid var(--border);flex-direction:column;gap:4px;padding-top:12px;font-size:14px;display:flex}.help-links p{margin:0}.help-links a{color:var(--coral);word-break:break-word;font-weight:600;text-decoration:none}.help-links a:hover{text-decoration:underline}.help-support{color:var(--muted)}.progress-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;gap:10px;padding:16px 18px;display:flex}.progress-card.done{border-color:var(--green)}.progress-head{justify-content:space-between;align-items:baseline;display:flex}.progress-label{font-family:var(--font-head);text-transform:uppercase;letter-spacing:1px;color:var(--navy);font-size:13px;font-weight:700}.progress-count{font-variant-numeric:tabular-nums;color:var(--navy);font-weight:700}.progress-track{background:#eceef6;border-radius:6px;height:10px;overflow:hidden}.progress-fill{background:var(--orange);border-radius:6px;height:100%;transition:width .3s,background .3s}.progress-card.done .progress-fill{background:var(--green)}.progress-hint{color:var(--muted);margin:0;font-size:13px}.progress-card.done .progress-hint{color:var(--green);font-weight:600}.count-done{color:var(--green);font-weight:700}.app-footer{padding:8px 4px calc(8px + env(safe-area-inset-bottom));color:var(--muted);justify-content:center;gap:8px;margin-top:8px;font-size:12px;display:flex}.app-footer .version{color:var(--navy);font-weight:700}.app-footer .dot-sep{opacity:.5}@media (width<=720px){.home-actions{grid-template-columns:1fr}}html,body{overflow-x:hidden}.btn-sm{flex-shrink:0;min-height:36px;padding:7px 12px;font-size:13px}.field-lg{font-weight:600;padding:14px!important;font-size:18px!important}.capture-form h2{margin-bottom:2px}.pending-type{margin:-4px 0 0;font-size:13px}.btn-validate{min-height:52px;font-size:16px}.gps-hint{font-variant-numeric:tabular-nums;align-items:center;gap:8px;font-size:13px;font-weight:600;display:flex}.gps-hint.gps-good{color:var(--green)}.gps-hint.gps-good .gps-dot{background:var(--green)}.gps-hint.gps-medium{color:var(--orange-dark)}.gps-hint.gps-medium .gps-dot{background:var(--orange-dark)}.gps-hint.gps-poor,.gps-hint.gps-none{color:var(--coral)}.gps-hint.gps-poor .gps-dot,.gps-hint.gps-none .gps-dot{background:var(--coral)}.gps-warning{color:var(--coral-dark);background:#ff58781a;border:1px solid #ff587866;border-radius:10px;padding:10px 12px;font-size:13px;font-weight:600;line-height:1.4}.study-actions-card{gap:12px}.study-actions-row{flex-wrap:wrap;gap:8px;display:flex}.study-actions-row .btn{flex:auto}.badge.type-gateway{background:var(--navy)}.badge.type-device{background:var(--coral)}.type-select{font:inherit;border:1px solid var(--border);color:var(--text);background:#fbfbfe;border-radius:8px;flex-shrink:0;padding:6px 8px;font-size:13px}.point-list li{gap:10px}.point-list .point-info{flex:1;min-width:0}.header-bar{justify-content:space-between;align-items:center;gap:12px;display:flex}.help-btn{color:#fff;background:0 0;border-color:#ffffff47;flex-shrink:0}.help-btn:hover{background:#ffffff1f}.help-icon{font-size:16px;font-weight:700}.modal-overlay{z-index:100;padding:24px 16px calc(24px + env(safe-area-inset-bottom));background:#1a184d8c;justify-content:center;align-items:flex-start;display:flex;position:fixed;inset:0;overflow-y:auto}.modal-card{background:var(--surface);border-radius:var(--radius);width:100%;max-width:560px;margin:auto;box-shadow:0 12px 40px #1a184d4d}.modal-head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:16px 18px;display:flex}.modal-head h2{text-transform:uppercase;letter-spacing:1px;color:var(--navy);margin:0;font-size:18px}.modal-close{border:1px solid var(--border);width:34px;height:34px;color:var(--navy);cursor:pointer;background:0 0;border-radius:9px;font-size:15px}.modal-close:hover{background:#eeeff6}.modal-body{flex-direction:column;gap:14px;padding:18px;display:flex}.help-note{background:#f2f3fa;border-radius:10px;flex-direction:column;gap:8px;padding:12px 14px;font-size:14px;line-height:1.5;display:flex}.help-note p{margin:0}.help-hint p{margin:0;font-size:14px}.legal-note{color:var(--muted);margin:0;padding:0 4px;font-size:12px;line-height:1.5}@media (width<=380px){.page{padding-left:12px;padding-right:12px}.card{padding:14px}.page-header{padding:16px}.brand-title{font-size:17px}.grid{grid-template-columns:1fr}.capture-counter{padding:4px 9px;font-size:13px}}
