:root {
    --ct-forest: #173d2a;
    --ct-forest-2: #245239;
    --ct-leaf: #6f8f6c;
    --ct-sage: #dfe8dc;
    --ct-cream: #f7f5ef;
    --ct-paper: #fffdf8;
    --ct-rose: #a85f68;
    --ct-gold: #ba9150;
    --ct-ink: #18211b;
    --ct-muted: #6c766f;
    --ct-line: #e5e8e1;
    --ct-danger: #a63d3d;
    --ct-shadow: 0 24px 70px rgba(24, 48, 34, .15);
}

* { box-sizing: border-box; }
html, body { margin: 0; min-height: 100%; }
body {
    font-family: Inter, "Segoe UI", system-ui, -apple-system, BlinkMacSystemFont, Arial, sans-serif;
    color: var(--ct-ink);
    background: var(--ct-cream);
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
}
button, input, textarea, select { font: inherit; }
a { color: inherit; }
[hidden] { display: none !important; }

.ct-public-page {
    min-height: 100vh;
    min-height: 100svh;
    position: relative;
    overflow: hidden;
    background:
        radial-gradient(circle at 8% 5%, rgba(111,143,108,.20), transparent 29rem),
        radial-gradient(circle at 92% 86%, rgba(168,95,104,.12), transparent 26rem),
        var(--ct-cream);
}

.ct-public-page::before,
.ct-public-page::after {
    content: "";
    position: fixed;
    pointer-events: none;
    border: 1px solid rgba(23,61,42,.10);
    border-radius: 55% 45% 60% 40%;
    transform: rotate(28deg);
}
.ct-public-page::before { width: 330px; height: 510px; left: -175px; top: -120px; }
.ct-public-page::after { width: 280px; height: 430px; right: -160px; bottom: -120px; transform: rotate(-32deg); }

.ct-public-shell {
    width: min(1180px, calc(100% - 34px));
    min-height: 100vh;
    min-height: 100svh;
    margin: 0 auto;
    padding: 28px 0;
    display: grid;
    grid-template-columns: minmax(0, 1.05fr) minmax(360px, .95fr);
    gap: clamp(28px, 6vw, 76px);
    align-items: center;
    position: relative;
    z-index: 1;
}

