Tasarım diliİlkeler

Tasarım dili Genel bakış

İlkeler

Dört kural Zerone'u hesap verebilir kılar ve her biri tasarımda kararlar doğurur. Bu sayfa her kural için yayımlanmış metni, kuralın zorunlu kıldığı kararları ve her kararı bir testin mi yoksa yalnızca incelemenin mi koruduğunu gösterir. Ardından kuralların konuştuğu iki üslubu anlatır.

Dün orada olduğu için hiçbir şeye güvenilmez.

#

Kural 01 / 04

İlk tarama, sunucuda zaten duran her ikiliyi, kütüphaneyi ve paketi orijinaliyle tartar. Referans orada olanı kaydeder, onu aklamaz.

Ana sayfada yayımlandığı hâliyle

Ürün bir dosyaya zaten orada olduğu için güvenmez. Bir sayfa da içeriği için sonradan çalışması beklenen bir betiğe güvenmez: içerik yerini sunucunun gönderdiği HTML ile kazanır. O HTML bitmiş hâldir: her kelime okunur, her görsel çizilmiştir.

Ortak belirme hareketi bu hâlin üzerine ancak betiği çalıştıktan sonra ve ziyaretçi daha az hareket istemediyse hareket ekler. Yani belirme hareketi içeriğin ortaya çıkma yolu değildir; zaten orada olan içeriğin hareket etme yoludur. Ana sayfanın açılışı ve iki kaydırma sahnesi ise başlangıç duruşlarını kendileri yazar ve betik kapalıyken ya da daha az hareket istendiğinde bitmiş hâle döner.

  1. Betik kapalı

    html.no-js

    Son hâl, doğrudan HTML'den.

  2. Azaltılmış hareket

    html

    Son hâl. Ön durum hiç yazılmaz.

  3. Hareket, henüz ekranda değil

    html.motion [data-r]

    Ön durum; blok ekrana girene ya da 3000 ms sonra yedek zamanlayıcı onu bırakana kadar.

  4. Hareket, ekranda

    html.motion [data-r].in

    Son hâl, yalnızca transform ile.

Belirme hareketi olan tek bir blok, dört koşulda çizildi. Üçünde son hâl görünür. Ön durum, 14px aşağıda ve çizgisi henüz çizilmemiş hâliyle, yalnızca html.motion altında vardır ve 800 ms içinde son hâle varır.
Gönderildiği hâliyle belirme kuralı
html.motion [data-r] {
  transform: translateY(14px);
  transition: transform 0.8s var(--ease-out-quart);
}
html.motion [data-r].in { transform: none; }
html.motion [data-r="rule"] { transform: scaleX(0); transform-origin: left; }
html.motion [data-r="rule"].in { transform: none; }

Kural 01: tasarımda zorunlu kıldıkları

  • Betik kapalıyken her sayfa bütün çizimlerini yine gösterir; hiçbir belirme bloğu ön durumunda beklemez.

    NedenBetik hata verebilir, engellenebilir ya da kapatılabilir. Sayfa yine de iddia ettiği her şeyi söylemek zorundadır.

    TestHer değişiklikte bir testle korunur.

  • Azaltılmış harekette hiçbir sayfa html.motion eklemez, her belirme bloğu son yerindedir ve hiçbir döngü başlamaz; bu yüzden duraklatma düğmesine gerek kalmaz.

    NedenDaha az hareket istemek, içeriği koreografisiz görmek istemektir; daha eksik bir sayfa istemek değil.

    TestHer değişiklikte bir testle korunur.

  • Ortak belirme hareketi ön durumunu yalnızca html.motion altında yazar; bu sınıfı bir betik, yalnızca azaltılmış hareket kapalıyken ekler.

    NedenO ön durum varsayılan stillerde dursaydı, hiç çalışmayan bir betik içeriği gizli bırakırdı.

    TestHer değişiklikte bir testle korunur.

  • Sitede hiçbir şey opacity ile hareket etmez. Belirme hareketi transform, clip-path ya da kendini çizen bir çizgiyle yapılır; metin her karede tam kontrasttadır.

    NedenKısmi opacity, geçişin ortasında ölçülen kontrastı düşürüyordu. Ziyaretçinin görebileceği her kare, geçmesi gereken bir karedir.

    TestHer değişiklikte bir testle korunur.

YapınÖnce bitmiş hâli yazın, belirmenin ön durumunu html.motion altına koyun. Betik yoksa blok olduğu gibi oradadır.
YapmayınBelirmenin ön durumunu varsayılan stillere yazmayın. Betik hiç çalışmazsa ziyaretçi boş bir çerçeve görür.

