Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ccb114944a | |||
| 98483b804a | |||
| af8c48ce70 | |||
| 756ab616a2 | |||
| 5cb903b989 |
@@ -6,9 +6,9 @@
|
||||
"sourceBranch": "test/pre-phase10-ux-acceptance",
|
||||
"localCommit": "ba04d817fed26d659bfa2a56b089d6cac851dc34",
|
||||
"localCommitMeaning": "FROZEN_TESTED_APPLICATION_BASELINE",
|
||||
"snapshotHead": "ba04d817fed26d659bfa2a56b089d6cac851dc34",
|
||||
"verifiedRemoteCommit": "ba04d817fed26d659bfa2a56b089d6cac851dc34",
|
||||
"remoteObservation": "Candidate snapshot exact remote readback at2026-10-29T23:37:45.931733+00:00; final documentation envelope HEAD must independently be rechecked.",
|
||||
"snapshotHead": "fc5b9d377199ce51f480a920a3772108094929e3",
|
||||
"verifiedRemoteCommit": "fc5b9d377199ce51f480a920a3772108094929e3",
|
||||
"remoteObservation": "Proposed execution candidate exact remote readback 2026-10-30T07:47:11.270216+00:00; frozen application source remainsba04d817fed26d659bfa2a56b089d6cac851dc34. Resolve final clean envelope HEAD independently.",
|
||||
"worktreeCleanliness": {
|
||||
"atSourceBaseline": "CLEAN",
|
||||
"atPackageGeneration": "HANDOFF_FILES_ONLY",
|
||||
@@ -128,7 +128,7 @@
|
||||
"evidence": [
|
||||
"ENTRY_PROPOSAL.json"
|
||||
],
|
||||
"limits": "Candidateba04d817fed26d659bfa2a56b089d6cac851dc34 exact remote readback at2026-10-29T23:37:45.931733+00:00; final package envelope HEAD still requires clean/current remote verification."
|
||||
"limits": "Execution candidatefc5b9d377199ce51f480a920a3772108094929e3 verified by exact remote readback; actual final envelope HEAD still requires independent current verification."
|
||||
},
|
||||
{
|
||||
"criterion": "Phase 10 Development Readiness",
|
||||
@@ -205,6 +205,6 @@
|
||||
"authority": "EXTERNAL_PROTECTED_CONTROLLER_APPROVAL"
|
||||
}
|
||||
],
|
||||
"generatedUtc": "2026-10-29T23:37:45.931733+00:00",
|
||||
"generatedUtc": "2026-10-30T07:47:11.270216+00:00",
|
||||
"recommendation": "Pre-Phase10 preparation conditionally closed. Retain release/activation debt. Stop at protected orchestrator gate until actual composite adapter, signed exact final baseline/P10-00-only scope policy and owner-controlled runtime/entry activation are satisfied. No cleanup or production action."
|
||||
}
|
||||
|
||||
@@ -2,14 +2,14 @@
|
||||
"schemaVersion": 1,
|
||||
"workstreamId": "P10-ENTRY-FINAL",
|
||||
"authority": "EVIDENCE_ONLY_NOT_OWNER_APPROVAL",
|
||||
"candidateCommit": "ba04d817fed26d659bfa2a56b089d6cac851dc34",
|
||||
"candidateCommit": "fc5b9d377199ce51f480a920a3772108094929e3",
|
||||
"acceptedBranch": "test/pre-phase10-ux-acceptance",
|
||||
"applicationFixCommit": "154a9e89f565e786d7df00bf93d873da900a7c7d",
|
||||
"packageHeadRule": "Resolve final clean published envelope HEAD independently; bind it, the candidate snapshot, exact scope, policy and artifact hashes in protected approval. No self-referential commit claim.",
|
||||
"entryDecision": "NO-GO",
|
||||
"eligibleForAutomaticExecution": false,
|
||||
"productionDecision": "NO-GO",
|
||||
"generatedUtc": "2026-10-29T23:37:45.931733+00:00",
|
||||
"generatedUtc": "2026-10-30T07:47:11.270216+00:00",
|
||||
"cleanupScope": {
|
||||
"disposition": "ASSESSMENT_ONLY_NO_REMOVALS_APPROVED",
|
||||
"inventory": "CLEANUP_INVENTORY.md:19 retain/assessment entries;57preservation groups/34routes; no proven unused deletion",
|
||||
@@ -113,8 +113,8 @@
|
||||
],
|
||||
"publication": {
|
||||
"status": "VERIFIED_CANDIDATE_SNAPSHOT",
|
||||
"candidateRemoteCommit": "ba04d817fed26d659bfa2a56b089d6cac851dc34",
|
||||
"observedUtc": "2026-10-29T23:37:45.931733+00:00",
|
||||
"candidateRemoteCommit": "fc5b9d377199ce51f480a920a3772108094929e3",
|
||||
"observedUtc": "2026-10-30T07:47:11.270216+00:00",
|
||||
"finalHeadMustBeRechecked": true
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1613,30 +1613,6 @@
|
||||
"sha256": "bb1b1ccfb03bd888e5e429f5a17c4c106246cfb852b990298236edc7c86c7016",
|
||||
"description": "Scoped human-approved revised S01 qualification; no visual/entry/production approval"
|
||||
},
|
||||
{
|
||||
"id": "p10-final-gate-processes",
|
||||
"path": "evidence/p10-final-gate-processes.gz",
|
||||
"sha256": "1f544cdd3e2efaebe8864604bd7eb7b9dc5dcb5cf2040cc1781cebc79c89fc93",
|
||||
"description": "Actual companion schema/negative and native blocked-entry observations; not product-case totals or protected approval"
|
||||
},
|
||||
{
|
||||
"id": "p10-proposal-check-native",
|
||||
"path": "evidence/p10-proposal-check-native.gz",
|
||||
"sha256": "8aeb977b01e68447f6a6a290e95e5d116030ddb547441b17ac7fa7bccc873955",
|
||||
"description": "Actual companion schema/negative and native blocked-entry observations; not product-case totals or protected approval"
|
||||
},
|
||||
{
|
||||
"id": "p10-protected-entry-native",
|
||||
"path": "evidence/p10-protected-entry-native.gz",
|
||||
"sha256": "2c8d977d0b4e9dcfcc120017c44da9ad6738cfac01874815d32e701f3231128d",
|
||||
"description": "Actual companion schema/negative and native blocked-entry observations; not product-case totals or protected approval"
|
||||
},
|
||||
{
|
||||
"id": "p10-proposal-check-source",
|
||||
"path": "evidence/p10-proposal-check-source.gz",
|
||||
"sha256": "d0505e74d05557e2a7fd64807e5cc1967695413e3e038e83485f7dcaad9c9557",
|
||||
"description": "Actual companion schema/negative and native blocked-entry observations; not product-case totals or protected approval"
|
||||
},
|
||||
{
|
||||
"id": "s01-initial-package-negative-log",
|
||||
"path": "evidence/s01-initial-package-negative-log.gz",
|
||||
@@ -1670,7 +1646,7 @@
|
||||
{
|
||||
"id": "p10-entry-proposal",
|
||||
"path": "evidence/p10-entry-proposal.gz",
|
||||
"sha256": "3a1b618b1e5fad0adc35c093ef318ebfd7be618653716c7e02386e893345a2af",
|
||||
"sha256": "7c036e998b21ea63387d842218fb8ec1c8b4afa004d155ce54ed4f1ebdd031a6",
|
||||
"description": "Evidence-only exact proposed baseline/scope, owner visual status and remaining protected decisions; no executable permission"
|
||||
},
|
||||
{
|
||||
@@ -1690,6 +1666,30 @@
|
||||
"path": "evidence/handoff-validator-native.gz",
|
||||
"sha256": "b0a525ce25265fc319c62d730e74c72de96482cc3db929b40a060e7b8fdd0938",
|
||||
"description": "Final28 combined unit/package negative tests, exact source and native process; supersedes overlapping prior27"
|
||||
},
|
||||
{
|
||||
"id": "p10-final-gate-processes",
|
||||
"path": "evidence/p10-final-gate-processes.gz",
|
||||
"sha256": "8584076ee515b420ec6c6096918ff038160ba4d8f97f2b8f835ef06144d8fe11",
|
||||
"description": "Actual companion schema/negative and native blocked-entry observations; not product-case totals or protected approval"
|
||||
},
|
||||
{
|
||||
"id": "p10-proposal-check-native",
|
||||
"path": "evidence/p10-proposal-check-native.gz",
|
||||
"sha256": "8aeb977b01e68447f6a6a290e95e5d116030ddb547441b17ac7fa7bccc873955",
|
||||
"description": "Actual companion schema/negative and native blocked-entry observations; not product-case totals or protected approval"
|
||||
},
|
||||
{
|
||||
"id": "p10-protected-entry-native",
|
||||
"path": "evidence/p10-protected-entry-native.gz",
|
||||
"sha256": "e89902f1343ad5dad14221aaa7c7f7f5ad1da432bed4a40ad82d48f48c4e5b89",
|
||||
"description": "Actual companion schema/negative and native blocked-entry observations; not product-case totals or protected approval"
|
||||
},
|
||||
{
|
||||
"id": "p10-proposal-check-source",
|
||||
"path": "evidence/p10-proposal-check-source.gz",
|
||||
"sha256": "bf7a50107916a94e6faf075c42be0116bdd33a05f88f640e149a60c70de3415b",
|
||||
"description": "Actual companion schema/negative and native blocked-entry observations; not product-case totals or protected approval"
|
||||
}
|
||||
],
|
||||
"reports": [
|
||||
@@ -2369,7 +2369,7 @@
|
||||
"id": "p10-proposal-schema",
|
||||
"bindingScope": "APPLICATION",
|
||||
"sourceCommit": "ba04d817fed26d659bfa2a56b089d6cac851dc34",
|
||||
"executedFromCommit": "1a47f7ac1d9cddd647135ebee808a77301335016",
|
||||
"executedFromCommit": "fc5b9d377199ce51f480a920a3772108094929e3",
|
||||
"status": "PASS",
|
||||
"exitCode": 0,
|
||||
"artifactId": "p10-proposal-check-native",
|
||||
@@ -2390,7 +2390,7 @@
|
||||
"id": "p10-protected-entry",
|
||||
"bindingScope": "APPLICATION",
|
||||
"sourceCommit": "ba04d817fed26d659bfa2a56b089d6cac851dc34",
|
||||
"executedFromCommit": "1a47f7ac1d9cddd647135ebee808a77301335016",
|
||||
"executedFromCommit": "fc5b9d377199ce51f480a920a3772108094929e3",
|
||||
"status": "BLOCKED",
|
||||
"exitCode": 3,
|
||||
"artifactId": "p10-protected-entry-native",
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
# Public content architecture — proposed, not implemented
|
||||
|
||||
2 November 2026. Independent preparation under the owner's current direct-roadmap instruction. No visual concept selected, public route added, marketing claim published or application source changed. Final layout/section order remains an owner decision.
|
||||
|
||||
Reuse the current Next static-export build, React Router private shell, MUI design tokens, shared plan ownership and en/nb translation contracts. Avoid a CMS or second application shell. Public descriptive content should be emitted as crawlable static HTML from repository-managed, locale-aware content; authenticated routes retain their current client-only providers. Do not turn private account data, feature flags or arbitrary query strings into build-time content.
|
||||
|
||||
Separate content domains:
|
||||
|
||||
- Feature catalogue: stable feature ID and links to implementation, scoped acceptance, deployed identity, entitlement, market, locale, approved screenshot and marketing approval. Missing evidence withholds a current-availability claim. Existing MARKETING_CLAIM_VALIDATION.md remains the authority; do not duplicate it into a competing status list.
|
||||
- Page copy: complete title, description, headings, feature narratives, links, FAQ and accessible text in approved locale resources. Whole sentences and explicit placeholders; reuse terminology and distinguish canonical Career Profile from a CV variant.
|
||||
- Market: available product/provider capabilities, actual billing/currency, legal links and applicable languages. A market is not a language, nationality or automatic grant to fetch jobs.
|
||||
- Assets: genuine synthetic product captures with source commit/date/surface/theme/viewport, rights and alt-text context. The five application design concepts are conceptual prototypes, not screenshots of a released product. No unlicensed images or invented customer testimonials.
|
||||
|
||||
Draft profession-neutral content options for later copy review: “Your job search, organised.” / “Jobbsøkingen din, organisert.” Supporting proposition: “Keep applications, career information and documents together.” / “Samle søknader, karriereinformasjon og dokumenter på ett sted.” These are unpublished candidate copy, not released-capability approval or native-language acceptance. Avoid promising universal import accuracy, live international sources, automatic employer actions, AI availability or privacy certifications.
|
||||
|
||||
Candidate narrative modules (not an approved order): clear outcome and product preview; tracking and next steps; Career Profile/document workflow; optional import review; how it works; verified plan information; factual FAQ; supported registration path; legal/support footer. Where registration is disabled, the CTA must use the existing truthful sign-in/access path rather than promise account creation. Legal destinations and final FAQ answers require verified content; never invent links or policies.
|
||||
|
||||
Implementation gate: after final visual approval, use the approved composition with static public copy and a small client interaction boundary for preference/navigation. Preserve signed-in redirect, protected-route return state and the existing dashboard-first optional onboarding. No second onboarding flow. Reverting future content is an ordinary version-controlled content rollback; no database migration is proposed by this architecture.
|
||||
|
||||
Open: final visual choice, actual released feature/plan/provider evidence, production origin/deployed identity, public asset provenance and native copy review. Full European catalogue work does not automatically publish locale pages.
|
||||
@@ -0,0 +1,22 @@
|
||||
# LAUNCH-01 homepage concepts
|
||||
|
||||
Open the [comparison gallery](concepts/index.html) from this checkout, or open any full-page desktop and phone image below. These are standalone English design previews. The registration and sign-in treatments scroll to an explanation in the prototype. Plans show layout and the existing catalogue labels only. Public copy, pricing, legal destinations, localisation and feature availability need release validation.
|
||||
|
||||
| Concept | View | Strength | Tradeoff and accessibility focus |
|
||||
| --- | --- | --- | --- |
|
||||
| A · Modern Minimalist | [Responsive](concepts/minimal.html) · [Desktop](concepts/renders/minimal-desktop.png) · [Phone](concepts/renders/minimal-phone.png) | A direct split hero leads with the application tracker. Violet accents connect it to the application. | The restrained treatment puts more weight on the headline. On phones, the screenshot is a cropped preview with a full-capture link. |
|
||||
| B · Premium SaaS | [Responsive](concepts/premium.html) · [Desktop](concepts/renders/premium-desktop.png) · [Phone](concepts/renders/premium-phone.png) | A large dashboard stage explains the organisation workflow through the product itself. | The desktop composition uses more vertical space. The phone layout puts a left-aligned headline and actions before the capture. Recheck text contrast if the background treatment changes. |
|
||||
| C · Friendly and Human | [Responsive](concepts/human.html) · [Desktop](concepts/renders/human-desktop.png) · [Phone](concepts/renders/human-phone.png) | Sage and Georgia display type support an original illustration spanning education, care and trades. A separate teacher CV capture shows the actual product. | Product evidence follows the introduction. The illustration has an alternative description and is separate from the development capture. |
|
||||
| D · Modern Editorial | [Responsive](concepts/editorial.html) · [Desktop](concepts/renders/editorial-desktop.png) · [Phone](concepts/renders/editorial-phone.png) | A navy masthead and asymmetric Career Workspace frame emphasise the experience applicants bring to the search. | Display typography needs locale expansion checks. On phones, the masthead and application preview stack in reading order. |
|
||||
|
||||
Each page has the same navigation destinations, basic feature and workflow copy, provisional Free/Pro slots and footer. This keeps the comparison focused on hierarchy, imagery and type. Review the hero, navigation, typography, colour, illustration balance, feature presentation, calls to action and phone layout. The owner can combine parts across concepts and identify missing sections.
|
||||
|
||||
## Verification
|
||||
|
||||
Chromium passed 20 local browser cases across the four prototypes and the gallery at 1440, 768, 390 and 320 px. Checked image loading, no horizontal page overflow, local link destinations, keyboard skip navigation, inactive signup flow, minimum visible link size and axe WCAG A/AA tags. No page errors, external requests or tagged violations occurred. The first run exposed a small review link. Its hit area was enlarged and the full matrix reran. The eight full-page desktop and phone renders were visually inspected. [Browser receipts](concepts/renders/checks.json)
|
||||
|
||||
See [screenshot and asset provenance](SCREENSHOT_AND_ASSET_MANIFEST.md). No production feature, provider, pricing, signup or availability claim was verified. Native accessibility, translated copy and production performance remain open.
|
||||
|
||||
## Owner selection gate
|
||||
|
||||
LAUNCH-01 is ready for owner review. LAUNCH-02 starts when the owner selects one or more directions. Final implementation requires separate explicit approval of the refined design.
|
||||
@@ -0,0 +1,39 @@
|
||||
# LAUNCH-00 source audit - partial checkpoint
|
||||
|
||||
## Design pattern and asset inputs
|
||||
|
||||
- Linear shows the workspace near the top and lets specific workflow examples explain the product. The Premium concept explores a genuine Jobjakt dashboard in a similar position using its own visual treatment. [Linear homepage](https://linear.app/)
|
||||
- Notion groups its feature presentation around recognizable actions. All four Jobjakt concepts use three short outcomes tied to tracking, Career Profile and CV preparation. [Notion product overview](https://www.notion.com/product)
|
||||
- Basecamp combines a direct product explanation with a distinct tour action. The Jobjakt hero prototypes separate a proposed registration action from the feature walkthrough. [Basecamp homepage](https://basecamp.com/)
|
||||
|
||||
The [four rendered concepts](DESIGN_CONCEPTS.md) use verified synthetic product captures and one original illustration. Signup submission, degraded auth, baseline performance and native accessibility remain open in LAUNCH-00. A live commercial claim or current price still needs independent evidence and approval.
|
||||
|
||||
## Rendered baseline reconciliation, 10 November 2026
|
||||
|
||||
The separately published A3 evidence at `bd34a3504f7e849c41b48db444f0e1f16324a16f` includes `docs/ui-modernisation/visual-correction/LANDING_BASELINE_REVIEW.md` and `evidence/landing-baseline/BROWSER.json` under the same directory. The runtime was `e8e7d83958587e8b5a4b93d03d3e736896df5a48`. This closes the rendered anonymous navigation and raw export observations at that baseline.
|
||||
|
||||
12 fixture journeys covered 320, 768 and 1440 px in EN/NB and both themes. Keyboard feature navigation, local language selection and entry into existing sign-in and registration routes passed. No registration was submitted. All three preview SVGs loaded. All 12 states reported missing landmark best practices, and the raw static response lacked a hero heading, canonical and locale alternates. The anonymous language switch attempted 24 authenticated preference writes that the fixture rejected. Public language changes should use the existing local choice until the user has a session. The dashboard SVG email was anonymised in the capture fixture only.
|
||||
|
||||
The captured images are browser evidence of the existing homepage. The preview SVGs inside it are still illustrations. For LAUNCH-01, source potential real product captures from the published A3 evidence viewer, including `dashboard`, `applications-selection`, `career` and the existing CV editor captures. Before using an image, inspect the pixels and bind it to its actual route, source commit, language, viewport, fixture and asset rights. The A3 development branch has outstanding visual acceptance. Its captures are candidates for review mockups. Market, provider and pricing claims require the separate claim review.
|
||||
|
||||
Open audit inputs include contemporary design pattern research, asset rights, realistic registration and degraded-auth behaviour, measured performance and native review. The four LAUNCH-01 concepts remain to be rendered.
|
||||
|
||||
2026-11-02. `feature/launch-site-redesign`, accepted conditional baseline `5cb903b989742b7a96cb22ddf4c0e24993b18980`. Full authoritative homepage prompt read. LAUNCH-00 IN_PROGRESS; LAUNCH-01 concepts NOT YET PRODUCED. No final design selected or implemented.
|
||||
|
||||
| Finding | Source evidence | User implication / proposed direction |
|
||||
| --- | --- | --- |
|
||||
| Main Get started opens sign-in | `LandingPage.tsx` passes `goToLogin` to hero CTA; Free-plan CTA separately goes to `/register` | Registration intent has an extra mode-selection step. Propose direct registration while preserving sign-in return state |
|
||||
| Existing signup owner should be reused | `App.tsx:522` maps `/register` to `LoginPage initialMode=register`; LoginPage respects auth config and registration availability | No second onboarding implementation; final CTA must reflect actual enabled registration |
|
||||
| Product previews are conceptual assets | `LandingPage.tsx` uses `/mockups/dashboard.svg`, `pipeline.svg`, `workspace.svg` | Replace with provenance-bound synthetic captures in approved design; never label current artwork a genuine screenshot |
|
||||
| Implementation details occupy hero copy | LandingPage renders React/TypeScript/ASP.NET/EF/FastAPI/Gmail text | Replace with plain user outcomes across professions; framework names do not explain job-search value |
|
||||
| Marketing content depends on client execution and auth probe | `app/page.tsx` loads ClientShell; `ClientShell.tsx` uses `ssr:false`; LandingPage shows loading until `/auth/me` resolves/rejects | Crawlable HTML and loading/failure behavior need measured review; cannot assume static export includes full marketing copy |
|
||||
| Metadata is generic | `app/layout.tsx` has global title/description and initial `lang=en` | Design market/content-locale metadata and canonical/alternate rules without disturbing authenticated routing; no SEO score claimed |
|
||||
| Brand continuity exists | Indigo/cyan hero, shared MUI/theme, custom en/nb translations | Explore distinct compositions while preserving identity; avoid rebuilding app shell |
|
||||
| Product presentation is limited | Six feature cards, six steps and three conceptual images; no actual redesigned CV/import/gallery imagery | Prioritise actual accepted tracking, canonical Career Profile and reviewed document workflow; do not imply new Global Jobs is shipped |
|
||||
| Pricing shows capabilities, not amounts | `planCatalog.ts` defines Free/Pro, explicitly delegates commercial terms to configured checkout | Do not invent amounts/currencies/trials or promise active Pro AI; release and entitlement validation required |
|
||||
| Footer lacks privacy/legal links in this component | LandingPage footer contains copyright text and sign-in button | Verify existing legal destinations and approved copy before adding links; no invented compliance claims |
|
||||
| Responsive layouts are declared | MUI breakpoints change hero controls, feature grids, plan columns and footer | Source intent only; mobile/tablet/keyboard/reflow/contrast require actual rendered checks |
|
||||
|
||||
Preserve signed-in redirect to `/dashboard`, interrupted protected-route return state, shared language behavior, plan policy ownership and existing registration constraints. New public market language must not overwrite job-ad or document output language. Existing custom en/nb implementation is not full European locale support.
|
||||
|
||||
Not yet checked: current rendered desktop/mobile site, external design-pattern research, runtime signup, slow/offline auth probe, keyboard/AT/contrast, image loading/performance, crawled output, real deployment availability and final asset rights. These omissions keep LAUNCH-00 open. No product tests were rerun for this Markdown-only source checkpoint.
|
||||
@@ -0,0 +1,11 @@
|
||||
# Marketing locale integration — proposed contract
|
||||
|
||||
2 November 2026. EN/Bokmål source support is existing; no additional locale is released by this report. Reuse I18N-00 registry/catalogue proposals and their review gates instead of a second country-language mapping. Full European locale identities, script distinctions and native review remain the localisation workstream's responsibility.
|
||||
|
||||
Keep marketing content locale, selected market, application UI language, ad-language preferences and document language distinct. A marketing selector may offer a deliberate explicit application-language action after sign-in; it must not silently write ad/document preferences. Current shared UI preference behavior must be inspected and migrated compatibly before introducing a separate persisted marketing choice. No persistence change is made here.
|
||||
|
||||
Supported choices show native and English names, retain English access, and allow another supported language independent of market. Bokmål/nb/nb-NO/no legacy compatibility does not grant Nynorsk support. Unreleased languages may be described truthfully as forthcoming only with approved copy; they do not receive public routes, hreflang or sitemap entries. User-generated CV/job text is not translated by changing chrome language.
|
||||
|
||||
Complete each published variant's visible, form, error, accessibility, metadata, social and legal text. Validate keys/placeholders, fallback behavior, interpolation escaping, long labels, plural/number/date/currency rules and dirty-form switching. Native terminology review is separate from syntactic coverage. Currency display follows real billing capability, not a selected country. Preserve provider names, original job language, rights/attribution and the distinction between source descriptions and any reviewed translation.
|
||||
|
||||
Acceptance remains BLOCKED for additional released locales until architecture entry, coverage, translation rights/proficient review, actual market capabilities, approved content and integrated QA are satisfied. This does not prevent independent catalogue, fixture, content and SEO planning. See SEO_STRATEGY.md for published-only URL constraints and CONTENT_ARCHITECTURE.md for content ownership.
|
||||
@@ -0,0 +1,20 @@
|
||||
# Preliminary claims and content boundaries
|
||||
|
||||
All claims below are **WITHHELD from public release approval**. Source implementation and conditional development acceptance do not establish production availability. No production inspection was authorised or performed.
|
||||
|
||||
| Proposed subject | Implementation/development evidence | Missing marketing proof |
|
||||
| --- | --- | --- |
|
||||
| Track applications in table/Kanban | Existing LandingPage/plan catalogue and conditional pre-P10 handoff | Deployed version, applicable account entitlement, genuine synthetic capture and approved copy |
|
||||
| Career Profile and CV variants | Canonical profile/document contracts in architecture and CV handoff | Current deployed behavior and accurate plan/theme availability |
|
||||
| Import, review and correct CV facts | Pre-P10 accepted deterministic supported-fixture workflow | No universal parsing or AI-accuracy claim; actual released formats/languages and limitations |
|
||||
| CV templates and PDF | Scoped development appearance/metric approval retained | Physical-print limits, deployed design/version and screenshots |
|
||||
| Reminders/mail/integrations | Existing source owners; provider qualification separate | Actual enabled countries/providers/consent/delivery; avoid blanket automation promises |
|
||||
| International job search | GJ-00 planning separately published; later implementation blocked | Accepted implementation, provider rights and per-country deployed capabilities |
|
||||
| AI assistance | Some contracts implemented; real CV model quality/activation blocked | Accepted model compatibility/accuracy, privacy/consent and enabled deployment |
|
||||
| Free/Pro | Shared public catalogue exists; no price encoded here | Server policy/checkout consistency, active billing, tax/currency wording and approved current prices |
|
||||
| Languages | Existing en/nb source catalogues; I18N audit separate | Native review and per-surface release state; additional locale candidates are not supported language packs |
|
||||
| Privacy/security | Existing controls and conditional security evidence | Approved truthful wording; no certification/compliance guarantee |
|
||||
|
||||
Each final catalogue entry needs feature ID, implementation commit, acceptance artifact, deployed version, entitlement, market, locale, screenshot provenance and owner marketing approval. Missing fields deny availability claims. This is a documentation contract, not a new executable publishing system.
|
||||
|
||||
Proposed section sequence for concept exploration: outcome-led hero; genuine tracking preview; career/document journey; broad-profession story; how it works; verified plans; FAQ; registration CTA; legal/support footer. Final order remains a design choice. No fabricated customer quotes, statistics, discounts or job-provider coverage.
|
||||
@@ -0,0 +1,20 @@
|
||||
# Partial homepage planning handoff
|
||||
|
||||
10 November concept successor. [LAUNCH-01 comparison](DESIGN_CONCEPTS.md) contains four responsive prototypes and eight full-page renders with synthetic development captures and a source manifest. Twenty local browser cases passed. The owner can select or combine directions before LAUNCH-02. Final visual approval, public copy, production rendering and launch acceptance remain separate. Earlier pending statements below describe the previous checkpoint.
|
||||
|
||||
10 November: the published A3 landing baseline now supplies 12 rendered navigation states, raw HTML findings and screenshot provenance candidates. See [homepage audit](HOMEPAGE_AUDIT.md). Next, complete the outstanding audit inputs and render the four concept pairs. Final homepage selection, application implementation and launch acceptance retain their separate gates.
|
||||
|
||||
Continuation 2 November: CONTENT_ARCHITECTURE.md, INTERNATIONALISATION.md and SEO_STRATEGY.md add independent design-neutral content/routing/publication proposals. Byte-matched existing build-shell evidence confirms raw export lacks descriptive marketing HTML, canonical and hreflang. No public UI/routes/metadata implementation or final visual choice made. These source/build checks are not live SEO, performance or release qualification. The five application UI concepts remain separate from LAUNCH-01's required homepage exploration; no sixth application concept created.
|
||||
|
||||
Branch `feature/launch-site-redesign`, baseline `5cb903b989742b7a96cb22ddf4c0e24993b18980`. Documentation-only source audit. LAUNCH-00 remains IN_PROGRESS. LAUNCH-01 four actual desktop/mobile concepts are PENDING, not replaced by written descriptions. No owner design decision requested until reviewable concepts exist.
|
||||
|
||||
Next authorised work:
|
||||
|
||||
1. Inspect rendered homepage/signup and research contemporary patterns using credible public sources. Preserve existing routing and privacy boundaries.
|
||||
2. Obtain provenance-bound synthetic screenshots from accepted evidence or an isolated test environment. The committed pre-P10 visual manifest contains real PDF previews/contact sheets, not a complete set of dashboard/CV editor/mobile product captures. Inspect any image before reuse; do not touch the separate pre-p10-ux worktree.
|
||||
3. Produce four distinct, viewable desktop/mobile concepts and an asset/licence manifest. No external image/font acquisition without appropriate rights. Concept placeholders cannot be represented as real application screenshots.
|
||||
4. Present concrete concepts for mix-and-match owner feedback, then stop final implementation until explicit final-design approval. Design approval does not authorise publication.
|
||||
|
||||
No assets, app code, tests, routes, packages, production services or authenticated dashboard were changed. Rendered/browser/performance/accessibility/SEO checks NOT RUN. No production feature/pricing/language availability was asserted.
|
||||
|
||||
The delegated design task stopped at a service usage limit before saving deliverables. Parent continued the source audit and preserved this checkpoint. No design agent is running in the background.
|
||||
@@ -0,0 +1,14 @@
|
||||
# Launch screenshot and asset manifest
|
||||
|
||||
The eight product images in `concepts/assets/` are unchanged copies of real browser captures of the exported A3 React application using intercepted synthetic API fixtures. Every image was inspected and its SHA-256 matched the published evidence manifest at `49e79875d9681efab0880d7e812bb0e536b7d30c`. The prototypes show the top of each capture and link to the full source image. The fixture CV preview uses controlled HTML. These captures establish visual provenance for design review. Public reuse requires confirmation on the accepted release and separate marketing approval.
|
||||
|
||||
| Asset | Route and fixture | Runtime |
|
||||
| --- | --- | --- |
|
||||
| Applications | `/jobs`, saved community nurse role | `1246994cca9a3ba7cb89eb4605b3dc77b5d7c322` |
|
||||
| Dashboard | `/dashboard`, synthetic nurse, teacher and engineer opportunities | `a7d726738b74d13fb805f7bd4f5780bdf19110d0` |
|
||||
| CV editor | `/career/builder/3`, synthetic teacher CV and fixture preview | `b31ce6176bcb8f6a70d3e29ad4057b7cb74a1f53` |
|
||||
| Career Workspace | `/career`, synthetic profile and import review | `b31ce6176bcb8f6a70d3e29ad4057b7cb74a1f53` |
|
||||
|
||||
[Exact source paths, widths and hashes](concepts/assets/provenance.json)
|
||||
|
||||
`concepts/professions.svg` is original vector artwork for this design review. It depicts fictional people and uses no external images, marks or fonts. Prototype type uses local platform fonts and no bundled font files. No photography was sourced or licensed in this checkpoint. Any later photography, generated artwork and public screenshot variants need their own approval and asset record.
|
||||
@@ -0,0 +1,22 @@
|
||||
# SEO baseline and design-neutral proposal
|
||||
|
||||
2 November 2026. Source/available-build review only; no deployment, crawl, search-engine ranking, Lighthouse or performance score claimed.
|
||||
|
||||
## Measured raw-export baseline
|
||||
|
||||
Reused the successful local I18N static build, checking byte identity of launch-branch `app/layout.tsx`, `app/page.tsx` and `app/[[...slug]]/ClientShell.tsx` first. Their SHA256 values respectively: `8e4f0cd2776d821c958480aec5c93943674acb0fe28cd60d0822df40009cb262`, `bf661f17c1c7c06ff8fda41b1afa44144bce694c815d52c3d5a927e32063b1b1`, `0afd4379fbfaeb2059cfa860b10523b212a20dc19c64f961de77bb8572ee6791`. ClientShell disables SSR for the application. This is reused build evidence for unchanged shell sources, not a fresh launch-branch build or proof of every bundle.
|
||||
|
||||
A standard-library HTML parser excluding script/style text found only `Jobbjakt` and `You need to enable JavaScript to run this app.` in out/index.html; canonical link count 0, hreflang count 0. This confirms missing descriptive raw HTML, not an assertion that JavaScript-capable crawlers cannot index the client UI. Root metadata is generic and document language initially en. Record post-implementation comparisons against this narrow baseline.
|
||||
|
||||
## Proposed contract after design/routing approval
|
||||
|
||||
- Emit approved public headings, descriptions, feature text and FAQs in static HTML. Keep private routes and provider/account content outside the prerendered marketing boundary.
|
||||
- Give each published page a descriptive locale-specific title/description, semantic heading hierarchy, Open Graph metadata and approved social asset. Use factual SoftwareApplication/Organization structured data only when supported by the actual page; no fabricated ratings, offers or testimonials.
|
||||
- Obtain the production public origin from release-approved configuration. Do not guess a hostname or use localhost as a public canonical. Canonicals must refer to the intended published page, with query/tracking variants normalised.
|
||||
- Derive canonical/reciprocal alternate/sitemap entries from the same approved published market/content-locale inventory. Include only fully supported published variants; self and reciprocal links must agree. An unreviewed locale is absent, not an empty indexable page. Use valid language/script/region tags; country NO must not be treated as Bokmål nb.
|
||||
- Decide URL shape separately from visuals: proposed explicit `/market/{market}/{contentLocale}/...` or another approved unambiguous scheme. This is a proposal, not an added route. Preserve existing auth and application links and static-host fallback behavior; do not implement speculative duplicate country pages.
|
||||
- Keep incomplete/pre-release previews outside production index publication. Robots directives are not an authorisation boundary or protection for private content. Do not expose private or admin routes through sitemap generation.
|
||||
|
||||
## Required verification before acceptance
|
||||
|
||||
Parse exported HTML per approved locale/market; assert meaningful non-JS content, title/description/lang, one intended h1, canonical origin, reciprocal published-only alternates and sitemap membership. Check no unpublished variants, private URLs or unsupported prices/providers. Follow links in an isolated browser; test auth redirect/registration configuration, language persistence and separation from ad/document preferences. Then measure responsive/accessibility/performance budgets on realistic test conditions, preserving manual/device/native-language and deployed-origin gates. No executable SEO publishing infrastructure is introduced by this report.
|
||||
|
After Width: | Height: | Size: 78 KiB |
|
After Width: | Height: | Size: 44 KiB |
|
After Width: | Height: | Size: 155 KiB |
|
After Width: | Height: | Size: 45 KiB |
|
After Width: | Height: | Size: 98 KiB |
|
After Width: | Height: | Size: 43 KiB |
|
After Width: | Height: | Size: 193 KiB |
|
After Width: | Height: | Size: 156 KiB |
@@ -0,0 +1,101 @@
|
||||
{
|
||||
"evidenceCommit": "49e79875d9681efab0880d7e812bb0e536b7d30c",
|
||||
"images": [
|
||||
{
|
||||
"target": "assets/applications-1440.png",
|
||||
"source": "docs/ui-modernisation/visual-correction/evidence/applications-selection/ordinary-en-light-1440.png",
|
||||
"runtime": "1246994cca9a3ba7cb89eb4605b3dc77b5d7c322",
|
||||
"manifest": "docs/ui-modernisation/visual-correction/APPLICATION_SELECTION_SOURCE_MANIFEST.json",
|
||||
"route": "/jobs",
|
||||
"width": 1440,
|
||||
"locale": "en",
|
||||
"theme": "light",
|
||||
"fixture": "synthetic",
|
||||
"sha256": "98898ed330f5bb08946477367e1c95e448ee1bfea26c978c13792985de1febda"
|
||||
},
|
||||
{
|
||||
"target": "assets/applications-390.png",
|
||||
"source": "docs/ui-modernisation/visual-correction/evidence/applications-selection/ordinary-en-light-390.png",
|
||||
"runtime": "1246994cca9a3ba7cb89eb4605b3dc77b5d7c322",
|
||||
"manifest": "docs/ui-modernisation/visual-correction/APPLICATION_SELECTION_SOURCE_MANIFEST.json",
|
||||
"route": "/jobs",
|
||||
"width": 390,
|
||||
"locale": "en",
|
||||
"theme": "light",
|
||||
"fixture": "synthetic",
|
||||
"sha256": "9937bb7f328b1c0b719f46b54bf73f1cd0694c348ffe4899449d0ffcf5124d7f"
|
||||
},
|
||||
{
|
||||
"target": "assets/dashboard-1440.png",
|
||||
"source": "docs/ui-modernisation/visual-correction/evidence/dashboard/dashboard-en-light-1440.png",
|
||||
"runtime": "a7d726738b74d13fb805f7bd4f5780bdf19110d0",
|
||||
"manifest": "docs/ui-modernisation/visual-correction/DASHBOARD_DISCOVERY_SOURCE_MANIFEST.json",
|
||||
"route": "/dashboard",
|
||||
"width": 1440,
|
||||
"locale": "en",
|
||||
"theme": "light",
|
||||
"fixture": "synthetic",
|
||||
"sha256": "c19a6b87686d32102db22fe61e4ed7b697f674774f45872d0bf2f2ac64066d80"
|
||||
},
|
||||
{
|
||||
"target": "assets/dashboard-390.png",
|
||||
"source": "docs/ui-modernisation/visual-correction/evidence/dashboard/dashboard-en-light-390.png",
|
||||
"runtime": "a7d726738b74d13fb805f7bd4f5780bdf19110d0",
|
||||
"manifest": "docs/ui-modernisation/visual-correction/DASHBOARD_DISCOVERY_SOURCE_MANIFEST.json",
|
||||
"route": "/dashboard",
|
||||
"width": 390,
|
||||
"locale": "en",
|
||||
"theme": "light",
|
||||
"fixture": "synthetic",
|
||||
"sha256": "a6ae5fdaa0815e3785234ed3db9237cb3cd8418f5dbd5853b4cfc15de1442256"
|
||||
},
|
||||
{
|
||||
"target": "assets/cv-editor-1440.png",
|
||||
"source": "docs/ui-modernisation/visual-correction/evidence/career/cv-editor-en-light-1440.png",
|
||||
"runtime": "b31ce6176bcb8f6a70d3e29ad4057b7cb74a1f53",
|
||||
"manifest": "docs/ui-modernisation/visual-correction/CAREER_DOCUMENT_SOURCE_MANIFEST.json",
|
||||
"route": "/career/builder/3",
|
||||
"width": 1440,
|
||||
"locale": "en",
|
||||
"theme": "light",
|
||||
"fixture": "synthetic",
|
||||
"sha256": "e90a1c32709d376417d9af8b00d8007d53aed102f5d017a4c55cdc7371e402bc"
|
||||
},
|
||||
{
|
||||
"target": "assets/cv-editor-390.png",
|
||||
"source": "docs/ui-modernisation/visual-correction/evidence/career/cv-editor-en-light-390.png",
|
||||
"runtime": "b31ce6176bcb8f6a70d3e29ad4057b7cb74a1f53",
|
||||
"manifest": "docs/ui-modernisation/visual-correction/CAREER_DOCUMENT_SOURCE_MANIFEST.json",
|
||||
"route": "/career/builder/3",
|
||||
"width": 390,
|
||||
"locale": "en",
|
||||
"theme": "light",
|
||||
"fixture": "synthetic",
|
||||
"sha256": "b26258fe02e24f34b107739f0139391d766b3bf8a3e63a5864063e06f40a68e8"
|
||||
},
|
||||
{
|
||||
"target": "assets/career-1440.png",
|
||||
"source": "docs/ui-modernisation/visual-correction/evidence/career/overview-en-light-1440.png",
|
||||
"runtime": "b31ce6176bcb8f6a70d3e29ad4057b7cb74a1f53",
|
||||
"manifest": "docs/ui-modernisation/visual-correction/CAREER_DOCUMENT_SOURCE_MANIFEST.json",
|
||||
"route": "/career",
|
||||
"width": 1440,
|
||||
"locale": "en",
|
||||
"theme": "light",
|
||||
"fixture": "synthetic",
|
||||
"sha256": "637f8dbc0cd01d4382dd409fc0b3870c40e69bbbcb2d6efbbb3e3c6c3b8a46d2"
|
||||
},
|
||||
{
|
||||
"target": "assets/career-390.png",
|
||||
"source": "docs/ui-modernisation/visual-correction/evidence/career/overview-en-light-390.png",
|
||||
"runtime": "b31ce6176bcb8f6a70d3e29ad4057b7cb74a1f53",
|
||||
"manifest": "docs/ui-modernisation/visual-correction/CAREER_DOCUMENT_SOURCE_MANIFEST.json",
|
||||
"route": "/career",
|
||||
"width": 390,
|
||||
"locale": "en",
|
||||
"theme": "light",
|
||||
"fixture": "synthetic",
|
||||
"sha256": "21f367b3848fae24dfe4abf4271c5c9c73fbf4c2a8f1aba5dd6faff61ed6cee9"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,558 @@
|
||||
:root {
|
||||
font-family: "Segoe UI",Arial,sans-serif;
|
||||
line-height: 1.5;
|
||||
color: #241b35;
|
||||
background: #f7f6fa;
|
||||
}
|
||||
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
a {
|
||||
color: inherit;
|
||||
text-underline-offset: .22em;
|
||||
}
|
||||
|
||||
a:focus-visible {
|
||||
outline: 3px solid currentColor;
|
||||
outline-offset: 4px;
|
||||
}
|
||||
|
||||
h1,h2,h3,p,figure {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
p {
|
||||
max-width: 62ch;
|
||||
}
|
||||
|
||||
img {
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: clamp(2.8rem,6.6vw,7rem);
|
||||
line-height: .99;
|
||||
letter-spacing: -.065em;
|
||||
font-weight: 760;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: clamp(1.85rem,3.4vw,3.3rem);
|
||||
letter-spacing: -.04em;
|
||||
line-height: 1.05;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 1.18rem;
|
||||
line-height: 1.25;
|
||||
}
|
||||
|
||||
.wrap {
|
||||
width: min(100% - 72px,1240px);
|
||||
margin-inline: auto;
|
||||
}
|
||||
|
||||
.review {
|
||||
background: #241b35;
|
||||
color: #fff;
|
||||
font-size: .85rem;
|
||||
}
|
||||
|
||||
.review .wrap {
|
||||
min-height: 44px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: .7rem;
|
||||
flex-wrap: wrap;
|
||||
padding-block: .35rem;
|
||||
}
|
||||
|
||||
.top,.nav,.actions,.bottom {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 1.25rem;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.top,.bottom {
|
||||
justify-content: space-between;
|
||||
padding-block: 1.1rem;
|
||||
}
|
||||
|
||||
.brand {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: .55rem;
|
||||
text-decoration: none;
|
||||
font-size: 1.2rem;
|
||||
font-weight: 770;
|
||||
}
|
||||
|
||||
.mark {
|
||||
display: grid;
|
||||
place-items: center;
|
||||
width: 1.8rem;
|
||||
height: 1.8rem;
|
||||
border-radius: .5rem;
|
||||
background: #704fa6;
|
||||
color: #fff;
|
||||
font-weight: 800;
|
||||
}
|
||||
|
||||
.nav {
|
||||
font-size: .9rem;
|
||||
}
|
||||
|
||||
.nav a {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
min-height: 44px;
|
||||
}
|
||||
|
||||
.hero,.section {
|
||||
padding-block: clamp(2.7rem,6vw,6rem);
|
||||
}
|
||||
|
||||
.hero-copy {
|
||||
display: grid;
|
||||
gap: 1.35rem;
|
||||
justify-items: start;
|
||||
align-content: center;
|
||||
}
|
||||
|
||||
.lede {
|
||||
font-size: clamp(1.07rem,1.7vw,1.34rem);
|
||||
max-width: 38ch;
|
||||
}
|
||||
|
||||
.button {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
min-height: 44px;
|
||||
border: 1px solid transparent;
|
||||
padding: .55rem 1rem;
|
||||
border-radius: .45rem;
|
||||
text-decoration: none;
|
||||
font-weight: 700;
|
||||
background: var(--accent,#563282);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.button.secondary {
|
||||
background: none;
|
||||
border-color: currentColor;
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
.product {
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.product a {
|
||||
display: block;
|
||||
overflow: hidden;
|
||||
border: 1px solid #aaa0b9;
|
||||
border-radius: .65rem;
|
||||
background: white;
|
||||
}
|
||||
|
||||
.product img {
|
||||
aspect-ratio: 1.7;
|
||||
object-fit: cover;
|
||||
object-position: top;
|
||||
}
|
||||
|
||||
.product figcaption,.fine {
|
||||
font-size: .88rem;
|
||||
margin-top: .55rem;
|
||||
}
|
||||
|
||||
.product .phone {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.eyebrow {
|
||||
font-size: .9rem;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.stack {
|
||||
display: grid;
|
||||
gap: 1rem;
|
||||
}
|
||||
|
||||
.section h2 {
|
||||
max-width: 20ch;
|
||||
}
|
||||
|
||||
.grid,.steps,.plans {
|
||||
display: grid;
|
||||
gap: 1rem;
|
||||
grid-template-columns: repeat(3,minmax(0,1fr));
|
||||
margin-top: 1.75rem;
|
||||
}
|
||||
|
||||
.steps {
|
||||
padding-left: 1.6rem;
|
||||
}
|
||||
|
||||
.steps li,.feature,.plan {
|
||||
padding: 1rem;
|
||||
border-top: 1px solid currentColor;
|
||||
}
|
||||
|
||||
.steps li::marker {
|
||||
font-weight: 750;
|
||||
}
|
||||
|
||||
.feature p,.plan p,.steps p {
|
||||
margin-top: .45rem;
|
||||
}
|
||||
|
||||
.plans {
|
||||
grid-template-columns: repeat(2,minmax(0,1fr));
|
||||
}
|
||||
|
||||
.plan {
|
||||
border: 1px solid currentColor;
|
||||
border-radius: .55rem;
|
||||
}
|
||||
|
||||
.section-alt {
|
||||
background: var(--soft,#eee8f6);
|
||||
}
|
||||
|
||||
.foot {
|
||||
border-top: 1px solid #aaa0b9;
|
||||
}
|
||||
|
||||
.bottom a {
|
||||
display: inline-flex;
|
||||
min-height: 44px;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.skip {
|
||||
position: absolute;
|
||||
left: 1rem;
|
||||
top: -5rem;
|
||||
z-index: 10;
|
||||
background: white;
|
||||
color: #241b35;
|
||||
padding: .7rem;
|
||||
}
|
||||
|
||||
.skip:focus {
|
||||
top: .5rem;
|
||||
}
|
||||
|
||||
.minimal {
|
||||
--accent: #543586;
|
||||
--soft: #edf0f8;
|
||||
background: #fcfcfe;
|
||||
color: #25213b;
|
||||
}
|
||||
|
||||
.minimal .hero-inner {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0,.86fr) minmax(0,1.14fr);
|
||||
gap: clamp(2rem,5vw,5rem);
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.minimal h1 {
|
||||
max-width: 10ch;
|
||||
}
|
||||
|
||||
.minimal .hero {
|
||||
border-top: 1px solid #dad6e7;
|
||||
}
|
||||
|
||||
.minimal .product {
|
||||
box-shadow: 0 28px 70px -50px #352450;
|
||||
}
|
||||
|
||||
.premium {
|
||||
--accent: #6c3da1;
|
||||
--soft: #ece5f8;
|
||||
color: #26163c;
|
||||
background: #fbf9ff;
|
||||
}
|
||||
|
||||
.premium .hero {
|
||||
background: radial-gradient(ellipse at 50% 100%,#61428c 0,#32214d 47%,#241733 78%);
|
||||
color: #fff;
|
||||
padding-bottom: 3.5rem;
|
||||
}
|
||||
|
||||
.premium .hero-copy {
|
||||
text-align: center;
|
||||
justify-items: center;
|
||||
}
|
||||
|
||||
.premium h1 {
|
||||
max-width: 13ch;
|
||||
}
|
||||
|
||||
.premium .hero .button {
|
||||
background: #f4ebff;
|
||||
color: #301b48;
|
||||
}
|
||||
|
||||
.premium .hero .secondary {
|
||||
color: white;
|
||||
background: none;
|
||||
}
|
||||
|
||||
.premium .product {
|
||||
max-width: 930px;
|
||||
margin: 2rem auto 0;
|
||||
}
|
||||
|
||||
.premium .product a {
|
||||
border: 9px solid #9073ba;
|
||||
border-radius: 1.25rem;
|
||||
}
|
||||
|
||||
.premium .feature {
|
||||
border: 1px solid #c4addd;
|
||||
border-radius: .8rem;
|
||||
padding: 1.35rem;
|
||||
}
|
||||
|
||||
.human {
|
||||
--accent: #285247;
|
||||
--soft: #e4eee6;
|
||||
color: #183a31;
|
||||
background: #fbfaf4;
|
||||
}
|
||||
|
||||
.human .mark {
|
||||
background: #285247;
|
||||
}
|
||||
|
||||
.human .hero {
|
||||
background: #e4eee6;
|
||||
}
|
||||
|
||||
.human .hero-inner {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0,.95fr) minmax(0,1.05fr);
|
||||
gap: clamp(2rem,4vw,4rem);
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.human h1 {
|
||||
font-family: Georgia,serif;
|
||||
font-weight: 700;
|
||||
letter-spacing: -.055em;
|
||||
max-width: 12ch;
|
||||
}
|
||||
|
||||
.human .art {
|
||||
border-radius: 3rem .4rem 3rem .4rem;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.human .showcase {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0,.75fr) minmax(0,1.25fr);
|
||||
gap: 2rem;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.human .feature {
|
||||
padding-inline: 0;
|
||||
}
|
||||
|
||||
.editorial {
|
||||
--accent: #183761;
|
||||
--soft: #e9eff8;
|
||||
background: #f8fafc;
|
||||
color: #183761;
|
||||
}
|
||||
|
||||
.editorial .mark {
|
||||
background: #183761;
|
||||
}
|
||||
|
||||
.editorial .hero {
|
||||
padding-top: 2rem;
|
||||
}
|
||||
|
||||
.editorial .hero-inner {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0,1.1fr) minmax(0,.9fr);
|
||||
gap: 2rem;
|
||||
border-top: 3px solid currentColor;
|
||||
padding-top: 1.5rem;
|
||||
align-items: end;
|
||||
}
|
||||
|
||||
.editorial h1 {
|
||||
font-family: Georgia,serif;
|
||||
font-size: clamp(3rem,8.2vw,9.2rem);
|
||||
font-weight: 600;
|
||||
max-width: 10ch;
|
||||
}
|
||||
|
||||
.editorial .product {
|
||||
padding-top: 1.5rem;
|
||||
border-top: 1px solid currentColor;
|
||||
}
|
||||
|
||||
.editorial .product a {
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
.editorial .section .wrap {
|
||||
border-top: 2px solid currentColor;
|
||||
padding-top: 1rem;
|
||||
}
|
||||
|
||||
.editorial .grid {
|
||||
grid-template-columns: 1fr 1fr;
|
||||
}
|
||||
|
||||
.editorial .feature:first-child {
|
||||
grid-column: 1/-1;
|
||||
}
|
||||
|
||||
.gallery {
|
||||
padding-block: 3rem;
|
||||
}
|
||||
|
||||
.gallery h1 {
|
||||
font-size: clamp(2.5rem,5vw,5rem);
|
||||
}
|
||||
|
||||
.gallery-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2,minmax(0,1fr));
|
||||
gap: 1.5rem;
|
||||
margin-top: 2rem;
|
||||
}
|
||||
|
||||
.gallery-card {
|
||||
background: #fff;
|
||||
padding: 1rem;
|
||||
border: 1px solid #aaa0b9;
|
||||
border-radius: .6rem;
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.gallery-card img {
|
||||
aspect-ratio: 1.6;
|
||||
object-fit: cover;
|
||||
object-position: top;
|
||||
border: 1px solid #ddd4ea;
|
||||
}
|
||||
|
||||
.gallery-card h2 {
|
||||
font-size: 1.6rem;
|
||||
margin-block: .8rem .4rem;
|
||||
}
|
||||
|
||||
.gallery-card .nav {
|
||||
gap: .9rem;
|
||||
margin-top: .5rem;
|
||||
}
|
||||
|
||||
@media(max-width:780px) {
|
||||
.wrap {
|
||||
width: calc(100% - 36px);
|
||||
}
|
||||
.minimal .hero-inner,.human .hero-inner,.human .showcase,.editorial .hero-inner {
|
||||
grid-template-columns: 1fr;
|
||||
gap: 1.6rem;
|
||||
}
|
||||
.top {
|
||||
gap: .45rem;
|
||||
padding-block: .55rem;
|
||||
}
|
||||
.nav {
|
||||
gap: .8rem;
|
||||
}
|
||||
.top .nav {
|
||||
width: 100%;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.product a {
|
||||
max-width: 380px;
|
||||
}
|
||||
.product img {
|
||||
aspect-ratio: 4/5;
|
||||
}
|
||||
.product .desktop {
|
||||
display: none;
|
||||
}
|
||||
.product .phone {
|
||||
display: block;
|
||||
}
|
||||
.premium .product a {
|
||||
margin-inline: auto;
|
||||
}
|
||||
.premium .product figcaption {
|
||||
text-align: center;
|
||||
margin-inline: auto;
|
||||
}
|
||||
.premium .hero-copy {
|
||||
text-align: left;
|
||||
justify-items: start;
|
||||
}
|
||||
.human .art {
|
||||
max-width: 580px;
|
||||
}
|
||||
.editorial .hero-inner {
|
||||
align-items: start;
|
||||
}
|
||||
.editorial .product {
|
||||
padding-top: 1rem;
|
||||
}
|
||||
.gallery-grid {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
}
|
||||
|
||||
@media(max-width:520px) {
|
||||
.grid,.steps,.plans,.editorial .grid {
|
||||
grid-template-columns: 1fr;
|
||||
gap: .55rem;
|
||||
}
|
||||
.editorial .feature:first-child {
|
||||
grid-column: auto;
|
||||
}
|
||||
.top .nav {
|
||||
justify-content: flex-start;
|
||||
}
|
||||
.review .wrap {
|
||||
padding-block: .45rem;
|
||||
}
|
||||
.actions {
|
||||
gap: .65rem;
|
||||
}
|
||||
.bottom {
|
||||
align-items: flex-start;
|
||||
}
|
||||
.gallery {
|
||||
padding-block: 2rem;
|
||||
}
|
||||
.premium .hero .product a {
|
||||
border-width: 6px;
|
||||
}
|
||||
}
|
||||
|
||||
.review a {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
min-height: 32px;
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="robots" content="noindex,nofollow">
|
||||
<title>D · Modern Editorial | Jobjakt design review</title>
|
||||
<link rel="stylesheet" href="concepts.css">
|
||||
</head>
|
||||
<body class="editorial">
|
||||
<a class="skip" href="#main">Skip to content</a>
|
||||
<div class="review"><div class="wrap"><span>Concept D · Modern Editorial · Design review</span><a href="index.html">Compare concepts</a></div></div>
|
||||
<header class="top wrap">
|
||||
<a class="brand" href="#main"><span class="mark" aria-hidden="true">✓</span>Jobjakt</a>
|
||||
<nav class="nav" aria-label="Main"><a href="#features">Features</a><a href="#steps">How it works</a><a href="#plans">Plans</a><a href="#registration">Sign in</a></nav>
|
||||
</header>
|
||||
<main id="main">
|
||||
<section class="hero">
|
||||
<div class="hero-inner wrap">
|
||||
<div class="hero-copy">
|
||||
<h1>Put your experience to work.</h1>
|
||||
<p class="lede">A practical workspace for the applications, CVs and career details behind your next role.</p>
|
||||
<div class="actions"><a class="button" href="#registration">Create an account</a><a class="button secondary" href="#features">Explore Jobjakt</a></div>
|
||||
</div>
|
||||
<figure class="product">
|
||||
<a class="desktop" href="assets/career-1440.png" aria-label="Open full desktop product screenshot"><img src="assets/career-1440.png" alt="Jobjakt Career Workspace with sections and an import awaiting review"></a>
|
||||
<a class="phone" href="assets/career-390.png" aria-label="Open full phone product screenshot"><img src="assets/career-390.png" alt="Jobjakt Career Workspace with sections and an import awaiting review"></a>
|
||||
<figcaption>Development screenshot with synthetic records. Select it for the full capture.</figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
</section>
|
||||
<section class="section" id="features">
|
||||
<div class="wrap">
|
||||
<div class="stack">
|
||||
<div class="stack"><p class="eyebrow">The Jobjakt guide</p><h2>The work behind a job search.</h2></div>
|
||||
|
||||
</div>
|
||||
<div class="grid">
|
||||
<article class="feature"><h3>Track applications</h3><p>Save opportunities, review your progress and keep a record of what comes next.</p></article>
|
||||
<article class="feature"><h3>Keep career details together</h3><p>Build a Career Profile with experience you can refer to when preparing a CV.</p></article>
|
||||
<article class="feature"><h3>Prepare a CV</h3><p>Review a document in the editor before deciding what to send.</p></article>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="section section-alt" id="steps">
|
||||
<div class="wrap"><h2>How it works</h2>
|
||||
<ol class="steps">
|
||||
<li><h3>Add your experience</h3><p>Start with your Career Profile and record the details you want to reuse.</p></li>
|
||||
<li><h3>Prepare your CV</h3><p>Put a document together and review it before exporting.</p></li>
|
||||
<li><h3>Keep track of applications</h3><p>Record the roles you are pursuing, the status and your next step.</p></li>
|
||||
</ol>
|
||||
</div>
|
||||
</section>
|
||||
<section class="section" id="plans">
|
||||
<div class="wrap"><h2>Plans and pricing</h2>
|
||||
<div class="plans">
|
||||
<article class="plan"><h3>Free</h3><p>Plan layout preview. Entitlements and availability require release verification.</p></article>
|
||||
<article class="plan"><h3>Pro</h3><p>Plan layout preview. Price, billing terms and eligibility require approval.</p></article>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="section section-alt" id="registration">
|
||||
<div class="wrap stack"><h2>Ready to start your next search?</h2><p>Design preview. Registration and sign-in are inactive in this mockup.</p></div>
|
||||
</section>
|
||||
</main>
|
||||
<footer class="foot"><div class="bottom wrap"><span class="brand"><span class="mark" aria-hidden="true">✓</span>Jobjakt</span><span>Privacy and terms links pending approval</span><a href="index.html">Compare concepts</a></div></footer>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,68 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="robots" content="noindex,nofollow">
|
||||
<title>C · Friendly and Human | Jobjakt design review</title>
|
||||
<link rel="stylesheet" href="concepts.css">
|
||||
</head>
|
||||
<body class="human">
|
||||
<a class="skip" href="#main">Skip to content</a>
|
||||
<div class="review"><div class="wrap"><span>Concept C · Friendly and Human · Design review</span><a href="index.html">Compare concepts</a></div></div>
|
||||
<header class="top wrap">
|
||||
<a class="brand" href="#main"><span class="mark" aria-hidden="true">✓</span>Jobjakt</a>
|
||||
<nav class="nav" aria-label="Main"><a href="#features">Features</a><a href="#steps">How it works</a><a href="#plans">Plans</a><a href="#registration">Sign in</a></nav>
|
||||
</header>
|
||||
<main id="main">
|
||||
<section class="hero">
|
||||
<div class="hero-inner wrap">
|
||||
<div class="hero-copy">
|
||||
<h1>A little more room for your next chapter.</h1>
|
||||
<p class="lede">Applying to a school, clinic, workshop or somewhere entirely new? Put your experience to work with a space to organise the search.</p>
|
||||
<div class="actions"><a class="button" href="#registration">Create an account</a><a class="button secondary" href="#features">Explore Jobjakt</a></div>
|
||||
</div>
|
||||
<figure class="art"><img src="professions.svg" alt="Illustration of three people working in teaching, healthcare and electrical trades" width="720" height="525"></figure>
|
||||
</div>
|
||||
</section>
|
||||
<section class="section" id="features">
|
||||
<div class="wrap">
|
||||
<div class="showcase">
|
||||
<div class="stack"><p class="eyebrow">From experience to application</p><h2>Bring your experience with you.</h2></div>
|
||||
<figure class="product">
|
||||
<a class="desktop" href="assets/cv-editor-1440.png" aria-label="Open full desktop product screenshot"><img src="assets/cv-editor-1440.png" alt="Jobjakt CV Builder open on a synthetic teacher CV"></a>
|
||||
<a class="phone" href="assets/cv-editor-390.png" aria-label="Open full phone product screenshot"><img src="assets/cv-editor-390.png" alt="Jobjakt CV Builder open on a synthetic teacher CV"></a>
|
||||
<figcaption>Development screenshot with synthetic records. Select it for the full capture.</figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
<div class="grid">
|
||||
<article class="feature"><h3>Track applications</h3><p>Save opportunities, review your progress and keep a record of what comes next.</p></article>
|
||||
<article class="feature"><h3>Keep career details together</h3><p>Build a Career Profile with experience you can refer to when preparing a CV.</p></article>
|
||||
<article class="feature"><h3>Prepare a CV</h3><p>Review a document in the editor before deciding what to send.</p></article>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="section section-alt" id="steps">
|
||||
<div class="wrap"><h2>How it works</h2>
|
||||
<ol class="steps">
|
||||
<li><h3>Add your experience</h3><p>Start with your Career Profile and record the details you want to reuse.</p></li>
|
||||
<li><h3>Prepare your CV</h3><p>Put a document together and review it before exporting.</p></li>
|
||||
<li><h3>Keep track of applications</h3><p>Record the roles you are pursuing, the status and your next step.</p></li>
|
||||
</ol>
|
||||
</div>
|
||||
</section>
|
||||
<section class="section" id="plans">
|
||||
<div class="wrap"><h2>Plans and pricing</h2>
|
||||
<div class="plans">
|
||||
<article class="plan"><h3>Free</h3><p>Plan layout preview. Entitlements and availability require release verification.</p></article>
|
||||
<article class="plan"><h3>Pro</h3><p>Plan layout preview. Price, billing terms and eligibility require approval.</p></article>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="section section-alt" id="registration">
|
||||
<div class="wrap stack"><h2>Ready to start your next search?</h2><p>Design preview. Registration and sign-in are inactive in this mockup.</p></div>
|
||||
</section>
|
||||
</main>
|
||||
<footer class="foot"><div class="bottom wrap"><span class="brand"><span class="mark" aria-hidden="true">✓</span>Jobjakt</span><span>Privacy and terms links pending approval</span><a href="index.html">Compare concepts</a></div></footer>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,44 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="robots" content="noindex,nofollow">
|
||||
<title>Homepage concepts | Jobjakt design review</title>
|
||||
<link rel="stylesheet" href="concepts.css">
|
||||
</head>
|
||||
<body class="">
|
||||
<a class="skip" href="#main">Skip to content</a>
|
||||
<main id="main" class="gallery wrap">
|
||||
<h1>Homepage concepts</h1>
|
||||
<p class="lede">Compare four approaches and choose any combination of hero, navigation, typography, imagery and layout.</p>
|
||||
<p class="fine">Static design review. The product captures show synthetic development fixtures.</p>
|
||||
<div class="gallery-grid">
|
||||
<article class="gallery-card">
|
||||
<a href="minimal.html" aria-label="Open concept A: Modern Minimalist"><img src="renders/minimal-desktop.png" alt="Desktop mockup of Modern Minimalist"></a>
|
||||
<h2>A · Modern Minimalist</h2>
|
||||
<p>A split hero with clear registration and a genuine application preview.</p>
|
||||
<div class="nav"><a href="minimal.html">Responsive page</a><a href="renders/minimal-desktop.png">Full desktop</a><a href="renders/minimal-phone.png">Full phone</a></div>
|
||||
</article>
|
||||
<article class="gallery-card">
|
||||
<a href="premium.html" aria-label="Open concept B: Premium SaaS"><img src="renders/premium-desktop.png" alt="Desktop mockup of Premium SaaS"></a>
|
||||
<h2>B · Premium SaaS</h2>
|
||||
<p>A theatre-style dashboard preview below a centred violet hero.</p>
|
||||
<div class="nav"><a href="premium.html">Responsive page</a><a href="renders/premium-desktop.png">Full desktop</a><a href="renders/premium-phone.png">Full phone</a></div>
|
||||
</article>
|
||||
<article class="gallery-card">
|
||||
<a href="human.html" aria-label="Open concept C: Friendly and Human"><img src="renders/human-desktop.png" alt="Desktop mockup of Friendly and Human"></a>
|
||||
<h2>C · Friendly and Human</h2>
|
||||
<p>Illustrated professions lead into a genuine teacher CV editing example.</p>
|
||||
<div class="nav"><a href="human.html">Responsive page</a><a href="renders/human-desktop.png">Full desktop</a><a href="renders/human-phone.png">Full phone</a></div>
|
||||
</article>
|
||||
<article class="gallery-card">
|
||||
<a href="editorial.html" aria-label="Open concept D: Modern Editorial"><img src="renders/editorial-desktop.png" alt="Desktop mockup of Modern Editorial"></a>
|
||||
<h2>D · Modern Editorial</h2>
|
||||
<p>A typographic masthead and an asymmetric Career Workspace showcase.</p>
|
||||
<div class="nav"><a href="editorial.html">Responsive page</a><a href="renders/editorial-desktop.png">Full desktop</a><a href="renders/editorial-phone.png">Full phone</a></div>
|
||||
</article>
|
||||
</div>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,68 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="robots" content="noindex,nofollow">
|
||||
<title>A · Modern Minimalist | Jobjakt design review</title>
|
||||
<link rel="stylesheet" href="concepts.css">
|
||||
</head>
|
||||
<body class="minimal">
|
||||
<a class="skip" href="#main">Skip to content</a>
|
||||
<div class="review"><div class="wrap"><span>Concept A · Modern Minimalist · Design review</span><a href="index.html">Compare concepts</a></div></div>
|
||||
<header class="top wrap">
|
||||
<a class="brand" href="#main"><span class="mark" aria-hidden="true">✓</span>Jobjakt</a>
|
||||
<nav class="nav" aria-label="Main"><a href="#features">Features</a><a href="#steps">How it works</a><a href="#plans">Plans</a><a href="#registration">Sign in</a></nav>
|
||||
</header>
|
||||
<main id="main">
|
||||
<section class="hero">
|
||||
<div class="hero-inner wrap">
|
||||
<div class="hero-copy">
|
||||
<h1>Your job search, organised.</h1>
|
||||
<p class="lede">Keep applications, career details and CVs together, so you can see what needs your attention next.</p>
|
||||
<div class="actions"><a class="button" href="#registration">Create an account</a><a class="button secondary" href="#features">Explore Jobjakt</a></div>
|
||||
</div>
|
||||
<figure class="product">
|
||||
<a class="desktop" href="assets/applications-1440.png" aria-label="Open full desktop product screenshot"><img src="assets/applications-1440.png" alt="Jobjakt application table with a saved community nurse role"></a>
|
||||
<a class="phone" href="assets/applications-390.png" aria-label="Open full phone product screenshot"><img src="assets/applications-390.png" alt="Jobjakt application table with a saved community nurse role"></a>
|
||||
<figcaption>Development screenshot with synthetic records. Select it for the full capture.</figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
</section>
|
||||
<section class="section" id="features">
|
||||
<div class="wrap">
|
||||
<div class="stack">
|
||||
<div class="stack"><p class="eyebrow">A workspace for the whole job search</p><h2>Keep the next step in view.</h2></div>
|
||||
|
||||
</div>
|
||||
<div class="grid">
|
||||
<article class="feature"><h3>Track applications</h3><p>Save opportunities, review your progress and keep a record of what comes next.</p></article>
|
||||
<article class="feature"><h3>Keep career details together</h3><p>Build a Career Profile with experience you can refer to when preparing a CV.</p></article>
|
||||
<article class="feature"><h3>Prepare a CV</h3><p>Review a document in the editor before deciding what to send.</p></article>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="section section-alt" id="steps">
|
||||
<div class="wrap"><h2>How it works</h2>
|
||||
<ol class="steps">
|
||||
<li><h3>Add your experience</h3><p>Start with your Career Profile and record the details you want to reuse.</p></li>
|
||||
<li><h3>Prepare your CV</h3><p>Put a document together and review it before exporting.</p></li>
|
||||
<li><h3>Keep track of applications</h3><p>Record the roles you are pursuing, the status and your next step.</p></li>
|
||||
</ol>
|
||||
</div>
|
||||
</section>
|
||||
<section class="section" id="plans">
|
||||
<div class="wrap"><h2>Plans and pricing</h2>
|
||||
<div class="plans">
|
||||
<article class="plan"><h3>Free</h3><p>Plan layout preview. Entitlements and availability require release verification.</p></article>
|
||||
<article class="plan"><h3>Pro</h3><p>Plan layout preview. Price, billing terms and eligibility require approval.</p></article>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="section section-alt" id="registration">
|
||||
<div class="wrap stack"><h2>Ready to start your next search?</h2><p>Design preview. Registration and sign-in are inactive in this mockup.</p></div>
|
||||
</section>
|
||||
</main>
|
||||
<footer class="foot"><div class="bottom wrap"><span class="brand"><span class="mark" aria-hidden="true">✓</span>Jobjakt</span><span>Privacy and terms links pending approval</span><a href="index.html">Compare concepts</a></div></footer>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,68 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="robots" content="noindex,nofollow">
|
||||
<title>B · Premium SaaS | Jobjakt design review</title>
|
||||
<link rel="stylesheet" href="concepts.css">
|
||||
</head>
|
||||
<body class="premium">
|
||||
<a class="skip" href="#main">Skip to content</a>
|
||||
<div class="review"><div class="wrap"><span>Concept B · Premium SaaS · Design review</span><a href="index.html">Compare concepts</a></div></div>
|
||||
<header class="top wrap">
|
||||
<a class="brand" href="#main"><span class="mark" aria-hidden="true">✓</span>Jobjakt</a>
|
||||
<nav class="nav" aria-label="Main"><a href="#features">Features</a><a href="#steps">How it works</a><a href="#plans">Plans</a><a href="#registration">Sign in</a></nav>
|
||||
</header>
|
||||
<main id="main">
|
||||
<section class="hero">
|
||||
<div class="hero-inner wrap">
|
||||
<div class="hero-copy">
|
||||
<h1>Make the next move with a plan.</h1>
|
||||
<p class="lede">Save the roles you want to pursue, prepare documents and see your applications move forward.</p>
|
||||
<div class="actions"><a class="button" href="#registration">Create an account</a><a class="button secondary" href="#features">Explore Jobjakt</a></div>
|
||||
</div>
|
||||
<figure class="product">
|
||||
<a class="desktop" href="assets/dashboard-1440.png" aria-label="Open full desktop product screenshot"><img src="assets/dashboard-1440.png" alt="Jobjakt dashboard showing synthetic nursing, teaching and engineering applications"></a>
|
||||
<a class="phone" href="assets/dashboard-390.png" aria-label="Open full phone product screenshot"><img src="assets/dashboard-390.png" alt="Jobjakt dashboard showing synthetic nursing, teaching and engineering applications"></a>
|
||||
<figcaption>Development screenshot with synthetic records. Select it for the full capture.</figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
</section>
|
||||
<section class="section" id="features">
|
||||
<div class="wrap">
|
||||
<div class="stack">
|
||||
<div class="stack"><p class="eyebrow">The workspace</p><h2>See what needs your attention.</h2></div>
|
||||
|
||||
</div>
|
||||
<div class="grid">
|
||||
<article class="feature"><h3>Track applications</h3><p>Save opportunities, review your progress and keep a record of what comes next.</p></article>
|
||||
<article class="feature"><h3>Keep career details together</h3><p>Build a Career Profile with experience you can refer to when preparing a CV.</p></article>
|
||||
<article class="feature"><h3>Prepare a CV</h3><p>Review a document in the editor before deciding what to send.</p></article>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="section section-alt" id="steps">
|
||||
<div class="wrap"><h2>How it works</h2>
|
||||
<ol class="steps">
|
||||
<li><h3>Add your experience</h3><p>Start with your Career Profile and record the details you want to reuse.</p></li>
|
||||
<li><h3>Prepare your CV</h3><p>Put a document together and review it before exporting.</p></li>
|
||||
<li><h3>Keep track of applications</h3><p>Record the roles you are pursuing, the status and your next step.</p></li>
|
||||
</ol>
|
||||
</div>
|
||||
</section>
|
||||
<section class="section" id="plans">
|
||||
<div class="wrap"><h2>Plans and pricing</h2>
|
||||
<div class="plans">
|
||||
<article class="plan"><h3>Free</h3><p>Plan layout preview. Entitlements and availability require release verification.</p></article>
|
||||
<article class="plan"><h3>Pro</h3><p>Plan layout preview. Price, billing terms and eligibility require approval.</p></article>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="section section-alt" id="registration">
|
||||
<div class="wrap stack"><h2>Ready to start your next search?</h2><p>Design preview. Registration and sign-in are inactive in this mockup.</p></div>
|
||||
</section>
|
||||
</main>
|
||||
<footer class="foot"><div class="bottom wrap"><span class="brand"><span class="mark" aria-hidden="true">✓</span>Jobjakt</span><span>Privacy and terms links pending approval</span><a href="index.html">Compare concepts</a></div></footer>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,40 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 525">
|
||||
<rect width="720" height="525" fill="#d3e2d7"/>
|
||||
<path d="M0 340C115 300 200 364 327 337S550 276 720 324V525H0Z" fill="#b3cebf"/>
|
||||
<circle cx="572" cy="121" r="71" fill="#f6db97"/>
|
||||
<path d="M40 102h157v105H40z" fill="#48776b" stroke="#f2f1e6" stroke-width="8"/>
|
||||
<path d="M60 129h104m-104 24h81m-81 24h38" stroke="#f2f1e6" stroke-width="4" stroke-linecap="round"/>
|
||||
<path d="M478 114h114v126H478z" fill="none" stroke="#eef4ed" stroke-width="4"/>
|
||||
<path d="M494 145h28v-24h20v24h28v19h-28v25h-20v-25h-28z" fill="#eef4ed"/>
|
||||
<path d="M647 195l-23 42h18l-8 29 32-43h-21l13-28z" fill="#36595a"/>
|
||||
<ellipse cx="357" cy="467" rx="312" ry="29" fill="#91b7a5"/>
|
||||
<!-- Teacher, with an open book. -->
|
||||
<path d="M67 458l15-94c8-48 31-76 63-83l64 1c35 9 59 38 66 84l13 92z" fill="#bb674f"/>
|
||||
<path d="M158 262h43v50c-13 14-31 14-43 0z" fill="#a65d48"/>
|
||||
<path d="M125 218c0-41 22-68 55-68 36 0 60 32 58 68l-11 52c-12 21-29 33-48 33-31 0-53-24-54-57z" fill="#c87e5a"/>
|
||||
<path d="M121 225c-18-44 8-85 56-88 38-3 66 22 65 64-28 2-53-12-68-32-10 22-29 35-53 37z" fill="#392638"/>
|
||||
<path d="M116 370l61 21 67-21-6 72-61 22-58-21z" fill="#f7e4ab"/>
|
||||
<path d="M177 391v73m-45-59 32 11m23-1 42-12" stroke="#aa8551" stroke-width="3"/>
|
||||
<!-- Nurse, with scrubs and badge. -->
|
||||
<path d="M240 461l20-103c11-50 36-82 76-91l65 1c44 9 74 41 82 90l15 103z" fill="#4a72a4"/>
|
||||
<path d="M337 248h49v52l-24 36-25-36z" fill="#855042"/>
|
||||
<path d="M302 205c0-39 25-65 60-65 36 0 62 27 61 65l-7 44c-12 30-31 44-55 44-27 0-47-17-56-44z" fill="#a86854"/>
|
||||
<path d="M298 219c-17-57 15-94 62-94 47 0 74 28 67 73-26-6-45-19-58-41-19 24-42 36-71 41z" fill="#282c3b"/>
|
||||
<path d="M324 276l38 52 38-52" fill="none" stroke="#e6ecf7" stroke-width="5" stroke-linecap="round"/>
|
||||
<rect x="385" y="353" width="45" height="30" rx="5" fill="#f4f0e0"/>
|
||||
<path d="M396 367h23" stroke="#4a72a4" stroke-width="3" stroke-linecap="round"/>
|
||||
<!-- Tradesperson, with a work jacket and hard hat. -->
|
||||
<path d="M441 460l13-91c10-52 35-81 73-90l64 1c36 8 66 38 75 89l13 91z" fill="#36595a"/>
|
||||
<path d="M536 262h48v51l-25 21-23-21z" fill="#b77957"/>
|
||||
<path d="M503 222c0-36 25-65 57-65 33 0 59 29 59 65l-6 38c-12 28-28 41-54 41-24 0-44-15-54-41z" fill="#d39873"/>
|
||||
<path d="M500 211c-2-40 21-65 60-65 37 0 62 26 61 65z" fill="#e9b85c"/>
|
||||
<path d="M489 213h143m-72-65v51" stroke="#9d6d34" stroke-width="5" stroke-linecap="round"/>
|
||||
<path d="M514 311l-20 151m105-151 25 151" stroke="#e8bd6e" stroke-width="15"/>
|
||||
<path d="M554 356h12l-8 17h12l-21 25 7-20h-12z" fill="#f6db97"/>
|
||||
<g fill="#30283a">
|
||||
<circle cx="162" cy="229" r="3.2"/><circle cx="204" cy="229" r="3.2"/>
|
||||
<circle cx="341" cy="219" r="3.2"/><circle cx="381" cy="219" r="3.2"/>
|
||||
<circle cx="539" cy="231" r="3.2"/><circle cx="580" cy="231" r="3.2"/>
|
||||
</g>
|
||||
<path d="M175 251q8 6 17 0m162-8q8 6 17 0m181 12q8 6 17 0" fill="none" stroke="#663d42" stroke-width="3" stroke-linecap="round"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.9 KiB |
@@ -0,0 +1,146 @@
|
||||
{
|
||||
"checks": [
|
||||
{
|
||||
"page": "minimal",
|
||||
"width": 1440,
|
||||
"height": 1000,
|
||||
"passed": true,
|
||||
"axeViolations": []
|
||||
},
|
||||
{
|
||||
"page": "minimal",
|
||||
"width": 768,
|
||||
"height": 1024,
|
||||
"passed": true,
|
||||
"axeViolations": []
|
||||
},
|
||||
{
|
||||
"page": "minimal",
|
||||
"width": 390,
|
||||
"height": 844,
|
||||
"passed": true,
|
||||
"axeViolations": []
|
||||
},
|
||||
{
|
||||
"page": "minimal",
|
||||
"width": 320,
|
||||
"height": 720,
|
||||
"passed": true,
|
||||
"axeViolations": []
|
||||
},
|
||||
{
|
||||
"page": "premium",
|
||||
"width": 1440,
|
||||
"height": 1000,
|
||||
"passed": true,
|
||||
"axeViolations": []
|
||||
},
|
||||
{
|
||||
"page": "premium",
|
||||
"width": 768,
|
||||
"height": 1024,
|
||||
"passed": true,
|
||||
"axeViolations": []
|
||||
},
|
||||
{
|
||||
"page": "premium",
|
||||
"width": 390,
|
||||
"height": 844,
|
||||
"passed": true,
|
||||
"axeViolations": []
|
||||
},
|
||||
{
|
||||
"page": "premium",
|
||||
"width": 320,
|
||||
"height": 720,
|
||||
"passed": true,
|
||||
"axeViolations": []
|
||||
},
|
||||
{
|
||||
"page": "human",
|
||||
"width": 1440,
|
||||
"height": 1000,
|
||||
"passed": true,
|
||||
"axeViolations": []
|
||||
},
|
||||
{
|
||||
"page": "human",
|
||||
"width": 768,
|
||||
"height": 1024,
|
||||
"passed": true,
|
||||
"axeViolations": []
|
||||
},
|
||||
{
|
||||
"page": "human",
|
||||
"width": 390,
|
||||
"height": 844,
|
||||
"passed": true,
|
||||
"axeViolations": []
|
||||
},
|
||||
{
|
||||
"page": "human",
|
||||
"width": 320,
|
||||
"height": 720,
|
||||
"passed": true,
|
||||
"axeViolations": []
|
||||
},
|
||||
{
|
||||
"page": "editorial",
|
||||
"width": 1440,
|
||||
"height": 1000,
|
||||
"passed": true,
|
||||
"axeViolations": []
|
||||
},
|
||||
{
|
||||
"page": "editorial",
|
||||
"width": 768,
|
||||
"height": 1024,
|
||||
"passed": true,
|
||||
"axeViolations": []
|
||||
},
|
||||
{
|
||||
"page": "editorial",
|
||||
"width": 390,
|
||||
"height": 844,
|
||||
"passed": true,
|
||||
"axeViolations": []
|
||||
},
|
||||
{
|
||||
"page": "editorial",
|
||||
"width": 320,
|
||||
"height": 720,
|
||||
"passed": true,
|
||||
"axeViolations": []
|
||||
},
|
||||
{
|
||||
"page": "index",
|
||||
"width": 1440,
|
||||
"height": 1000,
|
||||
"passed": true,
|
||||
"axeViolations": []
|
||||
},
|
||||
{
|
||||
"page": "index",
|
||||
"width": 768,
|
||||
"height": 1024,
|
||||
"passed": true,
|
||||
"axeViolations": []
|
||||
},
|
||||
{
|
||||
"page": "index",
|
||||
"width": 390,
|
||||
"height": 844,
|
||||
"passed": true,
|
||||
"axeViolations": []
|
||||
},
|
||||
{
|
||||
"page": "index",
|
||||
"width": 320,
|
||||
"height": 720,
|
||||
"passed": true,
|
||||
"axeViolations": []
|
||||
}
|
||||
],
|
||||
"externalRequests": [],
|
||||
"device": "Chromium desktop emulation"
|
||||
}
|
||||
|
After Width: | Height: | Size: 185 KiB |
|
After Width: | Height: | Size: 134 KiB |
|
After Width: | Height: | Size: 241 KiB |
|
After Width: | Height: | Size: 158 KiB |
|
After Width: | Height: | Size: 189 KiB |
|
After Width: | Height: | Size: 139 KiB |
|
After Width: | Height: | Size: 623 KiB |
|
After Width: | Height: | Size: 212 KiB |