.ct-brand-panel { padding: clamp(10px, 4vw, 38px); }
.ct-brand-kicker {
    display: inline-flex;
    align-items: center;
    gap: 9px;
    min-height: 34px;
    padding: 0 13px;
    border-radius: 999px;
    border: 1px solid rgba(23,61,42,.14);
    color: var(--ct-forest);
    background: rgba(255,253,248,.65);
    font-size: 12px;
    font-weight: 850;
    letter-spacing: .08em;
    text-transform: uppercase;
}
.ct-brand-kicker::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--ct-rose); box-shadow: 0 0 0 4px rgba(168,95,104,.10); }
.ct-brand-title {
    margin: 24px 0 12px;
    max-width: 680px;
    color: var(--ct-forest);
    font-size: clamp(46px, 7vw, 82px);
    line-height: .96;
    letter-spacing: -.055em;
    font-weight: 900;
}
.ct-brand-title span { display: block; color: var(--ct-rose); font-family: Georgia, "Times New Roman", serif; font-style: italic; font-weight: 600; font-size: .62em; letter-spacing: -.025em; margin-top: 10px; }
.ct-brand-copy { max-width: 620px; margin: 0; color: var(--ct-muted); font-size: clamp(15px, 1.6vw, 18px); line-height: 1.75; }
.ct-brand-points { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 24px; }
.ct-brand-point { padding: 9px 12px; border-radius: 999px; background: #fff; border: 1px solid var(--ct-line); color: #435048; font-size: 12px; font-weight: 800; box-shadow: 0 8px 22px rgba(30,52,39,.05); }

.ct-flower-mark {
    width: 74px;
    height: 74px;
    border-radius: 24px;
    display: grid;
    place-items: center;
    color: #fff;
    background: var(--ct-forest);
    box-shadow: 0 18px 36px rgba(23,61,42,.20);
    font-family: Georgia, "Times New Roman", serif;
    font-size: 34px;
    font-weight: 700;
}
.ct-flower-mark small { position: absolute; width: 16px; height: 28px; border-radius: 100% 0 100% 0; background: #9bb493; transform: translate(24px,-24px) rotate(24deg); }

.ct-entry-card,
.ct-form-card {
    border: 1px solid rgba(23,61,42,.10);
    border-radius: 32px;
    background: rgba(255,253,248,.94);
    box-shadow: var(--ct-shadow);
    backdrop-filter: blur(18px);
}
.ct-entry-card { padding: clamp(24px, 4vw, 38px); }
.ct-entry-card h2, .ct-form-card h1 { margin: 0; color: var(--ct-forest); letter-spacing: -.035em; font-weight: 900; }
.ct-entry-card h2 { font-size: clamp(28px, 4vw, 40px); }
.ct-card-copy { margin: 9px 0 22px; color: var(--ct-muted); font-size: 14px; line-height: 1.65; }
.ct-entry-actions { display: grid; gap: 11px; }
.ct-btn {
    min-height: 58px;
    border-radius: 18px;
    border: 1px solid transparent;
    padding: 0 18px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    text-decoration: none;
    cursor: pointer;
    font-weight: 880;
    font-size: 15px;
    transition: transform .15s ease, box-shadow .15s ease, background .15s ease;
}
.ct-btn:active { transform: translateY(1px) scale(.995); }
.ct-btn-primary { color: #fff; background: var(--ct-forest); box-shadow: 0 14px 30px rgba(23,61,42,.20); }
.ct-btn-primary:hover { background: var(--ct-forest-2); }
.ct-btn-soft { color: var(--ct-forest); background: var(--ct-sage); border-color: #cddbc9; }
.ct-btn-outline { color: #39463e; background: #fff; border-color: var(--ct-line); }
.ct-btn-ghost { color: var(--ct-muted); background: transparent; border-color: transparent; }

.ct-campaign {
    margin-top: 18px;
    padding: 15px 17px;
    border-radius: 19px;
    border: 1px solid rgba(168,95,104,.18);
    background: #fff8f5;
}
.ct-campaign strong { display: block; margin-bottom: 5px; color: var(--ct-rose); font-size: 11px; letter-spacing: .1em; text-transform: uppercase; }
.ct-campaign div { color: #654e50; font-size: 13px; line-height: 1.55; white-space: pre-line; }
.ct-card-foot { margin-top: 18px; color: #8a948d; font-size: 11px; text-align: center; }

.ct-form-shell {
    width: min(1040px, calc(100% - 32px));
    min-height: 100vh;
    min-height: 100svh;
    margin: 0 auto;
    padding: 28px 0;
    display: grid;
    place-items: center;
    position: relative;
    z-index: 1;
}
.ct-form-card { width: min(100%, 760px); padding: clamp(22px, 4vw, 38px); }
.ct-form-head { display: flex; gap: 16px; align-items: center; margin-bottom: 24px; }
.ct-form-head .ct-flower-mark { width: 54px; height: 54px; border-radius: 18px; font-size: 26px; flex: 0 0 auto; }
.ct-form-head h1 { font-size: clamp(25px, 4vw, 34px); }
.ct-form-head p { margin: 5px 0 0; color: var(--ct-muted); font-size: 13px; line-height: 1.5; }
.ct-form-grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 15px; }
.ct-field { min-width: 0; }
.ct-field.full { grid-column: 1 / -1; }
.ct-field label { display: block; margin: 0 0 7px; color: #3d4941; font-size: 12px; font-weight: 850; }
.ct-required { color: var(--ct-rose); }
.ct-input, .ct-field input, .ct-field textarea, .ct-field select {
    width: 100%;
    min-height: 52px;
    border: 1px solid #dce1da;
    border-radius: 15px;
    padding: 0 14px;
    outline: none;
    color: var(--ct-ink);
    background: #fff;
    font-size: 15px;
    transition: border-color .15s ease, box-shadow .15s ease;
}
.ct-field textarea { min-height: 96px; padding-top: 13px; resize: vertical; }
.ct-field input:focus, .ct-field textarea:focus, .ct-field select:focus, .ct-input:focus { border-color: var(--ct-leaf); box-shadow: 0 0 0 4px rgba(111,143,108,.13); }
.ct-validation { display: block; margin-top: 5px; color: var(--ct-danger); font-size: 11px; font-weight: 750; }
.ct-alert { margin-bottom: 17px; padding: 12px 14px; border: 1px solid #ecc7c7; border-radius: 15px; color: var(--ct-danger); background: #fff5f3; font-size: 13px; font-weight: 760; line-height: 1.5; }
.ct-form-actions { grid-column: 1 / -1; display: flex; gap: 10px; margin-top: 4px; }
.ct-form-actions .ct-btn { flex: 1; }
.ct-back-link { display: inline-flex; align-items: center; gap: 8px; margin-top: 17px; color: #657068; text-decoration: none; font-size: 12px; font-weight: 800; }
.ct-help-note { margin: -4px 0 18px; padding: 12px 14px; border-radius: 14px; color: #58645d; background: #f4f6f1; font-size: 12px; line-height: 1.55; }

.ct-login-card { max-width: 540px; }
.ct-login-company { margin-left: auto; color: var(--ct-muted); font-size: 12px; font-weight: 800; }
.ct-checkbox { display: inline-flex; align-items: center; gap: 8px; color: #4b574f; font-size: 12px; font-weight: 800; }
.ct-checkbox input { width: 18px; height: 18px; accent-color: var(--ct-forest); }

@media (max-width: 840px) {
    .ct-public-shell { grid-template-columns: 1fr; gap: 18px; align-content: center; padding: 24px 0; }
    .ct-brand-panel { padding: 10px 5px 0; text-align: center; }
    .ct-flower-mark { margin: 0 auto; }
    .ct-brand-title { margin-left: auto; margin-right: auto; }
    .ct-brand-copy { margin-left: auto; margin-right: auto; }
    .ct-brand-points { justify-content: center; }
    .ct-entry-card { width: min(100%, 600px); margin: 0 auto; }
}

@media (max-width: 620px) {
    .ct-public-shell, .ct-form-shell { width: min(100% - 20px, 100%); padding: 14px 0; }
    .ct-brand-title { font-size: clamp(42px, 15vw, 62px); margin-top: 16px; }
    .ct-brand-copy { font-size: 14px; line-height: 1.6; }
    .ct-brand-points { display: none; }
    .ct-entry-card, .ct-form-card { border-radius: 24px; padding: 19px; }
    .ct-form-grid { grid-template-columns: 1fr; }
    .ct-field.full, .ct-form-actions { grid-column: auto; }
    .ct-form-actions { flex-direction: column; }
    .ct-form-head { align-items: flex-start; }
    .ct-login-company { display: none; }
}

.ct-brand-logo { display:block; width:min(100%,620px); height:auto; max-height:210px; object-fit:contain; object-position:left center; margin:0 0 18px; filter:drop-shadow(0 14px 26px rgba(23,61,42,.12)); }
.ct-brand-title-compact { margin-top:16px; font-size:clamp(34px,5vw,62px); }
.ct-login-logo-wrap { display:flex; justify-content:center; margin:0 0 22px; padding-bottom:18px; border-bottom:1px solid var(--ct-line); }
.ct-login-logo { display:block; width:min(100%,440px); height:auto; max-height:145px; object-fit:contain; }
.ct-login-head { margin-bottom:20px; }
@media (max-width:840px) { .ct-brand-logo { margin-left:auto; margin-right:auto; object-position:center; } }
@media (max-width:620px) { .ct-brand-logo { max-height:145px; margin-bottom:10px; } .ct-brand-title-compact { font-size:clamp(30px,11vw,46px); } .ct-login-logo { max-height:110px; } .ct-login-logo-wrap { margin-bottom:16px; padding-bottom:14px; } }