Kanıt bize sormadan doğrulanır.

#

Kural 02 / 04

Kanıt kendi doğrulayıcısıyla birlikte imzalı bir paket olarak çıkar; hesapsız, çevrimdışı ve sunucularımıza bağlanmadan denetlenir.

Ana sayfada yayımlandığı hâliyle

Bir tasarım kuralı da ürünün kanıtı gibi denetlenir: kimsenin sözüyle değil, her değişiklikte koşan bir denetimle. Bu sayfalardaki her kural kartı, kuralı bir testin mi denetlediğini yoksa yalnızca incelemenin mi koruduğunu söyler. Kimsenin çalıştırmadığı bir kılavuz, bir iddiadır.

Sayılar da aynı kurala uyar. Bu sayfalardaki değerler derleme sırasında kaynak dosyalarından hesaplanır, elle yazılmaz; kontrast oranı iki ondalıkta kesilir, asla yukarı yuvarlanmaz. Böylece eşiğin hemen altındaki bir çift, eşiği geçmiş gibi görünmez.

Sinyal renklerinin kâğıt üzerindeki kontrastı, token dosyasından hesaplandı
ÇiftDört ondalıkta kesilmiş hesapGösterimKüçük metin
accent-deep paper üzerinde6,65976,65:1AA
ink-subtle paper üzerinde4,89794,89:1AA
accent paper üzerinde4,38554,38:1geçmez
raw paper üzerinde5,72325,72:1AA
Bu sayfadaki her satır içi betik güvenlik başlığındaki özetle eşleşir

