{"id":58,"date":"2026-09-07T06:48:05","date_gmt":"2026-09-07T06:48:05","guid":{"rendered":"https:\/\/funny-magenta-eagle.157-180-92-33.cpanel.site\/?page_id=58"},"modified":"2026-10-16T13:53:31","modified_gmt":"2026-10-16T13:53:31","slug":"workshop-kokeilu","status":"publish","type":"page","link":"https:\/\/funny-magenta-eagle.157-180-92-33.cpanel.site\/?page_id=58","title":{"rendered":"[POISTA \u2013 vanha] Workshop kokeilu"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"58\" class=\"elementor elementor-58\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f0f3466 e-con-full e-flex e-con e-parent\" data-id=\"f0f3466\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5333d1b elementor-widget elementor-widget-html\" data-id=\"5333d1b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\n<html lang=\"fi\">\n<head>\n  <meta charset=\"UTF-8\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  <title>Karjalan Kangas \u2014 Luova Muotoilu- ja Br\u00e4nditoimisto<\/title>\n  <meta name=\"description\" content=\"Karjalan Kangas on moderni luova muotoilutoimisto. Yhdist\u00e4mme ajattoman k\u00e4sity\u00f6perinteen, kest\u00e4v\u00e4n br\u00e4ndistrategian ja digitaalisen huippuosaamisen.\">\n\n  <meta property=\"og:title\" content=\"Karjalan Kangas \u2014 Luova Muotoilu- ja Br\u00e4nditoimisto\">\n  <meta property=\"og:description\" content=\"Ajatonta pohjoismaista muotoilua, identiteettej\u00e4 ja digitaalisia kokemuksia.\">\n  <meta property=\"og:type\" content=\"website\">\n\n  <link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n  <link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n  <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600&family=Playfair+Display:ital,wght@0,400;0,600;0,700;1,400&display=swap\" rel=\"stylesheet\">\n\n  <style>\n    :root {\n      --bg-crimson: #c31d24;\n      --bg-dark-crimson: #9e151b;\n      --text-white: #ffffff;\n      --text-muted: rgba(255, 255, 255, 0.78);\n      --line-muted: rgba(255, 255, 255, 0.25);\n      --font-serif: \"Playfair Display\", Georgia, serif;\n      --font-sans: \"Inter\", -apple-system, BlinkMacSystemFont, sans-serif;\n      --cubic-out: cubic-bezier(0.16, 1, 0.3, 1);\n    }\n\n    *, *::before, *::after {\n      box-sizing: border-box;\n      margin: 0;\n      padding: 0;\n    }\n\n    html, body {\n      background-color: var(--bg-crimson);\n      color: var(--text-white);\n      font-family: var(--font-sans);\n      overflow-x: hidden;\n      -webkit-font-smoothing: antialiased;\n      -moz-osx-font-smoothing: grayscale;\n    }\n\n    \/* Top Navigation *\/\n    .header-nav {\n      position: fixed;\n      top: 0;\n      left: 0;\n      right: 0;\n      height: 76px;\n      z-index: 100;\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n      padding: 0 4vw;\n      transition: background-color 320ms ease-out, backdrop-filter 320ms ease-out, border-color 320ms ease-out;\n      border-bottom: 1px solid transparent;\n    }\n\n    .header-nav.scrolled {\n      background-color: rgba(195, 29, 36, 0.82);\n      backdrop-filter: blur(12px);\n      -webkit-backdrop-filter: blur(12px);\n      border-bottom: 1px solid rgba(255, 255, 255, 0.12);\n    }\n\n    .brand-logo {\n      display: inline-flex;\n      align-items: center;\n      gap: 10px;\n      text-decoration: none;\n      color: var(--text-white);\n      font-family: var(--font-serif);\n      font-size: 1.35rem;\n      font-weight: 600;\n      letter-spacing: -0.01em;\n    }\n\n    .brand-logo svg {\n      width: 18px;\n      height: 18px;\n      fill: currentColor;\n    }\n\n    .nav-links {\n      display: flex;\n      list-style: none;\n      gap: 2.25rem;\n    }\n\n    .nav-item a {\n      position: relative;\n      text-decoration: none;\n      color: var(--text-white);\n      font-size: 0.925rem;\n      font-weight: 500;\n      letter-spacing: 0.01em;\n      padding-bottom: 4px;\n      display: inline-block;\n    }\n\n    \/* Underline grows strictly from the left on hover, 160ms *\/\n    .nav-item a::after {\n      content: '';\n      position: absolute;\n      bottom: 0;\n      left: 0;\n      width: 0;\n      height: 1.5px;\n      background-color: var(--text-white);\n      transition: width 160ms ease-out;\n    }\n\n    .nav-item a:hover::after,\n    .nav-item a:focus-visible::after {\n      width: 100%;\n    }\n\n    \/* Hero Main Shell *\/\n    .hero-container {\n      position: relative;\n      min-height: 100vh;\n      display: grid;\n      grid-template-columns: minmax(0, 1.45fr) minmax(360px, 440px);\n      column-gap: 4vw;\n      padding: 108px 4vw 48px;\n      max-width: 1720px;\n      margin: 0 auto;\n    }\n\n    \/* Left Narrative Stage *\/\n    .hero-main {\n      display: flex;\n      flex-direction: column;\n      justify-content: space-between;\n      min-width: 0;\n    }\n\n    .hero-heading-group {\n      padding-top: 2rem;\n      max-width: 820px;\n    }\n\n    .mask-wrap {\n      overflow: hidden;\n      display: block;\n    }\n\n    .sub-kicker {\n      font-size: 0.85rem;\n      text-transform: uppercase;\n      letter-spacing: 0.16em;\n      font-weight: 600;\n      margin-bottom: 1rem;\n      color: var(--text-muted);\n    }\n\n    .hero-title {\n      font-family: var(--font-serif);\n      font-size: clamp(2.6rem, 5.2vw, 5rem);\n      line-height: 1.06;\n      font-weight: 600;\n      letter-spacing: -0.025em;\n      margin-bottom: 1.5rem;\n    }\n\n    .hero-lead {\n      font-size: clamp(1.05rem, 1.3vw, 1.25rem);\n      line-height: 1.6;\n      color: var(--text-muted);\n      max-width: 600px;\n      font-weight: 400;\n    }\n\n    \/* Hero Primary Image Display *\/\n    .hero-visual-frame {\n      margin-top: 3.5rem;\n      position: relative;\n      width: 100%;\n      height: 380px;\n      border-radius: 4px;\n      overflow: hidden;\n      background-color: var(--bg-dark-crimson);\n    }\n\n    .hero-visual-frame img {\n      width: 100%;\n      height: 100%;\n      object-fit: cover;\n      display: block;\n      transform: scale(1.05);\n    }\n\n    \/* Right Rail: Contained Scrollable Feed *\/\n    .feed-rail {\n      display: flex;\n      flex-direction: column;\n      height: calc(100vh - 156px);\n      position: sticky;\n      top: 108px;\n      border-left: 1px solid var(--line-muted);\n      padding-left: 2rem;\n      min-width: 0;\n    }\n\n    .rail-header {\n      padding-bottom: 1rem;\n      border-bottom: 1px solid var(--line-muted);\n      margin-bottom: 1.5rem;\n      flex-shrink: 0;\n    }\n\n    .rail-header span {\n      font-size: 0.78rem;\n      letter-spacing: 0.14em;\n      text-transform: uppercase;\n      font-weight: 600;\n      color: var(--text-muted);\n    }\n\n    .rail-scroll-viewport {\n      overflow-y: auto;\n      overscroll-behavior: contain; \/* Prevents whole page scroll hijack *\/\n      padding-right: 0.8rem;\n      display: flex;\n      flex-direction: column;\n      gap: 2rem;\n      scrollbar-width: thin;\n      scrollbar-color: rgba(255, 255, 255, 0.35) transparent;\n    }\n\n    .rail-scroll-viewport::-webkit-scrollbar {\n      width: 4px;\n    }\n\n    .rail-scroll-viewport::-webkit-scrollbar-thumb {\n      background: rgba(255, 255, 255, 0.35);\n      border-radius: 2px;\n    }\n\n    \/* Publication Post Cards *\/\n    .feed-item {\n      display: block;\n      text-decoration: none;\n      color: inherit;\n      cursor: pointer;\n    }\n\n    .thumb-wrapper {\n      position: relative;\n      width: 100%;\n      aspect-ratio: 16 \/ 10;\n      border-radius: 2px;\n      overflow: hidden;\n      background-color: var(--bg-dark-crimson);\n      margin-bottom: 1rem;\n    }\n\n    .thumb-wrapper img {\n      width: 100%;\n      height: 100%;\n      object-fit: cover;\n      display: block;\n      transition: transform 600ms ease;\n      transform: scale(1.0);\n    }\n\n    .feed-item:hover .thumb-wrapper img {\n      transform: scale(1.06);\n    }\n\n    .card-meta {\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n      margin-bottom: 0.4rem;\n    }\n\n    .card-meta-tag {\n      font-size: 0.75rem;\n      text-transform: uppercase;\n      letter-spacing: 0.1em;\n      color: var(--text-muted);\n      font-weight: 600;\n    }\n\n    .card-icon {\n      font-size: 1.15rem;\n      line-height: 1;\n      font-weight: 300;\n      display: inline-block;\n      transition: transform 300ms ease;\n    }\n\n    .feed-item:hover .card-icon {\n      transform: rotate(45deg);\n    }\n\n    .card-title {\n      font-family: var(--font-serif);\n      font-size: 1.25rem;\n      line-height: 1.3;\n      margin-bottom: 0.5rem;\n      font-weight: 600;\n    }\n\n    .card-summary {\n      font-size: 0.88rem;\n      line-height: 1.5;\n      color: var(--text-muted);\n    }\n\n    \/* Entrance Animation Keyframes & States *\/\n    .anim-nav {\n      opacity: 0;\n      animation: fadeIn 800ms var(--cubic-out) 100ms forwards;\n    }\n\n    .anim-line {\n      transform: translateY(100%);\n      animation: revealText 1200ms var(--cubic-out) forwards;\n    }\n\n    .delay-1 { animation-delay: 150ms; }\n    .delay-2 { animation-delay: 260ms; }\n    .delay-3 { animation-delay: 380ms; }\n\n    .anim-hero-media {\n      opacity: 0;\n      animation: imageEntrance 1400ms var(--cubic-out) 400ms forwards;\n    }\n\n    .anim-rail-card {\n      opacity: 0;\n      transform: translateY(24px);\n      animation: cardGlide 1000ms var(--cubic-out) forwards;\n    }\n\n    .card-delay-1 { animation-delay: 500ms; }\n    .card-delay-2 { animation-delay: 620ms; }\n    .card-delay-3 { animation-delay: 740ms; }\n\n    @keyframes revealText {\n      to { transform: translateY(0%); }\n    }\n\n    @keyframes imageEntrance {\n      to {\n        opacity: 1;\n        transform: scale(1);\n      }\n    }\n\n    @keyframes cardGlide {\n      to {\n        opacity: 1;\n        transform: translateY(0);\n      }\n    }\n\n    @keyframes fadeIn {\n      to { opacity: 1; }\n    }\n\n    \/* Breakpoint Adaptations *\/\n    @media (max-width: 1024px) {\n      .hero-container {\n        grid-template-columns: 1fr;\n        row-gap: 3.5rem;\n        height: auto;\n      }\n      .feed-rail {\n        height: 600px;\n        position: relative;\n        top: 0;\n        border-left: none;\n        border-top: 1px solid var(--line-muted);\n        padding-left: 0;\n        padding-top: 2rem;\n      }\n      .hero-visual-frame {\n        height: 320px;\n      }\n    }\n\n    @media (max-width: 768px) {\n      .nav-links {\n        display: none;\n      }\n      .hero-container {\n        padding-top: 92px;\n      }\n      .hero-title {\n        font-size: 2.35rem;\n      }\n      .hero-visual-frame {\n        height: 260px;\n        margin-top: 2rem;\n      }\n    }\n\n    @media (max-width: 390px) {\n      .hero-title {\n        font-size: 1.95rem;\n      }\n      .hero-container {\n        padding-left: 1rem;\n        padding-right: 1rem;\n      }\n      .feed-rail {\n        height: 520px;\n      }\n    }\n\n    @media (prefers-reduced-motion: reduce) {\n      *, *::before, *::after {\n        animation-duration: 0.01ms !important;\n        animation-iteration-count: 1 !important;\n        transition-duration: 0.01ms !important;\n        scroll-behavior: auto !important;\n      }\n      .anim-line {\n        transform: none !important;\n      }\n      .anim-hero-media {\n        opacity: 1 !important;\n        transform: none !important;\n      }\n      .anim-rail-card {\n        opacity: 1 !important;\n        transform: none !important;\n      }\n    }\n  <\/style>\n<\/head>\n<body>\n\n  <header class=\"header-nav anim-nav\" id=\"mainHeader\">\n    <a href=\"#\" class=\"brand-logo\" aria-label=\"Karjalan Kangas Kotisivu\">\n      <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n        <path d=\"M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z\"\/>\n      <\/svg>\n      <span>Karjalan Kangas.<\/span>\n    <\/a>\n    <nav aria-label=\"P\u00e4\u00e4valikko\">\n      <ul class=\"nav-links\">\n        <li class=\"nav-item\"><a href=\"#tyot\">Ty\u00f6t<\/a><\/li>\n        <li class=\"nav-item\"><a href=\"#palvelut\">Palvelut<\/a><\/li>\n        <li class=\"nav-item\"><a href=\"#inspiraatio\">Inspiraatio<\/a><\/li>\n        <li class=\"nav-item\"><a href=\"#yhteystiedot\">Yhteystiedot<\/a><\/li>\n      <\/ul>\n    <\/nav>\n  <\/header>\n\n  <main class=\"hero-container\">\n    \n    <article class=\"hero-main\">\n      <div class=\"hero-heading-group\">\n        <div class=\"mask-wrap\">\n          <p class=\"sub-kicker anim-line delay-1\">Br\u00e4nd\u00e4ys &amp; Digitaalinen Muotoilu<\/p>\n        <\/div>\n        <div class=\"mask-wrap\">\n          <h1 class=\"hero-title anim-line delay-2\">Kudonnat, identiteetit ja kest\u00e4v\u00e4t tarinat.<\/h1>\n        <\/div>\n        <div class=\"mask-wrap\">\n          <p class=\"hero-lead anim-line delay-3\">\n            Olemme luova suunnittelutoimisto Joensuusta. Luomme rohkeita visuaalisia konsepteja, kest\u00e4vi\u00e4 materiaalivalintoja ja digitaalisia kokemuksia, jotka erottuvat pohjoismaisella selkeydell\u00e4.\n          <\/p>\n        <\/div>\n      <\/div>\n\n      <div class=\"hero-visual-frame\">\n        <img decoding=\"async\" \n          class=\"anim-hero-media\"\n          src=\"https:\/\/images.unsplash.com\/photo-1558769132-cb1aea458c5e?auto=format&fit=crop&w=1600&q=80\" \n          alt=\"Yksityiskohtainen kuva korkealaatuisista tekstiilikudoksista ja materiaaleista\"\n          loading=\"eager\"\n          fetchpriority=\"high\">\n      <\/div>\n    <\/article>\n\n    <aside class=\"feed-rail\" aria-label=\"Viimeisimm\u00e4t julkaisut ja artikkelit\">\n      <div class=\"rail-header\">\n        <span>Ajankohtaiset Julkaisut<\/span>\n      <\/div>\n\n      <div class=\"rail-scroll-viewport\" id=\"scrollRail\">\n        \n        <a href=\"#tinkimaton-laatu\" class=\"feed-item anim-rail-card card-delay-1\">\n          <div class=\"thumb-wrapper\">\n            <img decoding=\"async\" \n              src=\"https:\/\/images.unsplash.com\/photo-1600585154340-be6161a56a0c?auto=format&fit=crop&w=800&q=80\" \n              alt=\"Arkkitehtoninen ja materiaalil\u00e4ht\u00f6inen suunnittelu\" \n              loading=\"lazy\">\n          <\/div>\n          <div class=\"card-meta\">\n            <span class=\"card-meta-tag\">Katso esittelyvideo<\/span>\n            <span class=\"card-icon\" aria-hidden=\"true\">+<\/span>\n          <\/div>\n          <h2 class=\"card-title\">Tinkim\u00e4t\u00f6n laatu<\/h2>\n          <p class=\"card-summary\">Katsaus kankaisiin, tekstuureihin ja k\u00e4sit\u00f6ihin, joita olemme tuoneet osaksi modernia tilaa vuosikymmenten aikana.<\/p>\n        <\/a>\n\n        <a href=\"#luonto-ja-muoto\" class=\"feed-item anim-rail-card card-delay-2\">\n          <div class=\"thumb-wrapper\">\n            <img decoding=\"async\" \n              src=\"https:\/\/images.unsplash.com\/photo-1513519245088-0e12902e5a38?auto=format&fit=crop&w=800&q=80\" \n              alt=\"Luonnonmukaiset kankaat ja orgaaniset v\u00e4ris\u00e4vyt\" \n              loading=\"lazy\">\n          <\/div>\n          <div class=\"card-meta\">\n            <span class=\"card-meta-tag\">Tapauskertomus<\/span>\n            <span class=\"card-icon\" aria-hidden=\"true\">+<\/span>\n          <\/div>\n          <h2 class=\"card-title\">Orgaaninen perint\u00f6<\/h2>\n          <p class=\"card-summary\">Miten paikalliset luonnonkuidut muovautuvat osaksi kansainv\u00e4lisen tason br\u00e4ndikokemuksia.<\/p>\n        <\/a>\n\n        <a href=\"#tulevaisuuden-kudos\" class=\"feed-item anim-rail-card card-delay-3\">\n          <div class=\"thumb-wrapper\">\n            <img decoding=\"async\" \n              src=\"https:\/\/images.unsplash.com\/photo-1507679799987-c73779587ccf?auto=format&fit=crop&w=800&q=80\" \n              alt=\"Suunnittelutiimi viimeistelem\u00e4ss\u00e4 identiteettiprojektia\" \n              loading=\"lazy\">\n          <\/div>\n          <div class=\"card-meta\">\n            <span class=\"card-meta-tag\">Uutiset<\/span>\n            <span class=\"card-icon\" aria-hidden=\"true\">+<\/span>\n          <\/div>\n          <h2 class=\"card-title\">Digitaalinen muodonmuutos<\/h2>\n          <p class=\"card-summary\">Uusi verkkoidentiteettimme avaa oven suoraan ateljeen arkeen ja tuleviin mallistoihin.<\/p>\n        <\/a>\n\n      <\/div>\n    <\/aside>\n\n  <\/main>\n\n  <script>\n    \/\/ Header background backdrop blur toggle on scroll\n    const header = document.getElementById('mainHeader');\n    window.addEventListener('scroll', () => {\n      if (window.scrollY > 24) {\n        header.classList.add('scrolled');\n      } else {\n        header.classList.remove('scrolled');\n      }\n    }, { passive: true });\n\n    \/\/ Ensure the rail scroll wheel does not bubble to window when reaching extremities\n    const rail = document.getElementById('scrollRail');\n    rail.addEventListener('wheel', (e) => {\n      const isAtTop = rail.scrollTop === 0;\n      const isAtBottom = rail.scrollHeight - rail.scrollTop <= rail.clientHeight + 1;\n      \n      if ((e.deltaY < 0 && isAtTop) || (e.deltaY > 0 && isAtBottom)) {\n        e.preventDefault();\n      }\n    }, { passive: false });\n  <\/script>\n<\/body>\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Karjalan Kangas \u2014 Luova Muotoilu- ja Br\u00e4nditoimisto Karjalan Kangas. Ty\u00f6t Palvelut Inspiraatio Yhteystiedot Br\u00e4nd\u00e4ys &amp; Digitaalinen Muotoilu Kudonnat, identiteetit ja kest\u00e4v\u00e4t tarinat. Olemme luova suunnittelutoimisto Joensuusta. Luomme rohkeita visuaalisia konsepteja, kest\u00e4vi\u00e4 materiaalivalintoja ja digitaalisia kokemuksia, jotka erottuvat pohjoismaisella selkeydell\u00e4. Ajankohtaiset Julkaisut Katso esittelyvideo + Tinkim\u00e4t\u00f6n laatu Katsaus kankaisiin, tekstuureihin ja k\u00e4sit\u00f6ihin, joita olemme tuoneet osaksi [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"footnotes":""},"class_list":["post-58","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/funny-magenta-eagle.157-180-92-33.cpanel.site\/index.php?rest_route=\/wp\/v2\/pages\/58","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/funny-magenta-eagle.157-180-92-33.cpanel.site\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/funny-magenta-eagle.157-180-92-33.cpanel.site\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/funny-magenta-eagle.157-180-92-33.cpanel.site\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/funny-magenta-eagle.157-180-92-33.cpanel.site\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=58"}],"version-history":[{"count":11,"href":"https:\/\/funny-magenta-eagle.157-180-92-33.cpanel.site\/index.php?rest_route=\/wp\/v2\/pages\/58\/revisions"}],"predecessor-version":[{"id":86,"href":"https:\/\/funny-magenta-eagle.157-180-92-33.cpanel.site\/index.php?rest_route=\/wp\/v2\/pages\/58\/revisions\/86"}],"wp:attachment":[{"href":"https:\/\/funny-magenta-eagle.157-180-92-33.cpanel.site\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=58"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}