{"slug":"lull","name":"Lull","version":"1.0.0","category":"local business","priceCents":3900,"ui_library":{"version":"1.5.2","files":["html/src/js/_tt/accordion-disclosure.js","html/src/js/_tt/anchor.js","html/src/js/_tt/field-ids.js","html/src/js/_tt/field.js","html/src/js/_tt/focusables.js","html/src/js/_tt/form-error-summary.js","html/src/js/_tt/form.js","html/src/js/_tt/layer.js","html/src/js/_tt/mode.js","html/src/js/_tt/pending.js","html/src/js/_tt/popover.js","html/src/js/_tt/presence.js","html/src/js/_tt/reduced-motion.js","html/src/js/_tt/roving.js","html/src/js/_tt/toggle-group.js","src/components/ui/_tt/accordion-disclosure.axes.ts","src/components/ui/_tt/accordion-disclosure.fixtures.ts","src/components/ui/_tt/accordion-disclosure.tsx","src/components/ui/_tt/anchor.ts","src/components/ui/_tt/capture.ts","src/components/ui/_tt/field-ids.ts","src/components/ui/_tt/field.axes.ts","src/components/ui/_tt/field.capture.ts","src/components/ui/_tt/field.fixtures.ts","src/components/ui/_tt/field.tsx","src/components/ui/_tt/focusables.ts","src/components/ui/_tt/form-error-summary.axes.ts","src/components/ui/_tt/form-error-summary.fixtures.ts","src/components/ui/_tt/form-error-summary.tsx","src/components/ui/_tt/form.axes.ts","src/components/ui/_tt/form.fixtures.ts","src/components/ui/_tt/form.part.tsx","src/components/ui/_tt/form.ts","src/components/ui/_tt/hint.axes.ts","src/components/ui/_tt/hint.fixtures.ts","src/components/ui/_tt/hint.tsx","src/components/ui/_tt/host.ts","src/components/ui/_tt/ids.ts","src/components/ui/_tt/layer.ts","src/components/ui/_tt/layout-effect.ts","src/components/ui/_tt/popover.axes.ts","src/components/ui/_tt/popover.fixtures.ts","src/components/ui/_tt/popover.tsx","src/components/ui/_tt/presence.ts","src/components/ui/_tt/recipe.ts","src/components/ui/_tt/reduced-motion.ts","src/components/ui/_tt/roving.ts","src/components/ui/_tt/toggle-group.axes.ts","src/components/ui/_tt/toggle-group.fixtures.ts","src/components/ui/_tt/toggle-group.tsx"]},"license":"standard","description":"Lull is a coworking space template in Next.js and Tailwind CSS for the developer building a site for an independent coworking operator whose visitors tour three spaces to find out which one is quiet enough to think in. Every room is measured once a month and hung on one decibel line: the quiet Reading Room written small at 34 dB, the Kitchen large at 64 at lunch, the booths measured from outside mid-call. The plans are priced by how far into the quiet they let you sit, the private offices are published with real prices and dated vacancies, meeting rooms carry rates and a request form, tours are requested at a real hour, and the access hours are written once so the site cannot contradict itself. Light and dark, in React and plain HTML, every figure derived from one fixture that refuses a silent room above its ceiling, and no booking engine or member portal pretending otherwise. The demo's readings are invented, so AGENTS.md gives your coding agent the rules and your client the method for measuring their own rooms.","summary":"For an independent coworking operator: a coworking space template nextjs where every room is measured on one decibel line and plans are priced by quiet.","tags":["coworking space template nextjs","coworking space website template","coworking space tailwind template","flexible workspace website template","meeting room rental website template"],"lead":{"route":"rooms","mode":"light"},"accent_mode":"monochrome-plus-spot","palette":{"bg":"#f5f0ef","surface":"#fdfafa","accent":"#9e506e","text":"#231c1f","line":"#dbd4d4"},"darkMode":true,"compatibility":{"next":">=15 <17","react":">=19 <20","tailwind":">=4 <5"},"dependencies":["lucide-react"],"editions":{"react":{"source":"src","runtime":"react"},"html":{"source":"html/src","output":"html/dist","engine":"nunjucks","runtime":"vanilla","buildRequired":false}},"design":{"typefaces":{"display":"Gloock","text":"Overpass","mono":"Overpass Mono"},"typeRatio":1.2,"signature":"The sound line: one horizontal axis in dB(A) from 25 to 70, linear, full width inside the measure, with everyday reference levels under it in muted type (30 a bedroom at night, 40 a library, 50 a quiet office, 60 conversation at 1 m, 70 a busy restaurant). Every measured place hangs on a stem of one constant length at its reading, its name in Gloock sized by the reading and a mono meta line with the decibels and the house rule (silent, low voice, calls, talk freely), so the line says where you may talk as well as how loud it is; the place the page is talking about carries the one mulberry dot, stem and underline. Below 768px the axis runs down the left edge. Implemented in src/components/ui/sound-line.tsx with lineAt(), ruleCheck(), labelSize() and the lane solver; derive.ts throws at import on a missing or out-of-range reading, a partial month, a silent room above 40, a low-voice room above 52, a booth above 42 outside mid-call, an inverted plan ladder, an office price that disagrees with its square feet, a status date that is not notice plus 60 days, a crossover sentence that disagrees with the prices and Flex sold above 42. It recurs on /, /rooms, /memberships, /offices, /visit and /house-rules, and is withheld on /meeting-rooms. With no readings it hangs every room at its rule's ceiling, labelled held to.","heroArchetype":"A6","sanctionedDeviation":"A place's label on the sound line is set at a size computed from its reading, off the type ladder: 13 + (dB − 30) × 15/35 px, clamped 13–28, so loud against quiet reads at a glance in greyscale and the quiet end of the line literally takes less room, with no colour scale. Scoped to src/components/ui/sound-line.tsx and labelSize() in src/fixtures/derive.ts; the mono meta line under every label stays on the ladder at caption size, and Broadway, the largest label by construction, is muted.","motionPersonality":"near-static: a reading is taken; it does not travel","undertone":"lime plaster and ink, one felt mulberry","surface_kind":"marketing","built_against":"2026-11-06","recipe":{"primary":"the sound line","secondary":"plans priced by how far into the quiet they reach"},"brand_pyramid":["measured","quiet","plainly priced"],"levers":{"theme":"light","density":"comfortable","accent_mode":"monochrome-plus-spot","motion":"still","borders":"soft","radius":"small","texture":"none","shadow":"none"},"icons":{"set":"lucide","stroke":1.5,"ladder":["size-4","size-5","size-6"],"contexts":{"nav":"none","panel_header":"none","fact_row":"none","feature_grid":"none"}},"disclosure":{"helper_line":"one-clause","sentence":"hint","paragraph":"details","parallel_views":"tabs","secondary_object":"route"},"cta":{"header":"quiet","hero":"filled","repeats":["end"],"mobile":"inline"},"colour_budget":{"brand_max_pct":null,"concentration_pct":70,"regions":["cta","spot"]},"exemplars":[{"name":"an acoustic consultant's room survey","slice":"every room's A-weighted reading set against everyday reference levels on one shared scale, with the method written under it"},{"name":"a building's door plates and wayfinding signs","slice":"room names in a road-sign grotesque with a plain number beside them, the register Overpass was drawn for"}],"anti_list":["a togetherness slogan over an interior photograph","a member-count or occupancy stat strip","a three-tier plan table with Most Popular and a monthly/yearly toggle","an eight-icon amenity grid","testimonials, ratings, logo walls or trusted-by rows","a green-to-red colour scale, waveform, equaliser bars or an animated meter","a floor plan, stacking plan or desk picker","live occupancy or availability","a booking engine, member portal or payments","a sound-wave logo or any hand-drawn mark"],"strict":["harmony"]},"pages":[{"path":"/","title":"Every room, measured","sections":["site-header","hero","quiet-premium","office-sample","tour-end","site-footer"]},{"path":"/rooms","title":"Rooms, and how loud they are","sections":["site-header","rooms-hours","room-rows","readings-table","tour-end","site-footer"]},{"path":"/rooms/at-8","title":"Rooms at 08:00","route":"/rooms/[at]","sections":["site-header","rooms-hours","room-rows","readings-table","tour-end","site-footer"]},{"path":"/rooms/at-13","title":"Rooms at 13:00","route":"/rooms/[at]","sections":["site-header","rooms-hours","room-rows","readings-table","tour-end","site-footer"]},{"path":"/rooms/at-16","title":"Rooms at 16:00","route":"/rooms/[at]","sections":["site-header","rooms-hours","room-rows","readings-table","tour-end","site-footer"]},{"path":"/rooms/at-19","title":"Rooms at 19:00","route":"/rooms/[at]","sections":["site-header","rooms-hours","room-rows","readings-table","tour-end","site-footer"]},{"path":"/memberships","title":"Memberships, priced by quiet","sections":["site-header","plan-ladder","plan-policy","tour-end","site-footer"]},{"path":"/offices","title":"Private offices, with prices","sections":["site-header","office-head","office-list","office-terms","tour-end","site-footer"]},{"path":"/meeting-rooms","title":"Meeting rooms","sections":["site-header","meeting-rates","room-request","site-footer"]},{"path":"/visit","title":"Book a tour","sections":["site-header","visit-request","visit-lines","visit-find-us","site-footer"]},{"path":"/house-rules","title":"House rules and hours","sections":["site-header","rules-line","rule-list","hours-table","how-we-measure","tour-end","site-footer"]},{"path":"/components","title":"Lull's parts","sections":["site-header","site-footer"]}],"components":[{"name":"ui/type","file":"src/components/ui/type.ts","renders":"The type roles as class strings: caption to d4 on the 1.200 ratio, the tracked mono label, Gloock at its one weight for headings and place names, Overpass Mono for readings and hours, and Overpass's tabular figures for every stacked price; the only file that names a --text-* token."},{"name":"ui/ui.config","file":"src/components/ui/ui.config.ts","renders":"The theme's cross-part knobs: the .tt-lull layer host, the 120/150ms motion copies with a zero close, comfortable density and the one ink focus ring with outline-solid."},{"name":"ui/popover","file":"src/components/ui/popover.tsx","renders":"A card on the overlay ground anchored to its trigger: the 8px card radius, a hairline edge, no shadow and no arrow, a tracked mono label for a header over the reasoning at a 34ch measure, placed rather than faded."},{"name":"ui/hint","file":"src/components/ui/hint.tsx","renders":"A one-clause helper line with a bare Info glyph on a 32px target in the muted ink, ink on the secondary ground under the pointer and while open; pressing it opens the reasoning on the popover's card."},{"name":"ui/accordion-disclosure","file":"src/components/ui/accordion-disclosure.tsx","renders":"A native details row between two hairlines: a 48px summary in the text face that underlines on hover, the call site's chevron turning when open, and the region below it; on / it holds the sound line's readings as a table."},{"name":"site-header","file":"src/components/site-header.tsx","renders":"The type-set wordmark, five routes with aria-current, the phone in the mono, the mode toggle and a quiet \"Book a tour\"; below lg the routes take a second row under one hairline and wrap at 375, the phone and the quiet action dropping first."},{"name":"hero","file":"src/components/hero.tsx","renders":"A6: the derived H1 as a reading across columns 1–10 with the figure underlined in the spot, the lede against the filled \"Book a tour\" and the quiet \"Day pass, $35\" with the tour times; under one hairline the method line with its hint, the sound line at 11:00 read-only, the hours sentence and the readings as a table behind a disclosure."},{"name":"quiet-premium","file":"src/components/quiet-premium.tsx","renders":"The price of a quieter seat: the premium and crossover sentences written by crossovers() and the published Flex cap at 4/12, beside the Reading Room and Commons plates captioned with plan, price and 11:00 reading."},{"name":"office-sample","file":"src/components/office-sample.tsx","renders":"The offices a visitor could take as a real table from md (letter, desks, sq ft, side, door-shut reading, price, derived status) and as stacked rows below it, with the minimum term, the notice and the earliest exit from today."},{"name":"tour-end","file":"src/components/tour-end.tsx","renders":"The route's end at 7/5: \"Come at the hour you would work\" and the tour times, beside the one repeat of the filled \"Book a tour\" with its risk reversal and the phone."},{"name":"site-footer","file":"src/components/site-footer.tsx","renders":"The wordmark, the address and phone, the staffed week as a real table with today named in a word, every route in two columns with the styleguide link, and one line on currency and how the readings are taken."},{"name":"ui/sound-line","file":"src/components/ui/sound-line.tsx","renders":"The signature: a 25–70 dB(A) ink axis with minor and major ticks and everyday references under it, every place on a stem of one constant length with its Gloock name sized by its reading and a mono meta line, labels in up to three solved lanes joined by dotted leaders, one mulberry spot, Broadway muted on a dashed stem; vertical down the left edge below 768px."},{"name":"ui/sound-line-lanes","file":"src/components/ui/sound-line-lanes.ts","renders":"The lane solver: a pruned depth-first search over lane and reading direction that seats every label without an overlap, a crossed leader or an overflow, with label widths measured from Gloock's and Overpass Mono's advance widths."},{"name":"ui/button","file":"src/components/ui/button.tsx","renders":"The action in two weights: the filled felt with data-cta=\"primary\" and a 48px height, and the quiet ink-on-plaster outline at 40px whose 3:1 control border is its identifier; ramp-token hover and press, a 0.98 press under motion-safe, the ink ring."},{"name":"ui/link","file":"src/components/ui/link.tsx","renders":"Ink link underlined at 1px, 2px on hover and on the current page, with a mono option for the phone."},{"name":"ui/wordmark","file":"src/components/ui/wordmark.tsx","renders":"\"Soundings\" set in Gloock at d1 inside data-brand-name; no drawn mark."},{"name":"ui/mode-toggle","file":"src/components/ui/mode-toggle.tsx","renders":"Day and after hours as one 40px icon button named for what it does, writing .dark and .light on the nearest .tt-lull, aria-pressed."},{"name":"ui/photo","file":"src/components/ui/photo.tsx","renders":"A square-cornered 3:2 room plate on the muted well, covering from the register's focal point, lazy below the fold, tagged data-plate."},{"name":"ui/structured-data","file":"src/components/ui/structured-data.tsx","renders":"The LocalBusiness JSON-LD from localBusinessJsonLd(), escaped, in one script tag on /."},{"name":"ui/toggle-group","file":"src/components/ui/toggle-group.tsx","renders":"The hour chips: Overpass Mono on a 40px target with the control edge; the selected hour takes the wash, an ink edge and an underline under a roving radio model with one tab stop."},{"name":"rooms-hours","file":"src/components/rooms-hours.tsx","renders":"/rooms' opener: the H1 with the hour in it, the filled Book a tour, five hour radios and the method line over the sound line, every hour rendered and stacked so the switch swaps them with no shift, and a noscript row of the same hours as paths."},{"name":"room-rows","file":"src/components/room-rows.tsx","renders":"One row per room with its plate, reading at the hour, rule word, seats and a five-hour strip, every strip in one column so x compares down the page; the booths hold all six readings beside a portrait plate and the meeting rooms three strips."},{"name":"readings-table","file":"src/components/readings-table.tsx","renders":"Every place at the five hours as a real table behind a native details row, the data alternative to the line and the strips."},{"name":"ui/method-line","file":"src/components/ui/method-line.tsx","renders":"The measuring day and method in the mono as a one-clause helper with How we measure behind a hint; held to the rules it says nothing has been measured yet."},{"name":"ui/hour-switch","file":"src/components/ui/hour-switch.tsx","renders":"The toggle-group over a server-rendered figure: moves data-on across every data-hour in its scope and replaces the path, so each state stays a real URL and nothing tweens."},{"name":"ui/hour-strip","file":"src/components/ui/hour-strip.tsx","renders":"A 48px strip of the axis with one tick per measuring hour at its decibels, labelled by hour on alternating sides, the selected hour's tick in the spot; and the reading in words the switch re-reads."},{"name":"plan-ladder","file":"src/components/plan-ladder.tsx","renders":"/memberships' opener: the line's axis over four brackets, each a plan from its quietest seat to the loudest room it opens, named and priced at the quiet end with its seats marked and its terms beside it, the desk in the spot."},{"name":"plan-policy","file":"src/components/plan-policy.tsx","renders":"Day passes or Flex with the crossover and the published cap beside the Commons plate, then the premium sentence set large beside the Reading Room plate, at 5/7 and 7/5."},{"name":"office-head","file":"src/components/office-head.tsx","renders":"/offices' opener at 7/5: the H1, the lede from the cheapest vacant office, Book a tour and the risk reversal against Office F from its open door, captioned with its derived date."},{"name":"office-list","file":"src/components/office-list.tsx","renders":"The vacancy list A to H as a real table from md and stacked rows below it: desks, sq ft, side, a 160px strip of the axis with the door-shut dot and the hollow corridor dot, both readings, the derived price, the status and the earliest exit; the free-now row takes the wash and the word."},{"name":"office-terms","file":"src/components/office-terms.tsx","renders":"How a free-from date and an earliest exit are worked out, in derived sentences at 8/4 beside what an office comes with and the rate per side."},{"name":"ui/field","file":"src/components/ui/field.tsx","renders":"A control on a line, not in a box: the tracked mono label over the field ground with a 2px rule under it held at the 3:1 graphic tier, the rule turning critical with a glyph and the words beneath it when refused."},{"name":"ui/form","file":"src/components/ui/form.tsx","renders":"The submit flow with almost nothing painted: a reset fieldset, and a receipt between two ink rules that takes focus after a submit and says Not sent or Request sent, not booked."},{"name":"ui/form-error-summary","file":"src/components/ui/form-error-summary.tsx","renders":"A whole critical hairline on the soft ground, never an edge stripe, titled in the display face with the alert glyph, with one underlined link per refused field, read by its label."},{"name":"ui/request","file":"src/components/ui/request.tsx","renders":"The hand-off both forms share: the endpoint from NEXT_PUBLIC_TOUR_ENDPOINT, the line under the action that is true before anyone types, the two receipts, the no-script notice, and the single link that replaces a form when the operator books through Nexudus, OfficeRnD or Optix."},{"name":"meeting-rates","file":"src/components/meeting-rates.tsx","renders":"/meeting-rooms' opener: a one-line H1 against Request a room, then the rate table with the room in Gloock, seats, what is heard outside as a column, the kit and the rate as the row's largest figure; stacked rows below md; the sound line withheld on purpose."},{"name":"room-request","file":"src/components/room-request.tsx","renders":"The meeting-room request: room, day, start, length, name and email, refusing a shut desk, a gone day and a hire past closing beside the field, keeping every answer on failure, pricing nothing on input."},{"name":"visit-request","file":"src/components/visit-request.tsx","renders":"/visit's opener: the day, two native hour radios that post with no script, the accent read-back chip and its dated sentence, the line at that hour inside the form, then name, email and Request this tour, with both receipts."},{"name":"visit-lines","file":"src/components/visit-lines.tsx","renders":"The server's half of the read-back: the line at each tour hour stacked in one cell, the Reading Room on the spot, with the method line, passed to the form as a slot so the solver stays out of the bundle."},{"name":"visit-find-us","file":"src/components/visit-find-us.tsx","renders":"The door on Broadway at 5/7 against the one line on the building's former use, the address, the desk's week in a sentence and the day pass for anyone who would rather turn up."},{"name":"rules-line","file":"src/components/rules-line.tsx","renders":"/house-rules' opener: the sound line first, each rule's ceiling a mark with the rule word sized by it and the Kitchen hung at its loudest reading, the H1 and Book a tour under it from md, above it below md."},{"name":"rule-list","file":"src/components/rule-list.tsx","renders":"What each rule asks of you in one ruled row: the word in Gloock, the sentence, and the rooms held to it with the loudest they really read against the ceiling."},{"name":"hours-table","file":"src/components/hours-table.tsx","renders":"The one hours table every route reads as a real table: who, days and hours from hoursTable(), plus the front desk and tours, beside the amenities as sentences that say where."},{"name":"how-we-measure","file":"src/components/how-we-measure.tsx","renders":"The method in full against the square meter plate at 3/9, with the dated last measurement."}],"tokens":{"--background":"#f5f0ef","--foreground":"#231c1f","--card":"#fdfafa","--card-foreground":"#231c1f","--secondary":"#ece6e5","--secondary-foreground":"#231c1f","--muted":"#ece6e5","--muted-foreground":"#675d61","--border":"#dbd4d4","--surface-overlay":"#ffffff","--rule":"#332b2f","--rule-faint":"#8d8588","--primary":"#9e506e","--primary-foreground":"#ffffff","--primary-hover":"#8b3f5d","--primary-active":"#762f4c","--spot":"#9e506e","--spot-ink":"#9e506e","--accent":"#fae2ea","--accent-foreground":"#78314e","--link":"#231c1f","--link-hover":"#231c1f","--ring":"#231c1f","--field":"#ffffff","--field-border":"#7a7275","--control-border":"#7a7275","--selection":"#ece6e5","--selection-foreground":"#231c1f","--selection-border":"#231c1f","--positive":"#147a51","--positive-foreground":"#161113","--positive-soft":"#e3f5eb","--positive-border":"#afd5bf","--positive-fill":"#3f976d","--warning":"#906205","--warning-foreground":"#161113","--warning-soft":"#faeedf","--warning-border":"#dec7a7","--warning-fill":"#b07e2b","--critical":"#a45344","--critical-foreground":"#161113","--critical-soft":"#ffebe7","--critical-border":"#e9bfb6","--critical-fill":"#cb6b59","--scrim":"rgb(35 28 31 / 0.48)","--plate-filter":"none","--radius":"0.25rem","--radius-line":"0rem","--radius-card":"0.5rem","--page-max":"72rem","--gutter":"clamp(1rem, 5vw, 4rem)","--page-frame":"calc(var(--page-max) + 2 * var(--gutter))","--stem":"2rem","--dot":"0.5625rem","--spot-underline":"4px","--icon-stroke":"1.5","--ease-house":"cubic-bezier(0.16, 1, 0.3, 1)","--duration-micro":"120ms","--duration-state":"150ms","--text-caption":"0.75rem","--leading-caption":"1.4","--text-small":"0.875rem","--leading-small":"1.45","--text-body":"1rem","--leading-body":"1.55","--text-lead":"1.125rem","--leading-lead":"1.55","--text-d1":"1.5rem","--leading-d1":"1.2","--tracking-d1":"0em","--text-d2":"1.8rem","--leading-d2":"1.15","--tracking-d2":"-0.005em","--text-d3":"clamp(1.8rem, 1.651rem + 0.637vw, 2.16rem)","--leading-d3":"1.12","--tracking-d3":"-0.01em","--text-d4":"clamp(2.16rem, 1.981rem + 0.764vw, 2.592rem)","--leading-d4":"1.08","--tracking-d4":"-0.015em","--tracking-label":"0.06em","--weight-display":"400","--font-display":"var(--font-lull-display), Georgia, 'Times New Roman', serif","--font-text":"var(--font-lull-text), ui-sans-serif, system-ui, sans-serif","--font-sans":"var(--font-text)","--font-mono":"var(--font-lull-mono), ui-monospace, 'Courier New', monospace"},"tokensDark":{"--background":"#161113","--foreground":"#ede6e6","--card":"#1f1a1c","--card-foreground":"#ede6e6","--secondary":"#2a2427","--secondary-foreground":"#ede6e6","--muted":"#110d0f","--muted-foreground":"#afa5a4","--border":"#3a3336","--surface-overlay":"#272123","--rule":"#d6cfcf","--rule-faint":"#686164","--primary":"#9e506e","--primary-foreground":"#ffffff","--primary-hover":"#8b3f5d","--primary-active":"#762f4c","--spot":"#9e506e","--spot-ink":"#ede6e6","--accent":"#3c202a","--accent-foreground":"#f3c1d1","--link":"#ede6e6","--link-hover":"#ede6e6","--ring":"#ede6e6","--field":"#0f0b0d","--field-border":"#867d81","--control-border":"#867d81","--selection":"#2a2427","--selection-foreground":"#ede6e6","--selection-border":"#ede6e6","--positive":"#4faa7e","--positive-foreground":"#161113","--positive-soft":"#122b1e","--positive-border":"#2d5742","--positive-fill":"#4eae80","--warning":"#c19044","--warning-foreground":"#161113","--warning-soft":"#30220d","--warning-border":"#604825","--warning-fill":"#c28d39","--critical":"#d88271","--critical-foreground":"#161113","--critical-soft":"#361e19","--critical-border":"#6a4138","--critical-fill":"#de7662","--scrim":"rgb(0 0 0 / 0.62)","--plate-filter":"brightness(0.86)","--radius":"0.25rem","--radius-line":"0rem","--radius-card":"0.5rem","--page-max":"72rem","--gutter":"clamp(1rem, 5vw, 4rem)","--page-frame":"calc(var(--page-max) + 2 * var(--gutter))","--stem":"2rem","--dot":"0.5625rem","--spot-underline":"4px","--icon-stroke":"1.5","--ease-house":"cubic-bezier(0.16, 1, 0.3, 1)","--duration-micro":"120ms","--duration-state":"150ms","--text-caption":"0.75rem","--leading-caption":"1.4","--text-small":"0.875rem","--leading-small":"1.45","--text-body":"1rem","--leading-body":"1.55","--text-lead":"1.125rem","--leading-lead":"1.55","--text-d1":"1.5rem","--leading-d1":"1.2","--tracking-d1":"0em","--text-d2":"1.8rem","--leading-d2":"1.15","--tracking-d2":"-0.005em","--text-d3":"clamp(1.8rem, 1.651rem + 0.637vw, 2.16rem)","--leading-d3":"1.12","--tracking-d3":"-0.01em","--text-d4":"clamp(2.16rem, 1.981rem + 0.764vw, 2.592rem)","--leading-d4":"1.08","--tracking-d4":"-0.015em","--tracking-label":"0.06em","--weight-display":"400","--font-display":"var(--font-lull-display), Georgia, 'Times New Roman', serif","--font-text":"var(--font-lull-text), ui-sans-serif, system-ui, sans-serif","--font-sans":"var(--font-text)","--font-mono":"var(--font-lull-mono), ui-monospace, 'Courier New', monospace"}}