/* DAL OS arayüz stilleri.
   2026-08-17: index.html 491 KB'lık tek dosyaydı; CSS, JavaScript ve
   HTML iç içeydi, her küçük değişiklik riskliydi. Stiller buraya
   alındı. SIRA KORUNMUŞTUR — CSS'te sıra önceliği belirler, bloklar
   index.html'deki sırayla birleştirilmiştir. */

/* ---- index.html 1. stil bloğu ---- */
:root{
    /* 2026-08-06: Premium Kuyumcu İşletim Sistemi paleti — koyu antrasit
       zemin, mat/zarif altın vurgu. Değişken adları korunuyor (uygulama
       genelinde yüzlerce var(--...) referansı var), yalnızca değerler
       yeni kimliğe göre güncellendi. */
    --bg:#0B0D10;
    --bg2:#10141A;
    --card:#151A21;
    --card2:#1A2029;
    --accent:#C9A35C;
    --accent2:#DAB96F;
    --text:#F4F2ED;
    --muted:#A6AFBC;
    --faint:#747E8C;
    --border:#29313D;
    --green:#31C48D;
    --danger:#F97066;
    --info:#6AA8FF;
  }
  *{box-sizing:border-box;}
  body{
    margin:0;
    font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","SF Pro Display","Inter","Segoe UI",Roboto,sans-serif;
    font-variant-numeric:tabular-nums;
    background:var(--bg);
    color:var(--text);
    min-height:100vh;
    min-height:100dvh;
    padding:20px;
    -webkit-user-select:text;
    -webkit-touch-callout:default;
  }
  .wrap{
    max-width:760px;
    margin:0 auto;
  }
  header{
    text-align:center;
    margin-bottom:24px;
  }
  .brand-logo-wrap{
    display:flex;
    justify-content:center;
    margin:0 auto 10px;
  }
  .brand-logo{
    display:block;
    width:min(330px,72vw);
    height:auto;
    filter:drop-shadow(0 8px 18px rgba(0,0,0,.46));
  }
  header h1{
    font-size:1.4rem;
    margin:0 0 4px 0;
    background:linear-gradient(90deg,var(--accent2),var(--accent));
    -webkit-background-clip:text;
    background-clip:text;
    color:transparent;
    font-weight:700;
  }
  header p{
    color:var(--muted);
    font-size:0.85rem;
    margin:0;
  }
  .card{
    background:var(--card);
    border:1px solid var(--border);
    border-radius:16px;
    padding:20px;
    margin-bottom:18px;
    box-shadow:0 4px 20px rgba(0,0,0,0.25);
  }
  .card h2{
    font-size:0.95rem;
    color:var(--accent2);
    margin:0 0 14px 0;
    display:flex;
    align-items:center;
    gap:8px;
  }
  .voice-scroll-target{
    animation:voiceTargetPulse 1.2s ease;
  }
  @keyframes voiceTargetPulse{
    0%,100%{border-color:var(--border);}
    35%{border-color:var(--accent); box-shadow:0 0 0 4px rgba(212,175,55,.14);}
  }
  .inputs-grid{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:14px;
  }
  .inputs-grid .full{
    grid-column:1 / -1;
  }
  label{
    display:block;
    font-size:0.78rem;
    color:var(--danger);
    font-weight:700;
    margin-bottom:6px;
  }
  label::before{
    content:"❗ ";
  }
  .input-box{
    position:relative;
  }
  .terazi-vurgu{
    grid-column:1 / -1;
    padding:14px;
    border-radius:12px;
    background:#7b2028;
    border:1px solid #ff6b73;
  }
  #girdilerCard{
    position:sticky;
    top:calc(10px + env(safe-area-inset-top));
    z-index:50;
    box-shadow:0 10px 30px rgba(0,0,0,.48);
  }
  .quick-menu{
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(150px,1fr));
    gap:12px;
    margin-top:12px;
    padding:3px 1px 7px;
  }
  .quick-menu-button{
    width:100%;
    min-width:0;
    min-height:64px;
    padding:13px 14px;
    border:1.5px solid rgba(255,255,255,.28);
    border-radius:15px;
    background:linear-gradient(145deg,#6d5415,#3b2b08);
    color:#fff;
    box-shadow:0 8px 18px rgba(0,0,0,.28), inset 0 1px rgba(255,255,255,.15);
    font-size:.92rem;
    font-weight:900;
    line-height:1.2;
    white-space:normal;
    cursor:pointer;
    touch-action:manipulation;
    transition:transform .15s ease, filter .15s ease, box-shadow .15s ease;
  }
  .quick-menu-button:hover{
    filter:brightness(1.12);
    transform:translateY(-2px);
    box-shadow:0 11px 22px rgba(0,0,0,.34), inset 0 1px rgba(255,255,255,.18);
  }
  .quick-menu-button:active{
    transform:translateY(0) scale(.98);
  }
  .quick-menu-button[data-quick-target="standartFantaziPanel"],
  .quick-menu-button[data-quick-target="fantaziTakiCard"]{
    background:linear-gradient(145deg,#9a6813,#5f3808);
    border-color:#f0bd45;
  }
  .quick-menu-button[data-quick-target="robertoBravoCard"]{
    background:linear-gradient(145deg,#8e304d,#511b34);
    border-color:#e8769c;
  }
  .quick-menu-button[data-quick-target="alyansCard"]{
    background:linear-gradient(145deg,#7046a5,#412967);
    border-color:#b991ed;
  }
  .quick-menu-button[data-quick-target="ceyrekCard"]{
    background:linear-gradient(145deg,#8b6320,#51380e);
    border-color:#ffd166;
  }
  .quick-menu-button[data-quick-target="fiyatKurGirdileriCard"]{
    background:linear-gradient(145deg,#256f85,#164757);
    border-color:#5cc9df;
  }
  .quick-menu-button[data-quick-target="ocrCard"]{
    background:linear-gradient(145deg,#5d4aa0,#332768);
    border-color:#a994ef;
  }
  .quick-menu-button[data-quick-target="kayitliAltinListeCard"]{
    background:linear-gradient(145deg,#8c5d20,#4e310f);
    border-color:#e4ac55;
  }
  .quick-menu-button[data-quick-target="pwaCard"]{
    background:linear-gradient(145deg,#287651,#15452f);
    border-color:#6bd39c;
  }
  .quick-menu-button[data-quick-target="alimGucuCard"]{
    background:linear-gradient(145deg,#b07b18,#674207);
    border-color:#ffe08a;
    box-shadow:0 8px 18px rgba(0,0,0,.28),0 0 0 1px rgba(255,224,138,.12),inset 0 1px rgba(255,255,255,.18);
  }
  .quick-menu-button:focus-visible{
    outline:2px solid var(--accent2);
    outline-offset:2px;
  }
  .things-quick-panel{
    grid-column:span 4;
    border:1.5px solid rgba(118,208,255,.54);
    border-radius:15px;
    background:linear-gradient(145deg,#1d5c81,#102f4a);
    box-shadow:0 8px 18px rgba(0,0,0,.28), inset 0 1px rgba(255,255,255,.14);
    overflow:hidden;
  }
  .things-quick-panel summary{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:12px;
    min-height:64px;
    padding:13px 16px;
    color:#fff;
    font-size:.94rem;
    font-weight:900;
    cursor:pointer;
    list-style:none;
  }
  .things-quick-panel summary::-webkit-details-marker{display:none;}
  .things-quick-panel summary::after{content:'⌄'; color:#9ee7ff; font-size:1.35rem; transition:transform .18s ease;}
  .things-quick-panel[open] summary::after{transform:rotate(180deg);}
  .things-quick-subtitle{color:#b9e6fb; font-size:.72rem; font-weight:750;}
  .things-quick-body{display:grid; gap:8px; padding:0 14px 14px; border-top:1px solid rgba(255,255,255,.14);}
  .things-quick-note{display:flex; align-items:center; gap:8px; padding:8px 9px; border-radius:10px; background:rgba(0,0,0,.2);}
  .things-quick-note span{color:#aee5ff; font-weight:900;}
  .things-quick-note input[type="checkbox"]{width:18px; height:18px; margin:0; accent-color:#62d69a; flex:0 0 auto;}
  .things-quick-note input[type="text"]{flex:1; min-width:0; border:0; outline:0; background:transparent; color:#fff; font:inherit; font-size:.82rem;}
  .things-quick-note input[type="text"]::placeholder{color:#b5cbd5;}
  .things-notes-list{display:grid; gap:8px;}
  .things-note-remove{flex:0 0 auto; width:30px; height:30px; padding:0; border:0; border-radius:8px; background:rgba(255,92,92,.14); color:#ffb2b7; font-size:1rem; cursor:pointer;}
  .things-quick-actions{display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-top:2px;}
  .things-quick-actions .btn-secondary{padding:9px 12px; font-size:.8rem;}
  .things-quick-status{margin:0; color:#b9e6fb; font-size:.73rem;}
  .things-complete-modal[hidden]{display:none!important;}
  .things-complete-modal{position:fixed; inset:0; z-index:10020; display:grid; place-items:center; padding:16px;}
  .things-complete-backdrop{position:absolute; inset:0; background:rgba(0,0,0,.74); backdrop-filter:blur(4px); -webkit-backdrop-filter:blur(4px);}
  .things-complete-panel{position:relative; width:min(430px,100%); max-height:min(72vh,620px); overflow:auto; padding:16px; border:1px solid rgba(118,208,255,.5); border-radius:16px; background:#122b3d; box-shadow:0 22px 60px rgba(0,0,0,.55);}
  .things-complete-head{display:flex; align-items:center; justify-content:space-between; gap:12px;}
  .things-complete-head h2{margin:0; color:#fff; font-size:1rem;}
  .things-complete-close{width:34px; height:34px; border:0; border-radius:10px; background:rgba(255,255,255,.12); color:#fff; font-size:1.35rem; cursor:pointer;}
  .things-complete-list{display:grid; gap:8px; margin:14px 0 0; padding:0; list-style:none;}
  .things-complete-list li{display:flex; align-items:center; justify-content:space-between; gap:10px; padding:10px; border-radius:10px; background:rgba(98,214,154,.12); color:#d8f6e6; font-size:.85rem;}
  .things-complete-list li span{min-width:0; overflow-wrap:anywhere;}
  .things-complete-delete{flex:0 0 auto; border:1px solid rgba(255,126,132,.5); border-radius:8px; padding:5px 8px; background:rgba(156,43,52,.28); color:#ffd9dc; font:inherit; font-size:.72rem; font-weight:850; cursor:pointer;}
  .things-complete-empty{margin:14px 0 0; color:#b9e6fb; font-size:.84rem;}
  .quick-menu-label{
    margin-top:16px;
    color:#e4d8ab;
    font-size:.72rem;
    font-weight:800;
    letter-spacing:.08em;
    text-transform:uppercase;
  }
  /* BİLEZİKTE "grama fark" SATIRI GÖSTERİLMEZ.
     Bilezik gramajı serbesttir; bütçe neye yetiyorsa o kadar alınır.
     "16,40 grama fark" bilgisi karar vermeye yaramıyor, yalnızca
     ekranı kalabalıklaştırıyordu. Külçe ve adetli ürünlerde anlamlı
     olduğu için oralarda duruyor.
     Kural CSS'te: JavaScript durum değişimlerinde (boş, hata, hazır)
     satırın yanlışlıkla geri gelmesi mümkün olmasın. */
  [data-alim-result="bracelet"] [data-alim-next-row]{ display:none; }

  .alim-gucu-note{
    margin:0 0 14px;
    color:#4a4331;
    font-size:.82rem;
    line-height:1.55;
  }
  .alim-gucu-budget-grid{
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:10px;
  }
  .alim-gucu-budget{
    padding:12px;
    border:1px solid #e3d3a8;
    border-radius:14px;
    background:#fdf6e6;
  }
  .alim-gucu-budget label{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:8px;
    margin-bottom:7px;
    color:#5c430f;
    font-size:.8rem;
    font-weight:850;
  }
  .alim-gucu-currency{
    color:#7a5a12;
    font-size:.72rem;
    letter-spacing:.04em;
  }
  .alim-gucu-total{
    display:grid;
    gap:5px;
    margin:12px 0;
    padding:14px;
    border:1px solid #b6e0cd;
    border-radius:15px;
    background:#eaf7f1;
  }
  .alim-gucu-total-label{
    color:#0f6b49;
    font-size:.75rem;
    font-weight:850;
    letter-spacing:.06em;
    text-transform:uppercase;
  }
  .alim-gucu-total-value{
    color:#0b4f36;
    font-size:clamp(1.45rem,5vw,2rem);
    font-weight:950;
    line-height:1.1;
  }
  .alim-gucu-rate-summary{
    color:#3d6b58;
    font-size:.73rem;
    line-height:1.45;
  }
  .alim-gucu-warning{
    margin:10px 0;
    padding:11px 12px;
    border:1px solid #f0bcbc;
    border-radius:12px;
    background:#fdecec;
    color:#8f2027;
    font-size:.8rem;
    font-weight:750;
    line-height:1.45;
  }
  .alim-gucu-warning[hidden]{display:none!important;}
  .alim-gucu-results{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:11px;
    margin-top:12px;
  }
  .alim-gucu-result{
    min-width:0;
    padding:13px;
    border:1px solid rgba(255,213,106,.3);
    border-radius:16px;
    background:#fdf6e6;
    box-shadow:0 8px 22px rgba(0,0,0,.24),inset 0 1px rgba(255,255,255,.06);
  }
  .alim-gucu-result[data-state="unavailable"]{
    border-color:rgba(255,107,115,.4);
  }
  .alim-gucu-result-head{
    display:flex;
    align-items:center;
    gap:9px;
    margin-bottom:9px;
  }
  .alim-gucu-result-icon{
    display:grid;
    width:38px;
    height:38px;
    flex:0 0 38px;
    place-items:center;
    border:1px solid rgba(255,213,106,.3);
    border-radius:11px;
    background:#f6e7c2;
    font-size:1.2rem;
  }
  .alim-gucu-result h3{
    margin:0;
    color:#5c430f;
    font-size:.92rem;
    line-height:1.2;
  }
  .alim-gucu-result-subtitle{
    display:block;
    margin-top:3px;
    color:#6b5a2e;
    font-size:.67rem;
    line-height:1.3;
  }
  .alim-gucu-primary{
    display:block;
    color:#7a5a12;
    font-size:1.42rem;
    font-weight:950;
    line-height:1.12;
  }
  .alim-gucu-detail{
    min-height:2.7em;
    margin:5px 0 10px;
    color:#4a4331;
    font-size:.7rem;
    line-height:1.35;
  }
  .alim-gucu-metrics{
    display:grid;
    gap:6px;
    margin:0;
  }
  .alim-gucu-metrics > div{
    display:flex;
    align-items:flex-start;
    justify-content:space-between;
    gap:10px;
    padding-top:6px;
    border-top:1px solid rgba(255,255,255,.08);
  }
  .alim-gucu-metrics dt{
    color:#63605a;
    font-size:.68rem;
  }
  .alim-gucu-metrics dd{
    margin:0;
    color:#20232b;
    font-size:.72rem;
    font-weight:850;
    text-align:right;
  }
  .alim-gucu-suggestion{
    min-height:3.5em;
    margin:10px 0 0;
    padding:8px 9px;
    border-radius:10px;
    background:#eaf7f1;
    color:#0f6b49;
    font-size:.69rem;
    font-weight:720;
    line-height:1.4;
  }
  .alim-gucu-suggestion-line{
    display:block;
  }
  .alim-gucu-suggestion-line + .alim-gucu-suggestion-line{
    margin-top:5px;
  }
  .alim-gucu-suggestion-line--secondary{
    color:#4a4331;
  }
  .alim-gucu-scenarios{
    display:grid;
    gap:8px;
    margin-top:10px;
    padding-top:10px;
    border-top:1px solid rgba(255,213,106,.22);
  }
  .alim-gucu-scenarios[hidden]{display:none!important;}
  .alim-gucu-scenarios-title{
    color:#7a5a12;
    font-size:.72rem;
    font-weight:900;
    letter-spacing:.04em;
    text-transform:uppercase;
  }
  .alim-gucu-scenario{
    padding:9px;
    border:1px solid rgba(88,178,255,.36);
    border-radius:11px;
    background:#eef5fb;
  }
  .alim-gucu-scenario[data-state="unavailable"]{
    border-color:rgba(255,107,115,.4);
    background:#fdecec;
  }
  .alim-gucu-scenario-head{
    display:flex;
    align-items:flex-start;
    justify-content:space-between;
    gap:8px;
  }
  .alim-gucu-scenario-head span{
    color:#1c5580;
    font-size:.7rem;
    font-weight:850;
  }
  .alim-gucu-scenario-head strong{
    color:#5c430f;
    font-size:.83rem;
    text-align:right;
  }
  .alim-gucu-scenario-price,
  .alim-gucu-scenario-composition{
    margin:5px 0 0;
    color:#3a4a5c;
    font-size:.64rem;
    line-height:1.4;
  }
  .alim-gucu-scenario-composition{color:#6b5a2e;}
  .alim-gucu-scenario-metrics{
    display:grid;
    gap:3px;
    margin-top:7px;
    padding-top:7px;
    border-top:1px solid rgba(255,255,255,.08);
  }
  .alim-gucu-scenario-metrics span{
    color:#20232b;
    font-size:.66rem;
    font-weight:760;
  }
  .alim-gucu-scenario-suggestion{
    margin:7px 0 0;
    color:#0f6b49;
    font-size:.63rem;
    line-height:1.4;
  }
  .alim-gucu-footnote{
    margin-top:12px;
    color:#63605a;
    font-size:.69rem;
    line-height:1.5;
  }
  @media(max-width:560px){
    .quick-menu{grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px;}
    .quick-menu-button{min-height:58px; font-size:.82rem; padding:10px 8px;}
    .things-quick-panel{grid-column:1 / -1;}
    .things-quick-panel summary{min-height:58px; padding:10px 12px; font-size:.86rem;}
    .alim-gucu-budget-grid,.alim-gucu-results{grid-template-columns:1fr;}
    .alim-gucu-budget-grid{gap:8px;}
    .alim-gucu-result{padding:12px;}
    .brand-logo{width:min(275px,78vw);}
  }
  .quick-modal[hidden]{display:none!important;}
  .quick-modal{
    position:fixed;
    inset:0;
    z-index:10000;
    display:grid;
    place-items:center;
    padding:calc(12px + env(safe-area-inset-top)) 10px calc(12px + env(safe-area-inset-bottom));
  }
  .quick-modal-backdrop{
    position:absolute;
    inset:0;
    background:rgba(0,0,0,.78);
    backdrop-filter:blur(5px);
    -webkit-backdrop-filter:blur(5px);
  }
  .quick-modal-panel{
    position:relative;
    width:min(980px,100%);
    max-height:calc(100dvh - 24px - env(safe-area-inset-top) - env(safe-area-inset-bottom));
    overflow:auto;
    border:1px solid rgba(212,175,55,.62);
    border-radius:18px;
    background:var(--card);
    box-shadow:0 24px 70px rgba(0,0,0,.7);
    overscroll-behavior:contain;
  }
  /* Deneme: birleşik 14K / Roberto Bravo penceresinde canlı Dernek fiyatları. */
  .quick-modal-14k-reference{
    grid-template-columns:minmax(350px,430px) minmax(0,980px);
    gap:16px;
    justify-content:center;
  }
  .quick-modal-14k-reference .quick-modal-panel{width:100%;}
  .quick-14k-reference{
    position:relative;
    display:none;
    width:100%;
    max-height:calc(100dvh - 24px - env(safe-area-inset-top) - env(safe-area-inset-bottom));
    overflow:auto;
    padding:16px;
    border:1px solid rgba(212,175,55,.62);
    border-radius:18px;
    background:var(--card);
    box-shadow:0 24px 70px rgba(0,0,0,.7);
  }
  .quick-modal-14k-reference .quick-14k-reference{display:block;}
  .quick-14k-reference h2{margin:0;color:var(--accent2);font-size:1.12rem;line-height:1.35;}
  .quick-14k-reference-live{margin:9px 0 16px;color:var(--green);font-size:.76rem;font-weight:850;}
  .quick-14k-reference-head,.quick-14k-reference-row{display:grid;grid-template-columns:minmax(0,1fr) 112px 112px;gap:9px;align-items:center;}
  .quick-14k-reference-head{padding:0 10px 8px;color:var(--muted);font-size:.67rem;font-weight:900;text-align:right;}
  .quick-14k-reference-head span:first-child{text-align:left;}
  .quick-14k-reference-row{padding:13px 10px;border-top:1px solid var(--border);font-size:.8rem;}
  .quick-14k-reference-row strong{display:flex;align-items:center;gap:8px;min-width:0;color:var(--text);line-height:1.25;}
  .quick-14k-reference-thumb{width:42px;height:42px;flex:0 0 42px;object-fit:contain;filter:drop-shadow(0 4px 5px rgba(0,0,0,.42));}
  .quick-14k-reference-row [data-ref-alis]{color:var(--green);font-weight:850;text-align:right;white-space:nowrap;}
  .quick-14k-reference-row [data-ref-satis]{color:var(--accent2);font-weight:850;text-align:right;white-space:nowrap;}
  .quick-14k-reference-note{margin:14px 0 0;color:var(--muted);font-size:.64rem;line-height:1.45;}
  .quick-14k-reference-fx{margin-top:16px;padding-top:12px;border-top:2px solid rgba(212,175,55,.38);}
  .quick-14k-reference-fx h3{margin:0 0 9px;color:var(--accent2);font-size:.84rem;}
  .quick-14k-reference-fx-head,.quick-14k-reference-fx-row{display:grid;grid-template-columns:minmax(0,1fr) 112px 112px;gap:9px;align-items:center;}
  .quick-14k-reference-fx-head{padding:0 10px 7px;color:var(--muted);font-size:.65rem;font-weight:900;text-align:right;}
  .quick-14k-reference-fx-head span:first-child{text-align:left;}
  .quick-14k-reference-fx-row{padding:11px 10px;border-top:1px solid var(--border);font-size:.8rem;}
  .quick-14k-reference-fx-row strong{color:var(--text);}
  .quick-14k-reference-fx-row span{font-weight:850;text-align:right;white-space:nowrap;}
  .quick-14k-reference-fx-row span:nth-child(2){color:var(--green);}
  .quick-14k-reference-fx-row span:nth-child(3){color:var(--accent2);}
  #standartFantaziPanel #maliyetCard{display:block;}
  @media(max-width:1380px){
    .quick-modal-14k-reference{display:grid;grid-template-columns:1fr;place-items:center;}
    .quick-modal-14k-reference .quick-14k-reference{display:none;}
  }
  .quick-modal-head{
    position:sticky;
    top:0;
    z-index:3;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:12px;
    padding:13px 14px;
    border-bottom:1px solid var(--border);
    background:rgba(24,27,34,.96);
    backdrop-filter:blur(8px);
    -webkit-backdrop-filter:blur(8px);
  }
  .quick-modal-title{
    margin:0;
    color:var(--accent2);
    font-size:1rem;
  }
  .quick-modal-close{
    width:40px;
    height:40px;
    border:1px solid var(--border);
    border-radius:10px;
    background:var(--card2);
    color:var(--text);
    font-size:1.35rem;
    line-height:1;
    cursor:pointer;
  }
  .quick-modal-back{
    width:40px;
    height:40px;
    flex:0 0 auto;
    border:1px solid var(--border);
    border-radius:10px;
    background:var(--card2);
    color:var(--text);
    font-size:1.2rem;
    line-height:1;
    cursor:pointer;
  }
  .quick-modal-actions{
    display:flex;
    align-items:center;
    gap:8px;
    flex:0 0 auto;
  }
  .quick-modal-reset{
    width:40px;
    height:40px;
    border:1px solid rgba(62,207,142,.72);
    border-radius:10px;
    background:rgba(62,207,142,.13);
    color:#86efbd;
    font-size:1.3rem;
    font-weight:900;
    line-height:1;
    cursor:pointer;
    touch-action:manipulation;
    transition:transform .16s ease, background .16s ease, color .16s ease;
  }
  .quick-modal-reset:hover{
    background:rgba(62,207,142,.24);
    transform:rotate(-18deg);
  }
  .quick-modal-reset:active{
    transform:rotate(-40deg) scale(.94);
  }
  .quick-modal-reset.is-done{
    background:rgba(62,207,142,.3);
    color:#fff;
    transform:none;
  }
  .quick-modal-reset[hidden]{display:none!important;}
  .quick-modal-body{padding:14px;}
  .quick-sales-nav{
    position:sticky;
    top:67px;
    z-index:2;
    display:grid;
    grid-template-columns:repeat(7,minmax(0,1fr));
    gap:9px;
    padding:12px 14px;
    border-bottom:1px solid var(--border);
    background:rgba(18,22,28,.96);
    backdrop-filter:blur(8px);
    -webkit-backdrop-filter:blur(8px);
  }
  .quick-sales-nav[hidden]{display:none!important;}
  .quick-barcode-panel{grid-column:1/-1;border:1px solid rgba(213,173,88,.35);border-radius:13px;background:rgba(213,173,88,.07);overflow:hidden}.quick-barcode-panel:not([open])>.quick-barcode-entry{display:none}.quick-barcode-panel>summary{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:46px;padding:8px 13px;color:var(--accent2);font-weight:900;cursor:pointer;list-style:none}.quick-barcode-panel>summary::-webkit-details-marker{display:none}.quick-barcode-panel>summary span{display:flex;align-items:center;gap:8px}.quick-barcode-panel>summary small{color:var(--muted);font-weight:750;text-align:right}.quick-barcode-panel>summary::after{content:'⌄';font-size:1.2rem;transition:transform .18s ease}.quick-barcode-panel[open]>summary::after{transform:rotate(180deg)}.quick-barcode-panel[open]>summary{border-bottom:1px solid rgba(213,173,88,.24)}
  .quick-barcode-entry{display:grid;grid-template-columns:auto minmax(170px,1fr) auto auto auto;align-items:center;gap:8px;padding:9px}
  .quick-barcode-entry label{display:flex;align-items:center;gap:6px;color:var(--accent2);font-weight:850;white-space:nowrap}.quick-barcode-entry input{min-height:42px;border:1px solid var(--border);border-radius:9px;background:#090d13;color:var(--text);padding:8px 11px;font:inherit}.quick-barcode-entry button,.quick-barcode-entry a{display:inline-flex;align-items:center;justify-content:center;min-height:42px;border:0;border-radius:9px;padding:0 13px;background:var(--green);color:#07150f;font-weight:850;text-decoration:none;white-space:nowrap}.quick-barcode-entry a{background:#29303b;color:var(--text)}.quick-barcode-entry small{grid-column:2/-1;color:var(--muted)}.quick-barcode-entry small[data-hata="1"]{color:#ff9b9b}
  .quick-barcode-camera{background:#2d68d3!important;color:#fff!important}.dal-barkod-kamera{position:fixed;z-index:13000;inset:0;display:grid;place-items:center;padding:max(14px,env(safe-area-inset-top)) 14px max(14px,env(safe-area-inset-bottom));background:#000d}.dal-barkod-kamera[hidden]{display:none}.dal-barkod-kamera-arka{position:absolute;inset:0;width:100%;height:100%;border:0;background:transparent}.dal-barkod-kamera-panel{position:relative;width:min(560px,100%);max-height:100%;overflow:auto;border:1px solid #3a4352;border-radius:20px;background:#0e131b;color:#f4f7fb;box-shadow:0 24px 80px #000;padding:14px}.dal-barkod-kamera-panel header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.dal-barkod-kamera-panel header small{color:#d9b75f;font-weight:850;letter-spacing:.1em}.dal-barkod-kamera-panel h2{margin:2px 0 0;font-size:1.15rem}.dal-barkod-kamera-kapat{position:relative;min-width:44px;min-height:44px;border:1px solid #4c5666;border-radius:50%;background:#1b2330;color:#fff;font-size:1.5rem}.dal-barkod-video-alani{position:relative;overflow:hidden;aspect-ratio:4/3;border-radius:15px;background:#000}.dal-barkod-video-alani video{display:block;width:100%;height:100%;object-fit:cover}.dal-barkod-hedef{position:absolute;left:8%;right:8%;top:35%;height:30%;border:2px solid #e4bd58;border-radius:14px;box-shadow:0 0 0 999px #0003}.dal-barkod-hedef::after{content:'';position:absolute;left:8%;right:8%;top:50%;height:2px;background:#ff5a5f;box-shadow:0 0 12px #ff5a5f}.dal-barkod-kamera-panel>p{min-height:1.5em;margin:12px 2px;color:#dfe7f2;text-align:center;font-weight:750}.dal-barkod-kamera-islemler{display:flex;gap:8px;justify-content:center}.dal-barkod-kamera-islemler button{min-height:44px;border:1px solid #4c5666;border-radius:10px;background:#202a38;color:#fff;padding:0 16px;font-weight:800}.dal-barkod-kamera-not{display:block;margin-top:10px;color:#9ca8b8;text-align:center;line-height:1.4}.dal-barkod-toast{position:fixed;z-index:13200;left:50%;top:max(18px,env(safe-area-inset-top));transform:translateX(-50%);width:min(560px,calc(100% - 28px));padding:13px 17px;border:1px solid rgba(81,212,154,.65);border-radius:13px;background:#10271f;color:#d9fff0;box-shadow:0 16px 50px #000b;text-align:center;font-weight:800}.dal-barkod-toast.hata{border-color:#ff7f83;background:#32181b;color:#ffd8da}
  .quick-sales-category,
  .quick-sales-more{
    min-height:54px;
    border:1px solid var(--border);
    border-radius:13px;
    background:var(--card2);
    color:var(--text);
    font:inherit;
    font-size:.78rem;
    font-weight:850;
    line-height:1.2;
    text-align:center;
    cursor:pointer;
    touch-action:manipulation;
  }
  /* 2026-08-22 (Barış): "telde bazen 1 kategori seçtikten sonra 2
     kategoriye basarsam ona geçmiyor ve 2 kategori düğmesi basılı
     kalıyor."

     SEBEP: :hover ile [aria-pressed="true"] AYNI görünümü veriyordu.
     Dokunmatik ekranda :hover parmak kalktıktan sonra da son dokunulan
     öğenin üstünde ASILI KALIR (iOS Safari; başka bir yere dokunana
     kadar silinmez). Yani ekran değişmese bile düğme "seçili" görünüyor
     — kullanıcı geçişin olduğunu sanıyor, olmuyor.

     Seçili olma bilgisi yalnız aria-pressed'ten okunmalı; :hover artık
     yalnız GERÇEK imleci olan cihazlarda (fare/trackpad) uygulanıyor.
     Böylece telefonda tek doğru kaynak kalıyor. */
  .quick-sales-category[aria-pressed="true"]{
    border-color:var(--accent);
    background:linear-gradient(135deg,rgba(212,175,55,.3),rgba(212,175,55,.12));
    color:var(--accent2);
  }
  @media(hover:hover) and (pointer:fine){
    .quick-sales-category:hover{
      border-color:var(--accent);
      background:linear-gradient(135deg,rgba(212,175,55,.3),rgba(212,175,55,.12));
      color:var(--accent2);
    }
  }
  /* Dokunuşun kendisi görülsün ama iz bırakmasın: :active parmak
     kalkınca kendiliğinden silinir, :hover gibi asılı kalmaz. */
  .quick-sales-category:active{transform:scale(.985);}
  .quick-sales-category{-webkit-tap-highlight-color:transparent;}
  .quick-sales-more{width:100%;padding:0 34px 0 12px;appearance:auto;}
  .sarrafiye-urun{
    display:flex;
    align-items:center;
    gap:9px;
    min-width:150px;
    font-weight:850;
  }
  .sarrafiye-urun img{
    width:38px;
    height:38px;
    flex:0 0 38px;
    object-fit:contain;
    filter:drop-shadow(0 3px 4px rgba(0,0,0,.38));
  }
  @media(max-width:720px){
    .quick-sales-nav{top:67px;grid-template-columns:repeat(2,minmax(0,1fr));padding:9px;gap:7px;}
    .quick-barcode-panel>summary{padding:7px 10px}.quick-barcode-panel>summary small{max-width:52%;font-size:.72rem}.quick-barcode-entry{grid-template-columns:1fr 1fr}.quick-barcode-entry label,.quick-barcode-entry input{grid-column:1/-1}.quick-barcode-entry button{white-space:normal}.quick-barcode-entry a{grid-column:1/-1}.quick-barcode-entry small{grid-column:1/-1}.dal-barkod-kamera{padding-left:8px;padding-right:8px}.dal-barkod-kamera-panel{border-radius:16px;padding:10px}
    .quick-sales-category,.quick-sales-more{min-height:50px;font-size:.72rem;}
    .quick-sales-more-wrap{grid-column:1 / -1;}
  }
  /* Tabletlerde satış kategori bandı içerikle beraber sabitlenince
     Roberto Bravo tablosunun sütunlarını kapatıyordu. Ana pencere
     başlığı sabit kalır; kategori bandı ise bir kez yukarı kayar. */
  @media(max-width:1380px){.quick-sales-nav{position:static;}}
  .quick-weight-panel{margin:0 0 14px;}
  .quick-modal-body > .card{
    margin:0;
    padding:0;
    border:0;
    box-shadow:none;
    background:transparent;
  }
  .quick-modal-content{animation:quickModalIn .18s ease;}
  .quick-menu-only:not(.quick-modal-content){display:none;}
  @keyframes quickModalIn{
    from{opacity:0; transform:translateY(8px);}
    to{opacity:1; transform:none;}
  }
  body.quick-modal-open{overflow:hidden;}
  .terazi-vurgu label{
    color:#fff;
  }
  .terazi-vurgu input[type="text"]{
    background:#9f2933;
    border-color:#ff9aa0;
    color:#fff;
  }
  .terazi-vurgu input[type="text"]::placeholder{
    color:rgba(255,255,255,.72);
  }
  input[type="text"]{
    width:100%;
    background:var(--card2);
    border:1.5px solid var(--danger);
    border-radius:10px;
    padding:12px 14px;
    color:var(--text);
    font-size:1rem;
    outline:none;
    transition:border-color .15s;
    -webkit-appearance:none;
    -webkit-font-size-adjust:100%;
    font-size:16px;
  }
  input[type="text"]:focus{
    border-color:var(--accent);
  }
  .suffix{
    position:absolute;
    right:12px;
    top:50%;
    transform:translateY(-50%);
    color:var(--muted);
    font-size:0.8rem;
    pointer-events:none;
  }
  .summary-row{
    display:flex;
    justify-content:space-between;
    align-items:center;
    padding:10px 0;
    border-bottom:1px solid var(--border);
  }
  .summary-row:last-child{
    border-bottom:none;
  }
  .summary-row .label{
    color:var(--muted);
    font-size:0.85rem;
  }
  .summary-row .value{
    font-weight:700;
    font-size:1.1rem;
    color:var(--accent2);
  }
  .ozel-musteri-ayar-grid{
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(180px,1fr));
    gap:10px;
    margin:0 0 14px;
  }
  .ozel-satis-toplam{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:9px;
    padding:10px 0;
    border-bottom:1px solid var(--border);
    cursor:pointer;
  }
  .ozel-satis-toplam:last-child{border-bottom:none;}
  .ozel-satis-toplam input[type="checkbox"]{width:19px; height:19px; accent-color:#35c878; flex-shrink:0;}
  .ozel-satis-toplam .label{color:var(--muted); font-size:0.85rem; flex:1;}
  .ozel-satis-toplam .value{font-weight:700; font-size:1.1rem; color:var(--accent2);}

  /* 2026-08-05: kart içi bölümler (1 Gram/Bilezik/Çeyrek/Yarım/Cumhuriyet/
     Dolar/Euro) arasındaki ayrım belirsizdi — kalın, vurgulu üst çizgi ve
     büyütülmüş/kalınlaştırılmış bölüm başlığıyla netleştirildi. */
  #ozelMusteriCard h2{
    font-size:1.25rem;
    font-weight:900;
    border-bottom:2px solid var(--accent);
    padding-bottom:12px;
    margin-bottom:18px;
  }
  .ozel-musteri-bolum{
    margin-top:26px;
    padding-top:20px;
    border-top:3px solid var(--accent);
  }
  /* 2026-08-05: Sarrafiye Satış ve Hurda Alış — iki alt tabloyu (satış/alış)
     tek kart içinde, açıkça ayrılmış iki bölüm olarak okunur kılar. */
  .sarrafiye-hurda-altbaslik{
    font-size:1.1rem;
    font-weight:850;
    color:var(--text);
    margin:0 0 16px;
    padding-bottom:10px;
    border-bottom:2px solid var(--accent);
  }
  .sarrafiye-hurda-altbolum-ayrac{
    margin-top:30px;
    padding-top:26px;
    border-top:3px solid var(--border);
  }
  /* 2026-08-05 (4. tur): tablolar/yazılar belirgin olsun diye kalınlaştırıldı;
     ünlem işaretleri kaldırıldı. Fiyat seçici (Liste / indirimli) hücreleri. */
  .sarrafiye-hurda-card .sarrafiye-hurda-altbolum table{
    font-weight:700;
    width:100%;
    border-collapse:separate;
    border-spacing:0;
  }
  .sarrafiye-hurda-card .sarrafiye-hurda-altbolum thead th{
    font-weight:800;
    font-size:0.8rem;
    color:var(--text);
  }
  .sarrafiye-hurda-card .sarrafiye-hurda-altbolum tbody td:first-child{
    font-weight:800;
  }
  /* 2026-08-05 (6. tur): fiyat seçicili satırlarda (Fiyat hücresi input+select
     olduğu için daha uzun) hücreler varsayılan olarak dikey ortalanıyor, bu da
     Adet/Gram kutusunu aşağı kaymış gösteriyordu. Tüm hücreleri üste hizala. */
  .sarrafiye-hurda-card .sarrafiye-hurda-altbolum tbody td{
    vertical-align:top;
  }
  .sarrafiye-hurda-fiyat-hucre{
    display:flex;
    flex-direction:column;
    gap:6px;
    min-width:130px;
  }
  .sarrafiye-hurda-fiyat-hucre span{
    font-weight:800;
  }
  .sarrafiye-hurda-secim{
    width:100%;
    background:var(--card2);
    border:1.5px solid var(--border);
    border-radius:8px;
    padding:6px 8px;
    color:var(--text);
    font-size:0.72rem;
    font-weight:700;
    outline:none;
    -webkit-appearance:none;
  }
  .sarrafiye-hurda-secim:focus{
    border-color:var(--accent);
  }
  .sarrafiye-hurda-secim-buyuk{
    font-size:0.85rem;
    padding:8px 10px;
  }

  /* 2026-08-06: satış tablosu UX sadeleştirmesi — kullanıcı: "sıradan
     insan bile kolay anlamalı, derli toplu olsun, kötü şekil/renkleri
     kaldır, profesyonel dursun". Değişen şey yalnızca GÖRÜNÜM: hücre
     id'leri, sütun sırası ve hesap mantığı hiç dokunulmadı.
     Yaklaşım: (1) her hücreye nefes payı, (2) satır zebra deseniyle göz
     satırı kaybetmesin, (3) ikincil/analitik sütunlar (Maliyet, K Oranı,
     Kâr, EUR) soluklaştırılıp arka plana itildi — göz önce Ürün / Fiyat /
     Tahsil edilecek tutara gitsin, (4) iki para sütunu (Nakit, Kartlı)
     her satırda hafif vurgulu, GENEL TOPLAM satırında güçlü kutulu, (5)
     mobilde yatay kaydırmada Ürün sütunu sabit kalsın, (6) üstte grup
     başlığıyla (Girdi / Tahsil Edilecek / Kârlılık / Döviz) sütunların
     ne işe yaradığı tek bakışta anlaşılsın. */
  .sarrafiye-hurda-card .sarrafiye-hurda-altbolum td,
  .sarrafiye-hurda-card .sarrafiye-hurda-altbolum th{
    padding:11px 9px;
  }
  .sarrafiye-hurda-card .sarrafiye-hurda-altbolum tbody tr{
    border-bottom:1px solid var(--border);
  }
  .sarrafiye-hurda-card .sarrafiye-hurda-altbolum tbody tr:nth-child(even){
    background:var(--card2);
  }
  .sarrafiye-hurda-card .sarrafiye-hurda-altbolum tbody tr:hover{
    background:rgba(201,163,92,.08);
  }
  .sarrafiye-hurda-card .sarrafiye-hurda-altbolum table th:first-child,
  .sarrafiye-hurda-card .sarrafiye-hurda-altbolum table td:first-child{
    position:sticky;
    left:0;
    z-index:1;
    background:var(--card);
    box-shadow:2px 0 0 var(--border);
  }
  .sarrafiye-hurda-card .sarrafiye-hurda-altbolum thead th:first-child{
    z-index:2;
  }
  .sarrafiye-hurda-grup-satiri th{
    padding:6px 9px;
    background:var(--bg2);
    color:var(--muted);
    font-size:.62rem;
    font-weight:800;
    text-transform:uppercase;
    letter-spacing:.06em;
    border-bottom:1px solid var(--border);
  }
  /* İkincil/analitik sütunlar: Maliyet, K Oranı, Kâr, EUR karşılığı —
     bilgi olarak orada dursun ama göz önce fiyat/tahsilat sütunlarına
     gitsin diye soluk ve normal kalınlıkta. */
  .sarrafiye-hurda-card #altinSatisTablosu tbody td:nth-child(4),
  .sarrafiye-hurda-card #altinSatisTablosu tbody td:nth-child(7),
  .sarrafiye-hurda-card #altinSatisTablosu tbody td:nth-child(8),
  .sarrafiye-hurda-card #altinSatisTablosu tbody td:nth-child(9){
    color:var(--muted);
    font-weight:600;
    font-size:.78rem;
  }
  /* 2026-08-05 (5. tur), 2026-08-06'da yumuşatıldı: "toplam nakit" ve
     "kartlı satış" (satış tablosu), "toplam TL" (hurda tablosu) sütunları
     her ÜRÜN satırında artık ince/hafif vurgulu (kalın çerçeveli kutu
     tekrar tekrar tekrarlanınca göz yoruyordu); GENEL TOPLAM satırında
     ise güçlü, kutulu, gözden kaçmayacak şekilde kalıyor. */
  .sarrafiye-hurda-card #altinSatisTablosu tbody td:nth-child(5){
    background:rgba(201,163,92,.09);
    border-left:3px solid rgba(201,163,92,.5);
    font-weight:850;
    color:var(--accent2);
  }
  .sarrafiye-hurda-card #altinSatisTablosu tbody td:nth-child(6){
    background:rgba(49,196,141,.09);
    border-left:3px solid rgba(49,196,141,.5);
    font-weight:850;
    color:var(--green);
  }
  .sarrafiye-hurda-card #altinSatisTablosu tfoot td#satisGenelToplam{
    border:2.5px solid var(--accent);
    border-radius:9px;
    background:rgba(201,163,92,.16);
    font-weight:900;
  }
  .sarrafiye-hurda-card #altinSatisTablosu tfoot td#satisGenelToplamKart{
    border:2.5px solid var(--green);
    border-radius:9px;
    background:rgba(49,196,141,.16);
    font-weight:900;
  }
  .sarrafiye-hurda-card #hurdaTablosu tbody td:nth-child(4){
    background:rgba(201,163,92,.09);
    border-left:3px solid rgba(201,163,92,.5);
    font-weight:850;
    color:var(--accent2);
  }
  .sarrafiye-hurda-card #hurdaTablosu tfoot td#hurdaGenelToplam{
    border:2.5px solid var(--accent);
    border-radius:9px;
    background:rgba(201,163,92,.16);
    font-weight:900;
  }
  /* 2026-08-07: hurda tablosu UX — kullanıcı "hızlı olacağım ve hata
     yapmayacağım şekilde" istedi. Satış tablosuyla aynı mantık: göz önce
     Ürün → Adet/Gram girişi → "Ödenecek" (Toplam TL, zaten altın kutulu)
     akışına gitsin. Toptancıya Satış/Kâr/Kâr%/EUR arka plan/analitik
     bilgidir, müşteriye öderken anlık gerekmez — soluklaştırıldı ki göz
     yanlışlıkla oradan tutar okumasın. Hesap mantığı/id'ler değişmedi. */
  .sarrafiye-hurda-card #hurdaTablosu tbody td:nth-child(5),
  .sarrafiye-hurda-card #hurdaTablosu tbody td:nth-child(6),
  .sarrafiye-hurda-card #hurdaTablosu tbody td:nth-child(7),
  .sarrafiye-hurda-card #hurdaTablosu tbody td:nth-child(8){
    color:var(--muted);
    font-weight:600;
    font-size:.78rem;
  }
  /* Adet/Gram girişi bu tabloda tek anlık işlem noktası — müşteri
     beklerken hızlı ve YANLIŞSIZ girilebilsin diye diğer tablo
     girdilerinden daha büyük/okunaklı. */
  .sarrafiye-hurda-card #hurdaTablosu tbody td:nth-child(2) .table-input{
    font-size:1rem;
    font-weight:800;
    padding:10px 12px;
    border-width:2px;
  }
  .sarrafiye-hurda-card .sarrafiye-hurda-altbolum tfoot td{
    padding-top:13px;
    border-top:2px solid var(--border);
  }
  .ozel-musteri-bolum .summary-row .label{
    font-size:1.05rem;
    font-weight:800;
    color:var(--accent2);
    text-transform:uppercase;
    letter-spacing:.03em;
  }

  /* Hızlı işlem görünümü: kasa sırasında yalnız giriş ve tahsilat/ödeme
     sütunları görünür. Ayrıntılar açıldığında mevcut analiz sütunları geri
     gelir; hesap alanları ve formüller değiştirilmez. */
  .operation-screen .operation-details{
    margin-top:12px;
    border:1px solid var(--border);
    border-radius:11px;
    background:var(--card2);
  }
  .operation-screen .operation-details summary{
    padding:13px 14px;
    color:var(--muted);
    font-size:.8rem;
    font-weight:800;
    cursor:pointer;
    list-style:none;
  }
  .operation-screen .operation-details summary::-webkit-details-marker{display:none;}
  .operation-screen .operation-details summary::after{content:' ▾'; color:var(--accent);}
  .operation-screen .operation-details[open] summary::after{content:' ▴';}
  .operation-screen .operation-detail-copy{padding:0 14px 13px; color:var(--muted); font-size:.72rem;}
  /* Derli toplu görünümde maliyet (4), K oranı (7), kâr (8) ve EUR (9)
     sütunları gizlenir — ekranda yalnız girdi ve tahsilat kalır.

     2026-08-19: bu kural yalnız #altinSatisTablosu için yazılmıştı. Bilezik
     kendi tablosuna taşınınca (#bilezikSatisTablosu) kapsam dışında kaldı,
     dokuz sütun birden sıkıştı ve maliyet rakamı fiyat seçicisinin üstüne
     bindi. Barış: "yazı resmin üstüne gelmiş." Yeni tablo eklenirse
     buraya da eklenmeli. */
  /* 2026-08-19 (Barış): "sarrafiye satış bölümünde ve bilezik bölümünde
     euro satış değerini de ekleriz tabloya."

     EUR sütunu (9) zaten VARDI — yalnız burada gizleniyordu. Yenisini
     yazmak yerine listeden çıkarıldı; ikinci bir EUR sütunu eklenseydi
     iki ayrı hesap yan yana durur, hangisi doğru sorusu doğardı.
     Hücreleri renderAltinSatis dolduruyor (satır: prefix+'ToplamEUR',
     genel toplam: 'GenelToplamEUR'), kur boşken '—' yazıyor.

     Maliyet (4), K oranı (7) ve kâr (8) GİZLİ KALIYOR: müşteriyle
     konuşurken ekranda maliyet durmasın. Hurda tablosu da kapsam dışı,
     Barış yalnız bu iki bölümü istedi. */
  .operation-screen:not(:has(.operation-details[open])) :is(#altinSatisTablosu,#bilezikSatisTablosu) :is(th,td):nth-child(4),
  .operation-screen:not(:has(.operation-details[open])) :is(#altinSatisTablosu,#bilezikSatisTablosu) :is(th,td):nth-child(7),
  .operation-screen:not(:has(.operation-details[open])) :is(#altinSatisTablosu,#bilezikSatisTablosu) :is(th,td):nth-child(8){display:none;}
  .operation-screen:not(:has(.operation-details[open])) #hurdaTablosu :is(th,td):nth-child(n+5){display:none;}
  .operation-screen:not(:has(.operation-details[open])) .doviz-islem-table :is(th,td):nth-child(3),
  .operation-screen:not(:has(.operation-details[open])) .doviz-islem-table :is(th,td):nth-child(4),
  .operation-screen:not(:has(.operation-details[open])) .doviz-islem-table :is(th,td):nth-child(6){display:none;}
  /* 14K ve Roberto Bravo'da maliyet, EUR satış ve net kâr kasa sırasında
     doğrudan görünür; ayrıntı düğmesi yalnız formül açıklamasını yönetir. */
  .operation-screen:not(:has(.operation-details[open])) > .formula-note,
  .operation-screen:not(:has(.operation-details[open])) .card > .formula-note,
  .operation-screen:not(:has(.operation-details[open])) .doviz-kur-ozet{display:none;}
  .operation-screen .operation-primary-results{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:9px; margin-top:12px;}
  .operation-screen .operation-primary-results .summary-row{margin:0; padding:14px; border:1px solid var(--border); border-radius:11px; background:var(--card2);}
  .dal-trade-workspace{width:100%;}
  /* 2026-08-19: "1fr 1fr" tam İKİ sekme varsayıyordu. Bilezik üçüncü sekme
     olarak eklenince alt satıra düşüp gözden kaçtı (Barış: "bilezik sekmesi
     hiç görünmüyor"). Artık sütun sayısı sekme sayısına göre kendiliğinden
     oluşuyor — dördüncü sekme eklense de tek satırda kalır. */
  .dal-trade-tabs{
    display:grid;
    grid-auto-flow:column;
    grid-auto-columns:1fr;
    gap:7px;
    margin:0 0 18px;
    padding:0;
  }
  .dal-trade-tab{
    min-height:50px;
    padding:10px 12px;
    border:1px solid #343d49;
    border-radius:12px;
    background:#1a2029;
    color:#b7c0cb;
    font:800 .8rem/1.25 inherit;
    cursor:pointer;
    touch-action:manipulation;
  }
  .dal-trade-tab[aria-selected="true"]{
    border-color:var(--accent);
    background:var(--accent);
    color:#17130a;
    box-shadow:0 7px 20px rgba(201,163,92,.22);
  }
  /* Adet/Gram kırmızısı burada DEĞİL — aşağıda, derli toplu görünüm
     kuralından SONRA tanımlı. Önce buraya yazılmıştı ama o kural girdileri
     açık zemine boyayıp kırmızıyı eziyordu. Ayrıca burada bilezik istisnası
     yoktu ve bilezik hücresini de kırmızı yapıyordu. Tek yerde tutuluyor. */

  /* 2026-08-19: JS'te sekmeSeridi.hidden = true yapmak TEK BAŞINA yetmiyor.
     .dal-trade-tabs "display:grid" taşıdığı için tarayıcının [hidden]
     kuralını eziyor ve şerit görünmeye devam ediyordu (Barış: "hala
     duruyor"). Hemen altındaki panel kuralı da aynı sebeple yazılmış. */
  .dal-trade-workspace .dal-trade-tabs[hidden]{display:none!important;}
  .dal-trade-workspace [data-trade-panel][hidden]{display:none!important;}
  .dal-trade-workspace [data-karli-panel][hidden],
  .dal-trade-workspace [data-fx-panel][hidden]{display:none!important;}
  .dal-trade-workspace .sarrafiye-hurda-card{
    margin:0;
    border-radius:16px;
  }
  .dal-trade-workspace .sarrafiye-hurda-card > h2{
    margin-bottom:14px;
    font-family:Georgia,serif;
    font-size:1.45rem;
    font-weight:500;
    color:var(--text);
  }
  .dal-trade-unit-price{
    display:block;
    margin-top:4px;
    color:var(--muted);
    font-size:.66rem;
    font-weight:600;
    white-space:normal;
  }
  /* 2026-08-24 (Barış): "24 ayar külçede gram fiyatı + külçe toplamı yazan
     kutuya gerek yok, boşluk diğer ürünlerle aynı oranda olsun." Külçe
     etiketi artık .dal-trade-unit-price ile birebir aynı (kutu/vurgu yok);
     bu kural kasıtlı olarak boş bırakıldı, .is-kulce sınıfı JS'de artık hiç
     eklenmiyor ama eski kayıtlı görünümlerle uyum için seçici siliniyor. */
  .dal-trade-total{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:14px;
    margin-top:14px;
    padding:16px;
    border:1px solid var(--accent);
    border-radius:13px;
    background:#201c13;
  }
  .dal-trade-total span{
    color:var(--text);
    font-size:.74rem;
    font-weight:850;
    letter-spacing:.03em;
  }
  .dal-trade-total strong{
    color:#efcf83;
    font-size:1.32rem;
    font-weight:950;
    text-align:right;
  }
  .dal-trade-workspace .operation-details{
    overflow:hidden;
    background:transparent;
  }
  .dal-trade-workspace .operation-details summary{min-height:46px;}
  .hurda-kar-ozet{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:10px;
    margin-top:12px;
  }
  .hurda-kar-ozet>div{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:12px;
    padding:14px;
    border:1px solid rgba(76,214,151,.35);
    border-radius:12px;
    background:rgba(76,214,151,.08);
  }
  .hurda-kar-ozet span{font-size:.72rem;font-weight:850;color:var(--muted);}
  .hurda-kar-ozet strong{font-size:1.08rem;font-weight:950;color:var(--green);}
  @media(max-width:640px){.hurda-kar-ozet{grid-template-columns:1fr;}}
  /* Referans görseldeki kasa görünümü: ayrıntılar kapalıyken yalnız
     Ürün → Miktar → Tahsilat/Ödenecek kalır. Fiyat, maliyet ve kârlılık
     hücreleri DOM'da ve formüllerde yaşamaya devam eder. */
  .dal-trade-workspace .operation-screen:not(:has(.operation-details[open])) .sarrafiye-hurda-altbaslik,
  .dal-trade-workspace .operation-screen:not(:has(.operation-details[open])) > .alim-gucu-note,
  .dal-trade-workspace .operation-screen:not(:has(.operation-details[open])) .sarrafiye-hurda-altbolum > .alim-gucu-note,
  .dal-trade-workspace .operation-screen:not(:has(.operation-details[open])) table thead .sarrafiye-hurda-grup-satiri,
  .dal-trade-workspace .operation-screen:not(:has(.operation-details[open])) table tfoot{display:none!important;}
  /* 14 Ayar satış onayı ayrıntılarda saklanmaz: Satıldı kutusu ve etiketi
     doğrudan ana fiyat satırında görünür. Böylece çalışan seçtiği K oranını
     ikinci ekranı açmadan işaretleyip aşağıdaki kayıt düğmesine basabilir. */
  #standartFantaziPanel .dal-kar-tik,
  #standartFantaziPanel .dal-kar-secim-yazi{display:inline-block!important;}
  /* Döviz işlem yönü ana kasa ekranında seçilir. Alındı/Satıldı tikleri
     ayrıntı paneline bağlı değildir ve ayrıntılar kapalıyken de görünür. */
  #dovizAlisSatisPanel .dal-doviz-tikler{display:flex!important;}
  .dal-trade-workspace .operation-screen:not(:has(.operation-details[open])) .dal-satis-tik{display:inline-block!important;vertical-align:middle;}
  .dal-trade-workspace .operation-screen:not(:has(.operation-details[open])) .dal-satildi-btn{display:block!important;}
  .satis-ust-kontroller{display:flex;align-items:end;gap:10px;flex-wrap:wrap;margin-bottom:14px}.satis-ust-kontroller .input-box{width:min(240px,100%);margin:0!important}.satis-fiyat-modu-not{color:var(--muted);font-size:.67rem;line-height:1.35;max-width:340px;padding-bottom:5px}
  /* 2026-08-17 (Barış): "'üst seçime göre' yazısını taşırma."
     max-width:145px dar ekranda hücreden geniş kalıyordu; üstelik sol
     marj 29px de ekleniyor (145+29=174px > hücre). Sabit genişlik yerine
     hücreye uyan bir tavan: hangisi küçükse o. */
  .dal-bilezik-hizli-secim{display:block;width:100%;max-width:min(145px,100%);min-width:0;box-sizing:border-box;min-height:32px;margin:6px 0 0 29px;padding:4px 7px;border:1px solid var(--border);border-radius:8px;background:var(--card);color:var(--text);font-size:.62rem;font-weight:800;text-overflow:ellipsis}
  /* Sabit sütunlu dar görünümde ürün resmi kadar soldan boşluk vermek
     seçiciyi hücre dışına itiyor; orada marj kaldırılır. */
  .dal-trade-workspace .operation-screen:not(:has(.operation-details[open])) .dal-bilezik-hizli-secim{
    margin-left:0;
    max-width:100%;
  }
  /* 2026-08-19 (Barış): "kartlı satışı da koy, 3 değer de yan yana
     okunabilsin (adet/gr, toplam nakit ve kartlı satış üçünü de
     kaydırmadan okuyabileyim)."

     Kartlı Satış (altıncı sütun) derli toplu görünümde GİZLİYDİ; artık
     görünüyor. Dördüncü sütun (Maliyet) gizli kalmaya devam ediyor —
     müşteriyle konuşurken ekranda maliyet durmasın. */
  .dal-trade-workspace #bilezikSarrafiyeSatisCard:not(:has(.operation-details[open])) #altinSatisTablosu :is(th,td):nth-child(3),
  .dal-trade-workspace #bilezikSarrafiyeSatisCard:not(:has(.operation-details[open])) #altinSatisTablosu :is(th,td):nth-child(4),
  .dal-trade-workspace #bilezikSarrafiyeSatisCard:not(:has(.operation-details[open])) #altinSatisTablosu :is(th,td):nth-child(7),
  .dal-trade-workspace #bilezikSarrafiyeSatisCard:not(:has(.operation-details[open])) #altinSatisTablosu :is(th,td):nth-child(8),
  /* 2026-08-24 (Barış): "hepsini okuyabilmeliyim düzgün." Bilezik tablosu
     bu gizleme kuralına hiç dahil edilmemişti — dokuz sütunun tamamı
     derli toplu görünümde açık kalıyor, tablo ekran genişliğini aşıp
     yatay kaydırmaya zorluyordu (Nakit/Kartlı/EUR hücreleri de bu yüzden
     "kayıyormuş" gibi görünüyordu). Sarrafiyeyle BİREBİR aynı dört sütun
     (Satış Fiyatı, Maliyet, K Oranı, Kâr) burada da gizlenir. */
  .dal-trade-workspace #bilezikSatisCard:not(:has(.operation-details[open])) #bilezikSatisTablosu :is(th,td):nth-child(3),
  .dal-trade-workspace #bilezikSatisCard:not(:has(.operation-details[open])) #bilezikSatisTablosu :is(th,td):nth-child(4),
  .dal-trade-workspace #bilezikSatisCard:not(:has(.operation-details[open])) #bilezikSatisTablosu :is(th,td):nth-child(7),
  .dal-trade-workspace #bilezikSatisCard:not(:has(.operation-details[open])) #bilezikSatisTablosu :is(th,td):nth-child(8),
  /* 2026-08-19: EUR (9) BURADAN da çıkarıldı. Barış "sarrafiyede euro
     bölümü ilk çıkan sayfada yok" dedi. Sütunu gizleyen İKİ ayrı kural
     vardı, biri açıldı diğeri gözden kaçtı — ve testim yalnız birinci
     listeye baktığı için "geçti" dedi. Kuralın YAZILDIĞINI doğrulamak,
     KAZANDIĞINI doğrulamak değildir. */
  .dal-trade-workspace #hurdaAlisCard:not(:has(.operation-details[open])) #hurdaTablosu :is(th,td):nth-child(3),
  .dal-trade-workspace #hurdaAlisCard:not(:has(.operation-details[open])) #hurdaTablosu :is(th,td):nth-child(n+5){display:none;}
  .dal-trade-workspace .operation-screen:not(:has(.operation-details[open])) table{
    table-layout:fixed;
    border-collapse:separate;
    border-spacing:0;
  }
  .dal-trade-workspace .operation-screen:not(:has(.operation-details[open])) table thead th{
    padding:0 9px 8px;
    border:0;
    color:#8f9aa8;
    font-size:.64rem;
    text-transform:uppercase;
    letter-spacing:.04em;
  }
  .dal-trade-workspace .operation-screen:not(:has(.operation-details[open])) table tbody tr{background:var(--card2);}
  .dal-trade-workspace .operation-screen:not(:has(.operation-details[open])) table tbody td{
    padding:10px 9px;
    border-bottom:1px solid var(--border);
    vertical-align:middle;
  }
  .dal-trade-workspace .operation-screen:not(:has(.operation-details[open])) table :is(th,td):first-child{width:35%; text-align:left!important;}
  /* 2026-08-17 (Barış): "ürün yazılarını biraz sola çekmek lazım, çizgili
     tablonun üstüne geliyor."

     Sebep bu iki kuralın ÇARPIŞMASI:
       · yukarıdaki satır ilk sütunu %42'ye sabitliyor ve tablo
         "table-layout:fixed" — yani hücre içeriğe göre BÜYÜMÜYOR,
       · .sarrafiye-urun ise "min-width:150px" ile en az 150px istiyor.

     Telefonda %42 ≈ 143px. Ürün adı hücresinden geniş kalıyor ve fazlası
     yan sütunun üstüne taşıyor. Masaüstünde sütun geniş olduğu için
     görünmüyordu; sorun yalnız dar ekranda ortaya çıkıyor.

     min-width:0 ile kutu hücre kadar daralabiliyor, metin de sarıyor.
     Sağdaki pay ayraç çizgisine yapışmasın diye. */
  .dal-trade-workspace .operation-screen:not(:has(.operation-details[open])) .sarrafiye-urun{
    min-width:0;
    padding-right:6px;
    word-break:normal;
    overflow-wrap:normal;
    hyphens:none;
    text-overflow:ellipsis;
    white-space:nowrap;
    overflow:hidden;
  }
  .dal-trade-workspace .operation-screen:not(:has(.operation-details[open])) table :is(th,td):nth-child(2){width:24%;}
  .dal-trade-workspace #bilezikSarrafiyeSatisCard:not(:has(.operation-details[open])) table :is(th,td):nth-child(5),
  .dal-trade-workspace #hurdaAlisCard:not(:has(.operation-details[open])) table :is(th,td):nth-child(4){width:34%; text-align:right; color:var(--accent2); font-weight:900;}
  .dal-trade-workspace .operation-screen:not(:has(.operation-details[open])) .table-input{
    min-width:0;
    height:42px;
    padding:7px 8px;
    border:1.5px solid #46515f;
    border-radius:9px;
    background:#f7f5ef;
    color:#111820;
    font-size:1.02rem;
    font-weight:900;
    text-align:center;
  }
  /* 2026-08-19 (Barış): "adet/gr kutularını bilezikteki terazi gram
     ağırlığı gibi kırmızı siyah kutu tasarımında yap, ama hali hazırdaki
     boyutu değiştirme."

     ÖNEMLİ: bu kural YUKARIDAKİ derli toplu görünüm kuralından SONRA ve
     daha güçlü seçiciyle yazılmak zorunda. Yukarısı .table-input'u açık
     zemine (#f7f5ef) boyuyor ve önceki denemede kırmızıyı eziyordu —
     ekranda hiçbir şey değişmemiş gibi görünüyordu.

     Yalnız RENK veriliyor: yükseklik, iç boşluk, kenarlık kalınlığı,
     yazı boyutu üstteki kuraldan aynen geliyor, ölçü değişmiyor. */
  /* 2026-08-19 (Barış): "orada adet/gram kutusu da kırmızı, onu kırmızı
     yapma." Bilezik ekranında gram zaten EN ÜSTTEKİ kırmızı terazi
     kutusundan giriliyor; tablodaki hücrenin de kırmızı olması "iki ayrı
     yere mi gireceğim?" izlenimi veriyordu. Bu yüzden bilezik tablosu
     kapsam dışı — kırmızı yalnız sarrafiye ve hurda tablolarında. */
  /* ── RENK DİLİ (2026-08-19) ────────────────────────────────────────
     kırmızı  → buraya rakam gir      (terazi, Adet/Gram)
     yeşil    → satıştan alacağın TL  (Satış / Toplam · Nakit)
     turuncu  → kartlı tahsilat       (komisyon binmiş tutar)

     KURALLAR TABLO ADIYLA YAZILIYOR, sütun numarasıyla değil. İlk deneme
     ".dal-trade-workspace td:nth-child(n)" biçimindeydi ve 14 Ayar
     tablosuna da sızdı: orada ikinci sütun Adet/Gram değil SATIŞ (TL)
     olduğu için satış tutarı kırmızıya boyandı. Barış ekran görüntüsüyle
     bildirdi. Sütun numarası tabloya göre başka şey demek — tek isim
     verip geçmek yanlış. */

  /* Girdi: yalnız sarrafiye ve hurda tablolarının Adet/Gram sütunu.
     Bilezik hariç — orada gram en üstteki terazi kutusundan giriliyor. */
  .dal-trade-workspace :is(#altinSatisTablosu,#hurdaTablosu) td:nth-child(2) input.table-input{
    background:#9f2933;
    border-color:#ff9aa0;
    color:#fff;
  }
  .dal-trade-workspace :is(#altinSatisTablosu,#hurdaTablosu) td:nth-child(2) input.table-input::placeholder{
    color:rgba(255,255,255,.72);
  }
  .dal-trade-workspace :is(#altinSatisTablosu,#hurdaTablosu) td:nth-child(2){
    background:#7b2028;
    border-radius:12px;
  }

  /* Yeşil — satıştan alacağın tutar.
     Satış tablolarında Toplam · Nakit beşinci, hurdada Toplam dördüncü
     sütun. Kâr tablolarında (14K, Roberto, Alyans, Fantazi) hücre zaten
     [data-satis-tutar] ile işaretli; satış kaydı da onu bu işaretten
     buluyor, yani ayrışma riski yok. */
  #altinSatisTablosu td:nth-child(5),
  #bilezikSatisTablosu td:nth-child(5),
  #hurdaTablosu td:nth-child(4),
  [data-satis-tutar]{
    background:#0b4530;
    border-radius:12px;
    color:#fff;
    font-weight:800;
  }
  [data-satis-tutar] .tl-val{color:#fff;}

  /* Turuncu — kartlı tahsilat. Nakitle aynı yeşilde olsalardı bir anlık
     dikkatsizlikte karışırdı; aradaki fark komisyon kadar, yani para.
     Kâr tablolarında kartlı hücre, satış tutarının hemen sağındaki. */
  #altinSatisTablosu td:nth-child(6),
  #bilezikSatisTablosu td:nth-child(6),
  [data-satis-tutar] + td{
    background:#7c3a06;
    border-radius:12px;
    color:#fff;
    font-weight:800;
  }
  [data-satis-tutar] + td .tl-val{color:#fff;}
  .dal-kar-workspace > [data-karli-panel]{margin:0;}
  .dal-kar-workspace #standartFantaziPanel > .card,
  .dal-kar-workspace #robertoBravoCard{
    margin:0;
    border:0;
    box-shadow:none;
  }
  .dal-kar-workspace .operation-screen:not(:has(.operation-details[open])) :is(#karTablosu,#rbKarTablosu){
    table-layout:fixed;
    border-collapse:separate;
    border-spacing:0;
  }
  .dal-kar-workspace .operation-screen:not(:has(.operation-details[open])) :is(#karTablosu,#rbKarTablosu) :is(th,td){
    padding:11px 9px;
    border-bottom:1px solid var(--border);
    text-align:center;
  }
  .dal-kar-workspace .operation-screen:not(:has(.operation-details[open])) :is(#karTablosu,#rbKarTablosu) th{
    color:#8f9aa8;
    font-size:.64rem;
    text-transform:uppercase;
  }
  /* 2026-08-17 (Barış): "satıldı kutusu ile satış, kartlı satış ve euro
     yazılarının arasında çok fazla boşluk var, alyans ekranındaki gibi
     yapsana, telefonda rahat kullanayım."

     Buradaki eski kurallar üç sütunu sabitliyordu: %22 + %39 + %39 = %100.
     Yani Satış (TL) ve Kartlı Satış sütunları tablonun tamamını
     paylaşıyor, rakamların iki yanında kocaman boşluk kalıyor, kalan
     sütunlar (EUR, Net K) ekran dışına itiliyordu.

     Alyans tablosunda (alyansKarTablosu) hiç genişlik kuralı YOK —
     sütunlar içeriğe göre büyüyor ve bu yüzden derli toplu duruyor.
     Aynısı burada da yapıldı: yüzdeler kaldırıldı. Maliyet sütunu da
     gizlendiği için iki tablo artık aynı altı sütuna sahip. */
  .dal-kar-workspace .operation-screen:not(:has(.operation-details[open])) .kar-badge{font-size:.82rem;}
  .dal-kar-workspace :is(#karTablosu,#rbKarTablosu){
    /* min-width kaldırıldı (2026-08-17): 880px, altı sütunu telefon
       ekranından taşırıp yatay kaydırmaya zorluyordu. */
    table-layout:auto!important;
  }
  .dal-kar-workspace #standartFantaziPanel #maliyetCard,
  .dal-kar-workspace #robertoBravoCard > .summary-row{display:none;}
  .dal-fx-workspace{width:100%;}
  .dal-fx-workspace > [data-fx-panel]{margin:0;}
  .dal-fx-workspace .harem-live-bar{margin-bottom:14px;}
  .dal-fx-workspace .operation-screen:not(:has(.operation-details[open])) .doviz-islem-table{
    table-layout:fixed;
    border-collapse:separate;
    border-spacing:0;
  }
  .dal-fx-workspace .operation-screen:not(:has(.operation-details[open])) .doviz-islem-table :is(th,td){
    padding:11px 9px;
    border-bottom:1px solid var(--border);
  }
  .dal-fx-workspace .operation-screen:not(:has(.operation-details[open])) .doviz-islem-table :is(th,td):first-child{width:22%; text-align:left!important;}
  .dal-fx-workspace .operation-screen:not(:has(.operation-details[open])) .doviz-islem-table :is(th,td):nth-child(2),
  .dal-fx-workspace .operation-screen:not(:has(.operation-details[open])) .doviz-islem-table :is(th,td):nth-child(5){width:39%;}
  @media(max-width:620px){
    .operation-screen .operation-primary-results{grid-template-columns:1fr;}
    .operation-screen table{font-size:.76rem;}
    .operation-screen table :is(th,td){padding:9px 7px;}
    .dal-trade-workspace{margin:-2px; width:calc(100% + 4px);}
    .dal-trade-tabs{
      display:flex;
      margin-bottom:12px;
      overflow-x:auto;
      overscroll-behavior-inline:contain;
      -webkit-overflow-scrolling:touch;
      scrollbar-width:none;
      scroll-snap-type:x proximity;
    }
    .dal-trade-tabs::-webkit-scrollbar{display:none;}
    /* Uzun sekme adları harf harf dikeyleşmez; şerit parmakla kayar. */
    .dal-trade-tab{
      flex:0 0 auto;
      min-width:max-content;
      min-height:48px;
      padding:8px 12px;
      font-size:.72rem;
      white-space:nowrap;
      word-break:normal;
      overflow-wrap:normal;
      scroll-snap-align:start;
    }
    .dal-trade-workspace .sarrafiye-hurda-card{padding:14px 10px;}
    .dal-trade-workspace .sarrafiye-hurda-card > h2{font-size:1.3rem;}
    .dal-trade-workspace .operation-screen:not(:has(.operation-details[open])) table :is(th,td):first-child{width:40%;}
    .dal-trade-workspace .operation-screen:not(:has(.operation-details[open])) table :is(th,td):nth-child(2){width:25%;}
    .dal-trade-workspace #bilezikSarrafiyeSatisCard:not(:has(.operation-details[open])) table :is(th,td):nth-child(5),
    .dal-trade-workspace #bilezikSatisCard:not(:has(.operation-details[open])) table :is(th,td):nth-child(5),
    .dal-trade-workspace #hurdaAlisCard:not(:has(.operation-details[open])) table :is(th,td):nth-child(4){width:35%; font-size:.72rem;}
    .dal-trade-total{padding:14px 11px;}
    .dal-trade-total strong{font-size:1.12rem;}
  }
  /* 2026-08-19 (Barış): "listeyi aşağıya kaydırdığımda adet, toplam nakit
     ve kartlı satış başlıklarını okuyamadığım için şaşırıyorum."

     Başlık satırı sabitlendi. Ürün listesi KENDİ İÇİNDE kayıyor, başlıklar
     üstte duruyor.

     NEDEN İÇ KAYDIRMA: başlığı doğrudan modalın kaydırmasına sabitlemek
     için üstteki başlık çubuğu ve kategori şeridinin yüksekliği kadar bir
     sayı vermek gerekirdi. O sayı telefonda ve masaüstünde farklı, şerit
     iki satıra düştüğünde yine değişir — yani sessizce yanlış yere
     yapışırdı. Tabloya kendi kaydırma alanını vermek bu bağımlılığı
     tamamen kaldırıyor.

     Zemin şeffaf bırakılamaz: satırlar başlığın altından geçip okunmaz
     hale gelir. */
  /* 2026-08-19 (Barış): "sarrafiye ekranında aşağıya kayarken o bölüm ya
     da pencere bazen bir arada kayıyor."

     Sebep bendim: başlığı sabitlemek için tabloya KENDİ kaydırma alanını
     vermiştim. Ekranda iki ayrı kaydırma alanı oluştu — parmak bazen
     tabloyu, bazen pencereyi kaydırdı. Kullanıcı hangisinin hareket
     edeceğini önceden bilemiyor, bu yüzden kötü hissettiriyor.

     İç kaydırma kaldırıldı. Başlık artık doğrudan PENCERENİN kaydırmasına
     yapışıyor. Bunun için üstteki sabit çubukların yüksekliği gerekiyordu
     ve o sayıyı elle yazmak yanlıştı (telefonda başka, masaüstünde başka,
     kategori şeridi iki satıra düşünce yine başka). Sayı artık JS
     tarafında ÖLÇÜLÜYOR ve --dal-tablo-ust olarak yazılıyor.

     Sarmalayıcının kendi kaydırma bağlamı olmamalı: satır içi
     "overflow-x:auto" bir kaydırma kutusu yaratıyor ve sticky ona
     yapışıyor, pencereye değil. Sütun payları %100 olduğu için yatay
     kaydırmaya zaten gerek yok. */
  .dal-trade-workspace .operation-screen:not(:has(.operation-details[open])) .sarrafiye-hurda-altbolum > div:has(> table){
    overflow:visible!important;
  }
  .dal-trade-workspace .operation-screen:not(:has(.operation-details[open])) table thead th{
    position:sticky;
    top:var(--dal-tablo-ust,0px);
    z-index:6;
    background:var(--card);
    box-shadow:inset 0 -1px 0 var(--border);
  }
  /* 2026-08-21 (Barış): iPad yatay ekranda yapışkan sütun başlığı,
     kaydırma sırasında ürünlerin ortasında geniş siyah bir bant gibi
     kalıyordu. Tablet ve daha dar ekranlarda başlık normal akışta gider;
     masaüstünde uzun tablolar için yapışkan davranış korunur. */
  @media(max-width:1380px){
    .dal-trade-workspace .operation-screen:not(:has(.operation-details[open])) table thead th{
      position:static;
    }
  }
  /* 2026-08-20 (Barış): Döviz tablosu yalnız iki satır. Genel yapışkan
     başlık kuralı burada EUR satırını başlığın ÜSTÜNE taşıyor; ekranda
     yalnız USD varmış gibi görünüyordu. Bu küçük tabloda başlık normal
     akışta kalmalı ki sıra her zaman Başlık → EUR → USD olsun. */
  #dovizAlisSatisPanel .doviz-islem-table thead th{
    position:static!important;
  }
  .dal-tl-doviz-satildi{
    display:inline-flex;
    align-items:center;
    gap:7px;
    margin-left:auto;
    color:var(--green);
    font-size:.78rem;
    font-weight:900;
    white-space:nowrap;
  }
  .dal-tl-doviz-satildi input{
    width:22px;
    height:22px;
    accent-color:var(--green);
  }
  /* EUR/USD miktarı satışın ana girdisidir; sonuç alanlarından ilk bakışta
     ayrılması için iki kutu aynı kırmızı işlem rengiyle vurgulanır. */
  #eurMiktar,
  #usdMiktar{
    background:#7b2028!important;
    border-color:#ff6b73!important;
    color:#fff!important;
    box-shadow:0 0 0 1px rgba(255,107,115,.22),0 8px 18px rgba(123,32,40,.24);
  }
  #eurMiktar::placeholder,
  #usdMiktar::placeholder{color:rgba(255,255,255,.68);}
  #eurMiktar:focus,
  #usdMiktar:focus{
    border-color:#ff9ca2!important;
    box-shadow:0 0 0 3px rgba(255,107,115,.28),0 8px 18px rgba(123,32,40,.28);
  }
  #dovizAlisSatisPanel .doviz-islem-table .dal-fx-doviz-kodu{
    text-align:left!important;
    vertical-align:middle;
    font-size:1rem;
    font-weight:900;
    letter-spacing:.03em;
  }
  #dovizAlisSatisPanel .doviz-islem-table .dal-fx-islem-hucresi{
    vertical-align:top;
  }
  #dovizAlisSatisPanel .dal-fx-kur-satiri,
  #dovizAlisSatisPanel .dal-fx-toplam-satiri{
    display:grid;
    grid-template-columns:minmax(0,1fr) auto;
    align-items:baseline;
    gap:8px;
    width:100%;
    min-height:27px;
    text-align:left;
  }
  #dovizAlisSatisPanel .dal-fx-kur-satiri{
    padding-bottom:6px;
    margin-bottom:6px;
    border-bottom:1px solid rgba(166,175,188,.22);
  }
  #dovizAlisSatisPanel :is(.dal-fx-kur-satiri,.dal-fx-toplam-satiri) small{
    color:var(--muted);
    font-size:.64rem;
    font-weight:800;
    line-height:1.2;
  }
  #dovizAlisSatisPanel .dal-fx-kur-satiri strong{
    color:var(--accent2);
    font-size:.82rem;
    white-space:nowrap;
  }
  #dovizAlisSatisPanel .dal-fx-toplam-satiri strong{
    color:var(--text);
    font-size:.94rem;
    white-space:nowrap;
  }
  #dovizAlisSatisPanel .dal-doviz-tikler{
    width:100%;
    margin-top:9px;
  }
  #dovizAlisSatisPanel .dal-doviz-tikler label{
    width:100%;
    justify-content:center;
  }
  .dal-kacan-talep{margin-top:14px;padding:14px;border:1px solid rgba(228,189,104,.45);border-radius:14px;background:rgba(228,189,104,.07)}
  .dal-kacan-talep h3{margin:0 0 4px;color:var(--gold)}.dal-kacan-talep p{margin:0 0 10px;color:var(--muted);font-size:.82rem}
  .dal-kacan-talep-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.dal-kacan-talep label{display:grid;gap:5px;font-weight:800;font-size:.75rem}.dal-kacan-talep :is(input,select){min-width:0;padding:10px;border:1px solid var(--line);border-radius:9px;background:var(--card2);color:var(--text)}
  #dovizTalepKaydet{margin-top:10px;min-height:42px;padding:0 16px;border:0;border-radius:10px;background:var(--gold);color:#171109;font-weight:900}#dovizTalepDurum{margin-left:10px;color:var(--green);font-weight:800}
  @media(max-width:700px){.dal-kacan-talep-grid{grid-template-columns:1fr 1fr}}

  /* Dört görünür sütuna pay: Ürün, Adet/Gram, Toplam · Nakit, Kartlı.
     Toplam %100 — yatay kaydırma çıkmasın, üç rakam tek bakışta okunsun. */
  /* 2026-08-19 (Barış): "rakamlar daha büyük görünüyordu, küçük görünüyor
     — satış, kartlı satış ve onun yanındaki sütunun içindekiler, zor
     okunuyor."

     Dört sütunu sığdırırken yazıyı .8rem'e düşürmüştüm; sığdı ama
     okunmaz oldu. Doğru takas, yazıyı değil ÜRÜN ADI sütununu kısmak:
     ürün adı zaten satırın solunda ve resimli, kısalınca da tanınıyor.
     Rakam ise okunamazsa hiçbir işe yaramıyor.

     Yeni pay: 28 + 22 + 25 + 25 = %100. */
  .dal-trade-workspace #bilezikSarrafiyeSatisCard:not(:has(.operation-details[open])) #altinSatisTablosu :is(th,td):first-child{width:26%;}
  .dal-trade-workspace #bilezikSarrafiyeSatisCard:not(:has(.operation-details[open])) #altinSatisTablosu :is(th,td):nth-child(2){width:19%;}
  .dal-trade-workspace #bilezikSarrafiyeSatisCard:not(:has(.operation-details[open])) #altinSatisTablosu :is(th,td):nth-child(5),
  .dal-trade-workspace #bilezikSarrafiyeSatisCard:not(:has(.operation-details[open])) #altinSatisTablosu :is(th,td):nth-child(6){
    width:20%;
    font-size:1.02rem;
    font-weight:900;
    overflow-wrap:anywhere;
  }
  /* EUR sütunu: okunur ama TL'nin önüne geçmeyen ölçüde. Renk dilinden
     (yeşil nakit / turuncu kartlı / kırmızı girdi) bilerek uzak — o üç
     renk tahsilat anlamı taşıyor, EUR ise karşılık bilgisi. */
  .dal-trade-workspace #bilezikSarrafiyeSatisCard:not(:has(.operation-details[open])) #altinSatisTablosu :is(th,td):nth-child(9){
    width:15%;
    font-size:.95rem;
    font-weight:800;
    text-align:right;
    overflow-wrap:anywhere;
  }
  /* 2026-08-24 (Barış): "iPhone satış ekranında sarfiye satış bölümündeki
     tabloyu çok kötü yapmışsın; alyans bölümündeki tablo ve format gibi
     düzenli olsun."

     Sarfiye tablosu telefonda hâlâ sabit tablo gibi davranıyordu: Ürün,
     Adet/Gram, Nakit, Kartlı ve EUR sütunlarına yüzdelik paylar veriliyor,
     rakamlar da dar hücrelerde kırılıp göz yoruyordu. Alyans tablosundaki
     iyi his, sütunların içeriğe göre yerleşmesinden geliyor.

     Sadece iPhone/dar ekran için aynı yaklaşım: sabit tabloyu bırak,
     görünür sütunları içerik kadar genişlet, ürün adını iki satıra kadar
     tut, giriş ve para hücrelerini kompakt ama okunur yap. Hesap, gizlenen
     ayrıntı sütunları ve EUR görünürlüğü değişmez. */
  /* 2026-08-24 (Barış): "toplam nakit, kartlı satış, toplam euro
     yazılarını küçült ki aşağıya taşmasın satır."
     Masaüstünde tam başlık ("Toplam · Nakit (TL)" vb.) görünür; dar
     ekranda kısa karşılığı ("Nakit") gösterilir ki başlık iki-üç satıra
     bölünüp tablo başlık şeridini şişirmesin. Sarrafiye ve Bilezik
     tablolarının ikisi de aynı th yapısını kullanıyor. */
  .dal-th-kisa{display:none;}
  @media(max-width:620px){
    :is(#altinSatisTablosu,#bilezikSatisTablosu) .dal-th-tam{display:none;}
    :is(#altinSatisTablosu,#bilezikSatisTablosu) .dal-th-kisa{display:inline;}
  }
  @media(max-width:620px){
    .dal-trade-workspace #bilezikSarrafiyeSatisCard:not(:has(.operation-details[open])) #altinSatisTablosu{
      table-layout:auto!important;
    }
    .dal-trade-workspace #bilezikSarrafiyeSatisCard:not(:has(.operation-details[open])) #altinSatisTablosu :is(th,td){
      width:auto!important;
      padding-left:5px;
      padding-right:5px;
    }
    /* 2026-08-24 (Barış, 2. tur): "toplam euro satırı kaymış."
       KÖK SEBEP: beş görünür sütunun (Ürün 92 + Adet 58 + Nakit/Kartlı/EUR
       66×3=198) min-width TOPLAMI 348px — bu, kartın kendi iç genişliğinden
       (iPhone SE'de 309px, iPhone 14'te 324px) HER ZAMAN büyüktü. Tablo
       kartın DIŞINA taşıyor, EUR sütunu kenara yapışıp kesiliyordu. Genel
       taşma denetimi bunu yakalamadı çünkü yalnız EKRAN sınırına bakıyor,
       KART çerçevesine bakmıyor. Yeni toplam en dar cihaza (iPhone SE,
       kart içi ~305px) güvenli payla sığacak şekilde küçültüldü: 72+46+3×56=286px. */
    .dal-trade-workspace #bilezikSarrafiyeSatisCard:not(:has(.operation-details[open])) #altinSatisTablosu :is(th,td):first-child{
      min-width:66px;
      max-width:72px;
    }
    .dal-trade-workspace #bilezikSarrafiyeSatisCard:not(:has(.operation-details[open])) #altinSatisTablosu .sarrafiye-urun{
      align-items:center;
      gap:4px;
      padding-right:2px;
      font-size:.64rem;
      line-height:1.1;
    }
    .dal-trade-workspace #bilezikSarrafiyeSatisCard:not(:has(.operation-details[open])) #altinSatisTablosu .sarrafiye-urun img{
      width:20px;
      height:20px;
      flex:0 0 20px;
    }
    .dal-trade-workspace #bilezikSarrafiyeSatisCard:not(:has(.operation-details[open])) #altinSatisTablosu .dal-bilezik-hizli-secim{
      min-height:26px;
      margin-top:4px;
      padding:3px 4px;
      font-size:.54rem;
    }
    .dal-trade-workspace #bilezikSarrafiyeSatisCard:not(:has(.operation-details[open])) #altinSatisTablosu td:nth-child(2){
      min-width:46px;
    }
    .dal-trade-workspace #bilezikSarrafiyeSatisCard:not(:has(.operation-details[open])) #altinSatisTablosu td:nth-child(2) input.table-input{
      height:34px;
      padding:5px 4px;
      font-size:.86rem;
    }
    .dal-trade-workspace #bilezikSarrafiyeSatisCard:not(:has(.operation-details[open])) #altinSatisTablosu :is(td:nth-child(5),td:nth-child(6),td:nth-child(9)){
      min-width:56px;
      font-size:.82rem;
      line-height:1.16;
      white-space:normal;
    }
    .dal-trade-workspace #bilezikSarrafiyeSatisCard:not(:has(.operation-details[open])) #altinSatisTablosu th{
      font-size:.54rem;
      line-height:1.08;
      letter-spacing:0;
    }
    /* 2026-08-24 (Barış): "toplam nakit, kartlı satış, toplam euro
       yazılarını küçült ki aşağıya taşmasın satır."
       KÖK SEBEP: masaüstü kuralı ":is(th,td):nth-child(5),(6){font-size:1rem}"
       id+class'lı seçici olduğu için genel "th{font-size:.54rem}" kuralını
       özgüllükte yeniyordu — başlık 1rem'de kalıp "KARTLI" gibi kelimeler
       iki satıra bölünüyordu. Aynı özgüllükte th'ye özel bir kural. */
    .dal-trade-workspace #bilezikSarrafiyeSatisCard:not(:has(.operation-details[open])) #altinSatisTablosu :is(th:nth-child(5),th:nth-child(6),th:nth-child(9)){
      font-size:.54rem;
      line-height:1.08;
      letter-spacing:0;
    }
  }

  /* ── BİLEZİK EKRANI SADELEŞTİRMESİ (2026-08-19) ───────────────────
     Barış: "neden liste 6500 tablosunu oraya koydun ki, bir de 22 ayar
     liste yazısını. kaldır onları."

     İkisi de EKRANDAN gizlendi ama DOM'dan SİLİNMEDİ — sebebi önemli:
       · satisBilezikSecim hesabın kaynağı (efektifSatisFiyati onu okur).
         Zaten üstteki "Üst seçime göre" kutusu bu alanı dolduruyor, yani
         kullanıcı için iki ayrı kontrol vardı; biri fazlaydı.
       · ajdaAltSinirFiyat alt sınır fiyatını OCR'dan alıyor ve kaydedilen
         değerler yalnız metin girdilerinden toplanıyor. Silinseydi alt
         sınır seçeneği ve gece kaydı sessizce bozulurdu.
     Görünmüyorlar, çalışmaya devam ediyorlar. */
  #bilezikSatisTablosu #satisBilezikSecim,
  #bilezikSatisTablosu #ajdaAltSinirFiyat{display:none;}

  /* Taşmanın sebebi: derli toplu görünümde bilezik tablosunda BEŞ sütun
     görünüyor (Ürün, Adet/Gram, Satış Fiyatı, Toplam, Kartlı) ama yalnız
     ilk sütun %42'ye sabitlenmişti. Kalan dört sütun sıkışınca yeşil ve
     turuncu hücrelerin rakamları yan hücrenin üstüne biniyordu. Beş
     sütunun tamamına pay verildi. */
  /* 2026-08-19: EUR sütunu eklenince altı sütun oldu. Yazı ölçüsü .78rem
     idi — Barış sarrafiyede aynı ölçü için "zor okunuyor" dedi, burada da
     aynı sorun vardı. Yer ürün adı sütunundan alındı, rakamdan değil. */
  .dal-trade-workspace #bilezikSatisCard:not(:has(.operation-details[open])) #bilezikSatisTablosu :is(th,td):first-child{width:24%;}
  .dal-trade-workspace #bilezikSatisCard:not(:has(.operation-details[open])) #bilezikSatisTablosu :is(th,td):nth-child(2){width:14%;}
  .dal-trade-workspace #bilezikSatisCard:not(:has(.operation-details[open])) #bilezikSatisTablosu :is(th,td):nth-child(3){width:16%;}
  .dal-trade-workspace #bilezikSatisCard:not(:has(.operation-details[open])) #bilezikSatisTablosu :is(th,td):nth-child(5),
  .dal-trade-workspace #bilezikSatisCard:not(:has(.operation-details[open])) #bilezikSatisTablosu :is(th,td):nth-child(6){
    width:16%;
    font-size:1rem;
    font-weight:900;
    overflow-wrap:anywhere;
  }
  .dal-trade-workspace #bilezikSatisCard:not(:has(.operation-details[open])) #bilezikSatisTablosu :is(th,td):nth-child(9){
    width:14%;
    font-size:.95rem;
    font-weight:800;
    text-align:right;
    overflow-wrap:anywhere;
  }

  /* 2026-08-24 (Barış): "bilezik ekranında da aynısını yapmak lazım, bilezik
     adet gram küçük kalmış, alttaki kutu, toplam nakit kutusunun üzerine
     bilezik gram kutusu gelmiş, onu iptal et, toplam euro satırı da kaymış,
     hepsini okuyabilmeliyim düzgün."

     Sarrafiye tablosuna dün uygulanan mobil düzeltme (table-layout:auto,
     sabit yüzdelik sütun genişliklerini bırakıp içeriğe göre yerleşim)
     bileziğe hiç eklenmemişti — yukarıdaki yüzdelik genişlik kuralları
     (24%/14%/16%/16%/16%/14%) dar ekranda toplamı aşıyor, hücreler birbirinin
     üstüne biniyordu. Sarrafiyeyle BİREBİR aynı yaklaşım burada da uygulanır. */
  @media(max-width:620px){
    .dal-trade-workspace #bilezikSatisCard:not(:has(.operation-details[open])) #bilezikSatisTablosu{
      table-layout:auto!important;
    }
    .dal-trade-workspace #bilezikSatisCard:not(:has(.operation-details[open])) #bilezikSatisTablosu :is(th,td){
      width:auto!important;
      padding-left:5px;
      padding-right:5px;
    }
    /* 2026-08-24 (Barış, 2. tur): sarrafiyedeki genişlik toplamı burada da
       kart iç genişliğini aşıyordu — sarrafiyeyle BİREBİR aynı küçültme. */
    .dal-trade-workspace #bilezikSatisCard:not(:has(.operation-details[open])) #bilezikSatisTablosu :is(th,td):first-child{
      min-width:66px;
      max-width:72px;
    }
    .dal-trade-workspace #bilezikSatisCard:not(:has(.operation-details[open])) #bilezikSatisTablosu .sarrafiye-urun{
      align-items:center;
      gap:4px;
      padding-right:2px;
      font-size:.64rem;
      line-height:1.1;
    }
    .dal-trade-workspace #bilezikSatisCard:not(:has(.operation-details[open])) #bilezikSatisTablosu .sarrafiye-urun img{
      width:20px;
      height:20px;
      flex:0 0 20px;
    }
    /* "Adet gram küçük kalmış": bileziğin kendi Adet/Gram girişi (ikinci
       sütun, kırmızı kutu değil — gram üstteki teraziden giriyor ama bu
       sütun hâlâ adet girişi için kullanılabiliyor) sarrafiyeyle aynı
       okunur boyuta getirildi. */
    .dal-trade-workspace #bilezikSatisCard:not(:has(.operation-details[open])) #bilezikSatisTablosu td:nth-child(2){
      min-width:46px;
    }
    .dal-trade-workspace #bilezikSatisCard:not(:has(.operation-details[open])) #bilezikSatisTablosu td:nth-child(2) input.table-input{
      height:34px;
      padding:5px 4px;
      font-size:.86rem;
    }
    /* "Toplam nakit kutusunun üzerine bilezik gram kutusu gelmiş": bu,
       dal-bilezik-hizli-secim seçicisinin ürün hücresi genişlemeyince taşan
       genişliğinden kaynaklanıyordu (aynı sarrafiyedeki külçe seçici gibi).
       Sarrafiyeyle aynı kompakt boyuta getirilince taşma da düzeliyor. */
    .dal-trade-workspace #bilezikSatisCard:not(:has(.operation-details[open])) #bilezikSatisTablosu .dal-bilezik-hizli-secim{
      min-height:26px;
      margin-top:4px;
      margin-left:0;
      max-width:100%;
      padding:3px 4px;
      font-size:.54rem;
    }
    .dal-trade-workspace #bilezikSatisCard:not(:has(.operation-details[open])) #bilezikSatisTablosu :is(td:nth-child(5),td:nth-child(6),td:nth-child(9)){
      min-width:56px;
      font-size:.82rem;
      line-height:1.16;
      white-space:normal;
    }
    .dal-trade-workspace #bilezikSatisCard:not(:has(.operation-details[open])) #bilezikSatisTablosu th{
      font-size:.54rem;
      line-height:1.08;
      letter-spacing:0;
    }
    /* 2026-08-24: Sarrafiyedeki aynı özgüllük çakışması burada da vardı —
       th:nth-child(5)/(6)/(9) masaüstü kuralından 1rem miras alıp
       "KARTLI" ve "TOPLAM (EUR)" kısa metinleri bile iki satıra bölüyordu. */
    .dal-trade-workspace #bilezikSatisCard:not(:has(.operation-details[open])) #bilezikSatisTablosu :is(th:nth-child(5),th:nth-child(6),th:nth-child(9)){
      font-size:.54rem;
      line-height:1.08;
      letter-spacing:0;
    }
  }

  /* 2026-08-18 (Barış): "toptancıya veriş fiyatı toptan çıksın EXTRA KÜÇÜK
     bir bölümde ki zararına mı alıyorum bileyim."

     Kasten küçük ve sönük: bu rakam kararın DAYANAĞI değil, kontrol
     noktası. Ödenecek tutar kadar öne çıkarsa hangisine bakacağı
     karışır. Zarar durumunda kırmızıya döner — asıl uyarı orada. */
  .dal-hurda-toptan-ozet{
    margin:7px 2px 0;
    color:var(--muted);
    font-size:.74rem;
    font-weight:700;
    line-height:1.4;
  }
  .dal-hurda-toptan-ozet.zarar{color:var(--danger);}
  .dal-hurda-toptan-ozet[hidden]{display:none;}
  /* 2026-08-05: altın toplam / yabancı para toplam / genel toplam üçlü
     özeti — kartın en altında, WhatsApp önizlemesinden hemen önce. */
  .ozel-musteri-ozet{
    margin-top:26px;
    padding-top:20px;
    border-top:3px solid var(--accent);
  }
  .ozel-musteri-ozet-satir{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:9px;
    padding:10px 0;
    border-bottom:1px solid var(--border);
  }
  .ozel-musteri-ozet-satir:last-child{border-bottom:none;}
  .ozel-musteri-ozet-satir .label{color:var(--muted); font-size:0.9rem; font-weight:700;}
  .ozel-musteri-ozet-satir .value{font-weight:800; font-size:1.15rem; color:var(--accent2);}
  .ozel-musteri-genel-toplam{
    margin-top:14px;
    padding:14px 16px;
    border-radius:12px;
    background:rgba(212,175,55,0.14);
    border:2px solid var(--accent);
  }
  .ozel-musteri-genel-toplam .label{font-size:1.05rem; font-weight:900; color:var(--accent2);}
  .ozel-musteri-genel-toplam .value{font-size:1.5rem; font-weight:900; color:var(--accent);}
  /* 2026-08-07: "Ürün Fiyatları" kartı kaldırılırken bu kural yanlışlıkla
     silinmişti — ama .product-card-price hâlâ Özel Müşteri kartındaki
     "Kredi Kartı: —" satırında kullanılıyor (ozelMusteriGramKk vb.),
     urunFiyatlariCard ile ilgisi yoktu. Kontrastlı tema yeşiliyle geri
     eklendi (eski açık yeşil #9ee7bd okunmuyordu). */
  .product-card-price{color:var(--green); font-weight:700; font-size:.82rem; margin:4px 0 0;}
  table{
    width:100%;
    border-collapse:collapse;
    font-size:0.85rem;
  }
  thead th{
    text-align:right;
    color:var(--muted);
    font-weight:600;
    font-size:0.75rem;
    text-transform:uppercase;
    letter-spacing:0.03em;
    padding:0 6px 10px 6px;
    border-bottom:1px solid var(--border);
  }
  thead th:first-child, tbody td:first-child{
    text-align:left;
  }
  tbody td{
    padding:11px 6px;
    border-bottom:1px solid var(--border);
    text-align:right;
  }
  @media (max-width:768px){
    table{
      font-size:0.75rem;
    }
    thead th, tbody td{
      padding:8px 4px;
    }
  }
  @media (max-width:480px){
    table{
      font-size:0.7rem;
    }
    thead th, tbody td{
      padding:6px 3px;
    }
  }
  tbody tr:last-child td{
    border-bottom:none;
  }
  .doviz-islem-table{
    table-layout:fixed;
    min-width:680px;
  }
  .doviz-islem-table tfoot td{
    padding:12px 6px;
    border-top:2px solid var(--border);
    text-align:right;
    vertical-align:middle;
  }
  .doviz-islem-table tfoot td:first-child{
    text-align:left;
  }
  .kar-badge{
    display:inline-block;
    background:rgba(212,175,55,0.15);
    color:var(--accent2);
    padding:3px 10px;
    border-radius:20px;
    font-weight:700;
    font-size:0.8rem;
  }
  .tl-val{
    color:var(--text);
    font-weight:600;
  }
  .eur-val{
    color:var(--green);
    font-weight:600;
  }
  .formula-note{
    font-size:0.72rem;
    color:var(--muted);
    margin-top:10px;
    line-height:1.5;
  }
  .empty-state{
    text-align:center;
    color:var(--muted);
    font-size:0.85rem;
    padding:20px 0;
  }
  .euro-hint{
    font-size:0.72rem;
    color:var(--muted);
    margin-top:-6px;
    margin-bottom:8px;
  }
  .table-input{
    width:100%;
    min-width:60px;
    background:var(--card2);
    border:1.5px solid var(--danger);
    border-radius:8px;
    padding:8px 10px;
    color:var(--text);
    font-size:0.85rem;
    text-align:right;
    outline:none;
    -webkit-appearance:none;
    -webkit-font-size-adjust:100%;
    font-size:14px;
  }
  .table-input:focus{
    border-color:var(--accent);
  }
  tfoot td{
    padding:12px 6px 0 6px;
    border-bottom:none;
  }
  .sub-title{
    font-size:0.82rem;
    color:var(--accent2);
    margin:20px 0 12px 0;
    font-weight:600;
    border-top:1px solid var(--border);
    padding-top:16px;
  }
  @media (max-width:768px){
    body{padding:15px;}
    .wrap{max-width:100%;}
    header h1{font-size:1.3rem;}
    .card{padding:16px; margin-bottom:12px;}
    .inputs-grid{gap:12px;}
    label{font-size:0.75rem;}
    input[type="text"]{padding:10px 12px; font-size:16px;}
    .summary-row{padding:8px 0;}
    .summary-row .value{font-size:1rem;}
    .button-group{gap:8px;}
    button{padding:8px 12px; font-size:12px;}
  }

  @media (max-width:480px){
    body{padding:12px;}
    .inputs-grid{grid-template-columns:1fr; gap:10px;}
    header h1{font-size:1.1rem;}
    header p{font-size:0.8rem;}
    .card{padding:12px; margin-bottom:10px;}
    label{font-size:0.7rem;}
    input[type="text"]{
      padding:10px;
      font-size:16px;
      border-radius:8px;
    }
    .table-input{
      padding:8px;
      font-size:0.75rem;
    }
    .summary-row{padding:6px 0; flex-wrap:wrap;}
    .summary-row .label{font-size:0.8rem;}
    .summary-row .value{font-size:0.95rem;}
    .button-group{flex-direction:column;}
    button{width:100%; padding:10px;}
    #ocrResult{max-height:150px; font-size:10px;}
    .formula-note{font-size:0.65rem;}
  }

  @media (max-width:360px){
    body{padding:10px;}
    header h1{font-size:1rem;}
    .card{padding:10px;}
    label{font-size:0.65rem;}
    input[type="text"]{font-size:14px; padding:8px;}
    table{font-size:0.65rem;}
    thead th, tbody td{padding:4px 2px;}
    .summary-row .value{font-size:0.9rem;}
  }

  .image-section {
    border: 2px dashed var(--border);
    border-radius: 12px;
    padding: 20px;
    text-align: center;
    background: rgba(212, 175, 55, 0.05);
  }

  .image-section p {
    color: var(--muted);
    font-size: 0.9rem;
    margin: 0 0 15px 0;
  }

  #imagePreview img {
    max-width: 100%;
    max-height: 250px;
    margin-top: 15px;
    border-radius: 8px;
  }
  .kayitli-altin-liste{
    border-color:rgba(212,175,55,.55);
    background:linear-gradient(145deg,rgba(212,175,55,.08),var(--card) 55%);
  }
  .kayitli-altin-liste p{
    margin:0;
    color:var(--muted);
    font-size:.78rem;
    line-height:1.45;
  }
  .kayitli-liste-meta{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:10px;
    flex-wrap:wrap;
    margin:0 0 10px;
    padding:9px 11px;
    border:1px solid rgba(212,175,55,.3);
    border-radius:9px;
    background:rgba(212,175,55,.06);
  }
  .kayitli-liste-kaynak{
    color:var(--accent2);
    font-size:.76rem;
    font-weight:700;
  }
  #kayitliAltinListeZamani{
    color:var(--green);
    font-size:.78rem;
    font-weight:700;
  }
  #kayitliAltinListeZamani[data-empty="true"]{
    color:var(--muted);
    font-weight:600;
  }
  #kayitliAltinListeResmi{
    display:block;
    width:100%;
    max-height:340px;
    object-fit:contain;
    margin-top:12px;
    border-radius:10px;
    background:#0e1015;
  }

  .button-group {
    display: flex;
    gap: 10px;
    margin-top: 15px;
    justify-content: center;
    flex-wrap: wrap;
  }

  button {
    padding: 10px 16px;
    border: none;
    border-radius: 8px;
    cursor: pointer;
    font-size: 13px;
    font-weight: bold;
    transition: all 0.2s;
  }

  .btn-ocr {
    background: var(--green);
    color: white;
  }

  .btn-ocr:hover {
    background: #2bb575;
  }

  .btn-clear {
    background: var(--danger);
    color: white;
  }

  .btn-clear:hover {
    background: #e04444;
  }

  #ocrResult {
    background: var(--card2);
    padding: 12px;
    border-radius: 8px;
    border: 1px solid var(--border);
    margin-top: 12px;
    min-height: 60px;
    white-space: pre-wrap;
    font-family: monospace;
    font-size: 11px;
    color: var(--green);
    max-height: 200px;
    overflow-y: auto;
  }

  .ocr-durum{
    margin-top:10px; font-size:0.82rem; color:var(--muted); min-height:18px;
  }
  .ocr-eslesme{
    margin-top:12px; background:var(--card2); border:1px solid var(--border);
    border-radius:8px; padding:12px;
  }
  .ocr-eslesme-head{
    display:flex; justify-content:space-between; align-items:center; gap:10px;
    margin-bottom:10px; font-size:0.85rem; color:var(--accent2); flex-wrap:wrap;
  }
  .ocr-eslesme-head select{
    background:var(--card); color:var(--text); border:1px solid var(--border);
    border-radius:6px; padding:4px 6px; font-size:0.8rem;
  }
  .ocr-row{
    display:grid; grid-template-columns:22px 1fr 110px; align-items:center;
    gap:8px; padding:5px 0; border-top:1px solid var(--border);
  }
  .ocr-row:first-child{border-top:none;}
  .ocr-alan{font-size:0.82rem; color:var(--text);}
  .ocr-kaynak{display:block; font-size:0.68rem; color:var(--muted); font-family:monospace;}
  .ocr-deger{
    width:100%; padding:6px; text-align:right; font-size:0.85rem;
    background:var(--card); color:var(--text);
    border:1px solid var(--border); border-radius:6px;
  }
  .ocr-bos{font-size:0.8rem; color:var(--muted); margin:0;}
  .ocr-ham{margin-top:12px; font-size:0.78rem; color:var(--muted);}
  .ocr-ham summary{cursor:pointer;}
  .ocr-yazildi{
    outline:2px solid var(--green); outline-offset:1px;
    transition:outline-color .4s ease;
  }
  @media(max-width:480px){
    .ocr-row{grid-template-columns:22px 1fr 90px;}
  }

  /* ---- OCR paneli v7 ---- */
  .ocr-ozet{font-size:0.7rem; color:var(--muted); font-weight:400;}
  .ocr-row{
    display:grid; grid-template-columns:20px 1fr 96px; align-items:start;
    gap:8px; padding:8px 0; border-top:1px solid var(--border);
  }
  .ocr-row:first-child{border-top:none;}
  .ocr-row input[type="checkbox"]{width:18px; height:18px; margin-top:6px;}
  .ocr-alan-sec{
    width:100%; background:var(--card); color:var(--text);
    border:1px solid var(--border); border-radius:6px;
    padding:6px; font-size:0.78rem;
  }
  .ocr-kolon{
    display:inline-block; font-size:0.6rem; padding:1px 5px; border-radius:4px;
    margin-left:6px; border:1px solid var(--border); color:var(--muted);
    vertical-align:middle; letter-spacing:.3px;
  }
  .ocr-kolon.satis{color:#7a5a12; border-color:#5c4a2a;}
  .ocr-kolon.alis{color:#0f6b49; border-color:#2f5c3c;}
  .ocr-uyari{display:block; font-size:0.66rem; color:var(--danger); margin-top:3px; line-height:1.3;}
  .ocr-durum-rozeti{display:inline-flex;align-items:center;margin-top:5px;padding:3px 7px;border-radius:999px;font-size:.66rem;font-weight:800;line-height:1.2;border:1px solid currentColor;}
  .ocr-durum-rozeti.dogrulandi,.ocr-durum-rozeti.onaylandi{color:var(--green);background:rgba(34,197,94,.09);}
  .ocr-durum-rozeti.supheli{color:#f5b942;background:rgba(245,185,66,.1);}
  .ocr-diger{margin-top:12px; border-top:1px solid var(--border); padding-top:10px; font-size:0.78rem; color:var(--muted);}
  .ocr-diger summary{cursor:pointer; color:var(--accent2);}
  .ocr-diger-row{
    display:grid; grid-template-columns:1fr 84px 130px; gap:6px;
    align-items:center; padding:6px 0; border-top:1px solid var(--border);
  }
  .ocr-diger-etiket{font-size:0.72rem; color:var(--text); overflow:hidden; text-overflow:ellipsis;}
  .ocr-diger-deger{font-size:0.78rem; text-align:right; font-family:monospace; color:var(--green);}
  #ocrResult{
    width:100%; box-sizing:border-box; resize:vertical; min-height:150px;
    background:var(--card2); color:var(--green); border:1px solid var(--border);
    border-radius:8px; padding:10px; margin-top:10px;
    font-family:monospace; font-size:11px; line-height:1.45;
  }
  @media(max-width:480px){
    .ocr-row{grid-template-columns:20px 1fr 78px;}
    .ocr-diger-row{grid-template-columns:1fr 68px 100px;}
  }

  .ocr-mode-wrap{
    display:flex; align-items:center; justify-content:center; gap:10px;
    flex-wrap:wrap; margin:4px 0 10px;
  }
  .ocr-mode-wrap span{
    color:var(--accent2); font-size:0.8rem; font-weight:700;
  }
  .ocr-mode-wrap select{
    max-width:100%; background:var(--card2); color:var(--text);
    border:1px solid var(--border); border-radius:8px;
    padding:8px 10px; font-size:0.82rem; outline:none;
  }
  .ocr-mode-wrap select:focus{border-color:var(--accent);}
  .ocr-protection-note{
    font-size:0.72rem; color:var(--muted); line-height:1.45;
    margin:0 auto 12px; max-width:560px;
  }
  .ocr-protection-note strong{color:var(--green);}


  

  /* ---- PWA v19 ---- */
  .pwa-card{
    border-color:rgba(212,175,55,.45);
    background:linear-gradient(145deg,rgba(212,175,55,.08),var(--card) 48%);
  }
  .pwa-status{
    color:var(--muted); font-size:.82rem; line-height:1.5; margin:0 0 10px;
  }
  .pwa-status strong{color:var(--green);}
  .pwa-actions{display:flex; gap:8px; flex-wrap:wrap; margin-top:10px;}
  .btn-pwa{background:var(--accent); color:#17130a;}
  .btn-secondary{background:var(--card2); color:var(--text); border:1px solid var(--border);}
  .pwa-install-note{
    margin-top:10px; padding:10px 12px; border-radius:9px;
    background:rgba(0,0,0,.16); color:var(--muted); font-size:.76rem; line-height:1.55;
  }
  .pwa-install-note summary{cursor:pointer; color:var(--accent2); font-weight:700;}
  .pwa-dot{display:inline-block; width:9px; height:9px; border-radius:50%; margin-right:6px; background:var(--muted);}
  .pwa-dot.online{background:var(--green); box-shadow:0 0 0 3px rgba(62,207,142,.12);}
  .pwa-dot.offline{background:var(--danger); box-shadow:0 0 0 3px rgba(255,92,92,.12);}
  .sync-panel{
    margin:12px 0 4px; padding:12px; border:1px solid var(--border);
    border-radius:12px; background:rgba(0,0,0,.14);
  }
  .sync-head{display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:10px;}
  .sync-title{font-size:.78rem; color:var(--accent2); font-weight:700;}
  .sync-state{font-size:.72rem; color:var(--muted); text-align:right;}
  .sync-state[data-state="synced"]{color:var(--green);}
  .sync-state[data-state="syncing"]{color:var(--accent2);}
  .sync-state[data-state="error"],.sync-state[data-state="offline"]{color:var(--danger);}
  .sync-devices{display:grid; grid-template-columns:repeat(3,1fr); gap:8px;}
  .sync-device{
    min-width:0; padding:9px 6px; border:1px solid var(--border); border-radius:10px;
    background:var(--card2); text-align:center; color:var(--muted);
  }
  .sync-device-icon{display:block; font-size:1.25rem; line-height:1.2; margin-bottom:3px;}
  .sync-device-name{display:block; font-size:.72rem; font-weight:700; color:var(--text);}
  .sync-device-status{display:block; margin-top:3px; font-size:.62rem; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
  .sync-device[data-status="active"]{border-color:rgba(62,207,142,.65); background:rgba(62,207,142,.08);}
  .sync-device[data-status="active"] .sync-device-status{color:var(--green);}
  .sync-device[data-status="known"]{border-color:rgba(212,175,55,.45);}
  .sync-device[data-status="known"] .sync-device-status{color:var(--accent2);}
  .voice-box{
    display:flex; align-items:center; gap:10px; margin-top:10px; padding:10px 12px;
    border:1px solid var(--border); border-radius:10px; background:rgba(0,0,0,.14);
  }
  .voice-box.listening{border-color:rgba(255,92,92,.75); box-shadow:0 0 0 3px rgba(255,92,92,.08);}
  .terazi-vurgu .voice-box{
    border-color:rgba(255,255,255,.32);
    background:rgba(20,5,7,.28);
  }
  .terazi-vurgu .voice-title{color:#fff;}
  .terazi-vurgu .voice-result{color:rgba(255,255,255,.78);}
  .voice-button{
    flex:0 0 auto; width:42px; height:42px; padding:0; border:0; border-radius:50%;
    background:var(--accent); color:#17130a; font-size:1.15rem; cursor:pointer;
  }
  .voice-button:disabled{opacity:.45; cursor:not-allowed;}
  .voice-copy{min-width:0; flex:1;}
  .voice-title{display:block; color:var(--text); font-size:.76rem; font-weight:700;}
  .voice-result{display:block; color:var(--muted); font-size:.68rem; line-height:1.4; margin-top:2px;}
  .voice-box.listening .voice-result{color:var(--danger);}
  .harem-live-bar{
    display:flex; align-items:center; gap:8px; flex-wrap:wrap;
    margin:-2px 0 12px; padding:9px 10px; border:1px solid var(--border);
    border-radius:10px; background:rgba(0,0,0,.14);
  }
  .harem-live-dot{width:9px; height:9px; border-radius:50%; background:var(--muted);}
  .harem-live-dot.live{background:var(--green); box-shadow:0 0 0 3px rgba(62,207,142,.12);}
  .harem-live-dot.error{background:var(--danger);}
  .harem-live-status{flex:1; min-width:180px; color:var(--muted); font-size:.7rem; line-height:1.35;}
  .harem-live-status strong{color:var(--green);}
  .harem-live-toggle{
    border:1px solid var(--border); border-radius:8px; padding:6px 9px;
    background:var(--card2); color:var(--text); font-size:.68rem; cursor:pointer;
  }
  .harem-field-status{
    display:flex; align-items:center; gap:6px; margin-top:6px;
    color:var(--muted); font-size:.66rem; line-height:1.3;
  }
  .whatsapp-price-share-note{/* koyu temadan kalma acik yesil beyaz kartta okunmuyordu */margin:0 0 10px; color:#3f6b55; font-size:.76rem;}
  .bank-payment-grid{display:grid; grid-template-columns:repeat(auto-fit,minmax(250px,1fr)); gap:14px;}
  .bank-payment-intro{margin:0 0 12px;color:#172033;line-height:1.55;}
  .bank-share-choice{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:12px 0 18px}.bank-payment-page-share{display:grid;width:100%;min-height:68px;margin:0;place-content:center;gap:3px;text-align:center;text-decoration:none}.bank-payment-page-share strong{font-size:.92rem}.bank-payment-page-share span{font-size:.7rem;font-weight:650;opacity:.82}.bank-auto-share-title{margin:0 0 8px;color:#172033;font-size:.9rem}
  .bank-payment-recipient{display:grid;gap:6px;margin:0 0 12px;color:#172033;font-size:.82rem;font-weight:800}.bank-payment-recipient input{width:100%;min-height:44px;border:1px solid #cfc5b2;border-radius:10px;background:#fff;color:#172033;padding:9px 11px;font:inherit}.bank-payment-recipient small{color:#665c4d;font-size:.72rem;font-weight:500;line-height:1.4}
  @media(max-width:560px){.bank-share-choice{grid-template-columns:1fr}}
  /* BANKA KARTI RENKLERİ — NEDEN DEĞİŞTİ:
     Bu bölüm koyu tema döneminden kalmıştı: yazılar açık sarıydı
     (#fff5d0, #fff0bd) ve arka plan koyu zeytindi. Uygulama açık temaya
     geçince arka plan beyazladı ama yazı renkleri güncellenmedi —
     açık sarı, beyaz üzerinde okunmaz hale geldi.
     2026-08-06: koyu temaya geçişte bu kart bilinçli olarak AÇIK zeminde
     bırakıldı — QR kod ve IBAN müşteriye ekran/ekran görüntüsü olarak
     gösterildiği için "makbuz" gibi her zaman okunaklı beyaz zemin
     gerekiyor; bu yüzden tema değişkenleri değil sabit açık renkler
     kullanılıyor (IBAN koyu lacivert, 15:1 kontrast). */
  .bank-payment-item{padding:15px; border:1px solid #e5dfd2; border-radius:15px; background:#faf8f3;}
  .bank-payment-item h3{margin:0 0 8px; color:#705014; font-size:1rem;}
  .bank-payment-owner,.bank-payment-iban{margin:6px 0; color:#172033; font-size:.86rem;}
  .bank-payment-iban{font-weight:850; letter-spacing:.025em; word-break:break-all; color:#172033; font-size:.95rem;}
  .bank-payment-qr{display:block; width:min(185px,68vw); height:auto; margin:14px auto 10px; border-radius:10px; background:#fff;}
  .bank-payment-note{margin:10px 0 0; padding:10px; border-radius:10px; background:rgba(182,138,53,.12); border:1px solid rgba(182,138,53,.28); color:#5c430f; font-size:.8rem; line-height:1.45;}
  .bank-payment-share{display:block;width:100%; margin-top:12px;text-align:center;text-decoration:none;}
  .bank-payment-open{display:block; width:100%; margin-top:8px; text-align:center;}
  .whatsapp-price-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:9px;margin:12px 0}.whatsapp-price-option{display:flex;align-items:center;gap:9px;padding:11px;border:1px solid var(--border);border-radius:12px;background:rgba(255,255,255,.035)}.whatsapp-price-option input{width:19px;height:19px;accent-color:#35c878}.whatsapp-price-actions{display:flex;gap:9px;flex-wrap:wrap}.whatsapp-price-preview{white-space:pre-wrap;padding:12px;border-radius:12px;background:#0d1511;color:#dceadd;min-height:90px}
  .whatsapp-center-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;}
  .whatsapp-center-option{min-height:118px;padding:18px;border:1px solid var(--border);border-radius:16px;background:var(--card2);color:var(--text);display:flex;flex-direction:column;justify-content:center;gap:8px;text-align:left;cursor:pointer;}
  .whatsapp-center-option strong{font-size:1rem;color:var(--accent2);}
  .whatsapp-center-option span{font-size:.78rem;color:var(--muted);line-height:1.45;}
  .whatsapp-center-option-special{border-color:rgba(228,189,104,.48);}
  .whatsapp-price-group-title{margin:16px 0 8px;color:#4a4331;font-size:.84rem;text-transform:uppercase;letter-spacing:.05em;}
  @media(max-width:540px){.whatsapp-center-options{grid-template-columns:1fr;}.whatsapp-center-option{min-height:96px;}}
  .harem-field-dot{
    flex:0 0 auto; width:8px; height:8px; border-radius:50%; background:var(--muted);
  }
  .harem-field-dot.live{background:var(--green); box-shadow:0 0 0 3px rgba(62,207,142,.12);}
  .harem-field-dot.error{background:var(--danger); box-shadow:0 0 0 3px rgba(255,92,92,.1);}
  /* 2026-08-10: Cihazın kendi Harem bağlantısı yok AMA sunucu fiyatı taze.
     Ne yeşil (kendi canlı akışımız yok) ne kırmızı (fiyat doğru ve güncel)
     — mavi: "sunucudan güncel". */
  .harem-field-dot.sunucu{background:var(--info); box-shadow:0 0 0 3px rgba(106,168,255,.12);}
  .harem-live-dot.sunucu{background:var(--info); box-shadow:0 0 0 3px rgba(106,168,255,.12);}
  .pwa-toast{
    position:fixed; left:50%; bottom:calc(18px + env(safe-area-inset-bottom));
    transform:translate(-50%,20px); opacity:0; pointer-events:none; z-index:9999;
    max-width:min(90vw,520px); padding:11px 15px; border-radius:12px;
    /* YAZI RENGİ SABİT BEYAZ — NEDEN:
       Burada color:var(--text) yazıyordu. Açık temada --text koyu lacivert
       (#172033) olduğu için koyu zemin üzerinde okunmuyordu — banka
       kartındakiyle aynı "koyu temadan kalma" hatası.
       Zemin sabit koyu olduğundan yazı da sabit beyaz olmalı (kontrast 13:1). */
    background:#292e38; color:#ffffff; border:1px solid rgba(255,255,255,.18);
    box-shadow:0 8px 30px rgba(0,0,0,.42); font-size:.82rem; text-align:center;
    transition:opacity .2s ease,transform .2s ease;
  }
  .pwa-toast.show{opacity:1; transform:translate(-50%,0);}
  @media(display-mode:standalone){
    body{padding-top:calc(16px + env(safe-area-inset-top)); padding-bottom:calc(16px + env(safe-area-inset-bottom));}
    .pwa-install-only{display:none!important;}
  }

  /* 2026-08-06: Premium Kuyumcu İşletim Sistemi — bu blok eskiden "sade
     arayüz demosu" adıyla ayrı bir AÇIK tema :root'u tanımlayıp yukarıdaki
     koyu paleti eziyordu. Artık tema değerleri yalnızca dosyanın en
     başındaki tek :root'ta tanımlı; burada sadece bu bölüme özgü bileşen
     stilleri kalıyor (renkler var(--...) üzerinden geliyor). */
  body{
    background:
      radial-gradient(circle at 7% 2%,rgba(201,163,92,.08),transparent 27rem),
      var(--bg);
    color:var(--text); padding:0 18px calc(92px + env(safe-area-inset-bottom));
  }
  /* Görsel artık gövdenin kaydırılan arka planında değil: Safari ve bazı
     Chromium sürümleri önceki yöntemi yeniden boyayıp sekme
     hissi verebiliyor. Ayrı sabit katman yalnız bir kez oluşturulur;
     içerik üstünde akarken resim ekranla birlikte kesinlikle hareket etmez. */
  body::before{
    content:""; position:fixed; z-index:-1; inset:-1px; pointer-events:none;
    background:
      linear-gradient(rgba(8,11,15,.84),rgba(8,11,15,.91)),
      url('./dal-vitrin-reklam-clean-v2.webp') center top / cover no-repeat;
    transform:translateZ(0); will-change:transform;
  }
  .wrap{max-width:1180px;}
  header.dal-demo-header{
    position:sticky; top:0; z-index:45; display:grid; grid-template-columns:minmax(0,1fr) auto minmax(0,1fr); align-items:center;
    gap:18px; margin:0 -18px 22px; padding:calc(10px + env(safe-area-inset-top)) max(18px,calc((100vw - 1180px)/2 + 18px)) 9px;
    text-align:center; background:rgba(16,20,26,.97); border-bottom:1px solid rgba(201,163,92,.32);
    backdrop-filter:blur(16px); -webkit-backdrop-filter:blur(16px);
  }
  .dal-demo-brand{grid-column:2;display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:0}
  .dal-header-actions{grid-column:1;grid-row:1;display:flex;align-items:center;justify-self:start;gap:7px;min-width:0}
  .dal-refresh-btn{display:grid; place-items:center; width:34px; height:32px; flex:0 0 auto; border-radius:9px; border:1px solid rgba(201,163,92,.5); background:rgba(201,163,92,.1); color:var(--accent2); font-size:1.12rem; font-weight:900; line-height:1; cursor:pointer; transition:transform .2s ease, background .15s ease;}
  .dal-refresh-btn:hover{background:rgba(255,255,255,.12);}
  .dal-refresh-btn:active{transform:rotate(180deg);}
  .dal-connect-control{display:flex;align-items:center;min-width:0}
  .dal-connect-btn{min-height:32px;padding:6px 10px;border:1px solid rgba(201,163,92,.42);border-radius:999px;background:rgba(255,255,255,.06);color:var(--text);font:inherit;font-size:.64rem;font-weight:850;white-space:nowrap;cursor:pointer}
  .dal-connect-btn::before{content:"";display:inline-block;width:8px;height:8px;margin-right:7px;border-radius:50%;background:#8b929c}
  .dal-connect-btn[data-state="online"]::before{background:var(--green);box-shadow:0 0 0 3px rgba(62,207,142,.13)}
  .dal-connect-btn[data-state="connecting"]::before{background:#f2c96d;animation:dalConnectPulse 1s ease-in-out infinite}
  .dal-connect-btn[data-state="error"]::before{background:var(--danger)}
  .dal-connect-meta{display:none}
  @keyframes dalConnectPulse{50%{opacity:.3}}
  .dal-brand-logo{display:block; width:182px; height:64px; object-fit:contain; filter:drop-shadow(0 5px 12px rgba(0,0,0,.32))}
  .dal-demo-mark{display:grid; place-items:center; width:42px; height:42px; flex:0 0 auto; border-radius:13px; background:var(--card2); color:var(--accent2); border:1px solid var(--accent); font-weight:900; box-shadow:0 7px 18px rgba(0,0,0,.35);}
  .dal-price-status{grid-column:3;grid-row:1;justify-self:end;display:flex;align-items:center;gap:6px;min-width:0;padding:6px 10px;border:1px solid rgba(201,163,92,.4);border-radius:999px;background:rgba(255,255,255,.06);color:var(--accent2);font-size:.64rem;font-weight:800;white-space:nowrap;}
  .dal-price-status::before{content:""; width:7px; height:7px; flex:0 0 auto; border-radius:50%; background:var(--green);}
  .dal-demo-badge{margin-left:8px; padding:3px 7px; border:1px solid rgba(201,163,92,.35); border-radius:99px; background:rgba(201,163,92,.14); color:var(--accent2); font-size:.65rem; font-weight:900;}
  .card{background:var(--card); border-color:var(--border); box-shadow:0 10px 30px rgba(0,0,0,.35);}
  #girdilerCard{position:relative; top:auto; z-index:1; padding:0; background:transparent; border:0; box-shadow:none;}
  #girdilerCard > h2{display:none;}
  .dal-section{margin-bottom:20px;}
  /* Araç kutusu ana karttaki bütün günlük içeriklerin ardından görünür. */
  #girdilerCard{display:flex;flex-direction:column;}
  #tumAraclarSection{order:99;}
  .dal-section-head{display:flex; align-items:end; justify-content:space-between; gap:12px; margin-bottom:11px;}
  .dal-section-title{margin:0; color:var(--text); font-size:1.05rem; font-weight:850; letter-spacing:.01em;}
  .dal-section-copy{margin:3px 0 0; color:var(--muted); font-size:.76rem;}
  .dal-favorites{display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:12px;}
  .dal-favorite{
    position:relative; overflow:hidden; min-height:126px; padding:17px 13px; border:1px solid var(--border); border-radius:18px;
    background:linear-gradient(155deg,var(--card2) 0%,var(--card) 100%); color:var(--text);
    box-shadow:0 10px 28px rgba(0,0,0,.3); text-align:left; cursor:pointer;
    display:flex; flex-direction:column; justify-content:space-between; gap:15px; font:inherit; font-weight:800;
  }
  .dal-favorite::after{content:""; position:absolute; left:0; right:0; bottom:0; height:3px; background:linear-gradient(90deg,var(--accent),var(--accent2),var(--accent)); opacity:.78;}
  .dal-favorite:hover{border-color:var(--accent); transform:translateY(-2px); box-shadow:0 15px 34px rgba(0,0,0,.4);}
  .dal-favorite-icon{display:grid; place-items:center; width:42px; height:42px; border-radius:13px; background:var(--card); color:var(--accent2); font-size:1.25rem; box-shadow:0 6px 15px rgba(0,0,0,.3);}
  .dal-favorite small{display:block; margin-top:4px; color:var(--muted); font-size:.67rem; font-weight:650;}
  .dal-toolbox{border:1px solid var(--border); border-radius:20px; background:var(--card); overflow:hidden; box-shadow:0 12px 32px rgba(0,0,0,.3);}
  .dal-toolbox > summary{display:flex; align-items:center; justify-content:space-between; min-height:64px; padding:16px 18px; color:var(--text); font-weight:850; cursor:pointer; list-style:none;}
  .dal-toolbox > summary::-webkit-details-marker{display:none;}
  .dal-toolbox > summary::after{content:"⌄"; font-size:1.3rem; color:var(--accent);}
  .dal-toolbox[open] > summary::after{transform:rotate(180deg);}
  .dal-toolbox-content{padding:4px 18px 18px; border-top:1px solid var(--border);}
  .dal-category{padding:16px 0; border-bottom:1px solid var(--border);}
  .dal-category:last-child{border-bottom:0; padding-bottom:0;}
  .dal-category h3{margin:0 0 10px; color:var(--muted); font-size:.78rem; text-transform:uppercase; letter-spacing:.07em;}
  .dal-tool-grid{display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:9px;}
  .dal-tool-grid .quick-menu-button{min-height:54px; padding:11px 12px; border:1px solid var(--border)!important; border-radius:13px; background:var(--card2)!important; color:var(--text); box-shadow:none; font-size:.82rem; text-align:left; display:flex; align-items:center; gap:8px;}
  .dal-tool-icon{width:22px; height:22px; flex:0 0 auto; border-radius:50%; background:rgba(255,255,255,.06);}
  .dal-tool-grid .quick-menu-button:hover{background:rgba(201,163,92,.14)!important; border-color:var(--accent)!important; transform:none;}
  .quick-menu-label,.quick-menu{margin:0;}
  label{color:var(--muted); font-weight:750;}
  label::before{content:none;}
  input,select,textarea{border-color:var(--border)!important; background:var(--card2)!important; color:var(--text)!important;}
  .quick-modal-backdrop{background:rgba(0,0,0,.62);}
  .quick-modal-panel{border-color:var(--border); background:var(--card); box-shadow:0 28px 90px rgba(0,0,0,.55);}
  .quick-modal-head{background:rgba(21,26,33,.96); border-color:var(--border);}
  .quick-modal-title{color:var(--text); font-size:1.05rem;}
  .quick-modal-close{background:var(--card2); border-color:var(--border); color:var(--text);}
  .quick-modal-back{background:var(--card2); border-color:var(--border); color:var(--text);}
  .quick-modal-body > .card{color:var(--text);}
  .dal-mobile-nav{display:none;}
  .dal-shell-sidebar{display:none;}
  /* 2026-08-06: canlı fiyat terminali — Bloomberg/borsa ekranı hissi için
     tek-space (monospace) rakamlar, neredeyse siyah zemin, değişimde
     yeşil/kırmızı kısa parıltı. */
  .dal-terminal-card{
    background:#05070A; border:1px solid var(--border); border-radius:16px;
    padding:20px 20px 10px; box-shadow:0 10px 30px rgba(0,0,0,.4);
  }
  .dal-terminal-head{display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:6px;}
  .dal-terminal-title{font-size:1.15rem; font-weight:800; color:var(--accent2); letter-spacing:.02em;}
  .dal-terminal-live{display:flex; align-items:center; gap:6px; font-size:.78rem; font-weight:800; color:var(--green); text-transform:uppercase; letter-spacing:.08em;}
  .dal-terminal-live-dot{width:9px; height:9px; border-radius:50%; background:var(--green); box-shadow:0 0 8px var(--green); animation:dalTerminalPulse 1.6s ease-in-out infinite;}
  @keyframes dalTerminalPulse{0%,100%{opacity:1;}50%{opacity:.3;}}
  /* 2026-08-08: kullanıcı — 70 yaşındaki babası fiyatları/resimleri net
     göremiyor. Terminal metinleri/rakamları ve ürün resimleri büyütüldü,
     kontrast artırıldı (muted yerine daha açık bir gri) — sadece bu
     terminal kartı içinde, uygulamanın geri kalanına dokunulmadı. */
  .dal-terminal-sub{margin:0 0 14px; font-size:.86rem; color:#C9D2DE;}
  .dal-terminal-grid{display:grid; gap:2px;}
  /* 2026-08-07: kullanıcı — "Ürün Fiyatları"ndaki ürün resimlerini
     terminale, ilgili kategorinin alış/satış satırlarının SOLUNA, ikisi
     için ORTAK tek küçük resim olarak ekle. Satır yapısı aynı kaldı
     (id'ler, hesap mantığı dokunulmadı) — sadece her ürün çifti artık
     bir resim + satırlar olacak şekilde bir sarmalayıcıya alındı. EUR/
     Dolar için ürün fotoğrafı yok — kullanıcı "euroya euro işareti,
     dolara dolar işareti resmi koyalım" dedi; gerçek bir görsel dosyası
     kaynağı olmadığından aynı thumb kutusu boyutunda €/$ karakteri
     gösteren bir sembol kutusu (dal-terminal-thumb-symbol) kullanıldı. */
  .dal-terminal-group{display:flex; align-items:stretch; gap:14px; padding:6px 0;}
  .dal-terminal-group-rows{flex:1; min-width:0;}
  .dal-terminal-thumb{width:92px; height:92px; object-fit:cover; border-radius:12px; background:rgba(255,255,255,.06); flex:none; align-self:center;}
  .dal-terminal-thumb-symbol{display:flex; align-items:center; justify-content:center; font-size:2.4rem; font-weight:900; color:var(--info); background:rgba(106,168,255,.12); border:1.5px solid rgba(106,168,255,.3);}
  /* 2026-08-12: son sütun 30px'ten büyütüldü — artık sadece ▲/▼ oku değil,
     "▲ %1,24" biçiminde YÜZDE de yazıyor.
     minmax(0,1fr): etiket sütununun KÜÇÜLEBİLMESİ için. Sade "1fr" en geniş
     içeriğin altına inemez ve uzun ürün adları satırı telefonda yana doğru
     taşırıyordu (Barış: "telefonda görüntü yana doğru olmuş"). */
  .dal-terminal-row{display:grid; grid-template-columns:minmax(0,1fr) auto 78px; align-items:center; gap:12px; padding:11px 4px; border-top:1px solid rgba(255,255,255,.08); overflow:hidden;}
  /* 2026-08-07: kullanıcı — "aynı ürün grupları bittikten sonra bir
     çizgi çeksin, aşağıdaki aynı ürün grubundan ayrılsınlar". Her ürünün
     Satış+Alış çiftinin SONUNCU satırına eklenen sınıf; bir sonraki
     ürüne geçerken normal ince çizgiden daha belirgin bir ayraç olsun
     diye alt boşluk + daha güçlü/renkli bir çizgi eklendi. */
  .dal-terminal-row.dal-terminal-group-end{padding-bottom:14px; border-bottom:1px solid var(--border); margin-bottom:6px;}
  .dal-terminal-group-rows .dal-terminal-row:first-child{border-top:0;}
  .dal-terminal-label{font-size:1rem; color:#C9D2DE; font-weight:700;}
  .dal-terminal-value{font-family:ui-monospace,"SF Mono",Menlo,Consolas,monospace; font-size:1.4rem; font-weight:900; color:var(--text); text-align:right; font-variant-numeric:tabular-nums;}
  .dal-terminal-label.dal-terminal-fx,.dal-terminal-value.dal-terminal-fx{color:var(--info);}
  .dal-terminal-thumb-symbol.dal-terminal-thumb-crypto{color:#f2b84b; background:rgba(242,184,75,.12); border-color:rgba(242,184,75,.34);}
  .dal-terminal-label.dal-terminal-crypto,.dal-terminal-value.dal-terminal-crypto{color:#f2b84b;}
  .dal-terminal-chg{font-size:.82rem; font-weight:800; text-align:right; white-space:nowrap; font-variant-numeric:tabular-nums;}
  /* Etiket uzunsa satırı taşırmasın: sığmayan kısım "…" olur. */
  .dal-terminal-label{min-width:0; overflow:hidden; text-overflow:ellipsis;}
  /* TELEFON: yer dar. Barış "yüzdeleri küçük yazsan da olur" dedi —
     sütun ve yazı küçültülüp fiyatın okunaklılığı korunuyor. */
  @media(max-width:520px){
    .dal-terminal-row{grid-template-columns:minmax(0,1fr) auto 58px; gap:8px;}
    .dal-terminal-chg{font-size:.7rem; font-weight:700;}
    .dal-terminal-label{font-size:.88rem;}
    .dal-terminal-value{font-size:1.12rem;}
  }
  .dal-terminal-chg.up{color:var(--green);}
  .dal-terminal-chg.down{color:var(--danger);}
  /* 2026-08-10: Altın Piyasası Günlüğü kutusu. Terminal kartıyla aynı
     görsel dilde ama okunabilirlik öncelikli (70 yaş üstü kullanıcı da
     okuyor — bkz. terminal boyut ayarları). */
  .dal-piyasa-card{border:1px solid var(--border); border-radius:16px; background:var(--card2); padding:18px 20px;}
  .dal-piyasa-head{display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:10px;}
  .dal-piyasa-title{font-size:1.05rem; font-weight:800; color:var(--accent2);}
  .dal-piyasa-yenile{border:1px solid var(--border); background:transparent; color:var(--accent2); border-radius:9px; width:34px; height:34px; font-size:1.1rem; cursor:pointer;}
  .dal-piyasa-yenile:hover{background:rgba(201,163,92,.14); border-color:var(--accent);}
  .dal-piyasa-yenile[disabled]{opacity:.5; cursor:default;}
  .dal-piyasa-govde{font-size:.98rem; line-height:1.6; color:var(--text); white-space:pre-wrap;}
  .dal-piyasa-alt{margin:10px 0 0; font-size:.76rem; color:var(--muted);}
  .dal-piyasa-uyari{margin:8px 0 0; font-size:.72rem; color:var(--muted); font-style:italic;}
  .dal-terminal-value.dal-terminal-flash-up{animation:dalTerminalFlashUp 1s ease;}
  .dal-terminal-value.dal-terminal-flash-down{animation:dalTerminalFlashDown 1s ease;}
  @keyframes dalTerminalFlashUp{0%{color:var(--green);}100%{color:var(--text);}}
  @keyframes dalTerminalFlashDown{0%{color:var(--danger);}100%{color:var(--text);}}
  /* 2026-08-06: masaüstü kabuğu — sabit sol sidebar. ≥900px'de görünür,
     body sola kaydırılır ki sidebar içeriğin üstüne binmesin (bkz. alt
     media query). Mevcut header'ın kendi negatif marj tekniği body'nin
     padding kutusuna göre çalıştığından, body'yi kaydırmak header'ı da
     doğru şekilde beraberinde taşır — ayrı bir düzeltme gerekmiyor. */
  /* Tablet ve küçük dizüstünde içerik 900px olur olmaz 236px
     daralmamalı. Sabit yan menü yalnız geniş masaüstünde açılır. */
  @media(min-width:1180px){
    body{margin-left:236px;}
    .dal-shell-sidebar{
      display:flex; flex-direction:column; gap:2px;
      position:fixed; left:0; top:0; bottom:0; width:236px; z-index:60;
      padding:22px 14px; overflow-y:auto;
      background:var(--bg2); border-right:1px solid var(--border);
    }
    .dal-shell-brand{display:flex; flex-direction:column; margin:4px 8px 18px;}
    .dal-shell-brand-mark{font-size:1.3rem; font-weight:900; letter-spacing:.04em; color:var(--accent2);}
    .dal-shell-brand-sub{font-size:.62rem; font-weight:800; letter-spacing:.09em; text-transform:uppercase; color:var(--muted); margin-top:2px;}
    .dal-shell-link{
      display:flex; align-items:center; gap:11px;
      min-height:44px; box-sizing:border-box; padding:10px 12px; border-radius:11px; border:0; background:transparent;
      color:var(--muted); font-size:.85rem; font-weight:750; text-align:left;
      text-decoration:none; cursor:pointer; white-space:nowrap;
    }
    .dal-shell-link span{font-size:1.05rem; width:22px; text-align:center; flex:0 0 auto;}
    .dal-shell-link .dal-fx-icon{font-size:.72rem;font-weight:900;letter-spacing:-2px;color:#d7b464;}
    .dal-shell-link:hover{background:rgba(201,163,92,.1); color:var(--text);}
    .dal-shell-note{margin:auto 10px 2px;padding:12px 8px 0;border-top:1px solid var(--border);color:var(--muted);font-size:.68rem;line-height:1.45;}
    /* 2026-08-17: Yan menü 18 bağlantılık düz bir listeydi; göz nereye
       bakacağını bulamıyordu. Bağlantılar artık 5 anlamlı başlık altında
       gruplandı (Satış · Ürün ve Stok · Müşteri · İletişim · Yönetim).
       Başlıklar yalnız görsel ayraçtır; bağlantıların hiçbiri kaldırılmadı. */
    .dal-shell-group{
      margin:16px 12px 5px; padding:0; font-size:.58rem; font-weight:900;
      letter-spacing:.14em; text-transform:uppercase; color:var(--muted);
      opacity:.62; user-select:none;
    }
    .dal-shell-group:first-of-type{margin-top:10px;}
  }
  /* Kolay Mod yan menüyü gizliyorsa masaüstünde menünün boş 236px alanı
     da kalmamalı; içerik tam genişliği kullanır. */
  @media(min-width:1180px){body.kolay-mod{margin-left:0;}}
  .demo-safety-note{display:flex; align-items:center; gap:8px; margin:0 0 16px; padding:10px 13px; border:1px solid rgba(201,163,92,.35); border-radius:12px; background:rgba(201,163,92,.1); color:var(--accent2); font-size:.75rem; font-weight:750;}
  /* Prestijli fiyat vitrini: koyu lacivert-altın degrade kasıtlı — günün en
     kritik veri girişi (Harem fiyatları) diğer kartlardan öne çıksın diye. */
  #fiyatKurGirdileriCard{border-radius:20px!important;}
  #fiyatKurGirdileriCard{padding:18px!important; background:linear-gradient(145deg,#0D1526,#152238)!important; color:#f8f4e9!important;}
  #fiyatKurGirdileriCard h2{color:#efd58b!important; font-size:1.12rem;}
  #fiyatKurGirdileriCard label{color:#d5dced;}
  #fiyatKurGirdileriCard input{min-height:54px; border-color:rgba(232,199,120,.42)!important; background:rgba(255,255,255,.98)!important; color:#111a2a!important; font-size:1.05rem; font-weight:850;}
  #fiyatKurGirdileriCard input:focus{border-color:#e7c777!important; box-shadow:0 0 0 4px rgba(231,199,119,.17);}
  #fiyatKurGirdileriCard .harem-field-status{color:#aee7cf;}
  #fiyatKurGirdileriCard .euro-hint{color:#c6cede;}
  @media(max-width:900px){
    .dal-favorites{grid-template-columns:repeat(3,minmax(0,1fr));}
    .dal-tool-grid{grid-template-columns:repeat(3,minmax(0,1fr));}
  }
  /* Günlük sekiz ana iş sabit alt çubukta; uzman özellikleri ana sayfadaki
     geniş araç bölümünde kalır. Tablet ve telefonda aynı sıra kullanılır. */
  @media(max-width:1179px){
    .dal-mobile-nav{
      position:fixed; left:0; right:0; bottom:0; z-index:70;
      display:flex; gap:2px; overflow-x:auto; -webkit-overflow-scrolling:touch;
      padding:6px 8px calc(6px + env(safe-area-inset-bottom));
      border-top:1px solid var(--border);
      background:rgba(16,20,26,.97); box-shadow:0 -8px 30px rgba(0,0,0,.4);
      backdrop-filter:blur(14px); scrollbar-width:none;
    }
    .dal-mobile-nav::-webkit-scrollbar{display:none;}
    .dal-mobile-nav a,.dal-mobile-nav button{
      display:grid; place-items:center; gap:2px; flex:0 0 auto; width:64px;
      min-height:52px; padding:6px 2px; border:0; border-radius:12px;
      background:transparent; color:var(--muted); text-decoration:none;
      font-size:.6rem; font-weight:800; text-align:center; line-height:1.2;
    }
    .dal-mobile-nav a:active,.dal-mobile-nav button:active{background:rgba(201,163,92,.14); color:var(--text);}
    .dal-mobile-nav span{font-size:1.15rem;}
  }
  @media(max-width:560px){
    body{padding:0 12px calc(82px + env(safe-area-inset-bottom));}
    header.dal-demo-header{gap:7px;margin:0 -12px 16px;padding:calc(8px + env(safe-area-inset-top)) 10px 7px;}
    .dal-demo-mark{width:38px; height:38px; border-radius:11px;}
    .dal-header-actions{gap:5px}
    .dal-refresh-btn{width:28px; height:29px; font-size:.96rem;}
    .dal-connect-btn{min-height:29px;padding:4px 6px;font-size:.54rem}
    .dal-connect-btn::before{width:6px;height:6px;margin-right:5px}
    .dal-brand-logo{width:104px; height:43px;}
    .dal-price-status{padding:5px 8px;font-size:0;}
    .dal-price-status::after{content:"Harem"; font-size:.59rem;}
    .dal-demo-badge{display:none;}
    .demo-safety-note{font-size:.69rem;}
    .dal-favorites{grid-template-columns:repeat(2,minmax(0,1fr)); gap:9px;}
    .dal-favorite{min-height:108px; padding:13px 11px; border-radius:15px; font-size:.82rem;}
    .dal-favorite-icon{width:38px; height:38px; font-size:1.05rem;}
    .dal-toolbox-content{padding:2px 12px 14px;}
    .dal-tool-grid{grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px;}
    .dal-tool-grid .quick-menu-button{min-height:50px; font-size:.75rem;}
  }

/* ---- index.html 3. stil bloğu ---- */
.dal-satildi-btn{display:block;margin:14px 0 0 auto;min-height:44px;padding:0 18px;border:0;border-radius:12px;background:linear-gradient(135deg,#d5ad58,#f0d58f);color:#171109;font-weight:900;cursor:pointer}
.dal-satis-ekstre-ac{min-height:44px;border:1px solid var(--border);border-radius:11px;background:#17231e;color:var(--accent2);font-weight:850;cursor:pointer}
  .dal-satis-tik{width:20px;height:20px;margin:0 9px 0 0;vertical-align:middle;accent-color:#d5ad58;cursor:pointer}
  .dal-kar-tik{width:19px;height:19px;accent-color:#d5ad58;cursor:pointer;flex:none}
  .dal-kar-secim{display:inline-flex;align-items:center;gap:7px;min-height:34px;padding:5px 9px;border:1px solid rgba(213,173,88,.42);border-radius:10px;background:rgba(213,173,88,.08);cursor:pointer;white-space:nowrap}
  .dal-kar-secim:has(.dal-kar-tik:checked){background:rgba(81,212,154,.17);border-color:var(--green);box-shadow:0 0 0 2px rgba(81,212,154,.1)}
  .dal-kar-secim-yazi{font-size:.7rem;font-weight:900;color:var(--accent2);text-transform:uppercase;letter-spacing:.03em}
  .dal-kar-secim:has(.dal-kar-tik:checked) .dal-kar-secim-yazi{color:var(--green)}
  .dal-doviz-tikler{display:flex;justify-content:center;gap:8px;flex-wrap:wrap;margin-top:7px}.dal-doviz-tikler label{display:inline-flex;align-items:center;gap:4px;min-height:28px;padding:3px 7px;border:1px solid rgba(213,173,88,.32);border-radius:8px;font-size:.7rem;color:var(--text);white-space:nowrap;cursor:pointer}.dal-doviz-tikler label:has(input:checked){border-color:var(--green);background:rgba(81,212,154,.17);color:var(--green)}.dal-doviz-tikler input{width:18px;height:18px;accent-color:#d5ad58}
  .dal-satis-modal{position:fixed;z-index:10080;inset:0;display:none;place-items:center;padding:18px;background:rgba(0,0,0,.76);backdrop-filter:blur(8px)}
  .dal-satis-modal.acik{display:grid}.dal-satis-form{width:min(620px,100%);max-height:92vh;overflow:auto;background:#11161e;border:1px solid rgba(228,189,104,.45);border-radius:20px;padding:20px;box-shadow:0 24px 80px #000}
  .dal-satis-form h2{margin:0 0 4px;color:var(--accent2)}.dal-satis-form p{color:var(--muted);margin:0 0 14px}.dal-satis-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.dal-satis-grid label{display:grid;gap:5px;color:var(--muted);font-size:.8rem;font-weight:750}.dal-satis-grid input,.dal-satis-grid select{width:100%;min-height:44px;border:1px solid var(--border);border-radius:10px;background:#090d13;color:var(--text);padding:9px 11px;font:inherit}.dal-satis-tam{grid-column:1/-1}.dal-satis-ozet{margin-top:14px;padding:13px;border-radius:12px;background:rgba(228,189,104,.08);color:var(--text);white-space:pre-line}.dal-satis-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:10px;margin-top:14px}.dal-satis-actions button{min-height:44px;padding:0 17px;border:0;border-radius:11px;font-weight:850}.dal-satis-kapat{background:#29303b;color:var(--text)}.dal-satis-isimsiz-ekstre{background:#72551c;color:#fff3d2}.dal-satis-kaydet{background:var(--green);color:#07150f}.dal-satis-durum{min-height:22px;margin-top:9px!important;color:var(--muted)!important}@media(max-width:600px){.dal-satis-grid{grid-template-columns:1fr}.dal-satis-tam{grid-column:auto}.dal-satis-actions button{flex:1 1 100%}}

/* ---- index.html 4. stil bloğu ---- */
.dal-ekran-koruyucu{
    position:fixed; z-index:10050; inset:0; overflow:hidden;
    display:grid; place-items:end start; padding:clamp(22px,5vw,64px);
    background:#05070a url('./dal-vitrin-reklam-clean-v2.webp') center / cover no-repeat;
    opacity:0; visibility:hidden; pointer-events:none;
    transform:translateZ(0); transition:opacity .42s ease,visibility .42s;
    contain:strict;
  }
  .dal-ekran-koruyucu.aktif{opacity:1;visibility:visible;pointer-events:auto}
  .dal-ekran-koruyucu::before{
    content:"";position:absolute;inset:0;pointer-events:none;
    background:linear-gradient(90deg,rgba(0,0,0,.24),transparent 58%),
      linear-gradient(180deg,rgba(0,0,0,.08),transparent 72%,rgba(0,0,0,.3));
  }
  .dal-ekran-koruyucu-logo-alani{position:absolute;z-index:2;left:50%;top:50%;width:min(34vw,360px);transform:translate(-50%,-50%);isolation:isolate}
  .dal-ekran-koruyucu-logo{position:relative;z-index:2;display:block;width:100%;height:auto;object-fit:contain;opacity:.78;filter:brightness(.82);will-change:filter,opacity}
  .dal-ekran-koruyucu-logo-parlama{position:absolute;z-index:1;inset:0;display:block;width:100%;height:auto;opacity:0;filter:brightness(1.8) blur(2px) drop-shadow(0 0 3px rgba(255,245,213,.4));mix-blend-mode:screen;will-change:filter,opacity}
  .dal-ekran-koruyucu.aktif .dal-ekran-koruyucu-logo{animation:dalLogoIcIsik 9.6s cubic-bezier(.45,0,.55,1) infinite}
  .dal-ekran-koruyucu.aktif .dal-ekran-koruyucu-logo-parlama{animation:dalLogoDisParlama 9.6s cubic-bezier(.45,0,.55,1) infinite}
  .dal-yuzuk-tasi-parlama{
    position:absolute;z-index:4;left:71.7%;top:49.2%;width:7px;height:7px;
    border-radius:50%;pointer-events:none;opacity:0;transform:translate(-50%,-50%) scale(.15);
    background:#fffdf2;box-shadow:0 0 5px #fff,0 0 14px rgba(255,236,174,.9);
    will-change:transform,opacity,filter;
  }
  .dal-yuzuk-tasi-parlama::before,.dal-yuzuk-tasi-parlama::after{content:"";position:absolute;left:50%;top:50%;background:linear-gradient(90deg,transparent,#fff9df,transparent);transform:translate(-50%,-50%);border-radius:99px}
  .dal-yuzuk-tasi-parlama::before{width:64px;height:2px}
  .dal-yuzuk-tasi-parlama::after{width:2px;height:64px;background:linear-gradient(180deg,transparent,#fff9df,transparent)}
  .dal-ekran-koruyucu.aktif .dal-yuzuk-tasi-parlama{animation:dalTasParlama 9.6s ease-in-out infinite}
  .dal-ekran-koruyucu-yazi{position:relative;z-index:2;color:#eee9de;text-shadow:0 2px 16px #000;font-size:.78rem;letter-spacing:.16em;text-transform:uppercase;opacity:.72}
  @keyframes dalLogoIcIsik{0%,8%,100%{opacity:0;filter:brightness(0)}20%{opacity:.16;filter:brightness(.32)}36%{opacity:.52;filter:brightness(.72)}50%{opacity:.88;filter:brightness(1.22)}58%{opacity:1;filter:brightness(1.72)}66%{opacity:.96;filter:brightness(1.42)}78%{opacity:.55;filter:brightness(.72)}90%{opacity:.14;filter:brightness(.24)}}
  @keyframes dalLogoDisParlama{0%,32%,84%,100%{opacity:0;filter:brightness(1.3) blur(2px) drop-shadow(0 0 2px rgba(255,245,213,0))}48%{opacity:.2;filter:brightness(1.8) blur(3px) drop-shadow(0 0 9px rgba(255,241,195,.34))}58%{opacity:.56;filter:brightness(2.35) blur(5px) drop-shadow(0 0 22px rgba(255,232,158,.68))}68%{opacity:.28;filter:brightness(1.9) blur(7px) drop-shadow(0 0 34px rgba(255,228,145,.28))}78%{opacity:.06;filter:brightness(1.5) blur(9px) drop-shadow(0 0 38px rgba(255,228,145,.08))}}
  @keyframes dalTasParlama{0%,53%,67%,100%{opacity:0;transform:translate(-50%,-50%) scale(.15) rotate(0deg);filter:blur(2px)}57%{opacity:.32;transform:translate(-50%,-50%) scale(.58) rotate(8deg);filter:blur(.6px)}60%{opacity:1;transform:translate(-50%,-50%) scale(1.08) rotate(16deg);filter:blur(0)}64%{opacity:.2;transform:translate(-50%,-50%) scale(.5) rotate(24deg);filter:blur(.8px)}}
  @media(max-width:719px){.dal-ekran-koruyucu-logo-alani{width:min(55vw,280px)}}
  @media(prefers-reduced-motion:reduce){.dal-ekran-koruyucu.aktif .dal-ekran-koruyucu-logo,.dal-ekran-koruyucu.aktif .dal-ekran-koruyucu-logo-parlama{animation:none}.dal-ekran-koruyucu-logo{opacity:.88;filter:brightness(1.05)}}
  @media print{.dal-ekran-koruyucu{display:none!important}}


  /* ── iPHONE ÇENTİĞİ ───────────────────────────────────────────────
     2026-08-17 (Barış): "kolay ekranda en üst taşıyor, oradaki tuşlara
     basamıyorum".

     index.html "viewport-fit=cover" kullanıyor: içerik BİLEREK ekranın
     tamamına, çentiğin altına kadar uzanıyor. Buna karşılık 560px altı
     kırılımda body şöyle yazıyordu:

         body{padding:0 12px calc(82px + env(safe-area-inset-bottom));}

     Yani telefonda ÜST PAY SIFIR. Kolay Mod'un üst satırı (logo, saat,
     "Tam ekrana geç") çentiğin ve durum çubuğunun altında kalıyor,
     dokunuşlar oraya ulaşmıyordu. Ekranda hata yok, sadece basılmıyor.

     Mevcut çentik kuralı @media(display-mode:standalone) içinde, yani
     yalnız ana ekrana eklenmiş uygulamada çalışıyordu. Tarayıcıdan
     açanlar korumasızdı.

     YALNIZ ÜST PAY VERİLİYOR — alt paya DOKUNULMUYOR. Alttaki 82px,
     sabit mobil menünün altında içerik kalmasın diye var; buradan
     ezilseydi bu kez alt kısım menünün arkasına girerdi. Bir taşmayı
     düzeltip başka bir taşma yaratmak olurdu.

     max(): çentiksiz cihazda env() sıfır döner, eski pay korunur —
     masaüstünde hiçbir şey değişmez.

     BU BLOK DOSYANIN SONUNDA OLMAK ZORUNDA: kırılımlar "padding"
     KISAYOLUNU kullanıyor ve kısayol padding-top'u sıfırlıyor. Blok
     yukarı taşınırsa pay sessizce silinir. */
  body{ padding-top:max(20px,env(safe-area-inset-top,0px)); }
  @media (max-width:768px){ body{ padding-top:max(15px,env(safe-area-inset-top,0px)); } }
  @media (max-width:480px){ body{ padding-top:max(12px,env(safe-area-inset-top,0px)); } }

  /* ── SATIŞ EKRANLARI: "SATILDI" KUTUSUNU KÜÇÜLT ───────────────────
     2026-08-17 (Barış): "14 Ayar Standart'ta Satış (TL) bölümünü
     Satıldı butonuna yaklaştır, 22 Ayar Fantazi ve Alyans'taki gibi
     olsun; Satış (EUR) bile görünsün. Bunun için Satıldı %30 kutucuğu
     küçük olmalı. Ama satış / kartlı satış rakamlarını çok küçültme,
     okunur olsun."

     14 Ayar Standart tablosu diğerlerinden GENİŞ, çünkü fazladan bir
     "Maliyet (TL)" sütunu var (fantazi tablolarında yok). Üstüne
     Satıldı kutusu da geniş yer tutuyordu: 19px kutu + 7px boşluk +
     "SATILDI" yazısı + 7px boşluk + %30 rozeti + 9px iç pay.

     Küçültülen YALNIZ bu kutu. Rakam hücrelerine ayrıca alt sınır
     verildi ki tablo daralırken onlar küçülmesin — istenen buydu.

     Dokunma alanı: yükseklik 34→30px düştü ama tıklanabilir alan tüm
     <label> (kutu + yazı + rozet), yani parmakla hedeflemesi hâlâ
     rahat. Küçülen yükseklik, kazanılan sütun genişliği karşılığında
     bilerek kabul edildi. */
  .dal-kar-secim{gap:5px; min-height:30px; padding:3px 7px;}
  .dal-kar-tik{width:16px; height:16px;}
  .dal-kar-secim-yazi{font-size:.58rem; letter-spacing:.01em;}
  .kar-badge{padding:2px 8px; font-size:.74rem;}
  .dal-kar-workspace .operation-screen:not(:has(.operation-details[open])) .kar-badge{font-size:.74rem;}

  /* Rakamlar okunur kalsın: tablo daralınca bunlar küçülmesin. */
  .dal-kar-workspace :is(#karTablosu,#rbKarTablosu) :is(.tl-val,.eur-val),
  #ayar22KarTablosu :is(.tl-val,.eur-val),
  #ceyrek14KarTablosu :is(.tl-val,.eur-val),
  #ceyrek22KarTablosu :is(.tl-val,.eur-val){font-size:.84rem;}

  /* Kazanılan genişlik sayesinde tablo daha erken sığıyor; 880px'te
     Satış (EUR) sütunu ekran dışında kalıyordu. */
  /* Alyans tablosunun alt sınırı yok; sütunlar içeriğe göre yerleşiyor.
     Buraya da sınır koymamak "alyanstaki gibi olsun" demenin karşılığı.
     Sabit bir alt sınır, boşluğu geri getirir. */

  /* 14K Standart ve Roberto Bravo tablolarını fantazi tablolarıyla
     AYNI yapan asıl fark: onlarda 4. sütun "Maliyet (TL)" var,
     fantazide yok. Yedi sütun bir telefona okunur biçimde sığmıyor —
     "Satış (EUR) bile görünsün" isteği ancak bu sütun çıkınca mümkün.

     Maliyet hücresi DOM'da ve hesapta KALIYOR, yalnız dar/derli toplu
     görünümde gizleniyor: ayrıntılar açıldığında yine görünür. Tezgâhta
     müşteriye dönük ekranda maliyetin görünmemesi zaten tercih edilen
     davranış (bkz. Kolay Mod'da maliyet/kâr gizleme). */
  .dal-kar-workspace .operation-screen:not(:has(.operation-details[open])) :is(#karTablosu,#rbKarTablosu) :is(th,td):nth-child(4){
    display:none;
  }

  /* ══ VERESİYE: YENİ MÜŞTERİ ALANLARI ve "SATILDI" KUTUSU ═══════════
     2026-08-22 (Barış): "Veresiyeyi seçtiğimde bana izin ver kişinin adını,
     soyadını yazayım, hatta telefonunu bile yazabileyim… satışı kaydet
     onaylanınca yeşil bir kutu pop up çıksın ekranın ortasında ve satıldı
     yazsın." */
  .dal-yeni-musteri{
    margin-top:4px;
    padding:12px;
    border:1px solid rgba(228,189,104,.4);
    border-radius:12px;
    background:rgba(228,189,104,.06);
  }
  .dal-yeni-musteri[hidden]{display:none!important;}
  /* AÇILIRKEN AŞAĞI KAYAR (2026-08-22, Barış: "aşağıya kaydırarak açman
     ve doldurunca tekrar yukarı kaydırarak başlık görünecek şekilde geri
     toplaman lazım"). Panel belirdiğinde yukarıdan aşağı süzülür; ani
     beliren bir kutu tezgâhta "ekran zıpladı" hissi veriyordu. */
  .dal-yeni-musteri:not([hidden]){animation:dalYeniMusteriIn .26s ease both;}
  @keyframes dalYeniMusteriIn{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}

  /* Başlık artık bir düğme: kapalıyken girilen adı özet olarak gösterir. */
  .dal-yeni-musteri-baslik{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:10px;
    width:100%;
    margin:0;
    padding:0;
    border:0;
    background:none;
    text-align:left;
    cursor:pointer;
    color:var(--accent2);
    font:inherit;
    font-size:.78rem;
    font-weight:900;
    letter-spacing:.03em;
  }
  .dal-yeni-musteri-ok{transition:transform .26s ease;font-size:1rem;line-height:1;}
  .dal-yeni-musteri.kapali .dal-yeni-musteri-ok{transform:rotate(-90deg);}

  /* AKORDİYON: 1fr → 0fr geçişi, sabit yükseklik tahmin etmeden yumuşak
     kapanma verir. İç sarmalayıcıda min-height:0 şart — yoksa grid satırı
     içeriğin altına inemez ve kapanma hiç görünmez. */
  .dal-yeni-musteri-govde{
    display:grid;
    grid-template-rows:1fr;
    transition:grid-template-rows .28s ease,opacity .2s ease;
    opacity:1;
  }
  .dal-yeni-musteri-ic{min-height:0;overflow:hidden;padding-top:9px;}
  .dal-yeni-musteri.kapali .dal-yeni-musteri-govde{grid-template-rows:0fr;opacity:0;}

  .dal-yeni-musteri-alt{display:flex;justify-content:flex-end;margin-top:10px;}
  .dal-yeni-musteri-tamam{
    min-height:38px;
    padding:0 15px;
    border:1px solid rgba(228,189,104,.5);
    border-radius:10px;
    background:rgba(228,189,104,.14);
    color:var(--accent2);
    font:inherit;
    font-weight:850;
    cursor:pointer;
  }

  /* Hareketi azaltılmış cihazlarda kaydırma/animasyon yerine anında geçiş. */
  @media(prefers-reduced-motion:reduce){
    .dal-yeni-musteri:not([hidden]){animation:none;}
    .dal-yeni-musteri-govde,.dal-yeni-musteri-ok{transition:none;}
  }
  .dal-yeni-musteri-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;}
  .dal-yeni-musteri-grid label{display:grid;gap:5px;color:var(--muted);font-size:.75rem;font-weight:750;}
  .dal-yeni-musteri-grid input{
    width:100%;
    min-height:44px;
    padding:9px 11px;
    border:1px solid var(--border);
    border-radius:10px;
    background:#090d13;
    color:var(--text);
    font:inherit;
  }
  .dal-yeni-musteri small{display:block;margin-top:9px;color:var(--muted);font-size:.72rem;line-height:1.5;}
  /* Telefonda üç sütun sığmaz; ad/soyad yan yana, telefon tam satır. */
  @media(max-width:640px){
    .dal-yeni-musteri-grid{grid-template-columns:1fr 1fr;}
    .dal-yeni-musteri-grid label:last-child{grid-column:1 / -1;}
  }

  /* Ekranın TAM ORTASINDA, her şeyin üstünde. z-index satış penceresinden
     (quick-modal) yüksek olmak zorunda — altında kalsaydı onay görünmezdi.
     pointer-events:none: kutu görünürken kullanıcının tıklaması engellenmesin,
     zaten kendiliğinden kapanıyor. */
  .dal-satildi-kutu{
    position:fixed;
    inset:0;
    z-index:9999;
    display:grid;
    place-items:center;
    pointer-events:none;
    background:rgba(4,8,6,.45);
    backdrop-filter:blur(2px);
    -webkit-backdrop-filter:blur(2px);
    animation:dalSatildiGir .18s ease;
  }
  .dal-satildi-kutu[hidden]{display:none!important;}
  .dal-satildi-ic{
    display:grid;
    justify-items:center;
    gap:6px;
    min-width:min(300px,78vw);
    padding:30px 38px;
    border:2px solid #3ddc97;
    border-radius:20px;
    background:linear-gradient(160deg,#127a52,#0d5c3e);
    box-shadow:0 26px 70px rgba(0,0,0,.6),0 0 0 6px rgba(61,220,151,.16);
    color:#fff;
    text-align:center;
  }
  .dal-satildi-ic strong{font-size:1.9rem;font-weight:900;letter-spacing:.09em;}
  .dal-satildi-tik{
    display:grid;
    place-items:center;
    width:56px;height:56px;
    border-radius:50%;
    background:rgba(255,255,255,.16);
    font-size:1.9rem;
    line-height:1;
  }
  .dal-satildi-alt{color:rgba(255,255,255,.9);font-size:.86rem;font-weight:800;}
  .dal-satildi-alt:empty{display:none;}
  @keyframes dalSatildiGir{from{opacity:0;transform:scale(.94)}to{opacity:1;transform:scale(1)}}
  @media(prefers-reduced-motion:reduce){
    .dal-satildi-kutu{animation:none;}
  }
