templates/application/whileresume/website/cv-public/choice.html.twig line 1

Open in your IDE?
  1. {% extends 'application/whileresume/website/cv-public/base.html.twig' %}
  2. {% block title %}{{ 'generate2.choice.page_title'|trans({}, 'whr-public') }} ยท WhileResume{% endblock %}
  3. {% block extra_css %}
  4.     .choice-hero { text-align: center; margin-bottom: 56px; }
  5.     .choice-hero .badge { margin-inline: auto; display: inline-flex; }
  6.     .choice-hero .stitle { max-width: 680px; margin: 0 auto 14px; }
  7.     .choice-hero .sdesc { max-width: 580px; margin-inline: auto; }
  8.     .choice-grid {
  9.     display: grid;
  10.     grid-template-columns: 1fr 1fr;
  11.     gap: 20px;
  12.     margin-bottom: 40px;
  13.     }
  14.     .choice-card {
  15.     position: relative;
  16.     display: flex;
  17.     flex-direction: column;
  18.     padding: 32px 28px 28px;
  19.     border-radius: var(--r-xl);
  20.     background: var(--white);
  21.     border: 2px solid var(--ink-10);
  22.     text-decoration: none;
  23.     color: inherit;
  24.     cursor: pointer;
  25.     transition: all 0.35s var(--ease);
  26.     overflow: hidden;
  27.     }
  28.     .choice-card:hover {
  29.     transform: translateY(-4px);
  30.     border-color: var(--violet);
  31.     box-shadow: 0 20px 48px rgba(139,111,192,0.18);
  32.     }
  33.     .choice-card.primary {
  34.     background: linear-gradient(135deg, var(--violet-ultra), var(--white));
  35.     border-color: var(--violet);
  36.     box-shadow: 0 12px 40px var(--violet-glow);
  37.     }
  38.     .choice-card.primary::before {
  39.     content: '';
  40.     position: absolute;
  41.     top: 0; left: 0; right: 0;
  42.     height: 4px;
  43.     background: linear-gradient(90deg, var(--violet), var(--violet-deep), var(--violet));
  44.     }
  45.     .choice-card.primary:hover {
  46.     transform: translateY(-6px);
  47.     box-shadow: 0 24px 60px rgba(139,111,192,0.28);
  48.     }
  49.     .choice-badge-recommended {
  50.     position: absolute;
  51.     top: 16px; right: 16px;
  52.     background: var(--violet-deep);
  53.     color: white;
  54.     font-size: 0.66rem;
  55.     font-weight: 700;
  56.     text-transform: uppercase;
  57.     letter-spacing: 0.08em;
  58.     padding: 5px 11px;
  59.     border-radius: var(--r-full);
  60.     }
  61.     .choice-ico {
  62.     width: 64px; height: 64px;
  63.     border-radius: 18px;
  64.     background: var(--violet-soft);
  65.     color: var(--violet-deep);
  66.     display: flex;
  67.     align-items: center;
  68.     justify-content: center;
  69.     margin-bottom: 24px;
  70.     transition: transform 0.3s var(--ease-spring);
  71.     }
  72.     .choice-card:hover .choice-ico { transform: scale(1.08) rotate(-4deg); }
  73.     .choice-card.primary .choice-ico {
  74.     background: linear-gradient(135deg, var(--violet), var(--violet-deep));
  75.     color: white;
  76.     }
  77.     .choice-card.secondary .choice-ico {
  78.     background: var(--ocean-soft);
  79.     color: var(--ocean);
  80.     }
  81.     .choice-title {
  82.     font-family: var(--font-display);
  83.     font-size: 1.5rem;
  84.     font-weight: 500;
  85.     letter-spacing: -0.02em;
  86.     margin-bottom: 10px;
  87.     }
  88.     .choice-title em { font-style: italic; color: var(--violet-dark); }
  89.     .choice-desc {
  90.     font-size: 0.94rem;
  91.     color: var(--ink-60);
  92.     line-height: 1.6;
  93.     margin-bottom: 20px;
  94.     min-height: 56px;
  95.     }
  96.     .choice-features {
  97.     list-style: none;
  98.     padding: 0;
  99.     margin: 0 0 24px;
  100.     display: flex;
  101.     flex-direction: column;
  102.     gap: 8px;
  103.     }
  104.     .choice-features li {
  105.     display: flex;
  106.     align-items: center;
  107.     gap: 10px;
  108.     font-size: 0.85rem;
  109.     color: var(--ink-80);
  110.     }
  111.     .choice-features li svg {
  112.     color: var(--emerald);
  113.     flex-shrink: 0;
  114.     }
  115.     .choice-cta {
  116.     display: inline-flex;
  117.     align-items: center;
  118.     gap: 8px;
  119.     padding: 13px 22px;
  120.     border-radius: var(--r-full);
  121.     font-size: 0.9rem;
  122.     font-weight: 600;
  123.     margin-top: auto;
  124.     transition: all 0.25s var(--ease);
  125.     }
  126.     .choice-card.primary .choice-cta {
  127.     background: var(--violet-deep);
  128.     color: white;
  129.     }
  130.     .choice-card.primary:hover .choice-cta { background: var(--violet-dark); }
  131.     .choice-card.secondary .choice-cta {
  132.     background: var(--white);
  133.     color: var(--ink-80);
  134.     border: 1.5px solid var(--ink-10);
  135.     }
  136.     .choice-card.secondary:hover .choice-cta { border-color: var(--ink-20); }
  137.     .choice-help {
  138.     text-align: center;
  139.     color: var(--ink-40);
  140.     font-size: 0.85rem;
  141.     }
  142.     .choice-help a { color: var(--violet-dark); text-decoration: underline; text-underline-offset: 3px; }
  143.     @media (max-width: 760px) {
  144.     .choice-grid { grid-template-columns: 1fr; }
  145.     }
  146. {% endblock %}
  147. {% block body %}
  148.     <div class="choice-hero fade-up">
  149.         <div class="badge"><span class="badge-num">1</span> {{ 'generate2.choice.badge'|trans({}, 'whr-public') }}</div>
  150.         <h1 class="stitle">{{ 'generate2.choice.title_part1'|trans({}, 'whr-public') }}<br>{{ 'generate2.choice.title_part2'|trans({}, 'whr-public') }} <em>{{ 'generate2.common.cv'|trans({}, 'whr-public') }}</em> ?</h1>
  151.         <p class="sdesc">{{ 'generate2.choice.subtitle'|trans({}, 'whr-public') }}</p>
  152.     </div>
  153.     <a href="{% if app.request.locale == "en" %}{{ path('cv_public_theme', { slug: public_slug }) }}?mode=scratch{% else %}{{ path('locale_cv_public_theme', { slug: public_slug,'_locale':app.request.locale }) }}?mode=scratch{% endif %}" class="choice-card primary fade-up d1">
  154.         <span class="choice-badge-recommended">{{ 'generate2.choice.recommended'|trans({}, 'whr-public') }}</span>
  155.         <div class="choice-ico">
  156.             <svg width="30" height="30" fill="none" stroke="currentColor" stroke-width="1.8" viewBox="0 0 24 24">
  157.                 <path d="M12 20h9"/>
  158.                 <path d="M16.5 3.5a2.12 2.12 0 013 3L7 19l-4 1 1-4L16.5 3.5z"/>
  159.             </svg>
  160.         </div>
  161.         <h2 class="choice-title">{{ 'generate2.choice.scratch.title_part1'|trans({}, 'whr-public') }} <em>{{ 'generate2.choice.scratch.title_part2'|trans({}, 'whr-public') }}</em></h2>
  162.         <p class="choice-desc">{{ 'generate2.choice.scratch.desc'|trans({}, 'whr-public') }}</p>
  163.         <ul class="choice-features">
  164.             <li>
  165.                 <svg width="16" height="16" fill="none" stroke="currentColor" stroke-width="2.5" viewBox="0 0 24 24"><path d="M20 6L9 17l-5-5"/></svg>
  166.                 {{ 'generate2.choice.scratch.feat_1'|trans({}, 'whr-public') }}
  167.             </li>
  168.             <li>
  169.                 <svg width="16" height="16" fill="none" stroke="currentColor" stroke-width="2.5" viewBox="0 0 24 24"><path d="M20 6L9 17l-5-5"/></svg>
  170.                 {{ 'generate2.choice.scratch.feat_2'|trans({}, 'whr-public') }}
  171.             </li>
  172.             <li>
  173.                 <svg width="16" height="16" fill="none" stroke="currentColor" stroke-width="2.5" viewBox="0 0 24 24"><path d="M20 6L9 17l-5-5"/></svg>
  174.                 {{ 'generate2.choice.scratch.feat_3'|trans({}, 'whr-public') }}
  175.             </li>
  176.         </ul>
  177.         <span class="choice-cta">
  178.                 {{ 'generate2.choice.scratch.cta'|trans({}, 'whr-public') }}
  179.                 <svg width="14" height="14" fill="none" stroke="currentColor" stroke-width="2.5" viewBox="0 0 24 24">
  180.                     <path d="M5 12h14M12 5l7 7-7 7"/>
  181.                 </svg>
  182.             </span>
  183.     </a>
  184. {% endblock %}
  185. {% block body_js %}
  186.     <script>
  187.         window.cvLoader.hide();
  188.     </script>
  189. {% endblock %}