Fix gate card visibility, add 5 missing tool SVGs, update pricing to EUR 4-tier

Gate cards: remove .lt-gate__card from paper-card override so dark navy
backgrounds restore; drop blue title colour override for gate cards.

SVGs: add translate (bilingual doc), citations (citation graph), korrespond
(formal letter), summarize (doc→extracted bullets), legal-analysis (issue
sections + dbn-legal-agent-v3 badge).

Pricing: 3 NOK tiers → 4 EUR tiers (Free €0 / Light €9 / Pro €29 / Pro+ €79);
Pro+ is new; "Plus" references updated to "Light" throughout.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-24 12:09:37 +02:00
parent 1bfafa9908
commit 96fbe4398a
3 changed files with 120 additions and 38 deletions
+16 -4
View File
@@ -285,7 +285,6 @@ select:focus-visible {
.dash-main, .dash-main,
.dashboard-tool-card, .dashboard-tool-card,
.lt-card, .lt-card,
.lt-gate__card,
.lt-trust__item, .lt-trust__item,
.kdoc-card, .kdoc-card,
.kdoc-step-card, .kdoc-step-card,
@@ -298,6 +297,13 @@ select:focus-visible {
box-shadow: var(--dbn-shadow-paper) !important; box-shadow: var(--dbn-shadow-paper) !important;
} }
/* Gate cards keep their dark navy backgrounds from tools.css */
.lt-gate__card {
border: none !important;
border-radius: 0 !important;
box-shadow: none !important;
}
.tool-panel { .tool-panel {
position: relative; position: relative;
overflow: hidden; overflow: hidden;
@@ -672,22 +678,28 @@ body[data-active-tool='citations'] .results {
} }
.lt-card:hover, .lt-card:hover,
.dashboard-tool-card:hover, .dashboard-tool-card:hover {
.lt-gate__card:hover {
border-color: rgba(186, 12, 47, 0.26) !important; border-color: rgba(186, 12, 47, 0.26) !important;
box-shadow: var(--dbn-shadow-paper-lg) !important; box-shadow: var(--dbn-shadow-paper-lg) !important;
transform: translateY(-5px); transform: translateY(-5px);
} }
.lt-gate__card:hover {
transform: translateY(-3px);
}
.lt-card__title, .lt-card__title,
.dashboard-tool-card h2, .dashboard-tool-card h2,
.lt-gate__card-title,
.kdoc-section h2, .kdoc-section h2,
.pricing-card h2 { .pricing-card h2 {
color: var(--dbn-blue); color: var(--dbn-blue);
font-family: var(--dbn-font-display); font-family: var(--dbn-font-display);
} }
.lt-gate__card-title {
font-family: var(--dbn-font-display);
}
.dashboard-tool-card { .dashboard-tool-card {
position: relative; position: relative;
} }
+10
View File
@@ -19,4 +19,14 @@ $toolSvgs = [
'discrepancy' => '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 178" preserveAspectRatio="xMidYMid slice" aria-hidden="true"><rect width="480" height="178" fill="#00205b"/><rect x="0" y="0" width="480" height="6" fill="rgba(186,12,47,0.18)"/><rect x="0" y="172" width="480" height="6" fill="rgba(186,12,47,0.18)"/><rect x="60" y="24" width="144" height="132" rx="4" fill="rgba(0,0,0,0.20)"/><rect x="57" y="21" width="144" height="132" rx="4" fill="#fff" opacity="0.97"/><rect x="57" y="21" width="144" height="26" rx="4" fill="#00205b"/><rect x="57" y="38" width="144" height="9" fill="#00205b"/><line x1="72" y1="32" x2="130" y2="32" stroke="rgba(255,255,255,0.58)" stroke-width="1.5"/><line x1="72" y1="60" x2="186" y2="60" stroke="rgba(0,0,0,0.09)" stroke-width="1.5"/><line x1="72" y1="72" x2="172" y2="72" stroke="rgba(0,0,0,0.09)" stroke-width="1.5"/><rect x="57" y="80" width="144" height="13" fill="rgba(244,197,66,0.20)"/><line x1="72" y1="87" x2="180" y2="87" stroke="rgba(244,197,66,0.68)" stroke-width="1.5"/><line x1="72" y1="103" x2="178" y2="103" stroke="rgba(0,0,0,0.09)" stroke-width="1.5"/><line x1="72" y1="115" x2="164" y2="115" stroke="rgba(0,0,0,0.09)" stroke-width="1.5"/><line x1="72" y1="127" x2="174" y2="127" stroke="rgba(186,12,47,0.28)" stroke-width="1.5" stroke-dasharray="22,4"/><line x1="72" y1="139" x2="148" y2="139" stroke="rgba(0,0,0,0.07)" stroke-width="1.5"/><text x="129" y="17" text-anchor="middle" font-family="monospace" font-size="8" fill="rgba(244,197,66,0.68)">DOC A</text><line x1="215" y1="87" x2="265" y2="87" stroke="rgba(186,12,47,0.70)" stroke-width="2" stroke-dasharray="5,3"/><polygon points="260,83 268,87 260,91" fill="rgba(186,12,47,0.70)"/><text x="240" y="82" text-anchor="middle" font-family="monospace" font-size="9" fill="rgba(186,12,47,0.82)">≠</text><line x1="215" y1="127" x2="265" y2="93" stroke="rgba(186,12,47,0.28)" stroke-width="1" stroke-dasharray="3,3"/><rect x="276" y="24" width="144" height="132" rx="4" fill="rgba(0,0,0,0.20)"/><rect x="273" y="21" width="144" height="132" rx="4" fill="#fff" opacity="0.97"/><rect x="273" y="21" width="144" height="26" rx="4" fill="#00205b"/><rect x="273" y="38" width="144" height="9" fill="#00205b"/><line x1="288" y1="32" x2="346" y2="32" stroke="rgba(255,255,255,0.58)" stroke-width="1.5"/><line x1="288" y1="60" x2="402" y2="60" stroke="rgba(0,0,0,0.09)" stroke-width="1.5"/><line x1="288" y1="72" x2="388" y2="72" stroke="rgba(0,0,0,0.09)" stroke-width="1.5"/><rect x="273" y="80" width="144" height="13" fill="rgba(186,12,47,0.13)"/><line x1="288" y1="87" x2="396" y2="87" stroke="rgba(186,12,47,0.55)" stroke-width="1.5"/><line x1="288" y1="103" x2="394" y2="103" stroke="rgba(0,0,0,0.09)" stroke-width="1.5"/><line x1="288" y1="115" x2="380" y2="115" stroke="rgba(0,0,0,0.09)" stroke-width="1.5"/><rect x="273" y="123" width="144" height="13" fill="rgba(244,197,66,0.10)"/><line x1="288" y1="130" x2="390" y2="130" stroke="rgba(244,197,66,0.42)" stroke-width="1.5"/><line x1="288" y1="143" x2="368" y2="143" stroke="rgba(0,0,0,0.07)" stroke-width="1.5"/><text x="345" y="17" text-anchor="middle" font-family="monospace" font-size="8" fill="rgba(244,197,66,0.68)">DOC B</text></svg>', 'discrepancy' => '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 178" preserveAspectRatio="xMidYMid slice" aria-hidden="true"><rect width="480" height="178" fill="#00205b"/><rect x="0" y="0" width="480" height="6" fill="rgba(186,12,47,0.18)"/><rect x="0" y="172" width="480" height="6" fill="rgba(186,12,47,0.18)"/><rect x="60" y="24" width="144" height="132" rx="4" fill="rgba(0,0,0,0.20)"/><rect x="57" y="21" width="144" height="132" rx="4" fill="#fff" opacity="0.97"/><rect x="57" y="21" width="144" height="26" rx="4" fill="#00205b"/><rect x="57" y="38" width="144" height="9" fill="#00205b"/><line x1="72" y1="32" x2="130" y2="32" stroke="rgba(255,255,255,0.58)" stroke-width="1.5"/><line x1="72" y1="60" x2="186" y2="60" stroke="rgba(0,0,0,0.09)" stroke-width="1.5"/><line x1="72" y1="72" x2="172" y2="72" stroke="rgba(0,0,0,0.09)" stroke-width="1.5"/><rect x="57" y="80" width="144" height="13" fill="rgba(244,197,66,0.20)"/><line x1="72" y1="87" x2="180" y2="87" stroke="rgba(244,197,66,0.68)" stroke-width="1.5"/><line x1="72" y1="103" x2="178" y2="103" stroke="rgba(0,0,0,0.09)" stroke-width="1.5"/><line x1="72" y1="115" x2="164" y2="115" stroke="rgba(0,0,0,0.09)" stroke-width="1.5"/><line x1="72" y1="127" x2="174" y2="127" stroke="rgba(186,12,47,0.28)" stroke-width="1.5" stroke-dasharray="22,4"/><line x1="72" y1="139" x2="148" y2="139" stroke="rgba(0,0,0,0.07)" stroke-width="1.5"/><text x="129" y="17" text-anchor="middle" font-family="monospace" font-size="8" fill="rgba(244,197,66,0.68)">DOC A</text><line x1="215" y1="87" x2="265" y2="87" stroke="rgba(186,12,47,0.70)" stroke-width="2" stroke-dasharray="5,3"/><polygon points="260,83 268,87 260,91" fill="rgba(186,12,47,0.70)"/><text x="240" y="82" text-anchor="middle" font-family="monospace" font-size="9" fill="rgba(186,12,47,0.82)">≠</text><line x1="215" y1="127" x2="265" y2="93" stroke="rgba(186,12,47,0.28)" stroke-width="1" stroke-dasharray="3,3"/><rect x="276" y="24" width="144" height="132" rx="4" fill="rgba(0,0,0,0.20)"/><rect x="273" y="21" width="144" height="132" rx="4" fill="#fff" opacity="0.97"/><rect x="273" y="21" width="144" height="26" rx="4" fill="#00205b"/><rect x="273" y="38" width="144" height="9" fill="#00205b"/><line x1="288" y1="32" x2="346" y2="32" stroke="rgba(255,255,255,0.58)" stroke-width="1.5"/><line x1="288" y1="60" x2="402" y2="60" stroke="rgba(0,0,0,0.09)" stroke-width="1.5"/><line x1="288" y1="72" x2="388" y2="72" stroke="rgba(0,0,0,0.09)" stroke-width="1.5"/><rect x="273" y="80" width="144" height="13" fill="rgba(186,12,47,0.13)"/><line x1="288" y1="87" x2="396" y2="87" stroke="rgba(186,12,47,0.55)" stroke-width="1.5"/><line x1="288" y1="103" x2="394" y2="103" stroke="rgba(0,0,0,0.09)" stroke-width="1.5"/><line x1="288" y1="115" x2="380" y2="115" stroke="rgba(0,0,0,0.09)" stroke-width="1.5"/><rect x="273" y="123" width="144" height="13" fill="rgba(244,197,66,0.10)"/><line x1="288" y1="130" x2="390" y2="130" stroke="rgba(244,197,66,0.42)" stroke-width="1.5"/><line x1="288" y1="143" x2="368" y2="143" stroke="rgba(0,0,0,0.07)" stroke-width="1.5"/><text x="345" y="17" text-anchor="middle" font-family="monospace" font-size="8" fill="rgba(244,197,66,0.68)">DOC B</text></svg>',
'corpus' => '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 178" preserveAspectRatio="xMidYMid slice" aria-hidden="true"><rect width="480" height="178" fill="#00205b"/><g stroke="rgba(244,197,66,0.28)" stroke-width="1.5" fill="none"><line x1="286" y1="54" x2="376" y2="36"/><line x1="286" y1="89" x2="390" y2="89"/><line x1="286" y1="124" x2="376" y2="143"/></g><circle cx="382" cy="36" r="16" fill="rgba(244,197,66,0.15)" stroke="rgba(244,197,66,0.38)" stroke-width="1.5"/><circle cx="396" cy="89" r="13" fill="rgba(255,255,255,0.06)" stroke="rgba(255,255,255,0.22)" stroke-width="1.5"/><circle cx="382" cy="143" r="16" fill="rgba(186,12,47,0.14)" stroke="rgba(186,12,47,0.34)" stroke-width="1.5"/><text x="382" y="40" text-anchor="middle" font-family="monospace" font-size="8" fill="rgba(244,197,66,0.72)">ECHR</text><text x="396" y="93" text-anchor="middle" font-family="monospace" font-size="7" fill="rgba(255,255,255,0.52)">LOV</text><text x="382" y="147" text-anchor="middle" font-family="monospace" font-size="7" fill="rgba(255,200,200,0.52)">BVJ</text><ellipse cx="196" cy="40" rx="78" ry="13" fill="rgba(0,18,56,0.94)" stroke="rgba(244,197,66,0.68)" stroke-width="1.5"/><rect x="118" y="40" width="156" height="26" fill="rgba(0,14,46,0.96)"/><ellipse cx="196" cy="66" rx="78" ry="13" fill="rgba(0,12,40,0.96)" stroke="rgba(244,197,66,0.48)" stroke-width="1.5"/><text x="196" y="58" text-anchor="middle" font-family="monospace" font-size="9" fill="rgba(244,197,66,0.62)">220K PASSAGES</text><ellipse cx="196" cy="78" rx="78" ry="13" fill="rgba(0,28,76,0.94)" stroke="rgba(255,255,255,0.36)" stroke-width="1.5"/><rect x="118" y="78" width="156" height="26" fill="rgba(0,12,46,0.96)"/><ellipse cx="196" cy="104" rx="78" ry="13" fill="rgba(0,10,38,0.96)" stroke="rgba(255,255,255,0.26)" stroke-width="1.5"/><text x="196" y="96" text-anchor="middle" font-family="monospace" font-size="9" fill="rgba(255,255,255,0.46)">QDRANT + AZURE</text><ellipse cx="196" cy="116" rx="78" ry="13" fill="rgba(186,12,47,0.18)" stroke="rgba(186,12,47,0.48)" stroke-width="1.5"/><rect x="118" y="116" width="156" height="20" fill="rgba(100,4,18,0.14)"/><ellipse cx="196" cy="136" rx="78" ry="13" fill="rgba(80,3,14,0.20)" stroke="rgba(186,12,47,0.32)" stroke-width="1.5"/><text x="196" y="130" text-anchor="middle" font-family="monospace" font-size="9" fill="rgba(255,170,170,0.48)">NOMIC EMBED</text></svg>', 'corpus' => '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 178" preserveAspectRatio="xMidYMid slice" aria-hidden="true"><rect width="480" height="178" fill="#00205b"/><g stroke="rgba(244,197,66,0.28)" stroke-width="1.5" fill="none"><line x1="286" y1="54" x2="376" y2="36"/><line x1="286" y1="89" x2="390" y2="89"/><line x1="286" y1="124" x2="376" y2="143"/></g><circle cx="382" cy="36" r="16" fill="rgba(244,197,66,0.15)" stroke="rgba(244,197,66,0.38)" stroke-width="1.5"/><circle cx="396" cy="89" r="13" fill="rgba(255,255,255,0.06)" stroke="rgba(255,255,255,0.22)" stroke-width="1.5"/><circle cx="382" cy="143" r="16" fill="rgba(186,12,47,0.14)" stroke="rgba(186,12,47,0.34)" stroke-width="1.5"/><text x="382" y="40" text-anchor="middle" font-family="monospace" font-size="8" fill="rgba(244,197,66,0.72)">ECHR</text><text x="396" y="93" text-anchor="middle" font-family="monospace" font-size="7" fill="rgba(255,255,255,0.52)">LOV</text><text x="382" y="147" text-anchor="middle" font-family="monospace" font-size="7" fill="rgba(255,200,200,0.52)">BVJ</text><ellipse cx="196" cy="40" rx="78" ry="13" fill="rgba(0,18,56,0.94)" stroke="rgba(244,197,66,0.68)" stroke-width="1.5"/><rect x="118" y="40" width="156" height="26" fill="rgba(0,14,46,0.96)"/><ellipse cx="196" cy="66" rx="78" ry="13" fill="rgba(0,12,40,0.96)" stroke="rgba(244,197,66,0.48)" stroke-width="1.5"/><text x="196" y="58" text-anchor="middle" font-family="monospace" font-size="9" fill="rgba(244,197,66,0.62)">220K PASSAGES</text><ellipse cx="196" cy="78" rx="78" ry="13" fill="rgba(0,28,76,0.94)" stroke="rgba(255,255,255,0.36)" stroke-width="1.5"/><rect x="118" y="78" width="156" height="26" fill="rgba(0,12,46,0.96)"/><ellipse cx="196" cy="104" rx="78" ry="13" fill="rgba(0,10,38,0.96)" stroke="rgba(255,255,255,0.26)" stroke-width="1.5"/><text x="196" y="96" text-anchor="middle" font-family="monospace" font-size="9" fill="rgba(255,255,255,0.46)">QDRANT + AZURE</text><ellipse cx="196" cy="116" rx="78" ry="13" fill="rgba(186,12,47,0.18)" stroke="rgba(186,12,47,0.48)" stroke-width="1.5"/><rect x="118" y="116" width="156" height="20" fill="rgba(100,4,18,0.14)"/><ellipse cx="196" cy="136" rx="78" ry="13" fill="rgba(80,3,14,0.20)" stroke="rgba(186,12,47,0.32)" stroke-width="1.5"/><text x="196" y="130" text-anchor="middle" font-family="monospace" font-size="9" fill="rgba(255,170,170,0.48)">NOMIC EMBED</text></svg>',
'summarize' => '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 178" preserveAspectRatio="xMidYMid slice" aria-hidden="true"><rect width="480" height="178" fill="#00205b"/><rect x="32" y="16" width="150" height="148" rx="3" fill="rgba(0,0,0,0.20)"/><rect x="29" y="13" width="150" height="148" rx="3" fill="#fff" opacity="0.96"/><rect x="29" y="13" width="150" height="22" rx="3" fill="#00205b"/><rect x="29" y="26" width="150" height="9" fill="#00205b"/><line x1="42" y1="20" x2="110" y2="20" stroke="rgba(255,255,255,0.60)" stroke-width="1.5"/><line x1="42" y1="48" x2="166" y2="48" stroke="rgba(0,0,0,0.09)" stroke-width="1"/><line x1="42" y1="57" x2="160" y2="57" stroke="rgba(0,0,0,0.09)" stroke-width="1"/><line x1="42" y1="66" x2="164" y2="66" stroke="rgba(0,0,0,0.09)" stroke-width="1"/><line x1="42" y1="75" x2="158" y2="75" stroke="rgba(0,0,0,0.09)" stroke-width="1"/><line x1="42" y1="84" x2="162" y2="84" stroke="rgba(0,0,0,0.09)" stroke-width="1"/><line x1="42" y1="93" x2="156" y2="93" stroke="rgba(0,0,0,0.09)" stroke-width="1"/><line x1="42" y1="102" x2="165" y2="102" stroke="rgba(0,0,0,0.09)" stroke-width="1"/><line x1="42" y1="111" x2="160" y2="111" stroke="rgba(0,0,0,0.09)" stroke-width="1"/><line x1="42" y1="120" x2="162" y2="120" stroke="rgba(0,0,0,0.09)" stroke-width="1"/><line x1="42" y1="129" x2="155" y2="129" stroke="rgba(0,0,0,0.09)" stroke-width="1"/><line x1="42" y1="138" x2="163" y2="138" stroke="rgba(0,0,0,0.09)" stroke-width="1"/><line x1="42" y1="147" x2="157" y2="147" stroke="rgba(0,0,0,0.09)" stroke-width="1"/><circle cx="213" cy="89" r="10" fill="rgba(244,197,66,0.14)" stroke="rgba(244,197,66,0.42)" stroke-width="1.5"/><text x="213" y="93" text-anchor="middle" font-family="monospace" font-size="8" fill="rgba(244,197,66,0.82)">AI</text><path d="M226,89 L239,89" stroke="rgba(244,197,66,0.78)" stroke-width="2.5" stroke-linecap="round"/><polygon points="236,84 244,89 236,94" fill="rgba(244,197,66,0.78)"/><rect x="252" y="16" width="200" height="148" rx="3" fill="rgba(0,0,0,0.20)"/><rect x="249" y="13" width="200" height="148" rx="3" fill="#fff" opacity="0.97"/><rect x="249" y="13" width="200" height="22" rx="3" fill="#001540"/><rect x="249" y="26" width="200" height="9" fill="#001540"/><line x1="262" y1="20" x2="356" y2="20" stroke="rgba(244,197,66,0.60)" stroke-width="1.5"/><rect x="262" y="44" width="174" height="14" rx="2" fill="rgba(244,197,66,0.14)"/><circle cx="268" cy="51" r="3" fill="rgba(244,197,66,0.68)"/><line x1="276" y1="51" x2="424" y2="51" stroke="rgba(0,0,0,0.16)" stroke-width="1.5"/><rect x="262" y="66" width="174" height="14" rx="2" fill="rgba(244,197,66,0.10)"/><circle cx="268" cy="73" r="3" fill="rgba(244,197,66,0.55)"/><line x1="276" y1="73" x2="410" y2="73" stroke="rgba(0,0,0,0.14)" stroke-width="1.5"/><rect x="262" y="88" width="174" height="14" rx="2" fill="rgba(186,12,47,0.10)"/><circle cx="268" cy="95" r="3" fill="rgba(186,12,47,0.60)"/><line x1="276" y1="95" x2="418" y2="95" stroke="rgba(186,12,47,0.30)" stroke-width="1.5"/><rect x="262" y="110" width="174" height="14" rx="2" fill="rgba(244,197,66,0.08)"/><circle cx="268" cy="117" r="3" fill="rgba(244,197,66,0.48)"/><line x1="276" y1="117" x2="406" y2="117" stroke="rgba(0,0,0,0.12)" stroke-width="1.5"/><rect x="262" y="139" width="100" height="13" rx="6" fill="rgba(0,32,91,0.10)" stroke="rgba(0,32,91,0.22)" stroke-width="1"/><text x="312" y="149" text-anchor="middle" font-family="monospace" font-size="7" fill="rgba(0,32,91,0.64)">3 sources</text></svg>',
'legal-analysis' => '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 178" preserveAspectRatio="xMidYMid slice" aria-hidden="true"><defs><radialGradient id="la_g" cx="50%" cy="50%" r="45%"><stop offset="0%" stop-color="rgba(244,197,66,0.09)"/><stop offset="100%" stop-color="transparent"/></radialGradient></defs><rect width="480" height="178" fill="#00205b"/><rect width="480" height="178" fill="url(#la_g)"/><rect x="58" y="14" width="370" height="152" rx="4" fill="rgba(0,0,0,0.20)"/><rect x="55" y="11" width="370" height="152" rx="4" fill="#fff" opacity="0.97"/><rect x="55" y="11" width="370" height="28" rx="4" fill="#00205b"/><rect x="55" y="30" width="370" height="9" fill="#00205b"/><line x1="72" y1="23" x2="230" y2="23" stroke="rgba(255,255,255,0.68)" stroke-width="2"/><line x1="72" y1="30" x2="178" y2="30" stroke="rgba(244,197,66,0.48)" stroke-width="1.5"/><rect x="70" y="50" width="80" height="12" rx="2" fill="rgba(0,32,91,0.12)"/><text x="78" y="60" font-family="monospace" font-size="8" fill="rgba(0,32,91,0.72)">ISSUE 1</text><line x1="70" y1="70" x2="400" y2="70" stroke="rgba(0,0,0,0.09)" stroke-width="1.5"/><line x1="70" y1="80" x2="386" y2="80" stroke="rgba(0,0,0,0.09)" stroke-width="1.5"/><rect x="306" y="63" width="88" height="13" rx="6" fill="rgba(186,12,47,0.10)" stroke="rgba(186,12,47,0.30)" stroke-width="1"/><text x="350" y="73" text-anchor="middle" font-family="monospace" font-size="6" fill="rgba(186,12,47,0.72)">BVL §4-12</text><rect x="70" y="97" width="80" height="12" rx="2" fill="rgba(0,32,91,0.09)"/><text x="78" y="107" font-family="monospace" font-size="8" fill="rgba(0,32,91,0.66)">ISSUE 2</text><line x1="70" y1="117" x2="400" y2="117" stroke="rgba(0,0,0,0.09)" stroke-width="1.5"/><line x1="70" y1="127" x2="376" y2="127" stroke="rgba(0,0,0,0.09)" stroke-width="1.5"/><rect x="306" y="110" width="88" height="13" rx="6" fill="rgba(0,32,91,0.10)" stroke="rgba(0,32,91,0.24)" stroke-width="1"/><text x="350" y="120" text-anchor="middle" font-family="monospace" font-size="6" fill="rgba(0,32,91,0.68)">EMK Art 8</text><rect x="70" y="144" width="114" height="13" rx="6" fill="rgba(244,197,66,0.12)" stroke="rgba(244,197,66,0.36)" stroke-width="1"/><text x="127" y="154" text-anchor="middle" font-family="monospace" font-size="7" fill="rgba(180,130,30,0.90)">dbn-legal-agent-v3</text><rect x="400" y="50" width="12" height="106" rx="4" fill="rgba(244,197,66,0.18)" stroke="rgba(244,197,66,0.38)" stroke-width="1"/><rect x="400" y="50" width="12" height="52" rx="4" fill="rgba(244,197,66,0.52)"/></svg>',
'korrespond' => '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 178" preserveAspectRatio="xMidYMid slice" aria-hidden="true"><rect width="480" height="178" fill="#00205b"/><line x1="0" y1="44" x2="480" y2="44" stroke="rgba(244,197,66,0.04)" stroke-width="1"/><line x1="0" y1="89" x2="480" y2="89" stroke="rgba(244,197,66,0.04)" stroke-width="1"/><line x1="0" y1="133" x2="480" y2="133" stroke="rgba(244,197,66,0.04)" stroke-width="1"/><rect x="110" y="14" width="264" height="152" rx="3" fill="rgba(0,0,0,0.20)"/><rect x="107" y="11" width="264" height="152" rx="3" fill="#fff" opacity="0.97"/><rect x="107" y="11" width="264" height="30" rx="3" fill="#00205b"/><rect x="107" y="32" width="264" height="9" fill="#00205b"/><line x1="122" y1="24" x2="218" y2="24" stroke="rgba(255,255,255,0.68)" stroke-width="2"/><line x1="122" y1="30" x2="175" y2="30" stroke="rgba(244,197,66,0.48)" stroke-width="1.5"/><line x1="292" y1="27" x2="356" y2="27" stroke="rgba(255,255,255,0.38)" stroke-width="1"/><line x1="122" y1="52" x2="238" y2="52" stroke="rgba(0,0,0,0.12)" stroke-width="1.5"/><line x1="122" y1="66" x2="356" y2="66" stroke="rgba(0,0,0,0.09)" stroke-width="1.5"/><line x1="122" y1="76" x2="344" y2="76" stroke="rgba(0,0,0,0.09)" stroke-width="1.5"/><line x1="122" y1="86" x2="350" y2="86" stroke="rgba(0,0,0,0.09)" stroke-width="1.5"/><rect x="122" y="94" width="200" height="10" rx="2" fill="rgba(0,32,91,0.09)"/><line x1="122" y1="99" x2="322" y2="99" stroke="rgba(0,32,91,0.38)" stroke-width="1.5"/><line x1="122" y1="112" x2="340" y2="112" stroke="rgba(0,0,0,0.09)" stroke-width="1.5"/><line x1="122" y1="122" x2="350" y2="122" stroke="rgba(0,0,0,0.09)" stroke-width="1.5"/><line x1="122" y1="132" x2="326" y2="132" stroke="rgba(0,0,0,0.09)" stroke-width="1.5"/><line x1="122" y1="149" x2="210" y2="149" stroke="rgba(0,0,0,0.16)" stroke-width="1"/><rect x="288" y="140" width="68" height="16" rx="8" fill="rgba(186,12,47,0.15)" stroke="rgba(186,12,47,0.36)" stroke-width="1"/><text x="322" y="151" text-anchor="middle" font-family="monospace" font-size="7" fill="rgba(186,12,47,0.80)">BVL §4-1</text></svg>',
'citations' => '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 178" preserveAspectRatio="xMidYMid slice" aria-hidden="true"><rect width="480" height="178" fill="#00205b"/><circle cx="240" cy="89" r="28" fill="rgba(244,197,66,0.20)" stroke="rgba(244,197,66,0.75)" stroke-width="2.5"/><text x="240" y="86" text-anchor="middle" font-family="monospace" font-size="8" font-weight="700" fill="rgba(244,197,66,0.92)">Bvl §</text><text x="240" y="97" text-anchor="middle" font-family="monospace" font-size="8" fill="rgba(244,197,66,0.72)">4-12</text><line x1="220" y1="68" x2="150" y2="42" stroke="rgba(244,197,66,0.28)" stroke-width="1.5"/><circle cx="136" cy="38" r="16" fill="rgba(255,255,255,0.08)" stroke="rgba(255,255,255,0.36)" stroke-width="1.5"/><text x="136" y="42" text-anchor="middle" font-family="monospace" font-size="7" fill="rgba(255,255,255,0.72)">EMK</text><line x1="260" y1="68" x2="328" y2="42" stroke="rgba(244,197,66,0.28)" stroke-width="1.5"/><circle cx="344" cy="38" r="16" fill="rgba(186,12,47,0.16)" stroke="rgba(186,12,47,0.44)" stroke-width="1.5"/><text x="344" y="42" text-anchor="middle" font-family="monospace" font-size="6" fill="rgba(255,160,160,0.82)">HR-23</text><line x1="220" y1="110" x2="150" y2="138" stroke="rgba(244,197,66,0.22)" stroke-width="1.5"/><circle cx="136" cy="143" r="14" fill="rgba(255,255,255,0.06)" stroke="rgba(255,255,255,0.26)" stroke-width="1.5"/><text x="136" y="147" text-anchor="middle" font-family="monospace" font-size="6" fill="rgba(255,255,255,0.58)">Rt 2020</text><line x1="260" y1="110" x2="328" y2="138" stroke="rgba(244,197,66,0.22)" stroke-width="1.5"/><circle cx="342" cy="143" r="14" fill="rgba(244,197,66,0.12)" stroke="rgba(244,197,66,0.32)" stroke-width="1.5"/><text x="342" y="147" text-anchor="middle" font-family="monospace" font-size="6" fill="rgba(244,197,66,0.72)">BVJ</text><line x1="268" y1="89" x2="398" y2="89" stroke="rgba(255,255,255,0.18)" stroke-width="1.5"/><circle cx="412" cy="89" r="11" fill="rgba(255,255,255,0.06)" stroke="rgba(255,255,255,0.22)" stroke-width="1.5"/><text x="412" y="93" text-anchor="middle" font-family="monospace" font-size="6" fill="rgba(255,255,255,0.48)">§4-6</text><line x1="212" y1="89" x2="88" y2="89" stroke="rgba(255,255,255,0.18)" stroke-width="1.5"/><circle cx="74" cy="89" r="11" fill="rgba(255,255,255,0.06)" stroke="rgba(255,255,255,0.22)" stroke-width="1.5"/><text x="74" y="93" text-anchor="middle" font-family="monospace" font-size="6" fill="rgba(255,255,255,0.48)">§3-1</text><polygon points="148,40 158,36 157,43" fill="rgba(244,197,66,0.36)"/><polygon points="330,40 340,36 340,43" fill="rgba(186,12,47,0.44)"/><polygon points="148,143 157,139 158,147" fill="rgba(255,255,255,0.26)"/><polygon points="330,142 340,139 340,147" fill="rgba(244,197,66,0.32)"/></svg>',
'translate' => '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 178" preserveAspectRatio="xMidYMid slice" aria-hidden="true"><rect width="480" height="178" fill="#00205b"/><rect x="36" y="18" width="170" height="142" rx="4" fill="rgba(0,0,0,0.2)"/><rect x="33" y="15" width="170" height="142" rx="4" fill="#fff" opacity="0.96"/><rect x="33" y="15" width="170" height="24" rx="4" fill="#00205b"/><rect x="33" y="30" width="170" height="9" fill="#00205b"/><text x="58" y="27" font-family="monospace" font-size="8" font-weight="700" fill="rgba(244,197,66,0.88)">NORSK</text><line x1="48" y1="54" x2="190" y2="54" stroke="rgba(0,0,0,0.10)" stroke-width="1.5"/><line x1="48" y1="64" x2="174" y2="64" stroke="rgba(0,0,0,0.10)" stroke-width="1.5"/><line x1="48" y1="74" x2="182" y2="74" stroke="rgba(0,0,0,0.10)" stroke-width="1.5"/><rect x="48" y="84" width="122" height="10" rx="2" fill="rgba(0,32,91,0.10)"/><line x1="48" y1="89" x2="170" y2="89" stroke="rgba(0,32,91,0.40)" stroke-width="1.5"/><line x1="48" y1="103" x2="188" y2="103" stroke="rgba(0,0,0,0.10)" stroke-width="1.5"/><line x1="48" y1="113" x2="172" y2="113" stroke="rgba(0,0,0,0.10)" stroke-width="1.5"/><rect x="48" y="123" width="108" height="10" rx="2" fill="rgba(0,32,91,0.08)"/><line x1="48" y1="128" x2="156" y2="128" stroke="rgba(0,32,91,0.32)" stroke-width="1.5"/><line x1="48" y1="142" x2="180" y2="142" stroke="rgba(0,0,0,0.09)" stroke-width="1.5"/><line x1="218" y1="89" x2="235" y2="89" stroke="rgba(244,197,66,0.68)" stroke-width="2"/><polygon points="232,84 242,89 232,94" fill="rgba(244,197,66,0.82)"/><rect x="278" y="18" width="170" height="142" rx="4" fill="rgba(0,0,0,0.20)"/><rect x="275" y="15" width="170" height="142" rx="4" fill="#fff" opacity="0.96"/><rect x="275" y="15" width="170" height="24" rx="4" fill="#001540"/><rect x="275" y="30" width="170" height="9" fill="#001540"/><text x="297" y="27" font-family="monospace" font-size="8" font-weight="700" fill="rgba(244,197,66,0.88)">ENGLISH</text><line x1="290" y1="54" x2="432" y2="54" stroke="rgba(0,0,0,0.10)" stroke-width="1.5"/><line x1="290" y1="64" x2="416" y2="64" stroke="rgba(0,0,0,0.10)" stroke-width="1.5"/><line x1="290" y1="74" x2="424" y2="74" stroke="rgba(0,0,0,0.10)" stroke-width="1.5"/><rect x="290" y="84" width="122" height="10" rx="2" fill="rgba(186,12,47,0.10)"/><line x1="290" y1="89" x2="412" y2="89" stroke="rgba(186,12,47,0.38)" stroke-width="1.5"/><line x1="290" y1="103" x2="430" y2="103" stroke="rgba(0,0,0,0.10)" stroke-width="1.5"/><line x1="290" y1="113" x2="414" y2="113" stroke="rgba(0,0,0,0.10)" stroke-width="1.5"/><rect x="290" y="123" width="108" height="10" rx="2" fill="rgba(186,12,47,0.08)"/><line x1="290" y1="128" x2="398" y2="128" stroke="rgba(186,12,47,0.28)" stroke-width="1.5"/><line x1="290" y1="142" x2="422" y2="142" stroke="rgba(0,0,0,0.09)" stroke-width="1.5"/></svg>',
]; ];
+94 -34
View File
@@ -20,84 +20,141 @@ function pt(string $key, string $lang): string {
return htmlspecialchars(dbnToolsT($key, $lang)); return htmlspecialchars(dbnToolsT($key, $lang));
} }
// New 3-tier NOK ladder. Plus carries a 14-day trial (card required, no charge for 14 days).
$tierNames = [
'free' => $uiLang === 'no' ? 'Gratis' : ($uiLang === 'uk' ? 'Безкоштовно' : ($uiLang === 'pl' ? 'Bezpłatnie' : 'Free')),
'plus' => 'Plus',
'pro' => $uiLang === 'no' ? 'Pro Familie' : ($uiLang === 'uk' ? 'Pro Сім\'я' : ($uiLang === 'pl' ? 'Pro Rodzina' : 'Pro Family')),
];
$creditsPerMonth = $uiLang === 'no' ? 'kreditter / mnd' : ($uiLang === 'uk' ? 'кредитів / міс' : ($uiLang === 'pl' ? 'kredytów / mies' : 'credits / mo')); $creditsPerMonth = $uiLang === 'no' ? 'kreditter / mnd' : ($uiLang === 'uk' ? 'кредитів / міс' : ($uiLang === 'pl' ? 'kredytów / mies' : 'credits / mo'));
$perMonth = $uiLang === 'no' ? '/ måned' : ($uiLang === 'uk' ? '/ міс' : ($uiLang === 'pl' ? '/ mies' : '/ month')); $perMonth = $uiLang === 'no' ? '/ måned' : ($uiLang === 'uk' ? '/ міс' : ($uiLang === 'pl' ? '/ mies' : '/ month'));
$capSuffix = $uiLang === 'no' ? '/ time' : ($uiLang === 'uk' ? '/ год' : ($uiLang === 'pl' ? '/ godz' : '/ hour')); $capSuffix = $uiLang === 'no' ? '/ time' : ($uiLang === 'uk' ? '/ год' : ($uiLang === 'pl' ? '/ godz' : '/ hour'));
$freeName = $uiLang === 'no' ? 'Gratis' : ($uiLang === 'uk' ? 'Безкоштовно' : ($uiLang === 'pl' ? 'Bezpłatnie' : 'Free'));
$unlimited = $uiLang === 'no' ? 'Ubegrenset' : ($uiLang === 'uk' ? 'Необмежено' : ($uiLang === 'pl' ? 'Nieograniczone' : 'Unlimited'));
$noStorage = $uiLang === 'no' ? 'Ingen saksoppbevaring' : ($uiLang === 'uk' ? 'Без сховища справ' : ($uiLang === 'pl' ? 'Brak przechowywania spraw' : 'No case storage'));
$tiers = [ $tiers = [
[ [
'sku' => 'free', 'sku' => 'free',
'name' => $tierNames['free'], 'name' => $freeName,
'price' => 'NOK 0', 'price' => '0',
'period' => $uiLang === 'no' ? 'alltid' : 'always', 'period' => $uiLang === 'no' ? 'alltid' : ($uiLang === 'uk' ? 'завжди' : ($uiLang === 'pl' ? 'zawsze' : 'always')),
'credits' => '30 ' . $creditsPerMonth, 'credits' => '30 ' . $creditsPerMonth,
'storage' => $uiLang === 'no' ? 'Ingen saksoppbevaring' : 'No case storage', 'storage' => $noStorage,
'seats' => $uiLang === 'no' ? '1 bruker' : '1 user', 'seats' => $uiLang === 'no' ? '1 bruker' : ($uiLang === 'uk' ? '1 користувач' : ($uiLang === 'pl' ? '1 użytkownik' : '1 user')),
'cap' => '10 ' . $capSuffix, 'cap' => '10 ' . $capSuffix,
'features' => $uiLang === 'no' ? [ 'features' => $uiLang === 'no' ? [
'Alle 11 verktøy på innlimt tekst', 'Alle 13 verktøy på innlimt tekst',
'Norsk juridisk korpus (~220K passasjer)', 'Norsk juridisk korpus (~220K passasjer)',
'EU-vert (Tyskland / Finland / Norge)', 'EU-vert (Tyskland / Finland / Norge)',
] : ($uiLang === 'uk' ? [
'Усі 13 інструментів на вставленому тексті',
'Норвезький правовий корпус (~220K уривків)',
'Розміщено в ЄС (Німеччина / Фінляндія / Норвегія)',
] : ($uiLang === 'pl' ? [
'Wszystkie 13 narzędzi na wklejonym tekście',
'Norweski korpus prawny (~220K fragmentów)',
'Hostowane w UE (Niemcy / Finlandia / Norwegia)',
] : [ ] : [
'All 11 tools on pasted text', 'All 13 tools on pasted text',
'Norwegian legal corpus (~220K passages)', 'Norwegian legal corpus (~220K passages)',
'EU-hosted (Germany / Finland / Norway)', 'EU-hosted (Germany / Finland / Norway)',
], ])),
'cta' => $isAuthed ? null : dbnToolsT('pricing_cta_login', $uiLang), 'cta' => $isAuthed ? null : dbnToolsT('pricing_cta_login', $uiLang),
'highlight' => false, 'highlight' => false,
], ],
[ [
'sku' => 'plus', 'sku' => 'light',
'name' => $tierNames['plus'], 'name' => 'Light',
'price' => 'NOK 129', 'price' => '9',
'period' => $perMonth, 'period' => $perMonth,
'credits' => '250 ' . $creditsPerMonth, 'credits' => '100 ' . $creditsPerMonth,
'storage' => '500 MB', 'storage' => '500 MB',
'seats' => $uiLang === 'no' ? '1 bruker' : '1 user', 'seats' => $uiLang === 'no' ? '1 bruker' : ($uiLang === 'uk' ? '1 користувач' : ($uiLang === 'pl' ? '1 użytkownik' : '1 user')),
'cap' => '20 ' . $capSuffix, 'cap' => '20 ' . $capSuffix,
'features' => $uiLang === 'no' ? [ 'features' => $uiLang === 'no' ? [
'Min Sak — last opp dokumenter med OCR', 'Min Sak — last opp dokumenter med OCR',
'Bruk min sak som kontekst i alle verktøy', 'Bruk min sak som kontekst i alle verktøy',
'Lagrede analyser — alle resultater samlet', 'Lagrede analyser — alle resultater samlet',
'14 dagers gratis prøveperiode (kort kreves)', '14 dagers gratis prøveperiode (kort kreves)',
] : ($uiLang === 'uk' ? [
'Моя справа — завантаження документів з OCR',
'Використання справи як контексту в усіх інструментах',
'Збережені аналізи — всі результати в одному місці',
'14-денна безкоштовна пробна версія (потрібна картка)',
] : ($uiLang === 'pl' ? [
'Moja sprawa — przesyłanie dokumentów z OCR',
'Używanie sprawy jako kontekstu w każdym narzędziu',
'Zapisane analizy — wszystkie wyniki w jednym miejscu',
'14-dniowy bezpłatny okres próbny (wymagana karta)',
] : [ ] : [
'My Case — upload documents with OCR', 'My Case — upload documents with OCR',
'Use my case as context in every tool', 'Use my case as context in every tool',
'Saved analyses — every run kept and searchable', 'Saved analyses — every run kept and searchable',
'14-day free trial (card required)', '14-day free trial (card required)',
], ])),
'highlight' => true, 'highlight' => false,
'badge' => $uiLang === 'no' ? 'Mest populær' : 'Most popular', 'badge' => null,
], ],
[ [
'sku' => 'pro', 'sku' => 'pro',
'name' => $tierNames['pro'], 'name' => 'Pro',
'price' => 'NOK 299', 'price' => '€29',
'period' => $perMonth, 'period' => $perMonth,
'credits' => '1000 ' . $creditsPerMonth, 'credits' => '500 ' . $creditsPerMonth,
'storage' => '5 GB', 'storage' => '5 GB',
'seats' => $uiLang === 'no' ? '3 brukere · delt sak' : '3 users · shared case', 'seats' => $uiLang === 'no' ? '3 brukere · delt sak' : ($uiLang === 'uk' ? '3 користувачі · спільна справа' : ($uiLang === 'pl' ? '3 użytkowników · wspólna sprawa' : '3 users · shared case')),
'cap' => '40 ' . $capSuffix, 'cap' => '40 ' . $capSuffix,
'features' => $uiLang === 'no' ? [ 'features' => $uiLang === 'no' ? [
'Alt i Plus, med mer plass og raskere modeller', 'Alt i Light, med mer plass og raskere modeller',
'Familie-sete: 3 innlogginger på samme sak', 'Familie-sete: 3 innlogginger på samme sak',
'Prioritert GPT-4o for kompleks analyse', 'Prioritert GPT-4o for kompleks analyse',
'Audit-logg for hvem som kjørte hva', 'Audit-logg for hvem som kjørte hva',
] : ($uiLang === 'uk' ? [
'Все з Light, більше місця та швидші моделі',
'Сімейні місця: 3 входи до однієї справи',
'Пріоритетний GPT-4o для складного аналізу',
'Журнал аудиту — хто що запускав',
] : ($uiLang === 'pl' ? [
'Wszystko z Light, więcej miejsca i szybsze modele',
'Miejsca rodzinne: 3 logowania do jednej sprawy',
'Priorytetowy GPT-4o do złożonych analiz',
'Dziennik audytu — kto co uruchamiał',
] : [ ] : [
'Everything in Plus, with more space and faster models', 'Everything in Light, with more space and faster models',
'Family seats: 3 logins sharing one case', 'Family seats: 3 logins sharing one case',
'Priority GPT-4o for complex analysis', 'Priority GPT-4o for complex analysis',
'Audit log of who ran what', 'Audit log of who ran what',
], ])),
'highlight' => true,
'badge' => $uiLang === 'no' ? 'Mest populær' : ($uiLang === 'uk' ? 'Найпопулярніший' : ($uiLang === 'pl' ? 'Najpopularniejszy' : 'Most popular')),
],
[
'sku' => 'pro-plus',
'name' => 'Pro+',
'price' => '€79',
'period' => $perMonth,
'credits' => $unlimited,
'storage' => '25 GB',
'seats' => $uiLang === 'no' ? '10 brukere · delt sak' : ($uiLang === 'uk' ? '10 користувачів · спільна справа' : ($uiLang === 'pl' ? '10 użytkowników · wspólna sprawa' : '10 users · shared case')),
'cap' => '80 ' . $capSuffix,
'features' => $uiLang === 'no' ? [
'Alt i Pro, ubegrenset kreditter',
'25 GB delt sakslagring',
'Dedikert prosesserings-kø (ingen ventetid)',
'Personlig onboarding-samtale',
] : ($uiLang === 'uk' ? [
'Все з Pro, необмежені кредити',
'25 GB спільного сховища справ',
'Виділена черга обробки (без очікування)',
'Особистий вступний дзвінок',
] : ($uiLang === 'pl' ? [
'Wszystko z Pro, nieograniczone kredyty',
'25 GB wspólnego przechowywania spraw',
'Dedykowana kolejka przetwarzania (bez czekania)',
'Osobista rozmowa onboardingowa',
] : [
'Everything in Pro, unlimited credits',
'25 GB shared case storage',
'Dedicated processing queue (no waiting)',
'Personal onboarding call',
])),
'highlight' => false, 'highlight' => false,
'badge' => $uiLang === 'no' ? 'For familier' : 'For families', 'badge' => $uiLang === 'no' ? 'For organisasjoner' : ($uiLang === 'uk' ? 'Для організацій' : ($uiLang === 'pl' ? 'Dla organizacji' : 'For organisations')),
], ],
]; ];
@@ -197,9 +254,12 @@ $topups = [
<?php endif; ?> <?php endif; ?>
<div style="background:linear-gradient(135deg,#fef3c7,#fcd34d);color:#78350f;padding:1rem 1.5rem;border-radius:10px;margin-bottom:2rem;text-align:center;font-weight:600;"> <div style="background:linear-gradient(135deg,#fef3c7,#fcd34d);color:#78350f;padding:1rem 1.5rem;border-radius:10px;margin-bottom:2rem;text-align:center;font-weight:600;">
<?= $uiLang === 'no' <?= match($uiLang) {
? '🎉 Prøv Plus gratis i 14 dager — kort kreves, kanseller når som helst, ingen belastning før dag 15.' 'no' => '🎉 Prøv Light gratis i 14 dager — kort kreves, kanseller når som helst, ingen belastning før dag 15.',
: '🎉 Try Plus free for 14 days — card required, cancel anytime, no charge until day 15.' ?> 'uk' => '🎉 Спробуйте Light безкоштовно 14 днів — потрібна картка, скасуйте будь-коли, списання лише з 15 дня.',
'pl' => '🎉 Wypróbuj Light za darmo przez 14 dni — wymagana karta, anuluj w dowolnym momencie, brak opłat przed 15 dniem.',
default => '🎉 Try Light free for 14 days — card required, cancel anytime, no charge until day 15.',
} ?>
</div> </div>
<?php if ($isAuthed && !$surveyDone): ?> <?php if ($isAuthed && !$surveyDone): ?>