feat: CalmKernel website redesign — Dark Amber theme (Stitch AI)#5
feat: CalmKernel website redesign — Dark Amber theme (Stitch AI)#5
Conversation
- New landing page design generated via Google Stitch MCP - Tailwind CSS v4 with purged build (32KB vs 300KB CDN) - Self-hosted Inter + Sora fonts (KVKK/GDPR compliant) - Font Awesome icons (no Google Material Symbols dependency) - Sections: Hero, Products, Open Source, About, CTA, Footer - Mobile-responsive with hamburger menu - Real links: GitHub, LinkedIn, email, privacy policy - Stitch original HTML preserved as reference Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Old Aiero theme preserved as index-old-aiero.html - index.html now serves the new dark amber design - Tailwind CSS rebuilt for renamed file Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- en/index.html mirrors TR design with English content - Language switcher: TR ↔ EN in nav - Same dark amber theme, same sections - CSS rebuilt for both pages Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
Warning Rate limit exceeded
Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 9 minutes and 30 seconds. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (3)
📝 WalkthroughWalkthroughThe changes represent a comprehensive migration from Bootstrap to Tailwind CSS v4.2.2 framework, including new Tailwind stylesheet assets, restructured landing pages with simplified layouts, and updated color schemes. Multiple marketing and reference pages were added alongside the new styling infrastructure. Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Poem
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
| <body class="bg-zinc-950 text-zinc-300 font-body antialiased"> | ||
|
|
||
| <a href="#main-content" class="skip-link" style="position:absolute;left:-9999px;top:auto;width:1px;height:1px;overflow:hidden;z-index:9999;padding:8px;background:#f59e0b;color:#000;text-decoration:none;font-weight:bold;">İçeriğe atla</a> |
There was a problem hiding this comment.
[Severity 7] Missing cookie consent / KVKK banner
The previous design included assets/css/cookie-consent.css and an active cookie consent mechanism. The new design removes it entirely — no cookie banner is present on the page.
The "Security First" section on this very page states "Fully KVKK and GDPR compliant," but if the site uses any cookies (analytics, session tracking, etc.), the absence of a consent UI is a KVKK/GDPR compliance risk.
Before merging, please confirm:
- Does the site set any cookies at all (including via server-side or third-party scripts)?
- If yes, the cookie consent mechanism must be reinstated.
- If no cookies are used, it would be good to document this explicitly (e.g., in the privacy policy) so this isn't flagged in future audits.
The old cookie consent CSS/JS was deliberately built in PR #2 — intentionally removing it here without a replacement or explicit decision to drop cookies should be called out.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9824dad5d6
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| @@ -0,0 +1,2 @@ | |||
| /*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */ | |||
| @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-500:oklch(63.7% .237 25.331);--color-orange-600:oklch(64.6% .222 41.116);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-600:oklch(66.6% .179 58.318);--color-amber-900:oklch(41.4% .112 45.904);--color-green-500:oklch(72.3% .219 149.579);--color-blue-400:oklch(70.7% .165 254.624);--color-zinc-300:oklch(87.1% .006 286.286);--color-zinc-400:oklch(70.5% .015 286.067);--color-zinc-500:oklch(55.2% .016 285.938);--color-zinc-600:oklch(44.2% .017 285.786);--color-zinc-700:oklch(37% .013 285.805);--color-zinc-800:oklch(27.4% .006 286.033);--color-zinc-900:oklch(21% .006 285.885);--color-zinc-950:oklch(14.1% .005 285.823);--color-white:#fff;--spacing:.25rem;--container-2xl:42rem;--container-4xl:56rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--text-5xl:3rem;--text-5xl--line-height:1;--text-6xl:3.75rem;--text-6xl--line-height:1;--text-7xl:4.5rem;--text-7xl--line-height:1;--font-weight-light:300;--font-weight-medium:500;--font-weight-bold:700;--font-weight-extrabold:800;--font-weight-black:900;--tracking-tighter:-.05em;--tracking-tight:-.025em;--tracking-widest:.1em;--leading-tight:1.25;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--radius-3xl:1.5rem;--radius-4xl:2rem;--blur-md:12px;--blur-3xl:64px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--font-headline:"Sora", sans-serif;--font-body:"Inter", sans-serif}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.-inset-4{inset:calc(var(--spacing) * -4)}.inset-0{inset:calc(var(--spacing) * 0)}.-start{inset-inline-start:calc(var(--spacing) * -1)}.start{inset-inline-start:var(--spacing)}.-end{inset-inline-end:calc(var(--spacing) * -1)}.end{inset-inline-end:var(--spacing)}.top-0{top:calc(var(--spacing) * 0)}.z-10{z-index:10}.z-50{z-index:50}.col-auto{grid-column:auto}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.m-0{margin:calc(var(--spacing) * 0)}.mx-8{margin-inline:calc(var(--spacing) * 8)}.mx-auto{margin-inline:auto}.mb-0{margin-bottom:calc(var(--spacing) * 0)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.mb-12{margin-bottom:calc(var(--spacing) * 12)}.mb-16{margin-bottom:calc(var(--spacing) * 16)}.mb-20{margin-bottom:calc(var(--spacing) * 20)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.h-1{height:calc(var(--spacing) * 1)}.h-3{height:calc(var(--spacing) * 3)}.h-10{height:calc(var(--spacing) * 10)}.h-12{height:calc(var(--spacing) * 12)}.h-20{height:calc(var(--spacing) * 20)}.h-full{height:100%}.h-px{height:1px}.w-3{width:calc(var(--spacing) * 3)}.w-10{width:calc(var(--spacing) * 10)}.w-12{width:calc(var(--spacing) * 12)}.w-\[65\%\]{width:65%}.w-full{width:100%}.w-px{width:1px}.max-w-2xl{max-width:var(--container-2xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-7xl{max-width:var(--container-7xl)}.shrink-0{flex-shrink:0}.flex-grow{flex-grow:1}.border-collapse{border-collapse:collapse}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.resize{resize:both}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}.gap-16{gap:calc(var(--spacing) * 16)}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.-space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * -2) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * -2) * calc(1 - var(--tw-space-x-reverse)))}.self-center{align-self:center}.overflow-hidden{overflow:hidden}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-2{border-top-style:var(--tw-border-style);border-top-width:2px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-amber-500{border-color:var(--color-amber-500)}.border-zinc-700{border-color:var(--color-zinc-700)}.border-zinc-800{border-color:var(--color-zinc-800)}.border-zinc-800\/50{border-color:#27272a80}@supports (color:color-mix(in lab, red, red)){.border-zinc-800\/50{border-color:color-mix(in oklab, var(--color-zinc-800) 50%, transparent)}}.border-zinc-900{border-color:var(--color-zinc-900)}.border-zinc-950{border-color:var(--color-zinc-950)}.border-t-amber-500\/20{border-top-color:#f99c0033}@supports (color:color-mix(in lab, red, red)){.border-t-amber-500\/20{border-top-color:color-mix(in oklab, var(--color-amber-500) 20%, transparent)}}.bg-amber-500{background-color:var(--color-amber-500)}.bg-amber-500\/10{background-color:#f99c001a}@supports (color:color-mix(in lab, red, red)){.bg-amber-500\/10{background-color:color-mix(in oklab, var(--color-amber-500) 10%, transparent)}}.bg-amber-500\/50{background-color:#f99c0080}@supports (color:color-mix(in lab, red, red)){.bg-amber-500\/50{background-color:color-mix(in oklab, var(--color-amber-500) 50%, transparent)}}.bg-green-500\/50{background-color:#00c75880}@supports (color:color-mix(in lab, red, red)){.bg-green-500\/50{background-color:color-mix(in oklab, var(--color-green-500) 50%, transparent)}}.bg-red-500\/50{background-color:#fb2c3680}@supports (color:color-mix(in lab, red, red)){.bg-red-500\/50{background-color:color-mix(in oklab, var(--color-red-500) 50%, transparent)}}.bg-zinc-800{background-color:var(--color-zinc-800)}.bg-zinc-900{background-color:var(--color-zinc-900)}.bg-zinc-900\/30{background-color:#18181b4d}@supports (color:color-mix(in lab, red, red)){.bg-zinc-900\/30{background-color:color-mix(in oklab, var(--color-zinc-900) 30%, transparent)}}.bg-zinc-950{background-color:var(--color-zinc-950)}.bg-zinc-950\/20{background-color:#09090b33}@supports (color:color-mix(in lab, red, red)){.bg-zinc-950\/20{background-color:color-mix(in oklab, var(--color-zinc-950) 20%, transparent)}}.bg-zinc-950\/80{background-color:#09090bcc}@supports (color:color-mix(in lab, red, red)){.bg-zinc-950\/80{background-color:color-mix(in oklab, var(--color-zinc-950) 80%, transparent)}}.bg-zinc-950\/95{background-color:#09090bf2}@supports (color:color-mix(in lab, red, red)){.bg-zinc-950\/95{background-color:color-mix(in oklab, var(--color-zinc-950) 95%, transparent)}}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-\[radial-gradient\(circle_at_50\%_50\%\,rgba\(245\,158\,11\,0\.08\)\,transparent_50\%\)\]{background-image:radial-gradient(circle,#f59e0b14,#0000 50%)}.bg-\[url\(\'https\:\/\/www\.transparenttextures\.com\/patterns\/carbon-fibre\.png\'\)\]{background-image:url(https://www.transparenttextures.com/patterns/carbon-fibre.png)}.from-amber-500{--tw-gradient-from:var(--color-amber-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-amber-600{--tw-gradient-to:var(--color-amber-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-orange-600{--tw-gradient-to:var(--color-orange-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.p-12{padding:calc(var(--spacing) * 12)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-8{padding-inline:calc(var(--spacing) * 8)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-12{padding-block:calc(var(--spacing) * 12)}.py-24{padding-block:calc(var(--spacing) * 24)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-32{padding-top:calc(var(--spacing) * 32)}.pb-1{padding-bottom:calc(var(--spacing) * 1)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pb-20{padding-bottom:calc(var(--spacing) * 20)}.text-center{text-align:center}.font-body{font-family:var(--font-body)}.font-headline{font-family:var(--font-headline)}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-black{--tw-font-weight:var(--font-weight-black);font-weight:var(--font-weight-black)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extrabold{--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.font-light{--tw-font-weight:var(--font-weight-light);font-weight:var(--font-weight-light)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-tighter{--tw-tracking:var(--tracking-tighter);letter-spacing:var(--tracking-tighter)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.text-amber-400{color:var(--color-amber-400)}.text-amber-500{color:var(--color-amber-500)}.text-blue-400{color:var(--color-blue-400)}.text-green-500{color:var(--color-green-500)}.text-white{color:var(--color-white)}.text-zinc-300{color:var(--color-zinc-300)}.text-zinc-400{color:var(--color-zinc-400)}.text-zinc-500{color:var(--color-zinc-500)}.text-zinc-600{color:var(--color-zinc-600)}.text-zinc-700{color:var(--color-zinc-700)}.text-zinc-950{color:var(--color-zinc-950)}.uppercase{text-transform:uppercase}.italic{font-style:italic}.decoration-zinc-950\/30{text-decoration-color:#09090b4d}@supports (color:color-mix(in lab, red, red)){.decoration-zinc-950\/30{-webkit-text-decoration-color:color-mix(in oklab, var(--color-zinc-950) 30%, transparent);-webkit-text-decoration-color:color-mix(in oklab, var(--color-zinc-950) 30%, transparent);text-decoration-color:color-mix(in oklab, var(--color-zinc-950) 30%, transparent)}}.underline-offset-8{text-underline-offset:8px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-10{opacity:.1}.opacity-80{opacity:.8}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-amber-500\/20{--tw-shadow-color:#f99c0033}@supports (color:color-mix(in lab, red, red)){.shadow-amber-500\/20{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-amber-500) 20%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-amber-900\/10{--tw-shadow-color:#7b33061a}@supports (color:color-mix(in lab, red, red)){.shadow-amber-900\/10{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-amber-900) 10%, transparent) var(--tw-shadow-alpha), transparent)}}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.blur-3xl{--tw-blur:blur(var(--blur-3xl));filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-300{--tw-duration:.3s;transition-duration:.3s}.backface-hidden{backface-visibility:hidden}@media (hover:hover){.group-hover\:scale-110:is(:where(.group):hover *){--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:border-amber-500\/50:hover{border-color:#f99c0080}@supports (color:color-mix(in lab, red, red)){.hover\:border-amber-500\/50:hover{border-color:color-mix(in oklab, var(--color-amber-500) 50%, transparent)}}.hover\:bg-amber-600:hover{background-color:var(--color-amber-600)}.hover\:bg-white:hover{background-color:var(--color-white)}.hover\:bg-zinc-900:hover{background-color:var(--color-zinc-900)}.hover\:bg-zinc-900\/50:hover{background-color:#18181b80}@supports (color:color-mix(in lab, red, red)){.hover\:bg-zinc-900\/50:hover{background-color:color-mix(in oklab, var(--color-zinc-900) 50%, transparent)}}.hover\:text-amber-400:hover{color:var(--color-amber-400)}.hover\:text-amber-600:hover{color:var(--color-amber-600)}.hover\:text-white:hover{color:var(--color-white)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-lg:hover{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:shadow-amber-500\/20:hover{--tw-shadow-color:#f99c0033}@supports (color:color-mix(in lab, red, red)){.hover\:shadow-amber-500\/20:hover{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-amber-500) 20%, transparent) var(--tw-shadow-alpha), transparent)}}}.active\:scale-95:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}@media (min-width:40rem){.sm\:inline{display:inline}.sm\:w-auto{width:auto}.sm\:flex-row{flex-direction:row}.sm\:text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.sm\:text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.sm\:text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}}@media (min-width:48rem){.md\:block{display:block}.md\:flex{display:flex}.md\:hidden{display:none}.md\:inline{display:inline}.md\:w-auto{width:auto}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-start{align-items:flex-start}.md\:gap-8{gap:calc(var(--spacing) * 8)}.md\:p-24{padding:calc(var(--spacing) * 24)}.md\:px-8{padding-inline:calc(var(--spacing) * 8)}.md\:pt-48{padding-top:calc(var(--spacing) * 48)}.md\:pb-32{padding-bottom:calc(var(--spacing) * 32)}.md\:text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.md\:text-6xl{font-size:var(--text-6xl);line-height:var(--tw-leading,var(--text-6xl--line-height))}.md\:text-7xl{font-size:var(--text-7xl);line-height:var(--tw-leading,var(--text-7xl--line-height))}.md\:text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}}@media (min-width:64rem){.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}}@font-face{font-family:Inter;font-style:normal;font-weight:300;font-display:swap;src:url(../assets/fonts/Inter-Light.woff2)format("woff2")}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(../assets/fonts/Inter-Regular.woff2)format("woff2")}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(../assets/fonts/Inter-Medium.woff2)format("woff2")}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(../assets/fonts/Inter-SemiBold.woff2)format("woff2")}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(../assets/fonts/Inter-Bold.woff2)format("woff2")}@font-face{font-family:Sora;font-style:normal;font-weight:100 800;font-display:swap;src:url(../assets/fonts/sora-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Sora;font-style:normal;font-weight:100 800;font-display:swap;src:url(../assets/fonts/sora-latin-ext.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}.glass-card{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#18181b99;border:1px solid #ffffff0d}.text-gradient{-webkit-text-fill-color:transparent;background:linear-gradient(to bottom right,#fff,#a1a1aa);-webkit-background-clip:text}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1} No newline at end of file | |||
There was a problem hiding this comment.
Correct @font-face paths in generated CSS
The new @font-face rules point to src:url(../assets/fonts/...), but this stylesheet is served as /assets/css/main.css, so those relative URLs resolve to /assets/assets/fonts/... and return 404. That means Inter/Sora never load on the redesigned pages and browsers fall back to default fonts. Use paths resolved from /assets/css/ (for example ../fonts/... or absolute /assets/fonts/...).
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Code Review
This pull request overhauls the project's landing pages for both English and Turkish locales, transitioning to a modern, streamlined design powered by Tailwind CSS. The content is updated to reflect a new focus on enterprise data infrastructure platforms, including DataWash, DataWatch, and DataSuite. Key feedback focuses on correcting font paths in the source CSS to prevent loading issues, completing the localization of the Turkish page, and enhancing the mobile navigation menu with better accessibility attributes and UX refinements. It is also recommended to use root-relative paths for static assets to ensure reliability across different directory levels.
| font-style: normal; | ||
| font-weight: 300; | ||
| font-display: swap; | ||
| src: url("../assets/fonts/Inter-Light.woff2") format("woff2"); |
There was a problem hiding this comment.
The font paths in the source CSS seem to be causing incorrect relative paths in the built assets/css/main.css. In the generated file, the path is ../assets/fonts/, which resolves to assets/assets/fonts/ if the CSS is in assets/css/. This will prevent fonts from loading. Please adjust the paths to be relative to the output directory.
src: url("../fonts/Inter-Light.woff2") format("woff2");| <h1 class="text-4xl sm:text-5xl md:text-7xl font-extrabold font-headline text-white mb-6 leading-tight tracking-tight"> | ||
| Building the Future of<br/> | ||
| <span class="text-amber-500">Data Infrastructure</span> | ||
| </h1> |
There was a problem hiding this comment.
The Turkish landing page (index.html) contains a significant amount of untranslated English content in the Hero, Products, and About sections. To maintain a professional localized experience, all user-facing text should be translated into Turkish.
| <h1 class="text-4xl sm:text-5xl md:text-7xl font-extrabold font-headline text-white mb-6 leading-tight tracking-tight"> | |
| Building the Future of<br/> | |
| <span class="text-amber-500">Data Infrastructure</span> | |
| </h1> | |
| <h1 class="text-4xl sm:text-5xl md:text-7xl font-extrabold font-headline text-white mb-6 leading-tight tracking-tight"> | |
| Veri Altyapısının<br/> | |
| <span class="text-amber-500">Geleceğini İnşa Ediyoruz</span> | |
| </h1> |
| document.getElementById('mobileMenuBtn').addEventListener('click', function() { | ||
| document.getElementById('mobileMenu').classList.toggle('hidden'); | ||
| }); |
There was a problem hiding this comment.
The mobile menu toggle script is missing accessibility attributes and UX refinements. Specifically, it should toggle aria-expanded on the button and aria-hidden on the menu. Additionally, the menu should automatically close when an anchor link is clicked to improve the user experience on mobile.
const menuBtn = document.getElementById('mobileMenuBtn');
const menu = document.getElementById('mobileMenu');
menuBtn.addEventListener('click', () => {
const isHidden = menu.classList.toggle('hidden');
menuBtn.setAttribute('aria-expanded', !isHidden);
menu.setAttribute('aria-hidden', isHidden);
});
menu.querySelectorAll('a').forEach(link => {
link.addEventListener('click', () => {
menu.classList.add('hidden');
menuBtn.setAttribute('aria-expanded', 'false');
menu.setAttribute('aria-hidden', 'true');
});
});| <link rel="stylesheet" href="assets/css/main.css"/> | ||
|
|
||
| <!-- Font Awesome (async) --> | ||
| <link rel="stylesheet" href="assets/css/font-awesome.min.css" media="print" onload="this.media='all'"/> |
There was a problem hiding this comment.
For consistency and robustness across different environments (especially when pages are in subdirectories like /en/), it is recommended to use root-relative paths (starting with /) for all static assets.
| <link rel="stylesheet" href="assets/css/main.css"/> | |
| <!-- Font Awesome (async) --> | |
| <link rel="stylesheet" href="assets/css/font-awesome.min.css" media="print" onload="this.media='all'"/> | |
| <link rel="stylesheet" href="/assets/css/main.css"/> | |
| <!-- Font Awesome (async) --> | |
| <link rel="stylesheet" href="/assets/css/font-awesome.min.css" media="print" onload="this.media='all'"/> |
| <button id="mobileMenuBtn" class="md:hidden text-white text-xl" aria-label="Menüyü aç"> | ||
| <i class="fa fa-bars"></i> | ||
| </button> | ||
| </div> | ||
| </div> | ||
| <!-- End Preloader --> | ||
|
|
||
| <button id="themeBtn"><i class="far fa-moon"></i></button> | ||
| <div class="video-modal"> | ||
| <div class="video-modal-content"> | ||
| <span class="close-btn">×</span> | ||
| <iframe allow="autoplay; encrypted-media" allowfullscreen></iframe> | ||
| </div> | ||
| <!-- Mobile menu --> | ||
| <div id="mobileMenu" class="hidden md:hidden bg-zinc-950/95 backdrop-blur-md border-t border-zinc-800 px-6 pb-6"> |
There was a problem hiding this comment.
The mobile menu button and container are missing critical accessibility attributes. Adding aria-expanded, aria-controls, and aria-hidden ensures that screen readers can correctly interpret the state of the navigation menu.
| <button id="mobileMenuBtn" class="md:hidden text-white text-xl" aria-label="Menüyü aç"> | |
| <i class="fa fa-bars"></i> | |
| </button> | |
| </div> | |
| </div> | |
| <!-- End Preloader --> | |
| <button id="themeBtn"><i class="far fa-moon"></i></button> | |
| <div class="video-modal"> | |
| <div class="video-modal-content"> | |
| <span class="close-btn">×</span> | |
| <iframe allow="autoplay; encrypted-media" allowfullscreen></iframe> | |
| </div> | |
| <!-- Mobile menu --> | |
| <div id="mobileMenu" class="hidden md:hidden bg-zinc-950/95 backdrop-blur-md border-t border-zinc-800 px-6 pb-6"> | |
| <button id="mobileMenuBtn" class="md:hidden text-white text-xl" aria-label="Menüyü aç" aria-expanded="false" aria-controls="mobileMenu"> | |
| <i class="fa fa-bars"></i> | |
| </button> | |
| </div> | |
| </div> | |
| <!-- Mobile menu --> | |
| <div id="mobileMenu" class="hidden md:hidden bg-zinc-950/95 backdrop-blur-md border-t border-zinc-800 px-6 pb-6" aria-hidden="true"> |
There was a problem hiding this comment.
Actionable comments posted: 5
🧹 Nitpick comments (2)
index-new.html (1)
6-57: Avoid publishing a second copy of the landing page.This is another full root-level landing page with production metadata and the same canonical target as
/. If it is only a staging artifact, keeping it in the web root invites accidental indexing and content drift alongsideindex.html.Move it out of the published artifact, or add a
noindexguard if you need to keep it in the repository.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@index-new.html` around lines 6 - 57, This file is a duplicate production landing page (index-new.html) that risks accidental indexing; either remove it from the published web root or add a noindex guard. To fix: if this is a staging artifact, move or exclude index-new.html from the deployed assets (remove from build/publish list); otherwise add a robots noindex meta tag (<meta name="robots" content="noindex">) near the existing meta tags and change the canonical/link alternates to point to a non-production preview URL or remove them so it cannot claim the same canonical as index.html; locate the edits around the title/og/canonical blocks and the JSON-LD block in index-new.html.index-old-aiero.html (1)
9-73: Archive pages should not stay indexable in the public root.As a rollback copy this is useful, but keeping it as a standalone root HTML page leaves the old site publicly reachable with live metadata and assets. That creates a stale entry point even after the redesign ships.
Move it outside the published artifact, or add a
noindexguard if it must stay in the repository.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@index-old-aiero.html` around lines 9 - 73, The archive HTML (index-old-aiero.html) is currently indexable via its <head> metadata and public assets; either remove/move this rollback file out of the published artifact or add a noindex guard in the <head> to prevent indexing (e.g., insert a <meta name="robots" content="noindex"> and/or X-Robots-Tag on responses), and ensure any canonical/og/twitter tags are removed or updated so search engines and social previews won't treat this page as live.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@en/index.html`:
- Line 60: The skip link is permanently moved off-screen (left:-9999px) so it
remains invisible when focused; update the styling for the element with class
"skip-link" (the <a> anchor) to keep it visually hidden by default but bring it
into view when focused—add a :focus (and :active) CSS rule that resets
left/top/width/height or uses transform/clip to position it on-screen (e.g.,
left/top to a visible offset, restore width/height/overflow) so keyboard users
can see and use the link when tabbing.
In `@index.html`:
- Around line 6-7: Page at lang="tr" still contains English strings; update the
Turkish variant by translating the <title> element, the <meta
name="description"> content, navigation labels, hero headline/body, and primary
CTA text into Turkish so the root (/) is a proper TR mirror of the /en/ page;
look for the HTML elements <title>, <meta name="description">, nav links
(navigation labels), the hero section (headline/paragraph), and the main CTA
button text and replace their English copy with the correct Turkish equivalents
used elsewhere in the project.
- Line 60: The skip link anchor (<a href="#main-content" class="skip-link">) is
visually hidden via an inline style left:-9999px even on focus; add CSS to make
.skip-link visible when focused (e.g., override the off-screen positioning on
:focus or :focus-visible to bring it into view, restore width/height/left/top
and any padding/background so keyboard users can see and use it) and remove or
adjust the inline positioning so the :focus rule takes effect.
In `@src/input.css`:
- Around line 17-18: The font `@font-face` src URLs are written relative to the
source file and produce paths like /assets/assets/fonts/... in the emitted
assets/css/main.css; update each src: url("...") entry (e.g., the lines
referencing Inter-Light.woff2, Inter-Regular.woff2, Inter-Medium.woff2,
Inter-SemiBold.woff2, Inter-Bold.woff2, Inter-ExtraBold.woff2) so they point
from the built CSS location to the fonts directory (use ../fonts/Inter-*.woff2
or an absolute /assets/fonts/Inter-*.woff2) so the compiled assets/css/main.css
resolves to /assets/fonts/... instead of /assets/assets/fonts/....
In `@stitch-reference.html`:
- Around line 7-10: stitch-reference.html currently pulls Tailwind via the CDN
and includes Google Fonts/Material Symbols (with Material Symbols linked twice),
which reintroduces third-party requests; either remove it from publishing by
adding stitch-reference.html to .gitignore (or your deploy exclude list) OR
update the file to use the same local assets as index.html/en/index.html:
replace the CDN <script> and external <link> tags with the local
assets/css/main.css and the Font Awesome/local icon approach, and remove the
duplicate Material Symbols <link> entry so only the local asset references
remain.
---
Nitpick comments:
In `@index-new.html`:
- Around line 6-57: This file is a duplicate production landing page
(index-new.html) that risks accidental indexing; either remove it from the
published web root or add a noindex guard. To fix: if this is a staging
artifact, move or exclude index-new.html from the deployed assets (remove from
build/publish list); otherwise add a robots noindex meta tag (<meta
name="robots" content="noindex">) near the existing meta tags and change the
canonical/link alternates to point to a non-production preview URL or remove
them so it cannot claim the same canonical as index.html; locate the edits
around the title/og/canonical blocks and the JSON-LD block in index-new.html.
In `@index-old-aiero.html`:
- Around line 9-73: The archive HTML (index-old-aiero.html) is currently
indexable via its <head> metadata and public assets; either remove/move this
rollback file out of the published artifact or add a noindex guard in the <head>
to prevent indexing (e.g., insert a <meta name="robots" content="noindex">
and/or X-Robots-Tag on responses), and ensure any canonical/og/twitter tags are
removed or updated so search engines and social previews won't treat this page
as live.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 8095ef5c-4ba1-482a-acd6-233bf3641c04
⛔ Files ignored due to path filters (5)
assets/fonts/Inter-Bold.woff2is excluded by!**/*.woff2assets/fonts/Inter-Light.woff2is excluded by!**/*.woff2assets/fonts/Inter-Medium.woff2is excluded by!**/*.woff2assets/fonts/Inter-Regular.woff2is excluded by!**/*.woff2assets/fonts/Inter-SemiBold.woff2is excluded by!**/*.woff2
📒 Files selected for processing (8)
.gitignoreassets/css/main.cssen/index.htmlindex-new.htmlindex-old-aiero.htmlindex.htmlsrc/input.cssstitch-reference.html
📜 Review details
🧰 Additional context used
🪛 Stylelint (17.6.0)
assets/css/main.css
[error] 2-2: Unexpected duplicate "-webkit-text-decoration" (declaration-block-no-duplicate-properties)
(declaration-block-no-duplicate-properties)
[error] 2-2: Unexpected duplicate "-webkit-text-decoration" (declaration-block-no-duplicate-properties)
(declaration-block-no-duplicate-properties)
[error] 2-2: Unexpected duplicate "-webkit-text-decoration-color" (declaration-block-no-duplicate-properties)
(declaration-block-no-duplicate-properties)
[error] 2-2: Expected "button" to be "auto" (declaration-property-value-keyword-no-deprecated)
(declaration-property-value-keyword-no-deprecated)
[error] 2-2: Expected "button" to be "auto" (declaration-property-value-keyword-no-deprecated)
(declaration-property-value-keyword-no-deprecated)
[error] 2-2: Expected quotes around "url" function argument (function-url-quotes)
(function-url-quotes)
[error] 2-2: Expected quotes around "url" function argument (function-url-quotes)
(function-url-quotes)
[error] 2-2: Expected quotes around "url" function argument (function-url-quotes)
(function-url-quotes)
[error] 2-2: Expected quotes around "url" function argument (function-url-quotes)
(function-url-quotes)
[error] 2-2: Expected quotes around "url" function argument (function-url-quotes)
(function-url-quotes)
[error] 2-2: Expected quotes around "url" function argument (function-url-quotes)
(function-url-quotes)
[error] 2-2: Expected quotes around "url" function argument (function-url-quotes)
(function-url-quotes)
[error] 2-2: Expected quotes around "url" function argument (function-url-quotes)
(function-url-quotes)
[error] 2-2: Expected "SFMono-Regular" to be "sfmono-regular" (value-keyword-case)
(value-keyword-case)
[error] 2-2: Expected "Menlo" to be "menlo" (value-keyword-case)
(value-keyword-case)
[error] 2-2: Expected "Monaco" to be "monaco" (value-keyword-case)
(value-keyword-case)
[error] 2-2: Expected "Consolas" to be "consolas" (value-keyword-case)
(value-keyword-case)
[error] 2-2: Expected "currentColor" to be "currentcolor" (value-keyword-case)
(value-keyword-case)
src/input.css
[error] 13-13: Unexpected quotes around "Inter" (font-family-name-quotes)
(font-family-name-quotes)
[error] 20-20: Unexpected quotes around "Inter" (font-family-name-quotes)
(font-family-name-quotes)
[error] 27-27: Unexpected quotes around "Inter" (font-family-name-quotes)
(font-family-name-quotes)
[error] 34-34: Unexpected quotes around "Inter" (font-family-name-quotes)
(font-family-name-quotes)
[error] 41-41: Unexpected quotes around "Inter" (font-family-name-quotes)
(font-family-name-quotes)
[error] 50-50: Unexpected quotes around "Sora" (font-family-name-quotes)
(font-family-name-quotes)
[error] 60-60: Unexpected quotes around "Sora" (font-family-name-quotes)
(font-family-name-quotes)
[error] 3-3: Unexpected unknown at-rule "@theme" (scss/at-rule-no-unknown)
(scss/at-rule-no-unknown)
🔇 Additional comments (1)
.gitignore (1)
23-24: Looks good —.gitmem/is appropriately ignored.This aligns with the existing ignore policy and keeps local environment/memory artifacts out of version control.
| </div> | ||
| <body class="bg-zinc-950 text-zinc-300 font-body antialiased"> | ||
|
|
||
| <a href="#main-content" class="skip-link" style="position:absolute;left:-9999px;top:auto;width:1px;height:1px;overflow:hidden;z-index:9999;padding:8px;background:#f59e0b;color:#000;text-decoration:none;font-weight:bold;">Skip to content</a> |
There was a problem hiding this comment.
Make the skip link visible on focus.
The link stays at left:-9999px even when focused, so keyboard users can tab to it but cannot actually see or use the shortcut.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@en/index.html` at line 60, The skip link is permanently moved off-screen
(left:-9999px) so it remains invisible when focused; update the styling for the
element with class "skip-link" (the <a> anchor) to keep it visually hidden by
default but bring it into view when focused—add a :focus (and :active) CSS rule
that resets left/top/width/height or uses transform/clip to position it
on-screen (e.g., left/top to a visible offset, restore width/height/overflow) so
keyboard users can see and use the link when tabbing.
| </div> | ||
| <body class="bg-zinc-950 text-zinc-300 font-body antialiased"> | ||
|
|
||
| <a href="#main-content" class="skip-link" style="position:absolute;left:-9999px;top:auto;width:1px;height:1px;overflow:hidden;z-index:9999;padding:8px;background:#f59e0b;color:#000;text-decoration:none;font-weight:bold;">İçeriğe atla</a> |
There was a problem hiding this comment.
Make the skip link visible on focus.
The link stays at left:-9999px even when focused, so keyboard users can tab to it but cannot actually see or use the shortcut.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@index.html` at line 60, The skip link anchor (<a href="#main-content"
class="skip-link">) is visually hidden via an inline style left:-9999px even on
focus; add CSS to make .skip-link visible when focused (e.g., override the
off-screen positioning on :focus or :focus-visible to bring it into view,
restore width/height/left/top and any padding/background so keyboard users can
see and use it) and remove or adjust the inline positioning so the :focus rule
takes effect.
| <script src="https://cdn.tailwindcss.com?plugins=forms,container-queries"></script> | ||
| <link href="https://fonts.googleapis.com/css2?family=Sora:wght@400;600;700;800&family=Inter:wght@300;400;500;600&display=swap" rel="stylesheet"/> | ||
| <link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&display=swap" rel="stylesheet"/> | ||
| <link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:wght,FILL@100..700,0..1&display=swap" rel="stylesheet"/> |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
# Find the stitch-reference.html file
fd "stitch-reference.html" --type fRepository: CalmKernelTR/calmkerneltr.github.io
Length of output: 100
🏁 Script executed:
# Check for build/deployment configuration files
fd -e "package.json" -e "build.js" -e "vite.config" -e "webpack.config" -e "next.config" -e ".gitignore" -e "Makefile" --type f | head -20Repository: CalmKernelTR/calmkerneltr.github.io
Length of output: 61
🏁 Script executed:
# Look for index.html files
fd "index.html" --type fRepository: CalmKernelTR/calmkerneltr.github.io
Length of output: 103
🏁 Script executed:
# Check stitch-reference.html line count and read lines 1-20
wc -l stitch-reference.html && head -20 stitch-reference.htmlRepository: CalmKernelTR/calmkerneltr.github.io
Length of output: 1088
🏁 Script executed:
# Check index.html line count and read first 30 lines
wc -l index.html && head -30 index.htmlRepository: CalmKernelTR/calmkerneltr.github.io
Length of output: 1768
🏁 Script executed:
# Check for deployment/build config
find . -name ".gitignore" -o -name "package.json" -o -name ".github" -type d | head -5Repository: CalmKernelTR/calmkerneltr.github.io
Length of output: 101
🏁 Script executed:
# Read index.html to see CSS/font handling (around line 30-60)
sed -n '30,70p' index.htmlRepository: CalmKernelTR/calmkerneltr.github.io
Length of output: 2146
🏁 Script executed:
# Read en/index.html first 30 lines to see its approach
head -30 en/index.htmlRepository: CalmKernelTR/calmkerneltr.github.io
Length of output: 1761
🏁 Script executed:
# Check .gitignore for excluded files
cat .gitignoreRepository: CalmKernelTR/calmkerneltr.github.io
Length of output: 258
🏁 Script executed:
# Check GitHub workflows for build/deploy config
find .github -type f -name "*.yml" -o -name "*.yaml" | xargs cat 2>/dev/nullRepository: CalmKernelTR/calmkerneltr.github.io
Length of output: 1765
🏁 Script executed:
# Check if there are any other HTML files and their purpose
find . -name "*.html" -type f | sortRepository: CalmKernelTR/calmkerneltr.github.io
Length of output: 429
🏁 Script executed:
# Look for any README or documentation about stitch-reference.html
find . -name "README*" -o -name "*.md" | xargs grep -l "stitch-reference" 2>/dev/nullRepository: CalmKernelTR/calmkerneltr.github.io
Length of output: 63
🏁 Script executed:
# Check git history to understand purpose of stitch-reference.html
git log --oneline -5 -- stitch-reference.html 2>/dev/null || echo "No git history available"Repository: CalmKernelTR/calmkerneltr.github.io
Length of output: 131
🏁 Script executed:
# Check if there's a build script or deploy config in package.json
cat package.json 2>/dev/null || echo "No package.json found"Repository: CalmKernelTR/calmkerneltr.github.io
Length of output: 100
🏁 Script executed:
# Look for any documentation or comments in stitch-reference.html about its purpose
head -50 stitch-reference.html | tail -30Repository: CalmKernelTR/calmkerneltr.github.io
Length of output: 893
🏁 Script executed:
# Check if there are any static site generator configs (Jekyll, Hugo, etc.)
find . -maxdepth 2 -name "_config.yml" -o -name "config.toml" -o -name "hugo.toml" 2>/dev/nullRepository: CalmKernelTR/calmkerneltr.github.io
Length of output: 61
🏁 Script executed:
# Check assets/css directory to understand the built CSS approach
ls -la assets/css/ 2>/dev/nullRepository: CalmKernelTR/calmkerneltr.github.io
Length of output: 726
Exclude stitch-reference.html from the published site or align it with local CSS/fonts.
This file loads Tailwind from CDN plus Google Fonts and Material Symbols, and includes the Material Symbols stylesheet twice. Since it's tracked in git and not explicitly excluded from deployment, it will be served by GitHub Pages, which reintroduces the third-party requests and privacy concerns the rest of the PR eliminates. Either add it to .gitignore or update it to use the local assets/css/main.css and Font Awesome approach already in place for index.html and en/index.html.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@stitch-reference.html` around lines 7 - 10, stitch-reference.html currently
pulls Tailwind via the CDN and includes Google Fonts/Material Symbols (with
Material Symbols linked twice), which reintroduces third-party requests; either
remove it from publishing by adding stitch-reference.html to .gitignore (or your
deploy exclude list) OR update the file to use the same local assets as
index.html/en/index.html: replace the CDN <script> and external <link> tags with
the local assets/css/main.css and the Font Awesome/local icon approach, and
remove the duplicate Material Symbols <link> entry so only the local asset
references remain.
P1 fixes: - Fix font paths in src/input.css (../assets/fonts → ../fonts) - Translate all English content to Turkish in index.html - Add cookie consent banner (KVKK) with amber theme colors P2 fixes: - Add aria-expanded, aria-controls, aria-hidden to mobile menu - Auto-close mobile menu on link click - Use root-relative paths for assets (/assets/...) Resolves feedback from: Blocks, Codex, Gemini Code Assist Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Stats row had 7 children in grid-cols-4 causing layout break. Removed 3 hidden divider elements, replaced with CSS divide-x. Applied to both TR and EN pages. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
Actionable comments posted: 1
♻️ Duplicate comments (1)
index.html (1)
16-16:⚠️ Potential issue | 🟡 MinorOG and Twitter titles are also English.
For consistent Turkish SEO/social sharing, these should match the translated title.
🌐 Suggested diff
- <meta property="og:title" content="CalmKernel — Building the Future of Data Infrastructure"/> + <meta property="og:title" content="CalmKernel — Veri Altyapısının Geleceğini İnşa Ediyoruz"/>Also apply to line 24:
- <meta name="twitter:title" content="CalmKernel — Building the Future of Data Infrastructure"/> + <meta name="twitter:title" content="CalmKernel — Veri Altyapısının Geleceğini İnşa Ediyoruz"/>🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@index.html` at line 16, The Open Graph and Twitter title meta tags are still English; update the content of the meta property="og:title" and the corresponding meta name="twitter:title" tags to use the translated Turkish title (the same text used for the page title translation) so social previews and SEO reflect the Turkish title consistently.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@index.html`:
- Line 6: The page <title> is still in English while the document uses
lang="tr"; update the <title> element content from "CalmKernel — Building the
Future of Data Infrastructure" to the Turkish equivalent (for example
"CalmKernel — Veri Altyapısının Geleceğini İnşa Ediyoruz") so it matches the
Turkish hero text and improves localization/SEO.
---
Duplicate comments:
In `@index.html`:
- Line 16: The Open Graph and Twitter title meta tags are still English; update
the content of the meta property="og:title" and the corresponding meta
name="twitter:title" tags to use the translated Turkish title (the same text
used for the page title translation) so social previews and SEO reflect the
Turkish title consistently.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 2b072ea5-d9e9-4716-a347-0e02302be90b
📒 Files selected for processing (5)
assets/css/cookie-consent.cssassets/css/main.cssen/index.htmlindex.htmlsrc/input.css
✅ Files skipped from review due to trivial changes (1)
- assets/css/cookie-consent.css
📜 Review details
🧰 Additional context used
🪛 Stylelint (17.6.0)
assets/css/main.css
[error] 2-2: Unexpected duplicate "-webkit-text-decoration" (declaration-block-no-duplicate-properties)
(declaration-block-no-duplicate-properties)
[error] 2-2: Unexpected duplicate "-webkit-text-decoration" (declaration-block-no-duplicate-properties)
(declaration-block-no-duplicate-properties)
[error] 2-2: Unexpected duplicate "-webkit-text-decoration-color" (declaration-block-no-duplicate-properties)
(declaration-block-no-duplicate-properties)
[error] 2-2: Expected "button" to be "auto" (declaration-property-value-keyword-no-deprecated)
(declaration-property-value-keyword-no-deprecated)
[error] 2-2: Expected "button" to be "auto" (declaration-property-value-keyword-no-deprecated)
(declaration-property-value-keyword-no-deprecated)
[error] 2-2: Expected quotes around "url" function argument (function-url-quotes)
(function-url-quotes)
[error] 2-2: Expected quotes around "url" function argument (function-url-quotes)
(function-url-quotes)
[error] 2-2: Expected quotes around "url" function argument (function-url-quotes)
(function-url-quotes)
[error] 2-2: Expected quotes around "url" function argument (function-url-quotes)
(function-url-quotes)
[error] 2-2: Expected quotes around "url" function argument (function-url-quotes)
(function-url-quotes)
[error] 2-2: Expected quotes around "url" function argument (function-url-quotes)
(function-url-quotes)
[error] 2-2: Expected quotes around "url" function argument (function-url-quotes)
(function-url-quotes)
[error] 2-2: Expected quotes around "url" function argument (function-url-quotes)
(function-url-quotes)
[error] 2-2: Expected "SFMono-Regular" to be "sfmono-regular" (value-keyword-case)
(value-keyword-case)
[error] 2-2: Expected "Menlo" to be "menlo" (value-keyword-case)
(value-keyword-case)
[error] 2-2: Expected "Monaco" to be "monaco" (value-keyword-case)
(value-keyword-case)
[error] 2-2: Expected "Consolas" to be "consolas" (value-keyword-case)
(value-keyword-case)
[error] 2-2: Expected "currentColor" to be "currentcolor" (value-keyword-case)
(value-keyword-case)
src/input.css
[error] 13-13: Unexpected quotes around "Inter" (font-family-name-quotes)
(font-family-name-quotes)
[error] 20-20: Unexpected quotes around "Inter" (font-family-name-quotes)
(font-family-name-quotes)
[error] 27-27: Unexpected quotes around "Inter" (font-family-name-quotes)
(font-family-name-quotes)
[error] 34-34: Unexpected quotes around "Inter" (font-family-name-quotes)
(font-family-name-quotes)
[error] 41-41: Unexpected quotes around "Inter" (font-family-name-quotes)
(font-family-name-quotes)
[error] 50-50: Unexpected quotes around "Sora" (font-family-name-quotes)
(font-family-name-quotes)
[error] 60-60: Unexpected quotes around "Sora" (font-family-name-quotes)
(font-family-name-quotes)
[error] 3-3: Unexpected unknown at-rule "@theme" (scss/at-rule-no-unknown)
(scss/at-rule-no-unknown)
🔇 Additional comments (9)
en/index.html (3)
60-60: Skip link remains invisible on focus — accessibility issue persists.The skip link has
left:-9999pxin inline styles with no:focusoverride, so keyboard users cannot see it when tabbed to.♿ Proposed fix: Add focus-visible styles
Add a
<style>block in<head>or to your CSS file:.skip-link:focus, .skip-link:focus-visible { left: 0 !important; top: 0 !important; width: auto !important; height: auto !important; overflow: visible !important; }Or replace the inline style with a class that handles both hidden and focused states.
77-88: Mobile menu ARIA implementation looks correct.The button correctly uses
aria-expanded,aria-controls, and the menu usesaria-hidden. The script properly syncs these attributes on toggle and when links are clicked.
330-332: Cookie consent integration is properly included.The KVKK cookie consent CSS and JS are correctly loaded, addressing the compliance requirement.
index.html (3)
60-60: Skip link remains invisible on focus — same issue as en/index.html.The inline
left:-9999pxstyle has no focus override. Apply the same fix suggested for the English page.
335-337: Cookie consent is now properly integrated.The KVKK cookie consent CSS and JS are correctly loaded, resolving the compliance concern from the previous review.
67-111: Turkish body content translation looks complete.Navigation labels, hero headline, CTA buttons, and descriptive text are properly translated to Turkish.
src/input.css (2)
12-46: Font paths are now correct — LGTM.The paths have been fixed from the previous
../assets/fonts/...to../fonts/..., which correctly resolves from the compiledassets/css/main.csslocation toassets/fonts/.
3-9: Tailwind v4 theme configuration looks good.The
@themedirective is valid Tailwind CSS v4 syntax. The static analysis warning (scss/at-rule-no-unknown) is a false positive since the linter is applying SCSS rules to a Tailwind file.assets/css/main.css (1)
1-2: Auto-generated Tailwind output — no action required.This is compiled/minified output from Tailwind CSS v4.2.2. The static analysis warnings (duplicate properties, URL quotes, keyword casing) are artifacts of the minifier and standard CSS resets for cross-browser compatibility. These are not actionable.
| </noscript> | ||
| <meta charset="utf-8"/> | ||
| <meta name="viewport" content="width=device-width, initial-scale=1.0"/> | ||
| <title>CalmKernel — Building the Future of Data Infrastructure</title> |
There was a problem hiding this comment.
Page title still in English on Turkish variant.
The <title> remains "CalmKernel — Building the Future of Data Infrastructure" despite lang="tr". For proper localization and SEO, consider translating to match the Turkish hero text (e.g., "CalmKernel — Veri Altyapısının Geleceğini İnşa Ediyoruz").
🌐 Suggested diff
- <title>CalmKernel — Building the Future of Data Infrastructure</title>
+ <title>CalmKernel — Veri Altyapısının Geleceğini İnşa Ediyoruz</title>📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| <title>CalmKernel — Building the Future of Data Infrastructure</title> | |
| <title>CalmKernel — Veri Altyapısının Geleceğini İnşa Ediyoruz</title> |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@index.html` at line 6, The page <title> is still in English while the
document uses lang="tr"; update the <title> element content from "CalmKernel —
Building the Future of Data Infrastructure" to the Turkish equivalent (for
example "CalmKernel — Veri Altyapısının Geleceğini İnşa Ediyoruz") so it matches
the Turkish hero text and improves localization/SEO.
| <!-- CONTACT/CTA SECTION --> | ||
| <section class="py-24 px-8"> | ||
| <div class="max-w-7xl mx-auto bg-gradient-to-br from-amber-500 to-orange-600 rounded-3xl p-12 md:p-24 text-center relative overflow-hidden shadow-2xl shadow-amber-500/20"> | ||
| <div class="absolute inset-0 opacity-10 bg-[url('https://www.transparenttextures.com/patterns/carbon-fibre.png')]"></div> |
There was a problem hiding this comment.
[Severity 7] External image URL compiles into production main.css
This Tailwind arbitrary class causes https://www.transparenttextures.com/patterns/carbon-fibre.png to be compiled into the shared assets/css/main.css (confirmed via build output). Even though this class is only in the reference file and not rendered on production pages, Tailwind v4 scans all HTML files during the build, so the utility gets emitted.
Impact:
- Every page that loads
main.csssends a browser request totransparenttextures.com(if the class is matched in the browser's rendering path — at minimum the CSS rule is present in the stylesheet). - This contradicts the PR's claim of "Zero external dependencies" and may conflict with the site's KVKK/GDPR stance (third-party domain = potential IP logging).
Fix options:
- Remove this class from
stitch-reference.htmland replace with a local CSS custom class or inline style. - Exclude
stitch-reference.htmlfrom the Tailwind content scan (add a/* tailwind-ignore */comment or configure the scanner to skip it). - Move
stitch-reference.htmlout of the repo root (e.g. to a_drafts/or gitignored directory) so it isn't deployed or scanned.
There was a problem hiding this comment.
Severity 8 — KVKK/GDPR violation: stitch-reference.html is publicly served with Google Fonts CDN calls and no noindex guard
This file is committed to the web root and is publicly accessible. It contains:
<script src="https://cdn.tailwindcss.com?plugins=forms,container-queries">— makes an external request leaking visitor IPs- Two
<link href="https://fonts.googleapis.com/...">calls loading Sora/Inter - A
<link href="https://fonts.googleapis.com/...">for Material Symbols
The PR's core justification is removing all Google Fonts CDN dependencies for KVKK/GDPR compliance ("Zero external font dependencies"). Having this file served publicly from the root directly contradicts that goal — any visitor who lands on this URL triggers external requests to Google's servers.
Additionally, the file carries live <title> and Open Graph metadata pointing to the production site, and there is no <meta name="robots" content="noindex"> to prevent crawler indexing.
Recommended fix: Either add <meta name="robots" content="noindex, nofollow"> to the <head> and strip or comment out the Google CDN <link>/<script> tags, or move the file out of the published web root (e.g., rename to _stitch-reference.html or add it to a non-served docs directory).
| /*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */ | ||
| @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-divide-x-reverse:0}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-500:oklch(63.7% .237 25.331);--color-orange-600:oklch(64.6% .222 41.116);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-600:oklch(66.6% .179 58.318);--color-amber-900:oklch(41.4% .112 45.904);--color-green-500:oklch(72.3% .219 149.579);--color-blue-400:oklch(70.7% .165 254.624);--color-zinc-300:oklch(87.1% .006 286.286);--color-zinc-400:oklch(70.5% .015 286.067);--color-zinc-500:oklch(55.2% .016 285.938);--color-zinc-600:oklch(44.2% .017 285.786);--color-zinc-700:oklch(37% .013 285.805);--color-zinc-800:oklch(27.4% .006 286.033);--color-zinc-900:oklch(21% .006 285.885);--color-zinc-950:oklch(14.1% .005 285.823);--color-white:#fff;--spacing:.25rem;--container-2xl:42rem;--container-4xl:56rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--text-5xl:3rem;--text-5xl--line-height:1;--text-6xl:3.75rem;--text-6xl--line-height:1;--text-7xl:4.5rem;--text-7xl--line-height:1;--font-weight-light:300;--font-weight-medium:500;--font-weight-bold:700;--font-weight-extrabold:800;--font-weight-black:900;--tracking-tighter:-.05em;--tracking-tight:-.025em;--tracking-widest:.1em;--leading-tight:1.25;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--radius-3xl:1.5rem;--radius-4xl:2rem;--blur-md:12px;--blur-3xl:64px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--font-headline:"Sora", sans-serif;--font-body:"Inter", sans-serif}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.-inset-4{inset:calc(var(--spacing) * -4)}.inset-0{inset:calc(var(--spacing) * 0)}.-start{inset-inline-start:calc(var(--spacing) * -1)}.start{inset-inline-start:var(--spacing)}.-end{inset-inline-end:calc(var(--spacing) * -1)}.end{inset-inline-end:var(--spacing)}.top-0{top:calc(var(--spacing) * 0)}.z-10{z-index:10}.z-50{z-index:50}.col-auto{grid-column:auto}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.m-0{margin:calc(var(--spacing) * 0)}.mx-8{margin-inline:calc(var(--spacing) * 8)}.mx-auto{margin-inline:auto}.mb-0{margin-bottom:calc(var(--spacing) * 0)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.mb-12{margin-bottom:calc(var(--spacing) * 12)}.mb-16{margin-bottom:calc(var(--spacing) * 16)}.mb-20{margin-bottom:calc(var(--spacing) * 20)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.h-1{height:calc(var(--spacing) * 1)}.h-3{height:calc(var(--spacing) * 3)}.h-10{height:calc(var(--spacing) * 10)}.h-12{height:calc(var(--spacing) * 12)}.h-20{height:calc(var(--spacing) * 20)}.h-full{height:100%}.h-px{height:1px}.w-3{width:calc(var(--spacing) * 3)}.w-10{width:calc(var(--spacing) * 10)}.w-12{width:calc(var(--spacing) * 12)}.w-\[65\%\]{width:65%}.w-full{width:100%}.w-px{width:1px}.max-w-2xl{max-width:var(--container-2xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-7xl{max-width:var(--container-7xl)}.shrink-0{flex-shrink:0}.flex-grow{flex-grow:1}.border-collapse{border-collapse:collapse}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.resize{resize:both}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}.gap-16{gap:calc(var(--spacing) * 16)}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.-space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * -2) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * -2) * calc(1 - var(--tw-space-x-reverse)))}.self-center{align-self:center}.overflow-hidden{overflow:hidden}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-2{border-top-style:var(--tw-border-style);border-top-width:2px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-amber-500{border-color:var(--color-amber-500)}.border-zinc-700{border-color:var(--color-zinc-700)}.border-zinc-800{border-color:var(--color-zinc-800)}.border-zinc-800\/50{border-color:#27272a80}@supports (color:color-mix(in lab, red, red)){.border-zinc-800\/50{border-color:color-mix(in oklab, var(--color-zinc-800) 50%, transparent)}}.border-zinc-900{border-color:var(--color-zinc-900)}.border-zinc-950{border-color:var(--color-zinc-950)}.border-t-amber-500\/20{border-top-color:#f99c0033}@supports (color:color-mix(in lab, red, red)){.border-t-amber-500\/20{border-top-color:color-mix(in oklab, var(--color-amber-500) 20%, transparent)}}.bg-amber-500{background-color:var(--color-amber-500)}.bg-amber-500\/10{background-color:#f99c001a}@supports (color:color-mix(in lab, red, red)){.bg-amber-500\/10{background-color:color-mix(in oklab, var(--color-amber-500) 10%, transparent)}}.bg-amber-500\/50{background-color:#f99c0080}@supports (color:color-mix(in lab, red, red)){.bg-amber-500\/50{background-color:color-mix(in oklab, var(--color-amber-500) 50%, transparent)}}.bg-green-500\/50{background-color:#00c75880}@supports (color:color-mix(in lab, red, red)){.bg-green-500\/50{background-color:color-mix(in oklab, var(--color-green-500) 50%, transparent)}}.bg-red-500\/50{background-color:#fb2c3680}@supports (color:color-mix(in lab, red, red)){.bg-red-500\/50{background-color:color-mix(in oklab, var(--color-red-500) 50%, transparent)}}.bg-zinc-800{background-color:var(--color-zinc-800)}.bg-zinc-900{background-color:var(--color-zinc-900)}.bg-zinc-900\/30{background-color:#18181b4d}@supports (color:color-mix(in lab, red, red)){.bg-zinc-900\/30{background-color:color-mix(in oklab, var(--color-zinc-900) 30%, transparent)}}.bg-zinc-950{background-color:var(--color-zinc-950)}.bg-zinc-950\/20{background-color:#09090b33}@supports (color:color-mix(in lab, red, red)){.bg-zinc-950\/20{background-color:color-mix(in oklab, var(--color-zinc-950) 20%, transparent)}}.bg-zinc-950\/80{background-color:#09090bcc}@supports (color:color-mix(in lab, red, red)){.bg-zinc-950\/80{background-color:color-mix(in oklab, var(--color-zinc-950) 80%, transparent)}}.bg-zinc-950\/95{background-color:#09090bf2}@supports (color:color-mix(in lab, red, red)){.bg-zinc-950\/95{background-color:color-mix(in oklab, var(--color-zinc-950) 95%, transparent)}}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-\[radial-gradient\(circle_at_50\%_50\%\,rgba\(245\,158\,11\,0\.08\)\,transparent_50\%\)\]{background-image:radial-gradient(circle,#f59e0b14,#0000 50%)}.bg-\[url\(\'https\:\/\/www\.transparenttextures\.com\/patterns\/carbon-fibre\.png\'\)\]{background-image:url(https://www.transparenttextures.com/patterns/carbon-fibre.png)}.from-amber-500{--tw-gradient-from:var(--color-amber-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-amber-600{--tw-gradient-to:var(--color-amber-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-orange-600{--tw-gradient-to:var(--color-orange-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.p-12{padding:calc(var(--spacing) * 12)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-8{padding-inline:calc(var(--spacing) * 8)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-12{padding-block:calc(var(--spacing) * 12)}.py-24{padding-block:calc(var(--spacing) * 24)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-32{padding-top:calc(var(--spacing) * 32)}.pb-1{padding-bottom:calc(var(--spacing) * 1)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pb-20{padding-bottom:calc(var(--spacing) * 20)}.text-center{text-align:center}.font-body{font-family:var(--font-body)}.font-headline{font-family:var(--font-headline)}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-black{--tw-font-weight:var(--font-weight-black);font-weight:var(--font-weight-black)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extrabold{--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.font-light{--tw-font-weight:var(--font-weight-light);font-weight:var(--font-weight-light)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-tighter{--tw-tracking:var(--tracking-tighter);letter-spacing:var(--tracking-tighter)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.text-amber-400{color:var(--color-amber-400)}.text-amber-500{color:var(--color-amber-500)}.text-blue-400{color:var(--color-blue-400)}.text-green-500{color:var(--color-green-500)}.text-white{color:var(--color-white)}.text-zinc-300{color:var(--color-zinc-300)}.text-zinc-400{color:var(--color-zinc-400)}.text-zinc-500{color:var(--color-zinc-500)}.text-zinc-600{color:var(--color-zinc-600)}.text-zinc-700{color:var(--color-zinc-700)}.text-zinc-950{color:var(--color-zinc-950)}.uppercase{text-transform:uppercase}.italic{font-style:italic}.decoration-zinc-950\/30{text-decoration-color:#09090b4d}@supports (color:color-mix(in lab, red, red)){.decoration-zinc-950\/30{-webkit-text-decoration-color:color-mix(in oklab, var(--color-zinc-950) 30%, transparent);-webkit-text-decoration-color:color-mix(in oklab, var(--color-zinc-950) 30%, transparent);text-decoration-color:color-mix(in oklab, var(--color-zinc-950) 30%, transparent)}}.underline-offset-8{text-underline-offset:8px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-10{opacity:.1}.opacity-80{opacity:.8}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-amber-500\/20{--tw-shadow-color:#f99c0033}@supports (color:color-mix(in lab, red, red)){.shadow-amber-500\/20{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-amber-500) 20%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-amber-900\/10{--tw-shadow-color:#7b33061a}@supports (color:color-mix(in lab, red, red)){.shadow-amber-900\/10{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-amber-900) 10%, transparent) var(--tw-shadow-alpha), transparent)}}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.blur-3xl{--tw-blur:blur(var(--blur-3xl));filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-300{--tw-duration:.3s;transition-duration:.3s}.backface-hidden{backface-visibility:hidden}@media (hover:hover){.group-hover\:scale-110:is(:where(.group):hover *){--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:border-amber-500\/50:hover{border-color:#f99c0080}@supports (color:color-mix(in lab, red, red)){.hover\:border-amber-500\/50:hover{border-color:color-mix(in oklab, var(--color-amber-500) 50%, transparent)}}.hover\:bg-amber-600:hover{background-color:var(--color-amber-600)}.hover\:bg-white:hover{background-color:var(--color-white)}.hover\:bg-zinc-900:hover{background-color:var(--color-zinc-900)}.hover\:bg-zinc-900\/50:hover{background-color:#18181b80}@supports (color:color-mix(in lab, red, red)){.hover\:bg-zinc-900\/50:hover{background-color:color-mix(in oklab, var(--color-zinc-900) 50%, transparent)}}.hover\:text-amber-400:hover{color:var(--color-amber-400)}.hover\:text-amber-600:hover{color:var(--color-amber-600)}.hover\:text-white:hover{color:var(--color-white)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-lg:hover{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:shadow-amber-500\/20:hover{--tw-shadow-color:#f99c0033}@supports (color:color-mix(in lab, red, red)){.hover\:shadow-amber-500\/20:hover{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-amber-500) 20%, transparent) var(--tw-shadow-alpha), transparent)}}}.active\:scale-95:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}@media (min-width:40rem){.sm\:inline{display:inline}.sm\:w-auto{width:auto}.sm\:flex-row{flex-direction:row}.sm\:text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.sm\:text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.sm\:text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}}@media (min-width:48rem){.md\:block{display:block}.md\:flex{display:flex}.md\:hidden{display:none}.md\:inline{display:inline}.md\:w-auto{width:auto}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-start{align-items:flex-start}.md\:gap-8{gap:calc(var(--spacing) * 8)}:where(.md\:divide-x>:not(:last-child)){--tw-divide-x-reverse:0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px * var(--tw-divide-x-reverse));border-inline-end-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}:where(.md\:divide-zinc-800>:not(:last-child)){border-color:var(--color-zinc-800)}.md\:p-24{padding:calc(var(--spacing) * 24)}.md\:px-8{padding-inline:calc(var(--spacing) * 8)}.md\:pt-48{padding-top:calc(var(--spacing) * 48)}.md\:pb-32{padding-bottom:calc(var(--spacing) * 32)}.md\:text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.md\:text-6xl{font-size:var(--text-6xl);line-height:var(--tw-leading,var(--text-6xl--line-height))}.md\:text-7xl{font-size:var(--text-7xl);line-height:var(--tw-leading,var(--text-7xl--line-height))}.md\:text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}}@media (min-width:64rem){.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}}@font-face{font-family:Inter;font-style:normal;font-weight:300;font-display:swap;src:url(../fonts/Inter-Light.woff2)format("woff2")}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/Inter-Regular.woff2)format("woff2")}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(../fonts/Inter-Medium.woff2)format("woff2")}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(../fonts/Inter-SemiBold.woff2)format("woff2")}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(../fonts/Inter-Bold.woff2)format("woff2")}@font-face{font-family:Sora;font-style:normal;font-weight:100 800;font-display:swap;src:url(../fonts/sora-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Sora;font-style:normal;font-weight:100 800;font-display:swap;src:url(../fonts/sora-latin-ext.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}.glass-card{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#18181b99;border:1px solid #ffffff0d}.text-gradient{-webkit-text-fill-color:transparent;background:linear-gradient(to bottom right,#fff,#a1a1aa);-webkit-background-clip:text}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-divide-x-reverse{syntax:"*";inherits:false;initial-value:0} No newline at end of file |
There was a problem hiding this comment.
Severity 7 — External transparenttextures.com URL compiled into production CSS
The compiled main.css contains this utility class (generated because Tailwind scanned stitch-reference.html):
.bg-\[url\(\'https\:\/\/www\.transparenttextures\.com\/patterns\/carbon-fibre\.png\'\)\]{
background-image: url(https://www.transparenttextures.com/patterns/carbon-fibre.png)
}This class is not used in index.html or en/index.html, so the URL is not fetched at runtime currently. However:
- Dead weight — increases CSS bundle size with a utility that serves no active page
- Future risk — if the class is ever applied, it would make an external network request to a third-party domain, breaking the "zero external dependencies" contract and raising KVKK concerns
- Root cause — Tailwind's content scanning is picking up
stitch-reference.html, which usesbg-[url('https://www.transparenttextures.com/...')]
Recommended fix: Exclude stitch-reference.html from Tailwind's content scanning in your build config (e.g., via a tailwind.config.js content exclude pattern, or by moving the file outside the scan path), then rebuild main.css.
# Conflicts: # assets/css/cookie-consent.css # en/index.html
| <link rel="icon" type="image/svg+xml" href="/assets/images/calmkernel-icon.svg"/> | ||
|
|
||
| <!-- Built CSS (Tailwind purged) --> | ||
| <link rel="stylesheet" href="/assets/css/main.css"/> | ||
|
|
||
| <!-- Font Awesome (async) --> | ||
| <link rel="stylesheet" href="/assets/css/font-awesome.min.css" media="print" onload="this.media='all'"/> | ||
| <noscript><link rel="stylesheet" href="/assets/css/font-awesome.min.css"/></noscript> |
There was a problem hiding this comment.
Severity 8 — Missing assets will cause silent UI breakage
Three assets referenced here do not exist in the repository:
/assets/js/cookie-consent.js(line 334) — the JS file is absent (assets/js/directory does not exist). The KVKK cookie consent banner CSS is loaded but the banner logic never runs./assets/images/calmkernel-icon.svg(line 49) — favicon returns 404./assets/css/font-awesome.min.css(lines 55–56) — if this file is not present (it is not in the PR diff), all<i class="fas fa-...">and<i class="fab fa-...">icons render as invisible/broken text, collapsing the entire icon-heavy UI silently.
Please confirm these files exist on the deployment target (i.e., were committed separately), or add them to this PR. A missing Font Awesome CSS means every icon on the page — broom, chart-line, layer-group, shield-alt, globe-europe, etc. — will be invisible.
| var menu = document.getElementById('mobileMenu'); | ||
| btn.addEventListener('click', function() { | ||
| var open = menu.classList.toggle('hidden'); | ||
| btn.setAttribute('aria-expanded', !open); | ||
| menu.setAttribute('aria-hidden', open); |
There was a problem hiding this comment.
Severity 7 — aria-expanded state is inverted
var open = menu.classList.toggle('hidden');
btn.setAttribute('aria-expanded', !open);classList.toggle('hidden') returns true when the class was added (menu is now hidden/closed) and false when it was removed (menu is now visible/open). Therefore !open evaluates to true when the menu is hidden — the opposite of what screen readers expect.
The correct logic is:
var isNowHidden = menu.classList.toggle('hidden');
btn.setAttribute('aria-expanded', String(!isNowHidden));
menu.setAttribute('aria-hidden', String(isNowHidden));The same bug exists in en/index.html at the equivalent script block.
There was a problem hiding this comment.
Severity 8 — Sora font files are missing from the repository
main.css references two Sora font files:
url(../fonts/sora-latin.woff2)url(../fonts/sora-latin-ext.woff2)
However, assets/fonts/ only contains Inter variants (Inter-Bold.woff2, Inter-Light.woff2, Inter-Medium.woff2, Inter-Regular.woff2, Inter-SemiBold.woff2). The Sora files are not present in this PR's diff and do not exist in the repository.
font-headline (used on h1, h2, section titles, and the logo) will silently fall back to sans-serif. The headline font is a core part of the new visual identity — this needs to be committed alongside the CSS.
There was a problem hiding this comment.
🔴 Missing cookie-consent.js breaks KVKK cookie consent functionality
Both index.html:334 and en/index.html:329 include <script src="/assets/js/cookie-consent.js" defer></script>, but the assets/js/ directory does not exist in the repository. The PR adds assets/css/cookie-consent.css (the styling) but omits the corresponding JavaScript file. The cookie consent banner (required for KVKK compliance, as noted in the HTML comment <!-- Cookie Consent (KVKK) -->) will render as styled HTML but have no functional behavior — users cannot accept cookies, and the banner cannot be dismissed.
(Refers to line 689)
Prompt for agents
Both index.html (line 689) and en/index.html (line 329) reference /assets/js/cookie-consent.js but this file does not exist. The assets/js/ directory is entirely missing from the repository. The cookie-consent.css was added to assets/css/ but the JS counterpart was not. A cookie-consent.js file needs to be created in assets/js/ that handles: (1) checking if the user has already consented (e.g. via a cookie or localStorage), (2) showing/hiding the #cookieConsent banner, (3) handling the #ccAccept button click to record consent and hide the banner. The CSS already defines #cookieConsent, .cc-hidden, .cc-inner, and #ccAccept selectors.
Was this helpful? React with 👍 or 👎 to provide feedback.
There was a problem hiding this comment.
🔴 Missing font-awesome.min.css causes all icons to not render
Both index.html:410 and en/index.html:55 reference /assets/css/font-awesome.min.css (loaded async with media="print" onload="this.media='all'"), but this file does not exist in assets/css/ (which only contains main.css and cookie-consent.css). The site uses Font Awesome icons throughout — navigation hamburger (fa fa-bars), GitHub icons (fab fa-github), product section icons (fas fa-broom, fas fa-chart-line, fas fa-layer-group), about section icons (fas fa-globe-europe, fas fa-shield-alt, fas fa-code-branch, fas fa-robot), and social links (fab fa-linkedin-in). None of these icons will render, leaving blank spaces throughout the UI.
(Refers to lines 410-411)
Prompt for agents
Both index.html (lines 410-411) and en/index.html (lines 55-56) reference /assets/css/font-awesome.min.css but this file does not exist in the repository. The assets/css/ directory only contains main.css and cookie-consent.css. Font Awesome CSS (and its associated webfont files) need to be added to the assets directory. You can either: (1) download Font Awesome (free version) and place font-awesome.min.css in assets/css/ along with the webfonts directory, or (2) use a CDN link instead of a local file. The site uses both 'fas' (solid), 'fab' (brands), 'fa' (v4 compat), and 'far' (regular) icon prefixes, so Font Awesome 5+ Free is needed. Self-hosting is preferred given the project's GDPR/KVKK compliance goals.
Was this helpful? React with 👍 or 👎 to provide feedback.
| @font-face { | ||
| font-family: "Sora"; | ||
| font-style: normal; | ||
| font-weight: 100 800; | ||
| font-display: swap; | ||
| src: url("../fonts/sora-latin.woff2") format("woff2"); | ||
| unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, | ||
| U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, | ||
| U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; |
There was a problem hiding this comment.
🔴 Missing Sora font files cause headline font to not render
The compiled assets/css/main.css includes @font-face declarations referencing ../fonts/sora-latin.woff2 and ../fonts/sora-latin-ext.woff2, but neither file exists in assets/fonts/. The PR adds all five Inter font .woff2 files but omits the Sora files. Since font-headline is defined as "Sora", sans-serif (src/input.css:4) and used extensively in both index.html and en/index.html for headings (font-headline class), all headline text will fall back to generic sans-serif instead of the intended Sora typeface.
Prompt for agents
The src/input.css file (lines 49-68) defines two @font-face blocks for the Sora font family referencing ../fonts/sora-latin.woff2 and ../fonts/sora-latin-ext.woff2. These declarations are compiled into assets/css/main.css. However, the assets/fonts/ directory only contains Inter font files (Inter-Light.woff2, Inter-Regular.woff2, Inter-Medium.woff2, Inter-SemiBold.woff2, Inter-Bold.woff2). The two Sora .woff2 files need to be added to assets/fonts/ alongside the Inter files. These can be obtained from Google Fonts or a similar source and self-hosted for GDPR/KVKK compliance as intended by the project.
Was this helpful? React with 👍 or 👎 to provide feedback.
#1 [CRITICAL] Replace broken Next.js 404.html with static dark amber page #2 [HIGH] Fix OG image path (/assets/images/og-preview.png → /og-image.png) #3 [MEDIUM] Remove logos/ directory (~6.4MB unreferenced PNGs) #4 [MEDIUM] Remove orphan fontello.woff/woff2 #5 [LOW] Fix 'Turkce' → 'Türkçe' typo in en/index.html #6 [MEDIUM] .gitmem/ already untracked (verified) #7 [HIGH] Create privacy-policy.html (TR) + en/privacy-policy.html (EN) #8 [HIGH] Restore LICENSE (proprietary) #9 [HIGH] Fix CI workflow — update Lighthouse URLs to existing pages #10 [MEDIUM] Create README.md with current stack info #11 [MEDIUM] Restore SECURITY.md #12 [MEDIUM] Update .REPOMAP.md to reflect Tailwind/dark amber design #13 [MEDIUM] Add .gitattributes (EOL normalization, binary markers) Additional: Tailwind CSS rebuilt for all pages, pinned CI dependencies Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
From prior PRs (open findings): - Skip link visible on focus (sr-only + focus:not-sr-only) — CodeRabbit - aria-expanded state corrected (isHidden logic) — Blocks - localStorage try-catch wrapper — Gemini From PR #8 reviews: - Blog nav links → # (page doesn't exist yet) — CodeRabbit/Blocks/Devin - Tools footer → /#products anchor — Devin - 404.html skip link added — Gemini - fa → fas class (FA6) — Gemini - var → const/let (ES6) — Gemini - .gitattributes *.yaml added — CodeRabbit - CI Lighthouse EN privacy page added — CodeRabbit All pages: index, en/index, privacy-policy, en/privacy-policy, 404 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: RockSolid audit — all 13 findings resolved #1 [CRITICAL] Replace broken Next.js 404.html with static dark amber page #2 [HIGH] Fix OG image path (/assets/images/og-preview.png → /og-image.png) #3 [MEDIUM] Remove logos/ directory (~6.4MB unreferenced PNGs) #4 [MEDIUM] Remove orphan fontello.woff/woff2 #5 [LOW] Fix 'Turkce' → 'Türkçe' typo in en/index.html #6 [MEDIUM] .gitmem/ already untracked (verified) #7 [HIGH] Create privacy-policy.html (TR) + en/privacy-policy.html (EN) #8 [HIGH] Restore LICENSE (proprietary) #9 [HIGH] Fix CI workflow — update Lighthouse URLs to existing pages #10 [MEDIUM] Create README.md with current stack info #11 [MEDIUM] Restore SECURITY.md #12 [MEDIUM] Update .REPOMAP.md to reflect Tailwind/dark amber design #13 [MEDIUM] Add .gitattributes (EOL normalization, binary markers) Additional: Tailwind CSS rebuilt for all pages, pinned CI dependencies Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: address all bot review feedback from PR #5-8 From prior PRs (open findings): - Skip link visible on focus (sr-only + focus:not-sr-only) — CodeRabbit - aria-expanded state corrected (isHidden logic) — Blocks - localStorage try-catch wrapper — Gemini From PR #8 reviews: - Blog nav links → # (page doesn't exist yet) — CodeRabbit/Blocks/Devin - Tools footer → /#products anchor — Devin - 404.html skip link added — Gemini - fa → fas class (FA6) — Gemini - var → const/let (ES6) — Gemini - .gitattributes *.yaml added — CodeRabbit - CI Lighthouse EN privacy page added — CodeRabbit All pages: index, en/index, privacy-policy, en/privacy-policy, 404 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Summary
Complete website redesign generated via Google Stitch MCP and refined for production.
Before → After
What Changed
Design
Technical
Pages
index.html— TR landing page (new design)en/index.html— EN landing page (new design)index-old-aiero.html— Old design preserved as backupstitch-reference.html— Original Stitch output for referencesrc/input.css— Tailwind source CSSSections
Stitch MCP Project
9648627339346328816Rollback
Old design preserved as
index-old-aiero.html. To rollback: