/* ==========================================================================
   Paylaşılan input component'leri — Apple Form Template (birebir)
   Hem public başvuru formunda hem admin/builder ekranlarında kullanılır.
   Kaynak: design_handoff_apple_form_kit / Form Template
   ========================================================================== */

/* ---- floating-label field ---- */
.fl{position:relative}
.fl input,.fl select,.fl textarea{
  width:100%;font-family:inherit;font-size:16px;letter-spacing:-0.01em;color:#1d1d1f;
  background:var(--field-bg,#ffffff);border:1px solid #d2d2d7;border-radius:var(--radius,10px);
  padding:22px 14px 7px;line-height:1.2;
  transition:border-color .2s ease, box-shadow .2s ease, background .2s ease;
  outline:none;appearance:none;-webkit-appearance:none;
}
.fl textarea{min-height:96px;resize:vertical;padding-top:26px;line-height:1.45}
/* Textarea kaydırılınca metin floating label'ın altına girmesin:
   üst kısma alanla aynı renkte opak şerit koy, etiket bunun üstünde kalsın. */
.fl:has(> textarea)::before{
  content:"";position:absolute;top:1px;left:1px;right:1px;height:23px;
  background:var(--field-bg,#ffffff);
  border-radius:calc(var(--radius,12px) - 1px) calc(var(--radius,12px) - 1px) 0 0;
  pointer-events:none;z-index:1;
}
.fl:has(> textarea) > label{z-index:2}
.fl select{cursor:pointer;padding-right:40px}
.fl input:hover,.fl select:hover,.fl textarea:hover{border-color:#b0b0b8}
/* Sayı alanlarında tarayıcının +/- okları gizli */
input[type=number]{-moz-appearance:textfield;appearance:textfield}
input[type=number]::-webkit-outer-spin-button,
input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.fl input:focus,.fl select:focus,.fl textarea:focus{border-color:var(--accent,#0071e3)}
.fl label{
  position:absolute;left:15px;top:15px;font-size:16px;letter-spacing:-0.01em;color:#86868b;
  pointer-events:none;transform-origin:left top;
  transition:transform .18s cubic-bezier(.22,.61,.36,1), color .18s ease;
}
.fl input:not([type=hidden]):focus + label,
.fl input:not([type=hidden]):not(:placeholder-shown) + label,
.fl textarea:focus + label,
.fl textarea:not(:placeholder-shown) + label,
.fl[data-floated="1"] label,
.fl-top label{ transform:translateY(-9px) scale(.72); }
.fl input:focus + label,
.fl textarea:focus + label,
.fl[data-focused="1"] label{ color:var(--accent,#0071e3); }
.fl .chevron{position:absolute;right:16px;top:50%;transform:translateY(-50%);pointer-events:none;color:#86868b}
.fl .pw-toggle{position:absolute;right:14px;top:50%;transform:translateY(-50%);border:none;background:none;
  font-family:inherit;font-size:14px;font-weight:500;color:var(--accent,#0071e3);cursor:pointer;padding:4px 6px;border-radius:6px}
.fl .pw-toggle:hover{background:color-mix(in srgb, var(--accent,#0071e3) 10%, transparent)}
.fl-hint{margin:7px 2px 0;font-size:13px;color:#86868b;letter-spacing:-0.01em}
.req{color:#ff3b30}

/* ---- searchable dropdown (combobox) ---- */
.fl.combo{position:relative}
.fl.combo input{padding-right:40px;cursor:text}
.fl.combo[data-focused="1"]{z-index:40}
.combo-panel{position:absolute;top:calc(100% + 6px);left:0;right:0;z-index:50;background:#fff;
  border:1px solid #e4e4e9;border-radius:12px;box-shadow:0 12px 34px -10px rgba(0,0,0,.22);
  padding:6px;max-height:220px;overflow-y:auto}
.combo-opt{padding:9px 12px;border-radius:8px;font-size:15px;letter-spacing:-0.01em;cursor:pointer;color:#1d1d1f}
.combo-opt:hover{background:#f0f0f4}
.combo-opt[data-sel="1"]{color:var(--accent,#0071e3);font-weight:590}
.combo-empty{padding:9px 12px;font-size:14px;color:#86868b}
/* Odaklı combobox içeren kart, panel aşağı taşarken kırpmasın (kısa kartlarda dropdown kesilmesin) */
.lcard:has(.combo[data-focused="1"]){overflow:visible}

/* ---- custom date picker ---- */
.fl.dp{position:relative}
.fl.dp input{cursor:pointer;padding-right:44px}
.fl.dp[data-focused="1"]{z-index:40}
.cal-ic{position:absolute;right:15px;top:50%;transform:translateY(-50%);color:#86868b;pointer-events:none}
.cal-pop{position:absolute;top:calc(100% + 6px);left:0;z-index:50;width:300px;background:#fff;
  border:1px solid #e4e4e9;border-radius:14px;box-shadow:0 14px 40px -12px rgba(0,0,0,.24);padding:12px}
.cal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.cal-title{border:none;background:none;font-family:inherit;font-size:14px;font-weight:600;letter-spacing:-0.01em;color:#1d1d1f;cursor:pointer;padding:5px 10px;border-radius:8px;transition:.15s}
.cal-title:hover{background:#f0f0f4}
.cal-grid.cal-ym{grid-template-columns:repeat(3,1fr);gap:6px;padding:6px 0 2px}
.cal-cell{border:none;background:none;font-family:inherit;font-size:13.5px;font-weight:500;color:#1d1d1f;padding:11px 0;border-radius:9px;cursor:pointer;transition:.12s;font-variant-numeric:tabular-nums}
.cal-cell:hover{background:#f0f0f4}
.cal-cell[data-sel="1"]{background:var(--accent,#0071e3);color:#fff;font-weight:600}
.cal-nav{width:30px;height:30px;border:none;background:none;border-radius:8px;color:#3a3a3c;cursor:pointer;
  display:flex;align-items:center;justify-content:center;transition:.15s}
.cal-nav:hover{background:#f0f0f4}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}
.cal-wd span{font-size:11px;font-weight:600;color:#a1a1a6;text-align:center;padding:4px 0;letter-spacing:.02em}
.cal-day{border:none;background:none;font-family:inherit;font-size:13px;color:#1d1d1f;height:34px;
  border-radius:8px;cursor:pointer;transition:.12s;font-variant-numeric:tabular-nums}
.cal-day:hover{background:#f0f0f4}
.cal-day[data-muted="1"]{color:#c7c7cc}
.cal-day[data-today="1"]{font-weight:700;color:var(--accent,#0071e3)}
.cal-day[data-sel="1"]{background:var(--accent,#0071e3);color:#fff;font-weight:600}
.cal-foot{display:flex;justify-content:space-between;margin-top:8px;padding-top:8px;border-top:1px solid #f0f0f2}
.cal-foot button{border:none;background:none;font-family:inherit;font-size:13px;font-weight:500;
  color:var(--accent,#0071e3);cursor:pointer;padding:5px 8px;border-radius:7px;transition:.15s}
.cal-foot button:hover{background:color-mix(in srgb,var(--accent,#0071e3) 10%,#fff)}

/* ---- checkbox / radio ---- */
.opt{display:flex;align-items:center;gap:13px;cursor:pointer;padding:5px 0}
.opt input{position:absolute;opacity:0;width:0;height:0}
.opt .box{flex:none;width:22px;height:22px;border-radius:6px;border:1.5px solid #c7c7cc;background:#fff;
  display:flex;align-items:center;justify-content:center;transition:.16s ease}
.opt .box.circle{border-radius:50%}
.opt .box svg{opacity:0;transform:scale(.6);transition:.16s ease}
.opt .box .dot{width:9px;height:9px;border-radius:50%;background:#fff;opacity:0;transform:scale(.5);transition:.16s ease}
.opt input:checked + .box{background:var(--accent,#0071e3);border-color:var(--accent,#0071e3)}
.opt input:checked + .box svg{opacity:1;transform:scale(1)}
.opt input:checked + .box .dot{opacity:1;transform:scale(1)}
.opt input:focus-visible + .box{box-shadow:0 0 0 4px color-mix(in srgb, var(--accent,#0071e3) 20%, transparent)}
.opt .opt-txt{font-size:15px;letter-spacing:-0.01em;color:#1d1d1f}
.opt .opt-sub{display:block;font-size:13px;color:#86868b;margin-top:1px}

/* ---- iOS toggle ---- */
.tog-row{display:flex;align-items:center;justify-content:space-between;padding:11px 0;gap:16px}
.tog-row .tog-label{font-size:15px;letter-spacing:-0.01em}
.tog-row .tog-sub{font-size:13px;color:#86868b;margin-top:2px}
.sw{position:relative;flex:none;width:51px;height:31px;cursor:pointer}
.sw input{position:absolute;opacity:0;width:0;height:0}
.sw .track{position:absolute;inset:0;background:#e9e9ea;border-radius:999px;transition:background .25s ease}
.sw .knob{position:absolute;top:2px;left:2px;width:27px;height:27px;background:#fff;border-radius:50%;
  box-shadow:0 3px 8px rgba(0,0,0,.15),0 1px 1px rgba(0,0,0,.1);transition:transform .25s cubic-bezier(.22,.61,.36,1)}
.sw input:checked + .track{background:#34c759}
.sw input:checked ~ .knob{transform:translateX(20px)}

/* ---- segmented control ---- */
.seg{display:inline-flex;background:rgba(120,120,128,.12);border-radius:9px;padding:2px;gap:2px;width:100%}
.seg-btn{flex:1;border:none;background:transparent;font-family:inherit;font-size:14px;font-weight:500;
  color:#1d1d1f;cursor:pointer;padding:7px 14px;border-radius:7px;letter-spacing:-0.01em;transition:.2s ease;white-space:nowrap}
.seg-btn[data-active="1"]{background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 1px rgba(0,0,0,.04);font-weight:590}

/* ---- dropzone ---- */
.dz{border:1.5px dashed #c7c7cc;border-radius:14px;padding:34px 24px;text-align:center;
  background:#fbfbfd;transition:.2s ease;cursor:pointer;display:block}
.dz:hover{border-color:#b0b0b8;background:#f7f7fa}
.dz[data-drag="1"]{border-color:var(--accent,#0071e3);background:color-mix(in srgb, var(--accent,#0071e3) 6%, #fff)}
.dz .dz-icon{width:44px;height:44px;margin:0 auto 12px;border-radius:50%;
  background:color-mix(in srgb, var(--accent,#0071e3) 10%, #fff);color:var(--accent,#0071e3);
  display:flex;align-items:center;justify-content:center}
.dz .dz-title{font-size:16px;font-weight:590;letter-spacing:-0.01em}
.dz .dz-title span{color:var(--accent,#0071e3)}
.dz .dz-sub{font-size:13px;color:#86868b;margin-top:4px}
.file-chip{display:flex;align-items:center;gap:12px;padding:12px 14px;background:#fff;border:1px solid #e4e4e9;border-radius:12px}
.file-chip .fc-icon{flex:none;width:34px;height:34px;border-radius:8px;background:#f0f0f4;color:#6e6e73;display:flex;align-items:center;justify-content:center}
.file-chip .fc-name{font-size:15px;font-weight:500;letter-spacing:-0.01em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.file-chip .fc-size{font-size:13px;color:#86868b;margin-top:1px}
.file-chip .fc-x{flex:none;border:none;background:#f0f0f4;color:#6e6e73;width:28px;height:28px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:.15s}
.file-chip .fc-x:hover{background:#e5e5ea;color:#1d1d1f}

/* ---- yardım ipucu (i) + tooltip ---- */
.tip{position:relative;display:inline-flex;vertical-align:middle}
.tip.tip-field{position:absolute;right:12px;top:17px;z-index:2}
.tip.tip-ctrl{position:absolute;right:40px;top:17px;z-index:2}
.tip.tip-inline{margin-left:7px}
.help-i{width:18px;height:18px;border-radius:50%;background:#e8e8ed;color:#6e6e73;
  display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;
  font-style:normal;line-height:1;cursor:help;font-family:Georgia,"Times New Roman",serif}
.tip:hover .help-i,.tip:focus .help-i{background:#d2d2d7;color:#1d1d1f}
.bubble{position:absolute;bottom:calc(100% + 9px);left:50%;transform:translateX(-50%);
  background:#1d1d1f;color:#fff;font-size:12.5px;font-weight:450;line-height:1.4;padding:8px 11px;
  border-radius:9px;width:max-content;max-width:230px;text-align:left;opacity:0;pointer-events:none;
  transition:opacity .15s ease;z-index:80;box-shadow:0 8px 24px rgba(0,0,0,.22)}
.bubble::after{content:"";position:absolute;top:100%;left:50%;transform:translateX(-50%);
  border:5px solid transparent;border-top-color:#1d1d1f}
.tip:hover .bubble,.tip:focus .bubble,.tip:focus-within .bubble{opacity:1}
.fl.has-help input,.fl.has-help textarea{padding-right:42px}
.fl.combo.has-help input,.fl.dp.has-help input{padding-right:64px}

/* ---- dönem/form başlık badge boşlukları ---- */
.ptitle,
.builder-head .ltitle{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.lmeta .badge-pill{vertical-align:middle;margin-left:3px}

/* ---- Başvurular: tam yükseklik tablo + infinite scroll ---- */
.main:has(.card-fill){height:100vh;overflow:hidden}
.card-fill{flex:1;min-height:0;display:flex;flex-direction:column}
.card-fill .table-wrap{flex:1;min-height:0;overflow-y:auto}
.card-fill thead th{position:sticky;top:0;z-index:2}
.table-loading{padding:16px;text-align:center;color:#86868b;font-size:13px}
.table-empty{padding:44px 16px;text-align:center;color:#86868b;font-size:14px}

/* ---- toast bildirimleri ---- */
.toast-wrap{position:fixed;top:20px;right:20px;z-index:2000;display:flex;flex-direction:column;gap:10px;pointer-events:none}
.toast{position:relative;overflow:hidden;display:flex;align-items:center;gap:11px;background:#fff;border-radius:13px;
  padding:13px 17px;font-size:14px;font-weight:500;color:#1d1d1f;letter-spacing:-0.01em;min-width:240px;max-width:360px;
  pointer-events:auto;opacity:1;box-shadow:0 10px 34px -8px rgba(0,0,0,.28),0 2px 8px rgba(0,0,0,.06);
  animation:toast-in .46s cubic-bezier(.34,1.56,.64,1) both}
@keyframes toast-in{from{opacity:0;transform:translateX(115%)}to{opacity:1;transform:translateX(0)}}
/* giriş → sayaç çubuğu (4.2sn sonra otomatik kapanır) */
.toast::after{content:"";position:absolute;left:0;bottom:0;height:3px;width:100%;border-radius:0 0 13px 13px;
  transform-origin:left;animation:toast-bar 4.2s .2s linear forwards}
@keyframes toast-bar{from{transform:scaleX(1)}to{transform:scaleX(0)}}
.toast-ok::after{background:color-mix(in srgb,#34c759 55%,#fff)}
.toast-err::after{background:color-mix(in srgb,#ff3b30 55%,#fff)}
/* çıkış */
.toast.toast-out{opacity:0;transform:translateX(24px) scale(.98);animation:none;transition:opacity .3s ease,transform .3s ease}
.toast .toast-ic{width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex:none;
  animation:toast-pop .5s .12s cubic-bezier(.34,1.56,.64,1) both}
@keyframes toast-pop{from{transform:scale(0)}to{transform:scale(1)}}
.toast-ok .toast-ic{background:color-mix(in srgb,#34c759 16%,#fff);color:#248a3d}
.toast-err .toast-ic{background:color-mix(in srgb,#ff3b30 12%,#fff);color:#d13b30}
@media (prefers-reduced-motion:reduce){
  .toast,.toast .toast-ic{animation:none}
  .toast::after{display:none}
}

/* ---- tam sayfa spinner ---- */
.page-spinner{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;
  background:rgba(255,255,255,.55);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}
.page-spinner .spinner{width:40px;height:40px;border-radius:50%;border:3px solid rgba(0,0,0,.12);
  border-top-color:var(--accent);animation:spin .7s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

/* ---- onay modalı ---- */
.confirm-icon{width:44px;height:44px;border-radius:50%;background:color-mix(in srgb,#ff3b30 10%,#fff);color:#d13b30;
  display:flex;align-items:center;justify-content:center;margin-bottom:14px}
.confirm-icon--neutral{background:color-mix(in srgb,var(--accent) 12%,#fff);color:var(--accent)}
.confirm-title{font-size:17px;font-weight:640;letter-spacing:-0.02em;color:#1d1d1f;margin-bottom:6px}
.confirm-msg{font-size:14px;line-height:1.5;color:#6e6e73}

/* ---- repeatable list ---- */
.rlist{display:flex;flex-direction:column;gap:8px}
.rrow{display:flex;gap:8px;align-items:flex-start}
/* Kolonlar responsive grid: sığdıkça yan yana, sığmayınca alt satıra kayar (min 150px) */
.rrow-cols{flex:1;min-width:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px}
.rrow .fl{flex:1;min-width:0}
.rrow .rx{flex:none;border:none;background:#f0f0f4;color:#6e6e73;width:38px;height:38px;border-radius:10px;cursor:pointer;display:flex;align-items:center;justify-content:center;margin-top:4px;transition:.15s}
.rrow .rx:hover{background:#e5e5ea;color:#1d1d1f}
.radd{align-self:flex-start;border:none;background:none;color:var(--accent,#0071e3);font-family:inherit;font-size:14px;font-weight:550;cursor:pointer;padding:6px 2px}
