/* CALCULATOR SECTION */
.calc-section{background:var(--cream);position:relative}
.calc-section::before{content:'';position:absolute;top:0;left:0;right:0;height:200px;background:linear-gradient(to bottom,var(--forest-deep),transparent);pointer-events:none}

/* IDENTITY CARD */
.id-card{max-width:560px;margin:0 auto 40px;background:rgba(250,248,244,0.75);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(197,223,192,0.4);border-radius:var(--radius-lg);padding:24px 28px}
.id-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media(max-width:500px){.id-row{grid-template-columns:1fr}}

/* SHARED FIELD */
.field{position:relative}
.field input{width:100%;font-family:var(--ffm);font-size:15px;font-weight:500;color:var(--ink);background:var(--white);border:1.5px solid var(--leaf);border-radius:var(--radius-md);padding:14px 40px 14px 16px;outline:none;transition:all .3s var(--ease-expo)}
.field input:focus{border-color:var(--sage);box-shadow:0 0 0 4px rgba(74,122,74,0.08)}
.field input::placeholder{color:var(--ink-5);font-weight:400}
.field-label{position:absolute;top:-8px;left:14px;font-family:var(--ffs);font-size:11px;font-weight:500;color:var(--sage);background:var(--cream);padding:0 6px;letter-spacing:.04em;z-index:1}
.field-icon{position:absolute;right:14px;top:50%;transform:translateY(-50%);font-size:14px;color:var(--sage-light)}
.warn-icon{color:var(--amber)!important}
.field.invalid input{border-color:var(--amber);background:var(--amber-bg)}
.field.valid input{border-color:var(--sage-light)}

/* MODE TOGGLE */
.input-toggle{display:flex;justify-content:center;margin-bottom:40px;background:var(--leaf-light);border-radius:12px;padding:4px;max-width:440px;margin-left:auto;margin-right:auto}
.toggle-btn{flex:1;font-family:var(--ffs);font-size:14px;font-weight:500;color:var(--ink-3);background:transparent;padding:12px 20px;border:none;border-radius:8px;transition:all .3s var(--ease-expo)}
.toggle-btn.active{background:var(--white);color:var(--forest);box-shadow:var(--shadow-sm);font-weight:600}

/* TREE GRID */
.tree-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:24px}
@media(max-width:700px){.tree-grid{grid-template-columns:1fr}}

