Files

532 lines
15 KiB
CSS
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* Numex QR Studio — stil
Palet: gece mürekkebi (#0f172a) + gök mavisi (#38bdf8) + sıcak kâğıt zemin
Yazı tipi: sistem yığını (Türkçe karakterler sorunsuz), yoğunluk: ferah ama sıkı */
:root {
--murekkep: #0f172a;
--murekkep-2: #1e293b;
--mavi: #2563eb;
--gok: #38bdf8;
--kagit: #f6f7fb;
--kart: #ffffff;
--cizgi: #e2e8f0;
--metin: #0f172a;
--soluk: #64748b;
--hata: #dc2626;
--basari: #059669;
--golge: 0 1px 2px rgba(15, 23, 42, .06), 0 8px 24px -12px rgba(15, 23, 42, .18);
--yaricap: 14px;
--gecis: 160ms ease;
}
* { box-sizing: border-box; }
html, body {
margin: 0;
padding: 0;
min-height: 100%;
}
body {
font-family: "Segoe UI", "Inter", system-ui, -apple-system, "Helvetica Neue", Arial, sans-serif;
background:
radial-gradient(1200px 500px at 85% -10%, rgba(56, 189, 248, .16), transparent 60%),
radial-gradient(900px 420px at 5% 0%, rgba(37, 99, 235, .10), transparent 55%),
var(--kagit);
color: var(--metin);
font-size: clamp(14px, 1.4vw, 15.5px);
line-height: 1.5;
overflow-y: auto;
-webkit-text-size-adjust: 100%;
}
h1, h2 { margin: 0; font-weight: 700; letter-spacing: -.01em; }
/* ---------- Üst bar ---------- */
.ust {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
flex-wrap: wrap;
padding: clamp(14px, 2vw, 22px) clamp(14px, 3vw, 34px);
max-width: 1280px;
margin: 0 auto;
}
.marka { display: flex; align-items: center; gap: 12px; }
.logo { display: inline-flex; filter: drop-shadow(0 6px 14px rgba(37, 99, 235, .35)); }
.marka h1 { font-size: clamp(17px, 2.2vw, 21px); }
.marka p { margin: 1px 0 0; font-size: 12.5px; color: var(--soluk); }
.ust-sag { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.ust-bag {
font-size: 12.5px;
font-weight: 600;
color: var(--soluk);
text-decoration: none;
padding: 6px 10px;
border-radius: 8px;
transition: color var(--gecis), background var(--gecis);
}
.ust-bag:hover { color: var(--mavi); background: rgba(37, 99, 235, .07); }
.ust-not {
font-size: 12px;
color: var(--basari);
background: rgba(5, 150, 105, .08);
border: 1px solid rgba(5, 150, 105, .22);
padding: 6px 12px;
border-radius: 999px;
white-space: nowrap;
}
/* ---------- Yerleşim ---------- */
.duzen {
max-width: 1280px;
margin: 0 auto;
padding: 0 clamp(14px, 3vw, 34px) 28px;
display: grid;
grid-template-columns: minmax(0, 1.06fr) minmax(0, .94fr);
gap: clamp(14px, 2vw, 22px);
align-items: start;
}
.kart {
background: var(--kart);
border: 1px solid var(--cizgi);
border-radius: var(--yaricap);
box-shadow: var(--golge);
padding: clamp(14px, 2vw, 20px);
}
.ayarlar { display: flex; flex-direction: column; gap: 14px; }
/* ---------- Sekmeler ---------- */
.sekmeler {
display: flex;
gap: 6px;
flex-wrap: wrap;
background: #f1f5f9;
padding: 5px;
border-radius: 12px;
}
.sekme {
flex: 1 1 auto;
min-height: 44px;
min-width: 72px;
border: 0;
background: transparent;
border-radius: 9px;
font: inherit;
font-size: clamp(12.5px, 1.3vw, 13.5px);
font-weight: 600;
color: var(--soluk);
cursor: pointer;
padding: 8px 10px;
transition: background var(--gecis), color var(--gecis), box-shadow var(--gecis);
}
.sekme:hover { color: var(--murekkep); background: rgba(255, 255, 255, .6); }
.sekme.aktif {
background: var(--kart);
color: var(--mavi);
box-shadow: 0 1px 3px rgba(15, 23, 42, .12);
}
/* ---------- Form alanları ---------- */
.alanlar { display: flex; flex-direction: column; gap: 10px; }
.panel { display: flex; flex-direction: column; gap: 6px; }
.panel[hidden] { display: none; }
label {
font-size: 12.5px;
font-weight: 600;
color: var(--murekkep-2);
display: flex;
align-items: center;
justify-content: space-between;
gap: 8px;
}
.soluk { color: var(--soluk); font-weight: 500; }
.deger { color: var(--mavi); font-variant-numeric: tabular-nums; font-weight: 600; }
input[type="text"],
input[type="tel"],
input[type="email"],
textarea,
select {
width: 100%;
min-height: 44px;
padding: 10px 12px;
font: inherit;
color: var(--murekkep);
background: #fbfcfe;
border: 1px solid var(--cizgi);
border-radius: 10px;
transition: border-color var(--gecis), box-shadow var(--gecis), background var(--gecis);
}
textarea { resize: vertical; min-height: 78px; line-height: 1.5; }
input:focus, textarea:focus, select:focus {
outline: none;
border-color: var(--mavi);
background: #fff;
box-shadow: 0 0 0 3px rgba(37, 99, 235, .14);
}
input[type="range"] {
width: 100%;
min-height: 34px;
accent-color: var(--mavi);
cursor: pointer;
}
input[type="color"] {
width: 100%;
max-width: 100%;
height: 44px;
padding: 3px;
border: 1px solid var(--cizgi);
border-radius: 10px;
background: #fff;
cursor: pointer;
-webkit-appearance: none;
appearance: none;
}
input[type="color"]::-webkit-color-swatch-wrapper { padding: 0; }
input[type="color"]::-webkit-color-swatch { border: 0; border-radius: 7px; }
input[type="color"]::-moz-color-swatch { border: 0; border-radius: 7px; }
.onay {
display: flex;
align-items: center;
justify-content: flex-start;
gap: 8px;
min-height: 44px;
font-weight: 500;
cursor: pointer;
}
.onay input { width: 18px; height: 18px; accent-color: var(--mavi); cursor: pointer; }
.onay.orta { align-self: end; }
.ipucu { margin: 0; font-size: 12px; color: var(--soluk); line-height: 1.45; }
.kucuk { font-size: 12px; }
hr { border: 0; border-top: 1px solid var(--cizgi); margin: 2px 0; }
.bolum { font-size: 13.5px; text-transform: uppercase; letter-spacing: .06em; color: var(--soluk); font-weight: 700; }
.izgara2 {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 10px;
}
.alan { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
/* ---------- Stil seçimi ---------- */
.stil-secim { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.stil {
min-height: 60px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 6px;
font: inherit;
font-size: 12.5px;
font-weight: 600;
color: var(--murekkep-2);
background: #fbfcfe;
border: 1.5px solid var(--cizgi);
border-radius: 11px;
cursor: pointer;
transition: border-color var(--gecis), background var(--gecis), color var(--gecis);
}
.stil:hover { border-color: #bfdbfe; background: #f8fbff; }
.stil.aktif { border-color: var(--mavi); background: rgba(37, 99, 235, .06); color: var(--mavi); }
.stil-ikon { width: 26px; height: 26px; display: block; border: 2px solid currentColor; }
.stil-kare { border-radius: 2px; background:
repeating-linear-gradient(90deg, currentColor 0 4px, transparent 4px 8px),
repeating-linear-gradient(0deg, currentColor 0 4px, transparent 4px 8px);
background-blend-mode: multiply; }
.stil-yuvarlak { border-radius: 7px; box-shadow: inset 0 0 0 3px #fff, inset 0 0 0 6px currentColor; }
.stil-nokta {
border: 0;
background-image: radial-gradient(currentColor 2px, transparent 2.4px);
background-size: 8px 8px;
border-radius: 3px;
}
/* ---------- Zemin ---------- */
.zemin-secim { display: flex; gap: 8px; flex-wrap: wrap; }
.zemin {
min-height: 44px;
padding: 0 14px;
display: inline-flex;
align-items: center;
justify-content: center;
font: inherit;
font-size: 12.5px;
font-weight: 600;
color: var(--murekkep-2);
background: #fbfcfe;
border: 1.5px solid var(--cizgi);
border-radius: 10px;
cursor: pointer;
transition: border-color var(--gecis), color var(--gecis), background var(--gecis);
}
.zemin:hover { border-color: #bfdbfe; }
.zemin.aktif { border-color: var(--mavi); color: var(--mavi); background: rgba(37, 99, 235, .06); }
.renk-sec { gap: 8px; position: relative; overflow: hidden; }
.renk-nokta {
width: 20px;
min-width: 20px;
height: 20px;
flex: 0 0 20px;
display: block;
position: relative;
z-index: 2;
pointer-events: none;
}
.renk-gizli {
position: absolute;
inset: 0;
width: 100%;
height: 100%;
min-height: 0;
padding: 0;
border: 0;
opacity: 0;
cursor: pointer;
}
/* Renk seçici tüm kutuyu kapladığı için aktif halka kutunun kendisinde gösterilir. */
.renk-sec:focus-within {
border-color: var(--mavi);
box-shadow: 0 0 0 3px rgba(37, 99, 235, .16);
}
.renk-sec input[type="color"] {
width: 26px;
height: 24px;
min-height: 24px;
flex: 0 0 26px;
padding: 0;
border-radius: 6px;
border: 1px solid var(--cizgi);
background: #f8fafc;
position: relative;
}
.renk-sec input[type="color"]::-webkit-color-swatch-wrapper { padding: 2px; }
.renk-sec input[type="color"]::-webkit-color-swatch { border-radius: 4px; border: 0; }
.renk-sec input[type="color"]::-moz-color-swatch { border-radius: 4px; border: 0; }
/* ---------- Logo ---------- */
.logo-satir { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.dosya-sec {
display: inline-flex;
align-items: center;
justify-content: center;
min-height: 44px;
padding: 0 16px;
font-size: 13px;
font-weight: 600;
color: var(--murekkep-2);
background: #f1f5f9;
border: 1px dashed #cbd5e1;
border-radius: 10px;
cursor: pointer;
transition: border-color var(--gecis), background var(--gecis);
}
.dosya-sec:hover { border-color: var(--mavi); background: #eef4ff; }
.mini {
min-height: 34px;
padding: 0 12px;
font: inherit;
font-size: 12px;
font-weight: 600;
color: var(--hata);
background: rgba(220, 38, 38, .07);
border: 1px solid rgba(220, 38, 38, .25);
border-radius: 8px;
cursor: pointer;
}
/* ---------- Şablonlar ---------- */
.sablonlar { display: flex; gap: 8px; flex-wrap: wrap; }
.sablon {
width: 46px;
height: 46px;
border-radius: 11px;
border: 2px solid #fff;
box-shadow: 0 0 0 1px var(--cizgi), 0 4px 10px -6px rgba(15, 23, 42, .5);
cursor: pointer;
transition: transform var(--gecis), box-shadow var(--gecis);
position: relative;
overflow: hidden;
}
/* Şeffaf zemin şablonu: renk yerine dama tahtası + koyu örnek desen. */
.sablon.seffaf-ornek {
background:
repeating-conic-gradient(#e8edf5 0% 25%, #ffffff 0% 50%) 50% / 12px 12px;
}
.sablon.seffaf-ornek::after {
content: "";
position: absolute;
inset: 8px;
border-radius: 6px;
background:
radial-gradient(circle, #111827 45%, transparent 46%) 0 0 / 8px 8px;
opacity: .85;
}
.sablon:hover { transform: translateY(-2px); box-shadow: 0 0 0 2px var(--gok), 0 8px 16px -8px rgba(15, 23, 42, .6); }
/* ---------- Önizleme ---------- */
.onizleme-kart {
position: sticky;
top: 16px;
display: flex;
flex-direction: column;
gap: 12px;
}
.onizleme-baslik { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.onizleme-baslik h2 { font-size: 14px; text-transform: uppercase; letter-spacing: .06em; color: var(--soluk); }
.rozet {
font-size: 11.5px;
font-weight: 700;
color: var(--mavi);
background: rgba(37, 99, 235, .08);
border-radius: 999px;
padding: 4px 10px;
font-variant-numeric: tabular-nums;
white-space: nowrap;
}
.onizleme-kutu {
position: relative;
display: flex;
align-items: center;
justify-content: center;
width: 100%;
aspect-ratio: 1 / 1;
max-height: min(58vh, 460px);
padding: clamp(10px, 2vw, 18px);
border-radius: 12px;
background:
repeating-conic-gradient(#eef2f7 0% 25%, #ffffff 0% 50%) 50% / 18px 18px;
border: 1px solid var(--cizgi);
overflow: hidden;
}
.onizleme-kutu:not(.seffaf) { background: #fff; }
.qr-svg { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; }
.qr-svg svg { width: 100%; height: 100%; max-width: 100%; max-height: 100%; display: block; }
.hata {
margin: 0;
padding: 9px 12px;
font-size: 12.5px;
color: var(--hata);
background: rgba(220, 38, 38, .07);
border: 1px solid rgba(220, 38, 38, .22);
border-radius: 9px;
}
.uyari {
margin: 0;
padding: 9px 12px;
font-size: 12.5px;
color: #92400e;
background: rgba(217, 119, 6, .08);
border: 1px solid rgba(217, 119, 6, .28);
border-radius: 9px;
}
.boyut-etiket { margin: 0; font-size: 12px; color: var(--soluk); text-align: center; font-variant-numeric: tabular-nums; }
.icerik-onizleme {
margin: 0;
font-size: 12px;
color: var(--soluk);
background: #f8fafc;
border: 1px solid var(--cizgi);
border-radius: 9px;
padding: 8px 10px;
word-break: break-all;
max-height: 62px;
overflow: auto;
}
.icerik-onizleme code { font-family: "Cascadia Mono", Consolas, monospace; color: var(--murekkep-2); }
.indirme { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.btn {
min-height: 46px;
padding: 10px 14px;
font: inherit;
font-size: 13.5px;
font-weight: 600;
border-radius: 11px;
border: 1px solid transparent;
cursor: pointer;
display: inline-flex;
align-items: center;
justify-content: center;
gap: 6px;
transition: transform var(--gecis), background var(--gecis), box-shadow var(--gecis), color var(--gecis);
}
.btn:active { transform: translateY(1px); }
.btn-ana { background: var(--murekkep); color: #fff; box-shadow: 0 8px 18px -12px rgba(15, 23, 42, .9); }
.btn-ana:hover { background: #17253c; }
.btn-ana .soluk { color: rgba(255, 255, 255, .6); font-weight: 500; font-size: 11.5px; }
.btn-ikincil { grid-column: span 2; background: #eef4ff; color: var(--mavi); border-color: #d6e4ff; }
.btn-ikincil:hover { background: #e3edff; }
.btn-ghost { grid-column: span 2; background: transparent; color: var(--soluk); border-color: var(--cizgi); }
.btn-ghost:hover { color: var(--murekkep); border-color: #cbd5e1; }
.notlar { margin: 0; padding-left: 18px; font-size: 12px; color: var(--soluk); display: flex; flex-direction: column; gap: 4px; }
/* ---------- Alt ---------- */
.alt {
max-width: 1280px;
margin: 0 auto;
padding: 6px clamp(14px, 3vw, 34px) 30px;
display: flex;
justify-content: space-between;
gap: 10px;
flex-wrap: wrap;
font-size: 11.5px;
color: var(--soluk);
}
/* ---------- Bildirim ---------- */
#bildirim {
position: fixed;
left: 50%;
bottom: 22px;
transform: translate(-50%, 16px);
background: var(--murekkep);
color: #fff;
font-size: 13px;
font-weight: 600;
padding: 11px 18px;
border-radius: 999px;
box-shadow: 0 14px 34px -14px rgba(15, 23, 42, .8);
opacity: 0;
pointer-events: none;
transition: opacity var(--gecis), transform var(--gecis);
z-index: 50;
max-width: calc(100vw - 32px);
text-align: center;
}
#bildirim.gorunur { opacity: 1; transform: translate(-50%, 0); }
#bildirim.hata { background: var(--hata); }
/* ---------- Duyarlı ---------- */
@media (max-width: 960px) {
.duzen { grid-template-columns: minmax(0, 1fr); }
.onizleme-kart { position: static; order: -1; }
.onizleme-kutu { max-height: 66vh; }
}
@media (max-width: 560px) {
.ust { padding-bottom: 8px; }
.ust-not { font-size: 11px; }
.izgara2 { grid-template-columns: minmax(0, 1fr); }
.sekmeler { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.sekme { min-width: 0; padding: 8px 4px; font-size: 12px; }
.onizleme-kutu { max-height: 74vw; }
.indirme { grid-template-columns: minmax(0, 1fr); }
.btn-ikincil, .btn-ghost { grid-column: span 1; }
.sablon { width: 42px; height: 42px; }
}
@media (prefers-reduced-motion: reduce) {
* { transition: none !important; }
}