:root{
  --primary:#0b5cad;
  --primary-dark:#084a8c;
  --primary-light:#e8f1fb;
  --accent:#e8833a;
  --bg:#f4f7fb;
  --card:#ffffff;
  --text:#1f2937;
  --muted:#6b7280;
  --border:#d8e0ea;
  --head-bg:#0b3a66;
  --ok:#0f9d58;
  --warn:#c0392b;
  --radius:12px;
  --shadow:0 4px 18px rgba(11,60,102,.10);
  --font-system:"Segoe UI","Noto Sans JP","Noto Sans KR","Helvetica Neue",Roboto,"Hiragino Sans","Microsoft YaHei",Arial,sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{font-family:var(--font-system);color:var(--text);background:var(--bg);line-height:1.55;font-size:15px}
a{color:var(--primary);text-decoration:none}
a:hover{text-decoration:underline}
img{max-width:100%}

/* ---------- Header ---------- */
.site-header{background:linear-gradient(120deg,var(--head-bg),#0b5cad);color:#fff;box-shadow:0 2px 12px rgba(0,0,0,.18)}
.header-inner{max-width:1180px;margin:0 auto;padding:12px 20px;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.brand{display:flex;align-items:center;gap:10px;font-weight:700;font-size:1.05rem;min-width:0}
.brand .logo{width:34px;height:34px;flex:0 0 auto;filter:drop-shadow(0 1px 2px rgba(0,0,0,.25))}
.header-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.btn{display:inline-flex;align-items:center;gap:7px;border:0;border-radius:8px;padding:9px 14px;font-size:.9rem;cursor:pointer;font-family:inherit;transition:background .15s,transform .05s;text-decoration:none}
.btn:active{transform:translateY(1px)}
.btn-home{background:rgba(255,255,255,.16);color:#fff;font-weight:600}
.btn-home:hover{background:rgba(255,255,255,.28);text-decoration:none}
.btn-mail{background:var(--accent);color:#fff;font-weight:600}
.btn-mail:hover{background:#d96f28;text-decoration:none}
.btn-main{background:var(--primary);color:#fff}
.btn-main:hover{background:var(--primary-dark)}
.btn-ghost{background:#eef2f7;color:var(--text)}
.btn-ghost:hover{background:#e2e8f0}
.btn-danger{background:#fbe9e7;color:var(--warn)}
.btn-danger:hover{background:#f6d2cd}
.btn i{font-style:normal;font-size:1rem}

/* Language switcher */
.lang-wrap{position:relative}
.lang-btn{background:rgba(255,255,255,.14);color:#fff;border:1px solid rgba(255,255,255,.28);border-radius:8px;padding:9px 12px;cursor:pointer;font-family:inherit;font-size:.9rem;display:inline-flex;align-items:center;gap:7px}
.lang-btn:hover{background:rgba(255,255,255,.24)}
.lang-menu{position:absolute;right:0;top:110%;min-width:200px;background:#fff;color:var(--text);border-radius:10px;box-shadow:var(--shadow);overflow:hidden;z-index:50;display:none}
.lang-menu.show{display:block}
.lang-menu a{display:flex;align-items:center;gap:9px;padding:9px 13px;font-size:.9rem;color:var(--text)}
.lang-menu a:hover{background:var(--primary-light);text-decoration:none}
.lang-menu a.active{font-weight:700;color:var(--primary)}
.lang-menu .flag{width:20px;height:14px;border-radius:2px;object-fit:cover;flex:0 0 auto}

/* ---------- Layout ---------- */
.wrap{max-width:1180px;margin:0 auto;padding:22px 20px 60px}
.page-head{margin-bottom:20px}
.crumb{display:flex;align-items:center;flex-wrap:wrap;gap:6px;font-size:.85rem;color:var(--muted);margin-bottom:16px}
.crumb a{font-weight:600}
.crumb .sep{color:#b6c1cf}
.crumb .cur{font-weight:700;color:var(--primary-dark)}
.page-head h1{font-size:1.6rem;color:var(--primary-dark);margin-bottom:6px}
.page-head p{color:var(--muted);max-width:820px}
.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px}

/* ---------- Stats / tool cards (home) ---------- */
.tool-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:18px;margin-top:8px}
.tool-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:22px;display:flex;flex-direction:column;gap:10px;transition:transform .12s,box-shadow .12s}
.tool-card:hover{transform:translateY(-3px);box-shadow:0 10px 26px rgba(11,60,102,.16)}
.tool-card .icon{width:48px;height:48px;border-radius:12px;display:grid;place-items:center;font-size:26px;background:var(--primary-light);color:var(--primary)}
.tool-card h3{font-size:1.15rem;color:var(--primary-dark)}
.tool-card p{color:var(--muted);font-size:.92rem;flex:1}
.tool-card .go{color:var(--primary);font-weight:600}

/* ---------- Forms ---------- */
.field-row{display:grid;gap:14px;margin-bottom:14px}
.field{display:flex;flex-direction:column;gap:5px}
.field label{font-size:.85rem;font-weight:600;color:#374151}
.field .unit{color:var(--muted);font-weight:500;font-size:.8rem}
.field input,.field select{height:40px;border:1px solid var(--border);border-radius:8px;padding:8px 11px;font-size:.95rem;font-family:inherit;background:#fff;color:var(--text);width:100%}
.field input:focus,.field select:focus{outline:2px solid var(--primary);border-color:var(--primary)}
.field input[readonly]{background:#f3f6fa}
.field small{color:var(--muted);font-size:.8rem}
.field.toggle{flex-direction:row;align-items:center;gap:10px}
.switch{position:relative;display:inline-block;width:46px;height:24px;flex:0 0 auto}
.switch input{opacity:0;width:0;height:0}
.slider{position:absolute;cursor:pointer;inset:0;background:#c2ccd8;transition:.2s;border-radius:24px}
.slider:before{content:"";position:absolute;height:18px;width:18px;left:3px;top:3px;background:#fff;transition:.2s;border-radius:50%}
input:checked + .slider{background:var(--primary)}
input:checked + .slider:before{transform:translateX(22px)}

label.group-title{display:flex;align-items:center;gap:8px;font-weight:700;color:var(--primary-dark);font-size:.95rem;margin:18px 0 10px}
label.group-title::before{content:"";width:5px;height:18px;background:var(--primary);border-radius:3px}
.hint{background:var(--primary-light);border-left:4px solid var(--primary);padding:10px 14px;border-radius:6px;color:#24527c;font-size:.86rem;margin-bottom:16px}

/* ---------- Results ---------- */
.result-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;margin-top:6px}
.kpi{background:linear-gradient(135deg,#f0f6fd,#e4eef9);border:1px solid #cfdff0;border-radius:10px;padding:14px 16px}
.kpi .k-label{font-size:.8rem;color:var(--muted);font-weight:600}
.kpi .k-value{font-size:1.45rem;font-weight:800;color:var(--primary-dark);margin-top:2px;word-break:break-word}
.kpi .k-unit{font-size:.82rem;color:var(--muted);font-weight:500}
.kpi.result-primary{background:linear-gradient(135deg,#0b5cad,#0b4d92);border-color:var(--primary)}
.kpi.result-primary .k-label{color:#cfe3f7}
.kpi.result-primary .k-value{color:#fff}
.kpi.result-primary .k-unit{color:#cfe3f7}

/* ---------- Tables ---------- */
.table-scroll{overflow-x:auto;border:1px solid var(--border);border-radius:10px;background:#fff}
table.data{border-collapse:collapse;width:100%;font-size:.85rem;min-width:100%}
table.data th,table.data td{border-bottom:1px solid #eef1f5;padding:8px 10px;text-align:left;white-space:nowrap}
table.data thead th{background:var(--head-bg);color:#fff;font-weight:600;position:sticky;top:0;z-index:2}
table.data thead th small{display:block;font-weight:500;color:#b9cfe4;font-size:.72rem}
table.data tbody tr:nth-child(even){background:#f8fafc}
table.data tbody tr:hover{background:#eef5fd}
table.data td input{width:96px;height:32px;border:1px solid var(--border);border-radius:6px;padding:4px 7px;font-size:.85rem;font-family:inherit}
table.data td input:focus{outline:2px solid var(--primary)}
table.data td.res-input{background:#fffbe8}
table.data td.result{font-weight:700;color:var(--primary-dark)}
table.data td.result.ok{color:var(--ok)}
table.data td.result.warn{color:var(--warn)}
table.data tfoot td{font-weight:700;background:#eef3f8;border-top:2px solid var(--border)}

/* ---------- Tabs ---------- */
.tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}
.tab{border:1px solid var(--border);background:#fff;color:var(--text);padding:9px 16px;border-radius:20px;cursor:pointer;font-family:inherit;font-size:.9rem;font-weight:600}
.tab.active{background:var(--primary);color:#fff;border-color:var(--primary)}

/* ---------- Footer ---------- */
.site-footer{margin-top:40px;border-top:1px solid var(--border);background:#fff;padding:18px 20px}
.footer-inner{max-width:1180px;margin:0 auto;display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px;align-items:center;color:var(--muted);font-size:.85rem}
.footer-inner a{color:var(--primary);font-weight:600}

.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(60px);background:#222;color:#fff;padding:10px 18px;border-radius:8px;font-size:.9rem;opacity:0;transition:.25s;z-index:100;pointer-events:none}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.about-note{color:var(--muted);font-size:.9rem;margin-top:22px;line-height:1.7}
.about-note b{color:var(--text)}

@media (max-width:720px){
  .wrap{padding:14px 14px 40px}
  .header-inner{padding:10px 14px}
  .page-head h1{font-size:1.3rem}
  .kpi .k-value{font-size:1.25rem}
  .field-row{grid-template-columns:1fr}
}

/* ---------- Ring-knife soil compaction ---------- */
.cmp-position{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px}
.cmp-title{font-weight:700;color:var(--primary-dark);font-size:1.05rem;margin-bottom:10px}
.cmp-head{display:flex;justify-content:space-between;align-items:center;background:var(--primary-light);border:1px solid #cfdff0;border-radius:8px;padding:8px 12px;margin-bottom:8px}
.cmp-head .cmp-label{font-size:.82rem;color:var(--muted);font-weight:600}
.cmp-big{font-weight:800;color:var(--primary-dark);font-size:1.25rem}
.cmp-row{display:flex;align-items:center;gap:8px;padding:5px 0;border-bottom:1px dashed #e6ecf3}
.cmp-row:last-child{border-bottom:0}
.cmp-label{flex:0 0 46%;color:#374151;font-size:.85rem;font-weight:600}
.cmp-dual{display:flex;gap:8px;flex:1;align-items:center}
.cmp-dual input{flex:1;min-width:0;height:32px;border:1px solid var(--border);border-radius:6px;padding:4px 8px;font-size:.85rem;font-family:inherit}
.cmp-dual input:focus{outline:2px solid var(--primary)}
.cmp-val.result{font-weight:700;color:var(--primary-dark);flex:1;font-size:.85rem}
.cmp-comp{font-weight:800;color:var(--primary-dark)}