Tarayıcı, o listede özeti bulunmayan hiçbir satır içi betiği çalıştırmaz; sayfa sunulduktan sonra eklenen satır içi bir betik de çalışmaz. Aşağıdaki özetler bu sayfadan okundu ve sayfa kaynağında duruyor.

    Canlı: Güven merkezindeki bütünlük satırı, bu sayfada çalışıyor. Sayıyı bir betik bu sayfanın kendi güvenlik başlığından okur; özetleri görmek için satırı açın. Betik dosyalarına özetle değil kökenle izin verilir: bu kökenden ve iletişim formundaki bot denetimi sağlayıcısından gelen dosyalara. Betik kapalıyken satır, uydurma bir sayı yerine hiç sayı göstermez.

    Kural 02: tasarımda zorunlu kıldıkları

    • Bir kural onu neyin koruduğunu söyler: her değişiklikte koşan bir test mi, inceleme mi. Test yoksa kart bunu açıkça söyler.

      NedenBir test, kuralın çiğnendiği gün yayından önce derleme hattını durdurur; inceleme ise yalnızca incelemecinin fark ettiğini yakalar. Bu sayfa kendi kartlarını da denetler: test diye işaretlenen her kart, o adla var olan bir teste bağlıdır; test yeniden adlandırılır ya da silinirse derleme hattı yine durur.

      TestHer değişiklikte bir testle korunur.

    • Kontrast oranları token değerlerinden hesaplanır ve iki ondalıkta kesilir, asla yukarı yuvarlanmaz.

      NedenElle yazılan bir sayı, anlattığı tokendan zamanla kopar. Yuvarlanmış bir oran, geçmeyen bir çifti geçiyormuş gibi gösterebilir.

      TestHer değişiklikte bir testle korunur.

    • Yüzde işareti tek bir sözleşme rakamına ayrılmıştır. Yanına başka bir sayı yazılırsa, görünen metinde de alt, title ya da meta açıklaması gibi bir metin özniteliğinde de derleme başarısız olur.

      NedenYüzde bir ölçüm gibi okunur. Sayfada görünen tek yüzde, sözleşmeye yazılmış bir taahhüttür; işaretin yanındaki başka her sayı bir iddia olurdu.

      TestHer değişiklikte bir testle korunur.

    • Ölçemeyen bir görsel daha çok değil, daha az söyler. Betiği yokken bütünlük satırı sayı göstermez ve noktası sönük kalır.

      NedenSayı, sayfanın kendi güvenlik başlığından gelir. Başka bir yerden gelen sayı bir iddia olurdu.

      TestHer değişiklikte bir testle korunur.

    4,49:1geçmez
    YapınOranı yukarı yuvarlamadan iki ondalıkta kesin: 4,4999 değeri 4,49 olarak gösterilir. Sonuç: geçmez.
    4,50:1AA
    YapmayınYukarı yuvarlamayın: 4,4999 değeri 4,50 olarak görünürdü. Sonuç: AA; geçmeyen bir çift geçmiş olurdu.

    Değişiklik bir sorudur, alarm değil.

    #

    Kural 03 / 04

    Her değişiklik önce tartılır: orijinal mi, hangi paket getirdi, hangi süreç yazdı, değişiklik penceresinde mi. Bir Windows güncellemesi sunucu başına tek alarma katlanır.

    Ana sayfada yayımlandığı hâliyle

    Üründe her değişiklik alarm olabilmeden önce tartılır ve çoğu hiç alarm olmaz. Sitede renk de aynı sırayla harcanır. Token dosyası iki renge bir anlam verir: ana sayfadaki kanıt sahnesinde ham renk ham, doğrulanmamış değişiklikleri, vurgu rengi ise triyajdan sonra kalan sinyali, yani tek alarmı çizer. Ham renk alarm kırmızısı değil, soluk bir tuğla tonudur. Sitenin başka yerlerinde kullanıldığı hâliyle vurgu rengi tarama çizgilerini, ilerlemeyi, bağlantı alt çizgilerini ve odak halkasını da işaretler; ham renk ise işaretlenen dosyaları ve bulguları. Geri kalan her şey sıcak kâğıt üzerinde mürekkeptir.

    Hareket de aynı tutumla kullanılır. Bir görsel bir şeyi anlatmak için hareket eder, sonra sonucunu tutar; süren bir döngü o sonucu hiç silmez ve her zaman duraklatılabilir.

    • --color-accent#00847eTriyajdan sonra kalan sinyal; kullanımda çizgiler, halkalar, alt çizgiler ve noktalar için de. Küçük metin asla.
      • 4,38:1 paper geçmez
      • 4,12:1 paper-2 geçmez
    • --color-accent-deep#006560Metin taşıdığında vurgu rengi; kâğıt rengindeki metnin arkasındaki dolgular.
      • 6,65:1 paper AA
      • 6,26:1 paper-2 AA
    • --color-raw#a9432cHam değişiklik ve işaretlenen bulgular. Soluk bir tuğla tonu, alarm kırmızısı değil.
      • 5,72:1 paper AA
      • 5,38:1 paper-2 AA
    • --color-ink#0f1c26Sinyal olmayan her şey: metin, çizgiler, glif.
      • 16,61:1 paper AAA
      • 15,62:1 paper-2 AAA

    Kural 03: tasarımda zorunlu kıldıkları

    • Palet kapalıdır. Tailwind'in varsayılan renkleri silinmiştir; renk sınıfları yalnızca tek bir dosyadaki tokenlar için vardır: 11 renk, artı transparent ve current.

      NedenVarsayılan bir Tailwind rengi bir yardımcı sınıfla içeri giremez. Keyfi değerler ve bileşen stillerine elle yazılan renkler ise bir testin değil, incelemenin işidir.

      TestHer değişiklikte bir testle korunur.

    • Kanıt sahnesinde ham renk her ham değişikliği çizer; vurgu rengi yalnızca triyajdan sonra kalan sinyali çizer.

      NedenTek renkle çizilmiş bir sahne tek bir grafik gibi okunur. Gürültünün kendi rengi olmalı; token dosyası bu rengi alarm kırmızısı değil, soluk bir tuğla tonu olarak tutar.

      İncelemeBir testle değil, incelemeyle korunur.

    • Vurgu rengi küçük metin taşımaz. Vurgu tonundaki metin accent-deep ile yazılır; vurgu renginin kendisi çizgileri, halkaları ve noktaları işaretler.

      NedenKâğıt üzerinde vurgu rengi 4,38:1 hesaplanır; küçük metin için AA alt sınırının altındadır. Erişilebilirlik taraması her sayfada çalışır ve ölçebildiği, eşiğin altında kalan her metinde başarısız olur.

      TestHer değişiklikte bir testle korunur.

    • Belirme motorunun başlattığı her döngünün yanında, aynı sayfada görünür bir duraklatma düğmesi vardır.

      NedenZiyaretçi istemedikçe bir döngü gürültüdür. Duraklatma kararı her sayfada geçerli kalır; döngüler ekran dışında ve arka plandaki bir sekmede de durur.

      TestHer değişiklikte bir testle korunur.

    YapınHam değişiklikleri ham renkle çizin, vurgu rengini triyajdan sonra kalan tek değişikliğe saklayın.
    YapmayınHer değişikliği vurgu rengine boyamayın. Her şey sinyal olunca hiçbir şey sinyal değildir.

    Her tespit kapalı ağınızda da çalışır.

    #

    Kural 04 / 04

    Kendi barındırdığınız kurulum aynı üründür: çevrimdışı imzalı lisans, elle taşınan imzalı güncellemeler, meşruiyet veritabanının yerel kopyası. Dışarıya yol isteyenler adıyla yazılır ve kapalıdır: itibar sorguları ve güvenilir zaman damgası.

    Ana sayfada yayımlandığı hâliyle

    Ürün dışarıya hiçbir yol olmadan her tespiti çalıştırmayı sürdürür; site de kendini aynı kurala bağlar. Bir sayfa çizilmek için başka bir kökenden hiçbir şeye ihtiyaç duymaz: iki yazı tipi ailesi de bu depodaki dosyalardır, paylaşım görselleri derleme sırasında çizilir ve bu sayfadaki token değerleri, oranlar ve dosya boyutları derleme sırasında dosyalardan okunur, bir servisten çekilmez.

    Tek bir istisna gizlenmez, denetimde açıkça tanımlıdır: iletişim formundaki bot denetimi betiğini kendi sağlayıcısından yükler, yalnızca o sayfada. Her sayfanın politikası betikler, çerçeveler ve bağlantılar için bu sağlayıcıyı yine de anar; betiği iletişim sayfasında tutan şey denetimdir.

    Sitenin kendi sunduğu yazı tipleri
    Yazı tipi ve dosyaBoyut
    Geist Mono 400GeistMono-400.woff213,9 KB
    Geist Mono 500GeistMono-500.woff214,1 KB
    New Black 400NewBlack-400.woff210,8 KB
    New Black 500NewBlack-500.woff210,7 KB
    New Black 600NewBlack-600.woff210,7 KB
    New Black 700NewBlack-700.woff210,8 KB
    Toplam70,9 KB
    Güvenlik politikası: başka hiçbir kökeni anmayan yönergeler
    default-src 'self';
    img-src 'self' data:;
    font-src 'self';
    object-src 'none';
    base-uri 'self';

    Kural 04: tasarımda zorunlu kıldıkları

    • Yazı tipi bu kökenden sunulur. İki aile de yerel dosyadır ve güvenlik politikası yazı tiplerine yalnızca bu kökenden izin verir; bir sayfa bir yazı tipi servisini ansa bile onu yükleyemez.

      NedenBir yazı tipi servisini bekleyen sayfa, o servise ulaşılamayan yerde farklı görünür ya da hiç görünmez.

      TestHer değişiklikte bir testle korunur.

    • Paylaşım görselleri derleme sırasında çizilir; sayfa bir görseli anmadan önce o görsel derlemede var olmak zorundadır.

      NedenÖnizleme kartı sayfanın bir parçasıdır. Depodaki dosyalardan üretilir, bir görsel servisinden istenmez.

      TestHer değişiklikte bir testle korunur.

    • Sayfalar betikleri yalnızca bu kökenden yükler. Tek istisna iletişim formundaki bot denetimidir ve derleme denetimi onu adıyla anar: o betik, o sağlayıcıdan, yalnızca iletişim sayfasında.

      NedenKapalı bir ağ başka bir kökene ulaşamaz. Denetimin adıyla andığı bir istisna yayılamaz: aynı betik ikinci bir sayfada ya da ikinci bir sağlayıcıdan gelen bir betik derlemeyi durdurur.

      TestHer değişiklikte bir testle korunur.

    • Bu sayfa başka bir kökenden hiçbir şey istemez. Kendi testi, sayfanın yaptığı her isteği kaydeder ve dışarı çıkan herhangi bir istekte başarısız olur.

      NedenKural, söylendiği yerde denetlenir.

      TestHer değişiklikte bir testle korunur.

    İki üslup

    #

    Tek bir dil iki üslupla konuşur; her üslup, onu okuyan insanlar için seçilmiştir.

    Konsol sakin olmalı; site iddialı olmalı.

    İki üslubun ardındaki karar

    Sitenin derdini anlatmak için birkaç saniyesi vardır; bu yüzden iddialı üslupla konuşur: tam ağırlıkta başlık yazısı, sıcak kâğıt, sinyal için tek bir vurgu rengi ve bir şeyi anlatan hareket. Zero Door ise uzun süre okunan bir çalışma aracıdır; bu yüzden sakin üslupla konuşur: varsayılan olarak koyu tema, duruma ayrılmış doygun renk, bir eylemi onaylayan kısa hareket ve veri için yoğunluk.

    Üsluplar bilerek farklıdır ama aynı ailedendir. İkisinin altında da dört kural, glif, ease-out eğrisi ve orta köşe yarıçapı vardır. Ürünün açık teması sitenin kâğıt, ince çizgi ve ikincil metinden oluşan nötr ton dizisini de kullanır; varsayılan koyu teması kullanmaz. Aşağıdaki tablolar iki token dosyasını doğrudan karşılaştırır: her eşleşme hesaplanır, öne sürülmez.

    İki dosya da yayımlanır: sitenin token dosyası ve Zero Door token anlık görüntüsü.

    zeronesecurity.com · iddialı

    Gürültüden sinyale

    Bir sunucu günde binlerce değişiklik üretir. Sizin tek bir ses duymanız gerekir.

    Paket güncellemeleri, günlük rotasyonu, geçici dosyalar, gerçek bir implant: hepsi değişiklik gibi görünür. Zero Door her birine başka bir soru sorar: meşru mu? Kim imzalamış, hangi paketle gelmiş, daha önce nerede görülmüş ve bellekte çalışan diskteki ile aynı mı. Yalnız cevap hayırsa konuşur.

    Zero Door · sakin

    • Critical3/etc/cron.d/backup-syncweb-01
    • High1/usr/local/bin/agent-updatedb-02
    • Medium12C:\ProgramData\Vendor\config.jsonws-114
    • Low2/var/www/html/index.phpweb-03

    Critical --signal-dangerHigh --signal-warningMedium --signal-infoLow, Info --fg-subtle

    Solda iddialı üslup, ana sayfanın kendi metniyle. Sağda sakin üslup: ürünün 2026-08-23 tarihli token anlık görüntüsündeki koyu tema tokenlarıyla çizilmiş bir alarm listesi; önem derecesi bir nokta ve bir kelime, sayı küçük köşe yarıçaplı bir kutuda, yollar mono yazıyla, satırlar arasında ince çizgi. Satırlar örnek veridir, ekran görüntüsü değildir. Zero Door'un yazı tipi Inter; bu site onu sunmadığı için sağ panel bu sitenin kendi yazı tipleriyle dizilmiştir.

    İki üslubun paylaştıkları

    Paylaşılan değerler, ürünün açık temasıyla karşılaştırıldı (2026-08-23 tarihli token anlık görüntüsü)
    SiteZero DoorSonuç
    --color-paper#fdfaf6--surfaceoklch(0.985 0.006 75)= #fdfaf6Aynı
    --color-paper-2#f6f3ee--surface-subtleoklch(0.965 0.007 75)= #f6f3eeAynı
    --color-hair#e2dfdb--zd-borderoklch(0.905 0.006 75)= #e2dfdbAynı
    --color-hair-2#cdcac6--zd-border-strongoklch(0.840 0.006 75)= #cdcac6Aynı
    --color-ink-muted#5c5753--fg-mutedoklch(0.460 0.010 60)= #5c5753Aynı
    --color-ink-subtle#736d69--fg-subtleoklch(0.540 0.010 60)= #736d69Aynı
    --ease-out-quartcubic-bezier(0.23, 1, 0.32, 1)--ease-outcubic-bezier(0.23, 1, 0.32, 1)Aynı
    --radius-md8px--radius-md8pxAynı
    Ortak davranış, her kod tabanında yazıldığı hâliyle
    DavranışSiteZero Door
    Renk asla tek başına değildirBir karar ya da kontrast notu bir kelimedir; renk yalnızca onu işaretlerÖnem derecesi, kelimesinin yanında bir noktadır
    Azaltılmış hareket gözetilirHareket sınıfı yok, belirme kayması yok, döngü yokHer geçişin ve animasyonun süresi 0,01 ms olur; hiçbir animasyon tekrarlanmaz

    Bilerek ayrıldıkları yerler

    Tasarım gereği farklı olan değerler
    KonuSiteZero Door
    TemaYalnızca açık; koyu mürekkep paneller yerel olarak, kodun ve sahnelerin çevresinde görünürVarsayılan olarak koyu ve sistem ayarından bağımsız; açık tema da var
    Varsayılan temada yüzey--color-paper#fdfaf6--surfaceoklch(0.190 0.008 250)= #111417
    Metin rengi--color-ink#0f1c26--fgoklch(0.235 0.010 60)= #221d19açık temada
    Anlam taşıyan renkTriyajdan sonra kalan sinyal için tek vurgu rengi, ham değişiklik için ham renk --color-accent #00847e
    --color-raw #a9432c
    Önem derecesi ve durum için 4 sinyal tokenı
    Yazı tipleriNew Black ve Geist MonoInter ve Geist Mono
    Küçük yarıçap--radius-sm6px--radius-sm4px
    HareketBelirme 800 ms; düğme geri bildirimi 160 msGeri bildirim 130 ms; geçişlerin neredeyse tamamında