/* TREE CARD */
.tree-card{background:var(--white);border:1.5px solid var(--leaf);border-radius:var(--radius-xl);padding:28px;transition:all .4s var(--ease-expo)}
.tree-card:hover{border-color:var(--sage);box-shadow:var(--shadow-lg);transform:translateY(-3px)}
.tree-card.tree-complete{border-color:var(--sage-light)}
.tree-card-header{display:flex;align-items:center;gap:14px;margin-bottom:20px}
.tree-icon{width:52px;height:52px;border-radius:14px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.tree-icon span{font-family:var(--ffm);font-size:16px;font-weight:700;color:#fff}
.ti-1{background:linear-gradient(135deg,#2d6a30,#4a9a4a)}
.ti-2{background:linear-gradient(135deg,#1a5fa8,#4a8ad0)}
.ti-3{background:linear-gradient(135deg,#8a5a20,#c48830)}
.ti-4{background:linear-gradient(135deg,#6a3080,#9a60b0)}
.tree-card-name{font-family:var(--ffd);font-size:18px;font-weight:700;color:var(--ink)}
.tree-card-sub{font-family:var(--ffs);font-size:12px;color:var(--ink-4)}

/* TREE INPUT FIELDS */
.tree-inputs{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}
.tree-field{position:relative}
.tree-field input{width:100%;font-family:var(--ffm);font-size:17px;font-weight:600;color:var(--ink);background:var(--cream);border:1.5px solid transparent;border-radius:var(--radius-md);padding:30px 36px 10px 12px;outline:none;transition:all .3s}
.tree-field input:focus{background:var(--white);border-color:var(--sage);box-shadow:0 0 0 3px rgba(74,122,74,0.08)}
.tree-field.invalid input{border-color:var(--amber);background:var(--amber-bg);animation:shake .3s}
.tree-field.valid input{border-color:rgba(106,154,106,0.3)}
.tree-field.warn input{border-color:var(--amber);background:rgba(255,243,232,0.5)}
.tf-label{position:absolute;top:10px;left:12px;font-family:var(--ffs);font-size:10px;font-weight:500;color:var(--ink-4);letter-spacing:.04em;pointer-events:none}
.tf-unit{position:absolute;right:12px;top:50%;transform:translateY(-50%);font-family:var(--ffm);font-size:12px;color:var(--ink-5)}
@keyframes shake{0%,100%{transform:translateX(0)}25%{transform:translateX(-4px)}75%{transform:translateX(4px)}}

/* PROGRESS BAR */
.progress-wrap{margin-bottom:20px;padding:0 4px}
.progress-bar{height:6px;background:var(--leaf-light);border-radius:3px;overflow:hidden;margin-bottom:6px}
.progress-fill{height:100%;border-radius:3px;transition:width .5s var(--ease-expo),background .3s}
.progress-fill.pg-low{background:var(--ink-5)}
.progress-fill.pg-mid{background:var(--amber)}
.progress-fill.pg-full{background:var(--sage);animation:pgPulse .5s}
@keyframes pgPulse{50%{opacity:.7}}
.progress-text{font-family:var(--ffm);font-size:12px;color:var(--ink-4);text-align:right}
.progress-text strong{color:var(--ink-3)}

/* CALCULATE BUTTON */
.calc-btn-wrap{text-align:center;margin-top:8px}
.calc-btn{font-family:var(--ffs);font-size:16px;font-weight:600;color:rgba(255,255,255,0.5);background:linear-gradient(135deg,#88a088,#a0b8a0);padding:18px 56px;border-radius:12px;border:none;width:100%;max-width:480px;transition:all .3s var(--ease-expo);position:relative;overflow:hidden;cursor:not-allowed;opacity:.6}
.calc-btn.enabled{color:var(--white);background:linear-gradient(135deg,var(--forest-mid),var(--sage));box-shadow:0 4px 20px rgba(26,58,26,0.2);cursor:pointer;opacity:1}
.calc-btn.enabled:hover{transform:translateY(-2px);box-shadow:0 8px 32px rgba(26,58,26,0.3)}
.calc-btn.enabled::after{content:'';position:absolute;inset:0;background:linear-gradient(135deg,transparent 30%,rgba(255,255,255,0.1) 50%,transparent 70%);transform:translateX(-100%);transition:transform .6s}
.calc-btn.enabled:hover::after{transform:translateX(100%)}
.htmx-request .btn-text{opacity:0}
.htmx-indicator{display:none}
.htmx-request .htmx-indicator{display:inline-block}
.spinner{width:20px;height:20px;border:2.5px solid rgba(255,255,255,0.3);border-top-color:#fff;border-radius:50%;animation:spin .6s linear infinite;position:absolute;top:50%;left:50%;margin:-10px 0 0 -10px}
@keyframes spin{to{transform:rotate(360deg)}}

/* FILE UPLOAD ZONE */
.upload-zone{border:2px dashed var(--leaf);border-radius:var(--radius-xl);padding:48px 32px;text-align:center;background:rgba(197,223,192,0.06);transition:all .3s;cursor:pointer;min-height:180px;display:flex;align-items:center;justify-content:center}
.upload-zone:hover,.upload-zone.dragover{border-color:var(--sage);background:rgba(197,223,192,0.12)}
.upload-zone.uz-ok{border-color:var(--sage);border-style:solid;background:var(--leaf-light)}
.upload-zone.uz-err{border-color:var(--amber);border-style:solid;background:var(--amber-bg)}
.uz-icon{font-size:40px;margin-bottom:12px}
.uz-text{font-family:var(--ffs);font-size:15px;color:var(--ink-3)}
.uz-text strong{color:var(--sage)}
.uz-sub{font-family:var(--ffs);font-size:12px;color:var(--ink-4);margin-top:8px}
.uz-accepted .uz-icon{color:var(--sage)}
.uz-rejected .uz-icon{color:var(--amber)}
.uz-rejected .uz-text{color:var(--amber)}

/* ═══════════════════════════════════════
   LOADING OVERLAY
═══════════════════════════════════════ */
.loading-overlay{
  display:none;
  margin-top:48px;
  padding:64px 24px;
  text-align:center;
}
.htmx-request .loading-overlay,
.htmx-request.loading-overlay,
.loading-overlay.htmx-request{
  display:block !important;
  animation:loFadeIn 0.4s var(--ease-expo) both;
}
@keyframes loFadeIn{from{opacity:0;transform:translateY(16px)}}

/* Animated rings */
.lo-rings{
  position:relative;width:120px;height:120px;margin:0 auto 32px;
}
.lo-ring{
  position:absolute;inset:0;border-radius:50%;
  border:2px solid transparent;
}
.lo-ring-1{
  border-top-color:var(--sage);border-right-color:var(--sage);
  animation:loSpin 1.8s linear infinite;
}
.lo-ring-2{
  inset:10px;
  border-bottom-color:var(--gold);border-left-color:var(--gold);
  animation:loSpin 2.4s linear infinite reverse;
}
.lo-ring-3{
  inset:20px;
  border-top-color:var(--leaf);border-right-color:var(--leaf);
  animation:loSpin 3.2s linear infinite;
}
@keyframes loSpin{to{transform:rotate(360deg)}}

.lo-icon{
  position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
  color:var(--forest-mid);
  animation:loPulse 2s ease-in-out infinite;
}
@keyframes loPulse{0%,100%{opacity:1;transform:translate(-50%,-50%) scale(1)}50%{opacity:.6;transform:translate(-50%,-50%) scale(0.9)}}

/* Title */
.lo-title{
  font-family:var(--ffd);font-size:24px;font-weight:700;
  color:var(--ink);margin-bottom:24px;letter-spacing:-0.01em;
}

/* Step indicators */
.lo-steps{
  display:inline-flex;flex-direction:column;gap:10px;
  text-align:left;margin-bottom:28px;
}
.lo-step{
  font-family:var(--ffs);font-size:13px;color:var(--ink-4);
  display:flex;align-items:center;gap:10px;
  opacity:0.4;transition:all 0.5s;
}
.lo-step.active{opacity:1;color:var(--forest-mid)}
.lo-step.done{opacity:0.7;color:var(--sage)}
.lo-step.done .lo-dot{background:var(--sage)}
.lo-dot{
  width:8px;height:8px;border-radius:50%;
  background:var(--ink-5);flex-shrink:0;
  transition:background 0.3s;
}
.lo-step.active .lo-dot{
  background:var(--forest-mid);
  animation:loDotPulse 1s ease-in-out infinite;
}
@keyframes loDotPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.4)}}

/* Progress bar */
.lo-bar-wrap{max-width:320px;margin:0 auto 16px}
.lo-bar{height:4px;background:var(--leaf-light);border-radius:2px;overflow:hidden}
.lo-bar-fill{
  height:100%;width:0%;border-radius:2px;
  background:linear-gradient(90deg,var(--sage),var(--gold));
  animation:loBarFill 17s cubic-bezier(0.1,0.5,0.3,1) forwards;
}
@keyframes loBarFill{
  0%{width:0%}
  15%{width:18%}
  35%{width:40%}
  55%{width:60%}
  75%{width:78%}
  90%{width:88%}
  100%{width:95%}
}

.lo-sub{
  font-family:var(--ffs);font-size:12px;color:var(--ink-5);
}

/* Calculator resource links (template + guide) */
.calc-resources{display:flex;align-items:center;gap:8px;margin-bottom:32px;font-family:var(--ffs);font-size:12px;color:var(--ink-4);flex-wrap:wrap}
.calc-res-link{color:var(--sage);font-weight:600;text-decoration:none;transition:color .2s}
.calc-res-link:hover{color:var(--forest-mid);text-decoration:underline}
.calc-res-sep{opacity:0.3}
.calc-res-group{display:inline-flex;align-items:center;gap:4px}
.calc-res-lang{color:var(--sage);font-weight:700;text-decoration:none;padding:2px 8px;border:1px solid var(--leaf);border-radius:4px;font-size:11px;transition:all .2s}
.calc-res-lang:hover{background:var(--leaf-light);color:var(--forest-mid);border-color:var(--sage)}
