OpenCode AI e9899d2e6d
Some checks failed
Android CI Build / check (push) Has been cancelled
Android CI Build / package-apks (push) Has been cancelled
Docs Deploy / build (push) Has been cancelled
Module Market Check / Validate modules/ (push) Has been cancelled
Module Market Publish / Generate submissions.json (push) Has been cancelled
Docs Deploy / deploy (push) Has been cancelled
Initial DruksCode V2: fresh fork of web-to-app (f3b488e) with DruksCode identity
- Package rename com.webtoapp -> br.com.drukstech.codeapp
- Product rename WebToApp/web-to-app -> DruksCode/drukscode
- Design system Wta* -> Dkc*
- applicationId br.com.drukstech.codeapp (.play for gplay flavor)
- rootProject.name DruksCode
- Fresh git history (upstream kept as remote for sync)
2026-09-12 02:42:02 +02:00

364 lines
7.5 KiB
CSS

/**
* DruksCode brand theme.
* Accent is a confident blue that reads well in both light and dark mode.
* deliberately flat: no hero glow, no gradient text — plain color only.
* Buttons stay black in both themes: dark background, light text.
*/
:root {
--vp-c-brand-1: #2563eb;
--vp-c-brand-2: #3b82f6;
--vp-c-brand-3: #60a5fa;
--vp-c-brand-soft: rgba(59, 130, 246, 0.14);
--vp-home-hero-name-color: var(--vp-c-brand-1);
--vp-home-hero-image-background-image: none;
--vp-home-hero-image-filter: none;
}
.dark {
--vp-c-brand-1: #60a5fa;
--vp-c-brand-2: #3b82f6;
--vp-c-brand-3: #2563eb;
--vp-c-brand-soft: rgba(96, 165, 250, 0.16);
--vp-home-hero-name-color: var(--vp-c-brand-1);
--vp-home-hero-image-background-image: none;
--vp-home-hero-image-filter: none;
}
/* Buttons: black in light and dark mode instead of the blue accent. */
:root,
.dark {
--vp-button-brand-bg: #171717;
--vp-button-brand-hover-bg: #262626;
--vp-button-brand-active-bg: #262626;
--vp-button-brand-text: #ffffff;
--vp-button-brand-hover-text: #ffffff;
--vp-button-brand-active-text: #ffffff;
--vp-button-alt-bg: #2b2b2b;
--vp-button-alt-hover-bg: #383838;
--vp-button-alt-active-bg: #383838;
--vp-button-alt-text: #ffffff;
--vp-button-alt-hover-text: #ffffff;
--vp-button-alt-active-text: #ffffff;
}
/*
* Homepage content below the features grid. The markdown lives inside
* VPHomeContent's 1280px container; .dkc-home narrows to 1152px so the
* custom sections line up with the features grid above.
*/
.dkc-home {
max-width: 1152px;
margin: 0 auto;
padding: 8px 0 48px;
}
.dkc-home h2 {
margin-top: 56px;
margin-bottom: 20px;
padding-top: 0;
border-top: none;
font-size: 28px;
}
/* Three-step getting started: numbered cards in a responsive row. */
.dkc-steps {
counter-reset: dkc-step;
}
.dkc-steps ol {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 16px;
margin: 0;
padding: 0;
list-style: none;
}
@media (max-width: 959px) {
.dkc-steps ol {
grid-template-columns: 1fr;
}
}
.dkc-steps li {
counter-increment: dkc-step;
position: relative;
padding: 20px 20px 16px 62px;
border: 1px solid var(--vp-c-divider);
border-radius: 12px;
background-color: var(--vp-c-bg-soft);
}
.dkc-steps li::before {
content: counter(dkc-step);
position: absolute;
left: 18px;
top: 20px;
display: flex;
align-items: center;
justify-content: center;
width: 28px;
height: 28px;
border-radius: 50%;
background-color: #171717;
color: #ffffff;
font-size: 14px;
font-weight: 700;
}
.dark .dkc-steps li::before {
background-color: #2e2e2e;
}
.dkc-steps li p {
margin: 0 0 8px;
}
.dkc-steps li p:last-child {
margin-bottom: 0;
color: var(--vp-c-text-2);
font-size: 14px;
}
.dkc-steps li a {
font-weight: 500;
text-decoration: none;
}
/* Tile grids: app types and toolbox, mirroring the features card language. */
.dkc-types {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 16px;
}
@media (max-width: 959px) {
.dkc-types {
grid-template-columns: repeat(2, 1fr);
}
}
@media (max-width: 639px) {
.dkc-types {
grid-template-columns: 1fr;
}
}
.dkc-types > div {
border: 1px solid var(--vp-c-divider);
border-radius: 12px;
background-color: var(--vp-c-bg-soft);
padding: 16px 20px;
transition: border-color 0.25s, background-color 0.25s;
}
.dkc-types > div:hover {
border-color: var(--vp-c-text-1);
}
.dkc-types p {
margin: 0;
padding: 4px 0;
line-height: 1.7;
font-size: 14px;
color: var(--vp-c-text-2);
}
.dkc-types p > a {
color: var(--vp-c-text-1);
font-weight: 600;
text-decoration: none;
transition: color 0.25s;
}
.dkc-types p > a:hover {
color: var(--vp-c-brand-1);
}
/* Stat strip: number + label pairs in a flat row. */
.dkc-stats {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 16px;
}
@media (max-width: 767px) {
.dkc-stats {
grid-template-columns: repeat(2, 1fr);
}
}
.dkc-stat {
display: flex;
flex-direction: column;
align-items: center;
padding: 24px 12px;
border: 1px solid var(--vp-c-divider);
border-radius: 12px;
background-color: var(--vp-c-bg-soft);
}
.dkc-stat b {
font-size: 32px;
font-weight: 700;
line-height: 1.2;
color: var(--vp-c-text-1);
}
.dkc-stat span {
margin-top: 4px;
font-size: 13px;
color: var(--vp-c-text-2);
}
/* Closing call-to-action. */
.dkc-cta {
margin-top: 56px;
padding: 32px 24px;
text-align: center;
border: 1px solid var(--vp-c-divider);
border-radius: 12px;
background-color: var(--vp-c-bg-soft);
}
.dkc-cta p {
margin: 0 0 16px;
font-size: 18px;
font-weight: 600;
color: var(--vp-c-text-1);
}
.dkc-cta a {
display: inline-block;
padding: 6px 20px;
border-radius: 20px;
background-color: #171717;
color: #ffffff !important;
font-size: 14px;
font-weight: 600;
text-decoration: none;
transition: background-color 0.25s;
}
.dkc-cta a:hover {
background-color: #262626;
}
.dark .dkc-cta a {
background-color: #2e2e2e;
}
.dark .dkc-cta a:hover {
background-color: #3a3a3a;
}
/* Feature cards: calmer hover that matches the flat look. */
.VPFeature.link:hover {
border-color: var(--vp-c-text-1);
}
/*
* Hero download button, rendered through the home-hero-actions-after slot.
* Shares the black-pill grammar of the brand buttons above.
*/
.dkc-release {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: center;
gap: 8px 12px;
margin-top: 20px;
}
/*
* On homepages the LatestRelease slot follows the hero actions container in
* the same inline formatting context. Because the shrink-to-fit .main column
* is narrower than buttons + pill together, the pill usually wraps to its
* own row right below the actions (it stays inline when they do fit);
* margin-top minus .actions' -6px bottom margin leaves a small gutter there.
* The pill must be inline-flex, not inline: an inline box's line box is
* sized by font metrics, so the 40px button bleeds above it into the actions
* row — that was the overlap bug. Baseline alignment keeps the pill's text
* on the buttons' text baseline when they share a row. Row alignment
* (centered below 960px, left above) follows .container's text-align,
* matching how VitePress aligns the actions row itself.
*/
.VPHero .actions {
display: inline-flex;
}
.VPHero .dkc-release {
display: inline-flex;
vertical-align: baseline;
margin-top: 12px;
}
.dkc-release-btn {
display: inline-flex;
align-items: center;
gap: 8px;
padding: 0 20px;
line-height: 38px;
border: 1px solid transparent;
border-radius: 20px;
background-color: #171717;
color: #ffffff;
font-size: 14px;
font-weight: 600;
white-space: nowrap;
text-decoration: none;
transition: background-color 0.25s;
}
.dkc-release-btn:hover {
background-color: #262626;
}
.dark .dkc-release-btn {
background-color: #2e2e2e;
}
.dark .dkc-release-btn:hover {
background-color: #3a3a3a;
}
.dkc-release-btn svg {
width: 16px;
height: 16px;
flex-shrink: 0;
}
.dkc-release-meta {
font-size: 12px;
color: var(--vp-c-text-3);
}
/* Install-download block for guide pages. */
.dkc-install {
margin: 16px 0;
padding: 20px 24px;
border: 1px solid var(--vp-c-divider);
border-radius: 12px;
background-color: var(--vp-c-bg-soft);
}
.dkc-install p {
margin: 0 0 12px;
font-weight: 600;
color: var(--vp-c-text-1);
}
.dkc-install p:last-child {
margin-bottom: 0;
font-weight: 400;
font-size: 14px;
color: var(--vp-c-text-2);
}
.dkc-install .dkc-release {
justify-content: flex-start;
margin-top: 4px;
}