Apply Do Better Norge tools brand redesign (CSS + all tool pages)
New dbn-tools-redesign.css with warm paper surface, navy tools nav, gold accent, and per-tool themes via body[data-active-tool]. Updated all 21 tool PHP pages, shared layout/nav/footer includes, and advocate route (new). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,281 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
require_once __DIR__ . '/includes/bootstrap.php';
|
||||
|
||||
$uiLang = dbnToolsCurrentLanguage();
|
||||
$isAuthed = dbnToolsIsAuthenticated();
|
||||
$langPath = '/advocate-about.php';
|
||||
$toolsLogin = 'https://dobetternorge.no/tools-login.php?return=' . urlencode('/advocate.php');
|
||||
$registerUrl = 'https://dobetternorge.no/register.php';
|
||||
$ctaUrl = $isAuthed ? '/advocate.php' : $toolsLogin;
|
||||
|
||||
$_pt = require __DIR__ . '/translations/advocate-about.php';
|
||||
$t = $_pt[$uiLang] ?? $_pt['en'];
|
||||
?>
|
||||
<!doctype html>
|
||||
<html lang="<?= htmlspecialchars($uiLang) ?>">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Advocate — AI partisan briefs for child-welfare cases · Do Better Norge Tools</title>
|
||||
<meta name="description" content="Advocate uses Hard-RAG and a fine-tuned legal LLM to generate partisan briefs for child-welfare cases — grounded in Lovdata, ECHR HUDOC, and Bufdir guidance, always arguing for your selected party.">
|
||||
<meta name="robots" content="index, follow">
|
||||
<link rel="canonical" href="https://tools.dobetternorge.no/advocate-about.php">
|
||||
<meta property="og:title" content="Advocate — AI partisan briefs for child-welfare cases">
|
||||
<meta property="og:description" content="Select your party role and get an adversarial brief grounded in 220,000+ Norwegian legal passages. Covers barneloven, barnevernsloven, and ECHR Art. 8.">
|
||||
<meta property="og:type" content="website">
|
||||
<meta name="theme-color" content="#00205B">
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Crimson+Pro:wght@400;600;700&family=IBM+Plex+Sans:wght@400;500;600;700&display=swap">
|
||||
<link rel="stylesheet" href="assets/css/tools.css">
|
||||
<link rel="stylesheet" href="assets/css/dbn-tools-redesign.css">
|
||||
</head>
|
||||
<body class="kdoc-page">
|
||||
|
||||
<header class="lt-nav">
|
||||
<a href="https://dobetternorge.no" class="lt-nav__brand">
|
||||
<picture>
|
||||
<source srcset="assets/images/logo-header.webp" type="image/webp">
|
||||
<img class="lt-nav__logo" src="assets/images/logo-header.png" alt="Do Better Norge" width="140" height="36" loading="eager">
|
||||
</picture>
|
||||
<span class="lt-nav__badge">Legal Tools</span>
|
||||
</a>
|
||||
<div class="lt-nav__right">
|
||||
<nav class="shell-lang-switcher" aria-label="Language">
|
||||
<?php foreach (dbnToolsSupportedLanguages() as $langCode): ?>
|
||||
<a href="<?= htmlspecialchars($langPath . '?lang=' . $langCode) ?>" class="<?= $langCode === $uiLang ? 'is-active' : '' ?>"><?= htmlspecialchars(dbnToolsLanguageLabel($langCode)) ?></a>
|
||||
<?php endforeach; ?>
|
||||
</nav>
|
||||
<?php if ($isAuthed): ?>
|
||||
<a href="/advocate.php" class="lt-nav__cta lt-nav__cta--enter"><?= htmlspecialchars($t['nav_open']) ?></a>
|
||||
<?php else: ?>
|
||||
<a href="<?= htmlspecialchars($toolsLogin) ?>" class="lt-nav__cta"><?= htmlspecialchars($t['nav_signin']) ?></a>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<nav class="kdoc-doc-nav" aria-label="Advocate documentation">
|
||||
<div class="kdoc-doc-nav__inner">
|
||||
<a href="/advocate-about.php" class="is-active"><?= htmlspecialchars($t['nav_about']) ?></a>
|
||||
<a href="/advocate-guide.php"><?= htmlspecialchars($t['nav_guide']) ?></a>
|
||||
<a href="/advocate-tech.php"><?= htmlspecialchars($t['nav_howit']) ?></a>
|
||||
<?php if ($isAuthed): ?>
|
||||
<a href="/advocate.php"><?= htmlspecialchars($t['nav_opentool']) ?></a>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<!-- Hero -->
|
||||
<section class="kdoc-hero" style="background: linear-gradient(rgba(0,20,60,0.82),rgba(0,20,60,0.88)), url('assets/images/advocate/hero-marketing.png') center/cover no-repeat;">
|
||||
<div class="kdoc-hero__inner">
|
||||
<p class="kdoc-hero__kicker"><?= htmlspecialchars($t['hero_kicker']) ?></p>
|
||||
<h1 class="kdoc-hero__title"><?= htmlspecialchars($t['hero_title']) ?></h1>
|
||||
<p class="kdoc-hero__sub"><?= htmlspecialchars($t['hero_sub']) ?></p>
|
||||
|
||||
<div class="kdoc-hero__stats">
|
||||
<div class="kdoc-hero__stat">
|
||||
<strong>220K+</strong>
|
||||
<span><?= htmlspecialchars($t['stat_legal']) ?></span>
|
||||
</div>
|
||||
<div class="kdoc-hero__stat">
|
||||
<strong>9</strong>
|
||||
<span><?= htmlspecialchars($t['stat_roles']) ?></span>
|
||||
</div>
|
||||
<div class="kdoc-hero__stat">
|
||||
<strong>8</strong>
|
||||
<span><?= htmlspecialchars($t['stat_slices']) ?></span>
|
||||
</div>
|
||||
<div class="kdoc-hero__stat">
|
||||
<strong>7</strong>
|
||||
<span><?= htmlspecialchars($t['stat_pipeline']) ?></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="kdoc-hero__ctas">
|
||||
<a href="<?= htmlspecialchars($ctaUrl) ?>" class="kdoc-btn-primary"><?= htmlspecialchars($t['btn_try']) ?></a>
|
||||
<a href="/advocate-guide.php" class="kdoc-btn-secondary"><?= htmlspecialchars($t['btn_guide']) ?></a>
|
||||
<a href="/advocate-tech.php" class="kdoc-btn-secondary"><?= htmlspecialchars($t['btn_howit']) ?></a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- What you get -->
|
||||
<section class="kdoc-section--alt">
|
||||
<div class="kdoc-section">
|
||||
<p class="kdoc-section__eyebrow"><?= htmlspecialchars($t['what_eyebrow']) ?></p>
|
||||
<h2 class="kdoc-section__title"><?= htmlspecialchars($t['what_title']) ?></h2>
|
||||
<div class="kdoc-features">
|
||||
<div class="kdoc-feature-card">
|
||||
<span class="kdoc-feature-card__icon">⚖️</span>
|
||||
<h3 class="kdoc-feature-card__title"><?= htmlspecialchars($t['f1_title']) ?></h3>
|
||||
<p class="kdoc-feature-card__body"><?= htmlspecialchars($t['f1_body']) ?></p>
|
||||
</div>
|
||||
<div class="kdoc-feature-card">
|
||||
<span class="kdoc-feature-card__icon">📜</span>
|
||||
<h3 class="kdoc-feature-card__title"><?= htmlspecialchars($t['f2_title']) ?></h3>
|
||||
<p class="kdoc-feature-card__body"><?= htmlspecialchars($t['f2_body']) ?></p>
|
||||
</div>
|
||||
<div class="kdoc-feature-card">
|
||||
<span class="kdoc-feature-card__icon">📄</span>
|
||||
<h3 class="kdoc-feature-card__title"><?= htmlspecialchars($t['f3_title']) ?></h3>
|
||||
<p class="kdoc-feature-card__body"><?= $t['f3_body_html'] ?></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- How it works (3-step) -->
|
||||
<div class="kdoc-section">
|
||||
<p class="kdoc-section__eyebrow"><?= htmlspecialchars($t['how_eyebrow']) ?></p>
|
||||
<h2 class="kdoc-section__title"><?= htmlspecialchars($t['how_title']) ?></h2>
|
||||
<p class="kdoc-section__sub"><?= htmlspecialchars($t['how_sub']) ?></p>
|
||||
|
||||
<div class="kdoc-steps">
|
||||
<div class="kdoc-step-card">
|
||||
<span class="kdoc-step-card__num">1</span>
|
||||
<h3 class="kdoc-step-card__title"><?= htmlspecialchars($t['s1_title']) ?></h3>
|
||||
<p class="kdoc-step-card__body"><?= htmlspecialchars($t['s1_body']) ?></p>
|
||||
<p class="kdoc-step-card__example"><?= htmlspecialchars($t['s1_example']) ?></p>
|
||||
<img src="assets/images/advocate/role-selector.png" alt="Role selector dropdown showing 9 party options" class="kdoc-step-card__screenshot" loading="lazy">
|
||||
</div>
|
||||
<span class="kdoc-step-arrow" aria-hidden="true">→</span>
|
||||
<div class="kdoc-step-card">
|
||||
<span class="kdoc-step-card__num">2</span>
|
||||
<h3 class="kdoc-step-card__title"><?= htmlspecialchars($t['s2_title']) ?></h3>
|
||||
<p class="kdoc-step-card__body"><?= htmlspecialchars($t['s2_body']) ?></p>
|
||||
<p class="kdoc-step-card__example"><?= htmlspecialchars($t['s2_example']) ?></p>
|
||||
</div>
|
||||
<span class="kdoc-step-arrow" aria-hidden="true">→</span>
|
||||
<div class="kdoc-step-card">
|
||||
<span class="kdoc-step-card__num">3</span>
|
||||
<h3 class="kdoc-step-card__title"><?= htmlspecialchars($t['s3_title']) ?></h3>
|
||||
<p class="kdoc-step-card__body"><?= $t['s3_body_html'] ?></p>
|
||||
<p class="kdoc-step-card__example"><?= htmlspecialchars($t['s3_example']) ?></p>
|
||||
<img src="assets/images/advocate/output-brief.png" alt="Advocate output showing strongest arguments and the partisan brief" class="kdoc-step-card__screenshot" loading="lazy">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Screenshots -->
|
||||
<section class="kdoc-section--alt">
|
||||
<div class="kdoc-section">
|
||||
<p class="kdoc-section__eyebrow"><?= htmlspecialchars($t['ss_eyebrow']) ?></p>
|
||||
<h2 class="kdoc-section__title"><?= htmlspecialchars($t['ss_title']) ?></h2>
|
||||
<div class="kdoc-gallery">
|
||||
<div class="kdoc-gallery__item">
|
||||
<img src="assets/images/advocate/form-top.png" alt="Advocate form — role selector, case description, engine, corpus slices" class="kdoc-screenshot" loading="lazy">
|
||||
<p class="kdoc-gallery__caption"><?= htmlspecialchars($t['g1_caption']) ?></p>
|
||||
</div>
|
||||
<div class="kdoc-gallery__item">
|
||||
<img src="assets/images/advocate/output-brief.png" alt="Advocate output — strongest arguments and partisan brief with citations" class="kdoc-screenshot" loading="lazy">
|
||||
<p class="kdoc-gallery__caption"><?= htmlspecialchars($t['g2_caption']) ?></p>
|
||||
</div>
|
||||
<div class="kdoc-gallery__item">
|
||||
<img src="assets/images/advocate/sub-questions.png" alt="Sub-question research trail with ECHR and uploaded document sources" class="kdoc-screenshot" loading="lazy">
|
||||
<p class="kdoc-gallery__caption"><?= htmlspecialchars($t['g3_caption']) ?></p>
|
||||
</div>
|
||||
<div class="kdoc-gallery__item">
|
||||
<img src="assets/images/advocate/output-next.png" alt="Analysis — gaps in opposing position, uncertainties, and next practical step" class="kdoc-screenshot" loading="lazy">
|
||||
<p class="kdoc-gallery__caption"><?= htmlspecialchars($t['g4_caption']) ?></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Fine-tuned LLM spotlight -->
|
||||
<div class="kdoc-section">
|
||||
<p class="kdoc-section__eyebrow"><?= htmlspecialchars($t['hood_eyebrow']) ?></p>
|
||||
<h2 class="kdoc-section__title"><?= htmlspecialchars($t['hood_title']) ?></h2>
|
||||
<div class="kdoc-llm-spotlight">
|
||||
<div>
|
||||
<span class="kdoc-llm-spotlight__badge"><?= htmlspecialchars($t['llm_badge']) ?></span>
|
||||
<h3 class="kdoc-llm-spotlight__title">dbn-legal-agent</h3>
|
||||
<p class="kdoc-llm-spotlight__body"><?= $t['llm_body_html'] ?></p>
|
||||
</div>
|
||||
<div class="kdoc-llm-stats">
|
||||
<div class="kdoc-llm-stat">
|
||||
<strong>QLoRA</strong>
|
||||
<span><?= htmlspecialchars($t['llm_s1']) ?></span>
|
||||
</div>
|
||||
<div class="kdoc-llm-stat">
|
||||
<strong>barnevernsloven</strong>
|
||||
<span><?= htmlspecialchars($t['llm_s2']) ?></span>
|
||||
</div>
|
||||
<div class="kdoc-llm-stat">
|
||||
<strong>gpt-4o</strong>
|
||||
<span><?= htmlspecialchars($t['llm_s3']) ?></span>
|
||||
</div>
|
||||
<div class="kdoc-llm-stat">
|
||||
<strong>7-step</strong>
|
||||
<span><?= htmlspecialchars($t['llm_s4']) ?></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Party roles coverage -->
|
||||
<section class="kdoc-section--alt">
|
||||
<div class="kdoc-section">
|
||||
<p class="kdoc-section__eyebrow"><?= htmlspecialchars($t['roles_eyebrow']) ?></p>
|
||||
<h2 class="kdoc-section__title"><?= htmlspecialchars($t['roles_title']) ?></h2>
|
||||
<p class="kdoc-section__sub"><?= htmlspecialchars($t['roles_sub']) ?></p>
|
||||
<div class="kdoc-bodies">
|
||||
<div class="kdoc-body-card">
|
||||
<p class="kdoc-body-card__name">Biological mother</p>
|
||||
<p class="kdoc-body-card__law">barneloven · ECHR Art. 8</p>
|
||||
</div>
|
||||
<div class="kdoc-body-card">
|
||||
<p class="kdoc-body-card__name">Biological father</p>
|
||||
<p class="kdoc-body-card__law">barneloven · ECHR Art. 8</p>
|
||||
</div>
|
||||
<div class="kdoc-body-card">
|
||||
<p class="kdoc-body-card__name">Both biological parents</p>
|
||||
<p class="kdoc-body-card__law">barneloven · barnevernsloven</p>
|
||||
</div>
|
||||
<div class="kdoc-body-card">
|
||||
<p class="kdoc-body-card__name">Foster carer / long-term placement</p>
|
||||
<p class="kdoc-body-card__law">barnevernsloven § 4-19a</p>
|
||||
</div>
|
||||
<div class="kdoc-body-card">
|
||||
<p class="kdoc-body-card__name">Adoptive parent</p>
|
||||
<p class="kdoc-body-card__law">adopsjonsloven · barnevernsloven</p>
|
||||
</div>
|
||||
<div class="kdoc-body-card">
|
||||
<p class="kdoc-body-card__name">Child (via representative)</p>
|
||||
<p class="kdoc-body-card__law">barneloven · FNs barnekonvensjon</p>
|
||||
</div>
|
||||
<div class="kdoc-body-card">
|
||||
<p class="kdoc-body-card__name">Extended family</p>
|
||||
<p class="kdoc-body-card__law">barneloven · ECHR Art. 8</p>
|
||||
</div>
|
||||
<div class="kdoc-body-card">
|
||||
<p class="kdoc-body-card__name">Child welfare services (Barnevernet)</p>
|
||||
<p class="kdoc-body-card__law">barnevernsloven · fvl</p>
|
||||
</div>
|
||||
<div class="kdoc-body-card">
|
||||
<p class="kdoc-body-card__name">Other</p>
|
||||
<p class="kdoc-body-card__law">fvl (general)</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- CTA strip -->
|
||||
<section class="kdoc-cta-strip">
|
||||
<h2 class="kdoc-cta-strip__title"><?= htmlspecialchars($t['cta_title']) ?></h2>
|
||||
<p class="kdoc-cta-strip__sub"><?= htmlspecialchars($t['cta_sub']) ?></p>
|
||||
<div class="kdoc-hero__ctas">
|
||||
<?php if ($isAuthed): ?>
|
||||
<a href="/advocate.php" class="kdoc-btn-primary"><?= htmlspecialchars($t['btn_open']) ?></a>
|
||||
<?php else: ?>
|
||||
<a href="<?= htmlspecialchars($toolsLogin) ?>" class="kdoc-btn-primary"><?= htmlspecialchars($t['btn_signin_cta']) ?></a>
|
||||
<a href="<?= htmlspecialchars($registerUrl) ?>" class="kdoc-btn-secondary"><?= htmlspecialchars($t['btn_register']) ?></a>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<?php require_once __DIR__ . '/includes/footer.php'; ?>
|
||||
<script src="assets/js/tools.js" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user