:root { font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; color: #1f2937; background: #f3f4f6; }
body { margin: 0; }
.wrapper { max-width: 980px; margin: 0 auto; padding: 32px 20px; }
.card { background: #fff; border-radius: 12px; padding: 24px; box-shadow: 0 8px 24px rgba(0,0,0,.07); }
input, button { font: inherit; }
input { width: 100%; box-sizing: border-box; padding: 10px 12px; margin: 6px 0 16px; border: 1px solid #cbd5e1; border-radius: 8px; }
button, .button { display: inline-block; padding: 10px 16px; border: 0; border-radius: 8px; background: #111827; color: #fff; text-decoration: none; cursor: pointer; }
.error { background: #fee2e2; padding: 12px; border-radius: 8px; margin-bottom: 16px; }
.success { background: #dcfce7; padding: 12px; border-radius: 8px; margin-bottom: 16px; }
.topbar { display: flex; justify-content: space-between; align-items: center; gap: 20px; margin-bottom: 20px; }
.muted { color: #64748b; }
/* Lisää nämä core/public/assets/app.css-tiedoston loppuun */
.table-card{overflow-x:auto;margin-top:18px}.table-card table{width:100%;border-collapse:collapse}.table-card th,.table-card td{text-align:left;padding:12px;border-bottom:1px solid #e5e7eb;vertical-align:top}.secondary{background:#475569}.danger{background:#991b1b}.inline-form{display:inline}.status{display:inline-block;padding:4px 9px;border-radius:999px;font-size:.9rem}.status-active{background:#dcfce7;color:#166534}.status-disabled{background:#fee2e2;color:#991b1b}.stats{display:flex;gap:22px;margin:24px 0}.stats>div{background:#f8fafc;border-radius:10px;padding:18px;min-width:130px}.stats strong{display:block;font-size:2rem}.stats span{color:#64748b}.module-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:18px;margin-top:22px}.module-card{display:flex;flex-direction:column;gap:8px;padding:20px;border:1px solid #e2e8f0;border-radius:12px;text-decoration:none;color:inherit;background:#f8fafc}.module-card:hover{border-color:#94a3b8}.module-card strong{font-size:1.3rem}.module-card span,.module-card small{color:#64748b}
select,textarea{font:inherit;box-sizing:border-box;padding:10px 12px;margin:6px 0 16px;border:1px solid #cbd5e1;border-radius:8px;background:#fff}textarea{width:100%;min-height:150px}label{display:block;font-weight:650;margin-top:10px}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:12px;border-bottom:1px solid #e5e7eb;vertical-align:top}.actions{display:flex;gap:10px;flex-wrap:wrap}.button-link{background:none;border:0;color:#1d4ed8;padding:0;text-decoration:underline}.note-item{border:1px solid #e2e8f0;border-radius:10px;padding:16px;margin:12px 0}.note-item h3{margin-top:0}

/* Moduulirekisteri */
h1, h2 { margin-top: 0; }
.module-stats { flex-wrap: wrap; }
.module-stats > div { flex: 1 1 180px; min-width: 0; }
.module-toolbar,
.module-coming-soon { display: flex; align-items: center; justify-content: space-between; gap: 24px; }
.module-toolbar { margin-bottom: 18px; }
.module-toolbar p,
.module-coming-soon p { margin-bottom: 0; }
.module-toolbar form { flex: 0 0 auto; }
.module-toolbar form button { white-space: nowrap; }
.module-use-label { display: block; font-size: .88rem; }
.status-neutral { background: #e2e8f0; color: #334155; }
.button.compact { padding: 7px 11px; font-size: .9rem; white-space: nowrap; }
.empty-state { display: flex; flex-direction: column; gap: 5px; padding: 22px 4px; text-align: center; }
.module-coming-soon { margin-top: 18px; border: 1px dashed #cbd5e1; box-shadow: none; }
.table-card th { white-space: nowrap; }
.table-card td { min-width: 90px; }
.table-card td:first-child { min-width: 270px; }

@media (max-width: 720px) {
    .wrapper { padding: 22px 14px; }
    .topbar,
    .module-toolbar,
    .module-coming-soon { align-items: flex-start; flex-direction: column; }
    .topbar .button,
    .module-toolbar form,
    .module-toolbar form button { width: 100%; box-sizing: border-box; text-align: center; }
    .stats { gap: 12px; }
    .stats > div { padding: 14px; }
}

/* Nippu4 yhteinen navigointi 1.0 */
:root{--nippu-nav-w:248px;--nippu-nav-bg:#fff4d9;--nippu-nav-ink:#173454;--nippu-nav-accent:#1976b8}
body.nippu-with-nav{padding-left:var(--nippu-nav-w)}
.nippu-nav{position:fixed;z-index:1000;inset:0 auto 0 0;width:var(--nippu-nav-w);box-sizing:border-box;background:var(--nippu-nav-bg);border-right:1px solid #ded7c8;padding:24px 20px;display:flex;flex-direction:column;overflow:auto;color:var(--nippu-nav-ink)}
.nippu-nav__brand{font-weight:900;letter-spacing:.13em;font-size:1.05rem;margin:2px 8px 22px}.nippu-nav__brand span{color:#e46f2b}
.nippu-nav a,.nippu-nav summary{display:block;color:var(--nippu-nav-ink);text-decoration:none;font-weight:750;padding:9px 10px;border-radius:9px;cursor:pointer}.nippu-nav a:hover{background:rgba(255,255,255,.62)}.nippu-nav a.active{background:#fff;color:var(--nippu-nav-accent);box-shadow:inset 4px 0 0 var(--nippu-nav-accent)}
.nippu-nav__home{margin-bottom:8px}.nippu-nav__links{display:grid;gap:2px}.nippu-nav__planned{margin-top:14px;border-top:1px solid #ded3be;padding-top:10px}.nippu-nav__planned a{font-size:.9rem;padding-left:18px}.nippu-nav__planned small{display:block;color:#7b756b;font-weight:500;font-size:.72rem}.nippu-nav__bottom{margin-top:auto;padding-top:18px;border-top:1px solid #ded3be}.nippu-nav-toggle{display:none;position:fixed;z-index:1100;top:10px;left:10px;border:0;border-radius:9px;padding:10px 14px;background:#173454;color:#fff;font-weight:800}.nippu-page{max-width:1500px}.planned-section{margin-top:18px}.module-card.planned{border-style:dashed;background:#fffdf6}.module-card.planned small,.planned-badge{color:#9a641d}.planned-card{max-width:760px}.planned-badge{font-size:.75rem;font-weight:900;letter-spacing:.12em;margin-bottom:8px}
@media(max-width:980px){body.nippu-with-nav{padding-left:0;padding-top:58px}.nippu-nav{transform:translateX(-105%);transition:transform .2s ease;box-shadow:8px 0 24px rgba(0,0,0,.16)}body.nippu-nav-open .nippu-nav{transform:none}.nippu-nav-toggle{display:block}.nippu-page{padding-top:4px}}

/* Navigointi 1.1: päämoduulit erikseen, hallinta rattaan alla */
.nippu-nav__tools{border-top:1px solid rgba(23,52,84,.16);padding-top:8px}
.nippu-nav__tools summary{cursor:pointer;font-weight:800;padding:9px 10px;border-radius:9px;list-style:none}
.nippu-nav__tools summary::-webkit-details-marker{display:none}
.nippu-nav__tools summary:hover{background:rgba(255,255,255,.55)}
.nippu-nav__tools a{margin-left:8px}
.nippu-nav__logout{margin-top:8px}


/* Yhtenäinen vasen navigointi 1.2 */
html,body{min-height:100%}
body.nippu-with-nav{padding-left:var(--nippu-nav-w)!important}
body.nippu-with-nav>.nippu-nav{display:flex!important}
body.nippu-with-nav>.nippu-nav-toggle{display:none}
.nippu-nav__context{margin:14px 0 2px;padding:12px 0;border-top:1px solid rgba(23,52,84,.16);border-bottom:1px solid rgba(23,52,84,.16)}
.nippu-nav__context-title{padding:0 10px 6px;font-size:.75rem;font-weight:900;letter-spacing:.11em;text-transform:uppercase;color:#8b5b24}
.nippu-nav__context a{font-size:.92rem;padding:7px 10px 7px 18px}
body.nippu-with-nav .wrapper.nippu-page{max-width:none;margin:0;padding-left:28px;padding-right:28px}
body.nippu-with-nav .tv-shell{max-width:none!important;margin:0!important;grid-template-columns:minmax(0,1fr)!important;box-shadow:none!important}
body.nippu-with-nav .tv-sidebar{display:none!important}
body.nippu-with-nav .tv-main{min-width:0}
@media(max-width:980px){
 body.nippu-with-nav{padding-left:0!important;padding-top:58px}
 body.nippu-with-nav>.nippu-nav-toggle{display:block}
 body.nippu-with-nav .wrapper.nippu-page{padding-left:14px;padding-right:14px}
}

/* Responsiivinen bottom bar 1.3 */
.nippu-bottom-bar{display:none}
@media(max-width:900px){
  body.nippu-with-nav{padding-left:0!important;padding-top:0!important;padding-bottom:calc(76px + env(safe-area-inset-bottom))!important}
  body.nippu-with-nav>.nippu-nav{display:none!important}
  body.nippu-with-nav>.nippu-nav-toggle{display:none!important}
  body.nippu-with-nav .wrapper.nippu-page{padding:18px 12px 28px!important}
  .nippu-bottom-bar{position:fixed;z-index:1300;left:0;right:0;bottom:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));min-height:64px;padding:5px 5px calc(5px + env(safe-area-inset-bottom));background:rgba(255,255,255,.97);border-top:1px solid #d7dde5;box-shadow:0 -8px 28px rgba(23,52,84,.13);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
  .nippu-bottom-bar__item{min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:5px 2px;border-radius:10px;color:#496078;text-decoration:none;font-weight:800;text-align:center;cursor:pointer;background:transparent;border:0;list-style:none}
  .nippu-bottom-bar__item::-webkit-details-marker{display:none}
  .nippu-bottom-bar__item>span{height:24px;line-height:24px;font-size:1.28rem;font-weight:900}
  .nippu-bottom-bar__item small{max-width:100%;font-size:.68rem;line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .nippu-bottom-bar__item.active,.nippu-bottom-more[open]>.nippu-bottom-bar__item{color:#0f6fae;background:#e8f3fa}
  .nippu-bottom-more{display:contents}
  .nippu-bottom-more__backdrop{position:fixed;z-index:1298;inset:0 0 calc(64px + env(safe-area-inset-bottom));background:rgba(15,23,42,.36)}
  .nippu-bottom-more__sheet{position:fixed;z-index:1299;left:8px;right:8px;bottom:calc(68px + env(safe-area-inset-bottom));max-height:min(70vh,620px);overflow:auto;padding:10px 14px 18px;border:1px solid #dbe2ea;border-radius:18px;background:#fff;box-shadow:0 18px 55px rgba(15,23,42,.28)}
  .nippu-bottom-more__handle{width:42px;height:4px;margin:2px auto 10px;border-radius:99px;background:#cbd5e1}
  .nippu-bottom-more__title{padding:2px 4px 12px;font-size:1.05rem;font-weight:900;color:#173454}
  .nippu-bottom-more__grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .nippu-bottom-more__grid a{display:flex;align-items:center;min-height:44px;padding:9px 11px;border:1px solid #e2e8f0;border-radius:11px;background:#f8fafc;color:#173454;text-decoration:none;font-weight:750}
  .nippu-bottom-more__grid a.active{border-color:#8dc5e5;background:#e8f3fa;color:#0f6fae}
}
@media(max-width:380px){
  .nippu-bottom-bar__item small{font-size:.61rem}
  .nippu-bottom-more__grid{grid-template-columns:1fr}
}


/* Tulostus: vain varsinainen sivun sisältö, ei Nippu-navigointia */
@media print{
  body.nippu-with-nav{padding:0!important;margin:0!important;background:#fff!important;}
  body.nippu-with-nav>.nippu-nav,
  body.nippu-with-nav>.nippu-nav-toggle,
  body.nippu-with-nav>.nippu-bottom-bar,
  .nippu-bottom-bar,
  .nippu-bottom-more,
  [data-nippu-nav]{display:none!important;}
  body.nippu-with-nav .wrapper.nippu-page,
  body.nippu-with-nav .wrapper{max-width:none!important;width:auto!important;margin:0!important;padding:0!important;}
}


/* Nippu4 mobiiliviimeistely 1.4 – sisältö ensin, bottom bar ei peitä toimintoja */
html,body{max-width:100%;overflow-x:hidden}
img,video,canvas,svg{max-width:100%}
@media(max-width:900px){
  body.nippu-with-nav{padding-bottom:calc(88px + env(safe-area-inset-bottom))!important}
  body.nippu-with-nav .wrapper.nippu-page,.wrapper{width:100%;max-width:100%;min-width:0;padding-left:10px!important;padding-right:10px!important;padding-bottom:calc(96px + env(safe-area-inset-bottom))!important;overflow-x:hidden}
  .card{padding:14px;border-radius:14px}
  .topbar{gap:8px;margin-bottom:12px}
  .topbar h1,h1{font-size:clamp(1.55rem,7.3vw,2.15rem);line-height:1.06}
  h2{font-size:1.25rem;line-height:1.15}
  input:not([type=checkbox]):not([type=radio]),select,textarea{max-width:100%;font-size:16px!important}
  textarea{min-height:110px}
  .actions{gap:6px}
  .button,button{max-width:100%}
  .table-card{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
  .module-grid{grid-template-columns:1fr;gap:9px}
  .module-card{padding:14px}
  .stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin:12px 0}
  .stats>div{min-width:0;padding:10px}
  .stats strong{font-size:1.45rem}
  [role=dialog]{max-width:calc(100vw - 12px)!important;max-height:calc(100dvh - 96px)!important}
}
@media(max-width:420px){
  body.nippu-with-nav .wrapper.nippu-page,.wrapper{padding-left:7px!important;padding-right:7px!important}
  .stats{grid-template-columns:1fr 1fr}
}


/* Nippu4 tunnelma + navigointi + mobiili 1.5 */
:root{
  --nippu-paper:#f8f3e6;--nippu-paper-2:#fffaf0;--nippu-ink:#173a5c;--nippu-orange:#e86f25;
  --nippu-pencil:#6e7881;--nippu-rule:#d9cfb8;--nippu-blue-soft:#edf4f7;
}
.nippu-nav__brand{display:block;text-decoration:none;color:var(--nippu-nav-ink)}
.nippu-font-soft{font-family:"Avenir Next","Trebuchet MS",system-ui,-apple-system,sans-serif}
.nippu-font-soft h1,.nippu-font-soft h2,.nippu-font-soft h3,.nippu-font-soft button,.nippu-font-soft .button{letter-spacing:.005em}
.nippu-font-notebook{
  font-family:"Avenir Next","Trebuchet MS",system-ui,-apple-system,sans-serif;
  color:var(--nippu-ink);
  background-color:#f3eddd;
  background-image:linear-gradient(rgba(49,91,123,.055) 1px,transparent 1px),linear-gradient(90deg,rgba(49,91,123,.055) 1px,transparent 1px);
  background-size:28px 28px;
}
.nippu-font-notebook .wrapper.nippu-page,.nippu-font-notebook .tv-main{background:rgba(255,251,243,.90)}
.nippu-font-notebook h1,.nippu-font-notebook h2,.nippu-font-notebook h3,
.nippu-font-notebook .nippu-nav a,.nippu-font-notebook .nippu-nav summary,
.nippu-font-notebook .button,.nippu-font-notebook button,
.nippu-font-notebook .tl-head-action,.nippu-font-notebook .tl-stage-tab,
.nippu-font-notebook .vt-tab,.nippu-font-notebook .vt-btn{
  font-family:"Segoe Print","Bradley Hand","Comic Sans MS",cursive;
  font-weight:700;
}
.nippu-font-notebook h1{letter-spacing:-.035em}
.nippu-font-notebook .nippu-nav{background:rgba(255,244,217,.96)}
.nippu-font-notebook .card,.nippu-font-notebook .module-card{background:rgba(255,253,248,.94);border-color:var(--nippu-rule)}
.nippu-font-notebook input,.nippu-font-notebook select,.nippu-font-notebook textarea,
.nippu-font-notebook table,.nippu-font-notebook code{font-family:system-ui,-apple-system,"Segoe UI",sans-serif}
.nippu-font-notebook .button:not(.secondary),.nippu-font-notebook button:not(.secondary){border-radius:18px}

/* Reitti ei pääty: yhteinen navigointi on aina käyttökelpoinen. */
.nippu-nav__links a,.nippu-bottom-more__grid a{overflow-wrap:anywhere}
.nippu-nav__bottom{background:linear-gradient(to bottom,transparent,rgba(255,244,217,.96) 18px)}

/* Kaikkien moduulien turvallinen responsiivinen pohja. */
.nippu-page,.wrapper,.card,main,section,article,form,fieldset{min-width:0;box-sizing:border-box}
input,select,textarea{max-width:100%;box-sizing:border-box}
pre,code{max-width:100%;overflow-wrap:anywhere}

@media(max-width:900px){
  body.nippu-with-nav{font-size:16px}
  body.nippu-with-nav .wrapper.nippu-page{background-color:rgba(255,251,243,.96)}
  .topbar{display:flex!important;flex-wrap:wrap!important;align-items:flex-start!important;gap:7px!important}
  .topbar>*,.topbar>div{min-width:0;max-width:100%}
  .topbar h1{margin-bottom:2px}
  .muted{line-height:1.25}
  .card{margin-bottom:9px!important}
  .button,button,input,select,textarea{min-height:44px}
  input[type=checkbox],input[type=radio]{min-height:0}
  .actions,.toolbar,[class*="-actions"]{max-width:100%}
  .actions>*{min-width:0}
  details>summary{touch-action:manipulation}
  form:not(.inline-form){padding-bottom:4px}
  form:not(.inline-form)>button[type=submit]:last-child,
  form:not(.inline-form)>.actions:last-child{
    position:sticky;bottom:calc(72px + env(safe-area-inset-bottom));z-index:40;
  }
  form:not(.inline-form)>button[type=submit]:last-child{box-shadow:0 5px 20px rgba(23,52,84,.16)}
  .table-card table{min-width:620px}
  .nippu-bottom-more__sheet{padding-bottom:calc(18px + env(safe-area-inset-bottom))}
}
@media(max-width:520px){
  body.nippu-with-nav{font-size:16px}
  h1{font-size:clamp(1.72rem,8.4vw,2.3rem)!important}
  h2{font-size:1.28rem!important}
  h3{font-size:1.08rem!important}
  .button,button{font-weight:800}
  .stats{margin:8px 0!important}
}

/* Taskulista: sisältö ensin, tuntikenttä ei vie tilaa tavalliselta tehtävältä. */
@media(max-width:900px){
  .nippu-module-project_control .tl{font-size:1rem}
  .nippu-module-project_control .tl-row-title{font-size:1.08rem!important;line-height:1.2!important}
  .nippu-module-project_control .tl-row-actions{gap:5px!important;flex-wrap:wrap!important}
  .nippu-module-project_control .tl-row-actions form:has(input[name="work_hours"]) input[name="work_hours"]:placeholder-shown{display:none!important}
}

/* Tilannevirta: puhelimessa päivä + sisältö ovat yksi selkeä pystyrivi. */
@media(max-width:900px){
  .nippu-module-event_stream .tv-titlebar{padding:10px 9px!important}
  .nippu-module-event_stream .tv-toolbar{gap:6px!important}
  .nippu-module-event_stream .tv-day{grid-template-columns:56px minmax(0,1fr)!important;gap:8px!important;padding:10px 4px!important}
  .nippu-module-event_stream .tv-day-body,.nippu-module-event_stream .tv-entry{min-width:0!important;max-width:100%!important}
  .nippu-module-event_stream .tv-entry-title{font-size:1.08rem!important;line-height:1.2!important}
  .nippu-module-event_stream .tv-entry-actions{display:flex!important;flex-wrap:wrap!important;gap:6px!important}
  .nippu-module-event_stream .tv-filter{grid-template-columns:1fr!important}
  .nippu-module-event_stream .tv-quick-row,.nippu-module-event_stream .tv-grid{grid-template-columns:1fr!important}
}

/* Taskuvarasto: sama jämäkkä rytmi kuin Taskulistassa. */
@media(max-width:900px){
  .nippu-module-varastotasku .vt-wrap{padding:8px!important}
  .nippu-module-varastotasku .vt-head{gap:6px!important;margin-bottom:6px!important}
  .nippu-module-varastotasku .vt-sub{display:none!important}
  .nippu-module-varastotasku .vt-kpis{display:flex!important;overflow-x:auto!important;gap:6px!important;margin:5px 0 8px!important;scrollbar-width:none}
  .nippu-module-varastotasku .vt-kpi{flex:0 0 auto!important;min-width:112px!important;padding:7px 9px!important}
  .nippu-module-varastotasku .vt-kpi strong{font-size:1.08rem!important}
  .nippu-module-varastotasku .vt-tabs{display:flex!important;overflow-x:auto!important;gap:4px!important;white-space:nowrap!important;scrollbar-width:none}
  .nippu-module-varastotasku .vt-tab{padding:7px 9px!important}
  .nippu-module-varastotasku .vt-item{min-height:64px!important;padding:7px 8px!important;gap:8px!important;border-radius:11px!important}
  .nippu-module-varastotasku .vt-thumb{width:48px!important;height:48px!important;min-width:48px!important}
  .nippu-module-varastotasku .vt-name{font-size:1.05rem!important;line-height:1.13!important}
  .nippu-module-varastotasku .vt-meta{font-size:.78rem!important;line-height:1.15!important}
  .nippu-module-varastotasku .vt-balance{font-size:.95rem!important}
  .nippu-module-varastotasku .vt-fields,.nippu-module-varastotasku .vt-grid{grid-template-columns:1fr!important}
}

/* NippuSystems design system 2.0 – yhteinen pinta kaikille moduuleille */
:root{
  --ns-bg:#f3eddd;
  --ns-surface:#fffdf8;
  --ns-surface-strong:#fffaf0;
  --ns-ink:#173a5c;
  --ns-muted:#68737c;
  --ns-line:#d9cfb8;
  --ns-line-soft:#e9e1d1;
  --ns-primary:#173a5c;
  --ns-primary-hover:#214b72;
  --ns-accent:#e86f25;
  --ns-success:#477a5b;
  --ns-success-bg:#edf5ee;
  --ns-wait:#9a6a2f;
  --ns-wait-bg:#fbf1df;
  --ns-danger:#9a3d35;
  --ns-danger-bg:#fbefed;
  --ns-radius:14px;
  --ns-radius-sm:10px;
  --ns-shadow:0 5px 18px rgba(54,45,30,.07);
  --ns-tap:46px;
  --ns-page-x:16px;
  --ns-gap:14px;
  --ns-fast:140ms;
}

body.nippu-with-nav{
  color:var(--ns-ink);
  background:var(--ns-bg);
  font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  line-height:1.42;
}
body.nippu-with-nav::before{
  content:"";position:fixed;z-index:-1;inset:0;pointer-events:none;
  background:linear-gradient(rgba(255,255,255,.24),rgba(255,255,255,.24)),
             repeating-linear-gradient(0deg,rgba(95,76,43,.018) 0 1px,transparent 1px 5px);
}
body.nippu-with-nav .wrapper.nippu-page,
body.nippu-with-nav .wrapper{box-sizing:border-box}
body.nippu-with-nav h1,body.nippu-with-nav h2,body.nippu-with-nav h3{color:var(--ns-ink)}
body.nippu-with-nav h1{font-size:clamp(1.8rem,3vw,2.2rem);line-height:1.08;letter-spacing:-.025em;margin-bottom:4px}
body.nippu-with-nav h2{font-size:1.35rem;line-height:1.15}
body.nippu-with-nav h3{font-size:1.08rem;line-height:1.2}
body.nippu-with-nav .muted{color:var(--ns-muted)}

/* Kortti on paperi, ei kelluva yritysportaalilaatikko. */
body.nippu-with-nav .card,
body.nippu-with-nav .module-card,
body.nippu-with-nav .note-item{
  background:var(--ns-surface);
  border:1px solid var(--ns-line-soft);
  border-radius:var(--ns-radius);
  box-shadow:var(--ns-shadow);
}
body.nippu-with-nav .card{padding:18px}
body.nippu-with-nav .module-card{transition:transform var(--ns-fast) ease,border-color var(--ns-fast) ease,box-shadow var(--ns-fast) ease}
body.nippu-with-nav .module-card:hover{border-color:#c9b98f;box-shadow:0 7px 21px rgba(54,45,30,.09);transform:translateY(-1px)}

/* Yksi painikehierarkia koko järjestelmään. */
body.nippu-with-nav button,
body.nippu-with-nav .button{
  min-height:var(--ns-tap);box-sizing:border-box;padding:10px 15px;border:1px solid transparent;
  border-radius:var(--ns-radius-sm);background:var(--ns-primary);color:#fff;font-weight:750;
  line-height:1.1;text-decoration:none;box-shadow:none;transition:background var(--ns-fast) ease,transform 80ms ease,border-color var(--ns-fast) ease;
  -webkit-tap-highlight-color:transparent;
}
body.nippu-with-nav button:hover,body.nippu-with-nav .button:hover{background:var(--ns-primary-hover)}
body.nippu-with-nav button:active,body.nippu-with-nav .button:active{transform:translateY(1px) scale(.99)}
body.nippu-with-nav .button.secondary,body.nippu-with-nav button.secondary{
  background:var(--ns-surface-strong);color:var(--ns-ink);border-color:var(--ns-line);
}
body.nippu-with-nav .button.secondary:hover,body.nippu-with-nav button.secondary:hover{background:#f5eddd;border-color:#c8b990}
body.nippu-with-nav .danger,body.nippu-with-nav button.danger{background:var(--ns-danger);color:#fff}
body.nippu-with-nav .button.compact{min-height:38px;padding:7px 11px}
body.nippu-with-nav .button-link{color:var(--ns-primary)}

/* Lomakkeet tuntuvat samoilta riippumatta moduulista. */
body.nippu-with-nav label{color:var(--ns-ink);font-size:1rem;font-weight:750}
body.nippu-with-nav input:not([type=checkbox]):not([type=radio]),
body.nippu-with-nav select,
body.nippu-with-nav textarea{
  width:100%;min-height:46px;margin:6px 0 12px;padding:10px 12px;border:1px solid #cfc5b0;
  border-radius:10px;background:#fffefa;color:#1f3345;font:inherit;box-shadow:inset 0 1px 1px rgba(54,45,30,.025);
}
body.nippu-with-nav textarea{min-height:118px}
body.nippu-with-nav input:focus,body.nippu-with-nav select:focus,body.nippu-with-nav textarea:focus{
  outline:3px solid rgba(23,58,92,.12);outline-offset:1px;border-color:#8298aa;
}
body.nippu-with-nav input[type=checkbox],body.nippu-with-nav input[type=radio]{accent-color:var(--ns-primary)}

/* Tilat: väri tukee sanaa, eikä korvaa sitä. */
body.nippu-with-nav .status,body.nippu-with-nav .badge,body.nippu-with-nav [class*="status-badge"]{
  border-radius:999px;font-weight:750;border:1px solid transparent;
}
body.nippu-with-nav .status-active,body.nippu-with-nav .approved{background:var(--ns-success-bg);color:#315e43;border-color:#cfe0d2}
body.nippu-with-nav .status-disabled{background:var(--ns-danger-bg);color:#85372f;border-color:#ead1cd}
body.nippu-with-nav .status-neutral{background:#f2eee5;color:#53606b;border-color:#ddd4c4}
body.nippu-with-nav .success{background:var(--ns-success-bg);color:#315e43;border:1px solid #cfe0d2;border-radius:10px}
body.nippu-with-nav .error{background:var(--ns-danger-bg);color:#85372f;border:1px solid #ead1cd;border-radius:10px}

/* Taulukot seuraavat paperimaailmaa. */
body.nippu-with-nav th{color:var(--ns-ink);font-size:.88rem;letter-spacing:.015em;background:#f7f1e5}
body.nippu-with-nav th,body.nippu-with-nav td{border-bottom-color:var(--ns-line-soft);padding:11px 10px}

/* Yläosa: hanke ja tehtävä ensin, raskaat napit pois otsikon tieltä. */
body.nippu-with-nav .topbar{margin-bottom:14px;gap:12px}
body.nippu-with-nav .topbar .actions{justify-content:flex-end}

/* Vasemman reunan työkalukaappi. */
.nippu-nav{
  background:#f6ecd3;border-right-color:#d9ccb0;padding:20px 16px;color:var(--ns-ink);
}
.nippu-nav__brand{margin:1px 8px 17px;letter-spacing:.035em;font-size:1.08rem;font-weight:900;color:var(--ns-ink)}
.nippu-nav__brand span{color:var(--ns-accent)}
.nippu-nav a,.nippu-nav summary{border-radius:9px;padding:8px 10px;font-weight:720}
.nippu-nav a.active{color:var(--ns-primary);background:rgba(255,253,248,.92);box-shadow:inset 3px 0 0 var(--ns-accent)}
.nippu-nav__context,.nippu-nav__bottom,.nippu-nav__planned{border-color:#ded0b4}
.nippu-nav__context-title{color:#8b5b24}

/* Mobiili: 5 työkalua, suuret osuma-alueet, kevyt aktiivisuus. */
@media(max-width:900px){
  :root{--ns-page-x:10px;--ns-gap:10px}
  body.nippu-with-nav .wrapper.nippu-page,body.nippu-with-nav .wrapper{padding-left:var(--ns-page-x)!important;padding-right:var(--ns-page-x)!important}
  body.nippu-with-nav .card{padding:13px;box-shadow:0 3px 12px rgba(54,45,30,.055)}
  body.nippu-with-nav h1,.topbar h1{font-size:clamp(1.62rem,7.2vw,2rem)!important;line-height:1.05!important}
  body.nippu-with-nav h2{font-size:1.22rem!important}
  body.nippu-with-nav .topbar{margin-bottom:9px!important}
  body.nippu-with-nav .topbar .button{width:auto!important;min-height:42px;padding:9px 12px}
  body.nippu-with-nav button,body.nippu-with-nav .button{min-height:46px}
  .nippu-bottom-bar{min-height:66px;background:rgba(255,253,248,.97);border-top-color:#d8cfbe;box-shadow:0 -5px 22px rgba(54,45,30,.12)}
  .nippu-bottom-bar__item{min-height:54px;color:#586a78;border-radius:11px}
  .nippu-bottom-bar__item.active,.nippu-bottom-more[open]>.nippu-bottom-bar__item{color:var(--ns-primary);background:#f4ead4;box-shadow:inset 0 0 0 1px #e0d0ad}
  .nippu-bottom-bar__item>span{font-size:1.18rem}
  .nippu-bottom-bar__item small{font-size:.7rem}
  .nippu-bottom-more__sheet{background:var(--ns-surface);border-color:var(--ns-line);border-radius:18px}
}

/* Kauppalistatunnelma: pieni käsin tehty jälki vain aksentiksi. */
body.nippu-with-nav .nippu-stamp,
body.nippu-with-nav .stamp{
  display:inline-flex;align-items:center;gap:5px;padding:5px 8px;border:2px solid rgba(23,58,92,.63);
  border-radius:5px;color:rgba(23,58,92,.78);font-weight:850;letter-spacing:.06em;text-transform:uppercase;
  transform:rotate(-1.2deg);background:rgba(255,253,248,.58);
}

/* Vähemmän käsialafonttia: notebook on aksenttitila, sisältö pysyy luettavana. */
.nippu-font-notebook,
.nippu-font-notebook input,.nippu-font-notebook select,.nippu-font-notebook textarea,
.nippu-font-notebook table,.nippu-font-notebook code,
.nippu-font-notebook h1,.nippu-font-notebook h2,.nippu-font-notebook h3,
.nippu-font-notebook .nippu-nav a,.nippu-font-notebook .nippu-nav summary,
.nippu-font-notebook .button,.nippu-font-notebook button{
  font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
}
.nippu-font-notebook .nippu-nav__brand,.nippu-font-notebook .nippu-stamp,.nippu-font-notebook .stamp{
  font-family:"Segoe Print","Bradley Hand",cursive;
}

@media(prefers-reduced-motion:reduce){
  body.nippu-with-nav *,body.nippu-with-nav *::before,body.nippu-with-nav *::after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}
}

/* NippuSystems design 2.1 – mobiilin tiivistys ja toimintohierarkian korjaus
   Kuvakatselmuksen 27.8.2026 perusteella. Yhteinen design ei saa muuttaa
   listan linkkejä, välilehtiä tai rivipainikkeita päätoiminnoiksi. */

/* Työpöytä: mobiilissa moduulivalitsin on sovellusvalikko, ei esite. */
@media(max-width:900px){
  .nippu-module-dashboard .wrapper.nippu-page{padding-top:10px!important}
  .nippu-module-dashboard .topbar{margin:0 0 7px!important}
  .nippu-module-dashboard .topbar h1{font-size:1.48rem!important;line-height:1.08!important;letter-spacing:-.025em!important}
  .nippu-module-dashboard .topbar .muted{font-size:.76rem!important;line-height:1.15!important}
  .nippu-module-dashboard>.wrapper>.card,
  .nippu-module-dashboard .wrapper>.card{padding:8px!important;border:0!important;background:transparent!important;box-shadow:none!important}
  .nippu-module-dashboard .wrapper>.card>h2{margin:0 0 7px!important;font-size:1.02rem!important}
  .nippu-module-dashboard .wrapper>.card>p{display:none!important}
  .nippu-module-dashboard .module-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:6px!important;margin-top:0!important}
  .nippu-module-dashboard .module-card{min-height:58px!important;justify-content:center!important;padding:9px 11px!important;border-radius:10px!important;box-shadow:none!important}
  .nippu-module-dashboard .module-card strong{font-size:.94rem!important;line-height:1.12!important}
  .nippu-module-dashboard .module-card span,.nippu-module-dashboard .module-card small{display:none!important}
}
@media(max-width:390px){
  .nippu-module-dashboard .module-grid{grid-template-columns:1fr!important}
  .nippu-module-dashboard .module-card{min-height:50px!important}
}

/* Lisää-valikko: sama sisältö, mutta taskukokoinen. */
@media(max-width:900px){
  .nippu-bottom-bar{min-height:60px!important;padding-top:3px!important;padding-bottom:calc(3px + env(safe-area-inset-bottom))!important}
  .nippu-bottom-bar__item{min-height:50px!important;padding:3px 2px!important}
  .nippu-bottom-bar__item>span{height:21px!important;line-height:21px!important;font-size:1.08rem!important}
  .nippu-bottom-bar__item small{font-size:.64rem!important}
  .nippu-bottom-more__sheet{left:7px!important;right:7px!important;bottom:calc(62px + env(safe-area-inset-bottom))!important;max-height:56vh!important;padding:6px 8px 9px!important;border-radius:14px!important}
  .nippu-bottom-more__handle{width:34px!important;height:3px!important;margin:1px auto 5px!important}
  .nippu-bottom-more__title{padding:1px 3px 6px!important;font-size:.88rem!important}
  .nippu-bottom-more__grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:4px!important}
  .nippu-bottom-more__grid a{min-height:41px!important;padding:5px 8px!important;border-radius:8px!important;font-size:.79rem!important;line-height:1.08!important;box-shadow:none!important}
}

/* TASKULISTA ---------------------------------------------------------
   Pääasia on rivi. Otsikko ja työkalut eivät saa käyttää kolmasosaa ruudusta. */
@media(max-width:900px){
  .nippu-module-project_control .tl{padding:6px 8px 72px!important}
  .nippu-module-project_control .tl-head{display:flex!important;align-items:center!important;gap:7px!important;margin:0 0 5px!important;min-width:0!important}
  .nippu-module-project_control .tl h1{flex:0 0 auto!important;font-size:1.72rem!important;line-height:1!important;letter-spacing:-.04em!important}
  .nippu-module-project_control .tl-head-actions{min-width:0!important;flex:1 1 auto!important;display:flex!important;gap:1px!important;overflow-x:auto!important;white-space:nowrap!important;scrollbar-width:none!important;-webkit-overflow-scrolling:touch!important}
  .nippu-module-project_control .tl-head-actions::-webkit-scrollbar{display:none!important}
  .nippu-module-project_control .tl-head-action{min-height:36px!important;padding:6px 6px!important;border:0!important;border-radius:7px!important;background:transparent!important;color:var(--ink)!important;box-shadow:none!important;font-size:.72rem!important;font-weight:800!important;transform:none!important}
  .nippu-module-project_control .tl-head-action:hover{background:rgba(255,255,255,.45)!important}
  .nippu-module-project_control .tl-toolbar{min-height:0!important;margin:0!important;padding:2px 0 6px!important}
  .nippu-module-project_control .tl-selection-names{font-size:.79rem!important;line-height:1.15!important}

  .nippu-module-project_control .tl-stage-tabs{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:3px!important;margin:4px 0 7px!important;padding:3px!important;border:1px solid var(--line)!important;border-radius:10px!important;background:rgba(255,253,248,.55)!important}
  .nippu-module-project_control .tl-stage-tab{min-height:39px!important;padding:5px 5px!important;border:0!important;border-radius:7px!important;background:transparent!important;color:var(--muted)!important;box-shadow:none!important;font-size:.83rem!important;line-height:1.05!important;font-weight:800!important;transform:none!important}
  .nippu-module-project_control .tl-stage-tab.active{background:#edf4f7!important;color:var(--ink)!important;box-shadow:inset 0 0 0 1px #d4e1e8!important}

  .nippu-module-project_control .tl-project-pick{margin-top:2px!important}
  .nippu-module-project_control .tl-project-card{grid-template-columns:30px minmax(0,1fr) 30px!important;min-height:58px!important;padding:5px 4px!important;gap:5px!important}
  .nippu-module-project_control .tl-project-check{width:20px!important;height:20px!important;margin:0!important}
  .nippu-module-project_control .tl-project-link strong{font-size:.98rem!important;line-height:1.12!important}
  .nippu-module-project_control .tl-project-link small{font-size:.64rem!important;line-height:1!important;margin-top:2px!important}
  .nippu-module-project_control .tl-archive-btn{min-height:38px!important;width:30px!important;padding:0!important;border:0!important;background:transparent!important;color:#7c8993!important;box-shadow:none!important}

  .nippu-module-project_control .tl-listbar{margin:3px 0!important}
  .nippu-module-project_control .tl-row{padding:7px 3px!important}
  .nippu-module-project_control .tl-row-title,.nippu-module-project_control .tl-title{font-size:1.04rem!important;line-height:1.15!important}
  .nippu-module-project_control .tl-row-actions{gap:3px!important}
  .nippu-module-project_control .tl-row-actions button,
  .nippu-module-project_control .tl-mini,
  .nippu-module-project_control .tl-stream>summary.tl-mini{min-height:40px!important;min-width:40px!important;width:auto!important;padding:0 8px!important;border:0!important;border-radius:8px!important;background:transparent!important;color:#617585!important;box-shadow:none!important;transform:none!important}
  .nippu-module-project_control .tl-row-actions .tl-mini.complete{background:#edf4f7!important;color:var(--ink)!important;border:1px solid #c9dce7!important;font-size:.75rem!important;width:auto!important;min-width:44px!important}
  .nippu-module-project_control .tl-row-actions .tl-mini.complete::before{font-size:1rem!important}
  .nippu-module-project_control .tl-btn:not(.primary){background:#fffdf8!important;color:var(--ink)!important;border:1px solid var(--line)!important;box-shadow:none!important}
  .nippu-module-project_control .tl-btn.primary{background:var(--ink)!important;color:#fff!important;border-color:var(--ink)!important}
}

/* TILANNEVIRTA -------------------------------------------------------
   Tapahtuman otsikko on avattava rivi, ei sininen toimintopainike. */
.nippu-module-event_stream .tv-entry-title{
  min-height:0!important;padding:3px 0!important;border:0!important;border-radius:0!important;
  background:transparent!important;color:inherit!important;box-shadow:none!important;transform:none!important;
}
.nippu-module-event_stream .tv-entry-title:hover{background:transparent!important;color:#075eaa!important}
.nippu-module-event_stream .tv-entry-actions button,
.nippu-module-event_stream .tv-link-action{
  min-height:36px!important;padding:5px 7px!important;border:0!important;border-radius:7px!important;
  background:transparent!important;color:#075eaa!important;box-shadow:none!important;transform:none!important;
}
.nippu-module-event_stream .tv-entry-actions button.done{color:var(--tv-green)!important}

@media(max-width:900px){
  .nippu-module-event_stream .tv-content{padding:7px 5px 20px!important}
  .nippu-module-event_stream .tv-week{border-radius:12px!important}
  .nippu-module-event_stream .tv-week-head{padding:10px 12px!important}
  .nippu-module-event_stream .tv-week-title{font-size:1.08rem!important}
  .nippu-module-event_stream .tv-progress{width:52px!important;height:52px!important}
  .nippu-module-event_stream .tv-progress span{width:42px!important;height:42px!important;font-size:.76rem!important}
  .nippu-module-event_stream .tv-day{grid-template-columns:62px minmax(0,1fr)!important;gap:0!important;padding:0!important;min-height:0!important}
  .nippu-module-event_stream .tv-date{padding:9px 5px!important}
  .nippu-module-event_stream .tv-date-bubble{width:44px!important;height:44px!important;margin-bottom:3px!important;font-size:.9rem!important}
  .nippu-module-event_stream .tv-date-number{font-size:.72rem!important}
  .nippu-module-event_stream .tv-day-body{padding:9px 9px 9px 10px!important;border-left:1px solid #cbd6df!important}
  .nippu-module-event_stream .tv-day-title{margin-bottom:4px!important;font-size:.82rem!important}
  .nippu-module-event_stream .tv-entry{gap:5px!important;padding:5px 0!important}
  .nippu-module-event_stream .tv-entry-title{font-size:.98rem!important;line-height:1.13!important}
  .nippu-module-event_stream .tv-entry-title:before{width:8px!important;height:8px!important;margin-right:7px!important;box-shadow:0 0 0 3px #e9f3fb!important}
  .nippu-module-event_stream .tv-entry-meta{margin:3px 0 0 15px!important;font-size:.76rem!important;line-height:1.18!important}
  .nippu-module-event_stream .tv-entry-description{margin:4px 0 0 15px!important;font-size:.83rem!important}
  .nippu-module-event_stream .tv-entry-actions{flex-direction:row!important;align-items:center!important;gap:3px!important;min-width:0!important;padding-top:4px!important;flex-wrap:wrap!important}
  .nippu-module-event_stream .tv-entry-actions form{display:inline-flex!important;align-items:center!important;gap:3px!important;margin:0!important}
  .nippu-module-event_stream .tv-entry-actions input[type=date]{width:142px!important;min-height:40px!important;margin:0!important;padding:5px 7px!important}
  .nippu-module-event_stream .tv-entry-actions button,.nippu-module-event_stream .tv-link-action{min-height:40px!important;padding:5px 8px!important;font-size:.78rem!important}
  .nippu-module-event_stream .tv-entry-actions button.done{background:#edf5ee!important;border:1px solid #d0dfd3!important;color:#356649!important}

  /* Tyhjä päivä saa olla todella kevyt yksi rivi. */
  .nippu-module-event_stream .tv-day-empty{min-height:62px!important;padding:5px 9px!important;gap:9px!important}
  .nippu-module-event_stream .tv-empty-badge{width:42px!important;height:42px!important;font-size:.8rem!important}
  .nippu-module-event_stream .tv-empty-date{font-size:.72rem!important}
  .nippu-module-event_stream .tv-empty-line{min-width:30px!important}
  .nippu-module-event_stream .tv-day-empty::after{content:"Ei merkintöjä";order:2;white-space:nowrap;color:#617585;font-size:.8rem}
  .nippu-module-event_stream .tv-day-empty .tv-empty-line{order:3}
  .nippu-module-event_stream .tv-day-empty>.tv-empty-marker{order:1}

  .nippu-module-event_stream .tv-toolbar{padding:7px 9px!important;gap:5px!important}
  .nippu-module-event_stream .tv-toolbar .button{min-height:40px!important;padding:7px 9px!important;font-size:.78rem!important}
}

/* NippuSystems design 2.2 – oikea puhelinleveys ja kevyt kuittaus
   27.8.2026: työpöytä pysyy kaksipalstaisena, Tilannevirran aikajana ei romahda
   yhden palstan mobiilirakenteeksi ja Taskulistan rivitoiminnot ovat kevyitä. */

/* Työpöytä: kaksi saraketta myös 320–390 px leveällä puhelimella. */
@media(max-width:390px){
  .nippu-module-dashboard .module-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:5px!important}
  .nippu-module-dashboard .module-card{min-height:52px!important;padding:7px 8px!important}
  .nippu-module-dashboard .module-card strong{font-size:clamp(.77rem,4vw,.9rem)!important;line-height:1.08!important;overflow-wrap:anywhere!important}
}

/* Tilannevirta: sama perusrakenne säilyy myös kapealla puhelimella.
   Vasen päivämerkki + oikea sisältö. Toiminnot saavat rivittyä sisällön sisällä. */
@media(max-width:650px){
  .nippu-module-event_stream .tv-day{
    display:grid!important;grid-template-columns:52px minmax(0,1fr)!important;gap:0!important;padding:0!important;
  }
  .nippu-module-event_stream .tv-date{
    display:block!important;text-align:center!important;padding:8px 3px!important;
  }
  .nippu-module-event_stream .tv-date-bubble{width:40px!important;height:40px!important;margin:0 auto 3px!important}
  .nippu-module-event_stream .tv-day-body{border-left:1px solid #cbd6df!important;padding:8px 7px 9px 8px!important;min-width:0!important}
  .nippu-module-event_stream .tv-entry{display:block!important;width:100%!important;min-width:0!important}
  .nippu-module-event_stream .tv-entry-main{min-width:0!important}
  .nippu-module-event_stream .tv-entry-title{font-size:.94rem!important;line-height:1.12!important;overflow-wrap:anywhere!important}
  .nippu-module-event_stream .tv-entry-description{font-size:.8rem!important;line-height:1.22!important}
  .nippu-module-event_stream .tv-quick-share{display:flex!important;gap:4px!important;flex-wrap:wrap!important;margin:5px 0 0!important}
  .nippu-module-event_stream .tv-quick-share button{
    min-height:34px!important;padding:4px 7px!important;border:1px solid #d7e0e6!important;border-radius:7px!important;
    background:#fffdf8!important;color:#173a5c!important;box-shadow:none!important;font-size:.72rem!important;font-weight:750!important;
  }
  .nippu-module-event_stream .tv-entry-actions{width:100%!important;margin:5px 0 0!important;padding-top:5px!important;gap:4px!important}
  .nippu-module-event_stream .tv-entry-actions form{max-width:100%!important;display:flex!important;align-items:center!important;gap:3px!important;flex-wrap:wrap!important}
  .nippu-module-event_stream .tv-entry-actions input[type=date]{width:132px!important;min-height:36px!important;font-size:.78rem!important;padding:4px 5px!important}
  .nippu-module-event_stream .tv-entry-actions button,.nippu-module-event_stream .tv-link-action{
    min-height:34px!important;padding:4px 6px!important;font-size:.72rem!important;background:transparent!important;border:0!important;color:#075eaa!important;
  }
  .nippu-module-event_stream .tv-entry-actions button.done{
    background:transparent!important;border:0!important;color:#356649!important;font-weight:800!important;padding-left:0!important;
  }
  .nippu-module-event_stream .tv-entry-actions button.done::before{content:'✓ ';font-weight:900}
  .nippu-module-event_stream .tv-day-empty{display:grid!important;grid-template-columns:52px minmax(0,1fr)!important;min-height:52px!important;padding:0!important;gap:0!important}
  .nippu-module-event_stream .tv-day-empty>.tv-empty-marker{padding:6px 3px!important;justify-content:center!important}
  .nippu-module-event_stream .tv-day-empty::after{align-self:center!important;padding-left:8px!important}
  .nippu-module-event_stream .tv-day-empty .tv-empty-line{display:none!important}
}

/* Taskulista: kuittaus näyttää rivitoiminnolta, ei isolta pääpainikkeelta. */
@media(max-width:900px){
  .nippu-module-project_control .tl-mini.complete{
    min-width:0!important;min-height:36px!important;width:auto!important;padding:4px 7px!important;
    border:0!important;border-radius:7px!important;background:transparent!important;color:#356649!important;
    box-shadow:none!important;font-size:.74rem!important;font-weight:850!important;text-decoration:none!important;
  }
  .nippu-module-project_control .tl-mini.complete:hover{background:#edf5ee!important}
  .nippu-module-project_control .tl-mini.complete::before{content:'✓ '!important;font-size:.88rem!important}
  .nippu-module-project_control .tl-select-actions{z-index:30}
}

/* NippuSystems design 2.3 – oikean iPhonen kapea näkymä
   27.8.2026: Tilannevirran vasen päiväsarake pienemmäksi, otsikon rivitys hallituksi
   ja Taskulistan valintapalkki pois viimeisten projektien päältä. */

/* Taskulista: hidden-attribuutti voittaa aina komponentin display:flex-säännön.
   Valintapalkki on osa dokumenttivirtaa, ei viimeisen projektin päällä kelluva kerros. */
.nippu-module-project_control .tl-select-actions[hidden]{display:none!important}
.nippu-module-project_control .tl-select-actions{
  position:static!important;
  bottom:auto!important;
  margin:7px 0 2px!important;
  box-shadow:none!important;
}

@media(max-width:430px){
  /* Tilannevirta: vasen päiväsarake on vain orientaatiomerkki. */
  .nippu-module-event_stream .tv-day{
    grid-template-columns:36px minmax(0,1fr)!important;
  }
  .nippu-module-event_stream .tv-date{
    padding:5px 2px!important;
  }
  .nippu-module-event_stream .tv-date-bubble{
    width:28px!important;height:28px!important;margin:0 auto 2px!important;
    font-size:.65rem!important;line-height:1!important;box-shadow:none!important;
  }
  .nippu-module-event_stream .tv-date-number{
    font-size:.61rem!important;line-height:1.05!important;white-space:nowrap!important;
  }
  .nippu-module-event_stream .tv-day-body{
    padding:5px 5px 6px 6px!important;
  }
  .nippu-module-event_stream .tv-day-title{
    font-size:.66rem!important;line-height:1.1!important;margin:0 0 2px!important;
  }

  /* Otsikko saa leveyden ensin. Aika pysyy alussa, jaettu + nuoli siirtyvät
     tarvittaessa toiselle riville eivätkä purista otsikkoa kolmen sanan pinoiksi. */
  .nippu-module-event_stream .tv-entry-title{
    display:grid!important;
    grid-template-columns:auto minmax(0,1fr) auto!important;
    column-gap:5px!important;row-gap:2px!important;
    align-items:start!important;
    padding:2px 0!important;
    font-size:.88rem!important;line-height:1.08!important;
    overflow-wrap:normal!important;word-break:normal!important;
  }
  .nippu-module-event_stream .tv-entry-title:before{
    grid-column:1!important;margin:4px 0 0!important;width:7px!important;height:7px!important;
  }
  .nippu-module-event_stream .tv-entry-time{
    grid-column:2!important;display:inline!important;margin-right:4px!important;
  }
  .nippu-module-event_stream .tv-entry-title .tv-badge{
    grid-column:3!important;grid-row:1!important;margin:0!important;padding:1px 4px!important;
    max-width:44px!important;font-size:.58rem!important;line-height:1.05!important;
    white-space:normal!important;text-align:center!important;overflow-wrap:anywhere!important;
  }
  .nippu-module-event_stream .tv-entry-toggle-icon{
    grid-column:3!important;grid-row:2!important;justify-self:center!important;
    margin:0!important;font-size:1rem!important;line-height:.8!important;
  }
  /* title-buttonin raakateksti sijoittuu gridin keskisarakkeeseen selaimen anonymous grid iteminä. */

  .nippu-module-event_stream .tv-entry-description{
    margin-top:4px!important;font-size:.76rem!important;line-height:1.18!important;
  }
  .nippu-module-event_stream .tv-entry-project,
  .nippu-module-event_stream .tv-entry-meta{
    font-size:.64rem!important;line-height:1.14!important;
  }

  /* Jako- ja pikatoiminnot tiiviinä, ei kahta valtavaa nappilaatikkoa. */
  .nippu-module-event_stream .tv-quick-share{
    gap:3px!important;margin:4px 0 0!important;
  }
  .nippu-module-event_stream .tv-quick-share button{
    min-height:28px!important;padding:3px 5px!important;font-size:.62rem!important;border-radius:6px!important;
  }
  .nippu-module-event_stream .tv-entry-actions{
    gap:3px 5px!important;margin:4px 0 0!important;padding-top:4px!important;
  }
  .nippu-module-event_stream .tv-entry-actions form{
    gap:2px!important;margin:0!important;
  }
  .nippu-module-event_stream .tv-entry-actions input[type=date]{
    width:108px!important;min-height:30px!important;margin:0!important;padding:3px 4px!important;
    font-size:.66rem!important;border-radius:7px!important;
  }
  .nippu-module-event_stream .tv-entry-actions button,
  .nippu-module-event_stream .tv-link-action{
    min-height:28px!important;padding:2px 3px!important;font-size:.64rem!important;
  }
  .nippu-module-event_stream .tv-entry-actions button.done{
    padding:2px 3px 2px 0!important;
  }

  /* Avatun merkinnän muokkaus: tila käytetään kenttiin, ei sisäkkäisiin kortteihin. */
  .nippu-module-event_stream .tv-entry.is-open{
    margin:2px 0 5px!important;padding:4px!important;border-radius:8px!important;
  }
  .nippu-module-event_stream .tv-entry.is-open .tv-edit-core{
    margin:5px 0 0!important;padding:5px!important;border-radius:8px!important;
  }
  .nippu-module-event_stream .tv-entry.is-open .tv-edit-core-grid{
    gap:4px!important;
  }
  .nippu-module-event_stream .tv-entry.is-open .tv-edit-core label{
    font-size:.66rem!important;line-height:1.08!important;
  }
  .nippu-module-event_stream .tv-entry.is-open .tv-edit-core input,
  .nippu-module-event_stream .tv-entry.is-open .tv-edit-core select,
  .nippu-module-event_stream .tv-entry.is-open .tv-edit-core textarea{
    min-height:34px!important;margin:3px 0 4px!important;padding:5px 6px!important;
    font-size:16px!important;border-radius:7px!important;
  }
  .nippu-module-event_stream .tv-entry.is-open .tv-edit-core textarea{
    min-height:64px!important;
  }
  .nippu-module-event_stream .tv-edit-save{
    margin-top:5px!important;
  }

  /* Myös tyhjien päivien vasen sarake seuraa samaa mittaa. */
  .nippu-module-event_stream .tv-day-empty{
    grid-template-columns:36px minmax(0,1fr)!important;min-height:40px!important;
  }
  .nippu-module-event_stream .tv-day-empty>.tv-empty-marker{
    padding:4px 2px!important;
  }
}

@media(max-width:360px){
  .nippu-module-event_stream .tv-day{grid-template-columns:32px minmax(0,1fr)!important}
  .nippu-module-event_stream .tv-date-bubble{width:25px!important;height:25px!important;font-size:.6rem!important}
  .nippu-module-event_stream .tv-date-number{font-size:.56rem!important}
  .nippu-module-event_stream .tv-day-body{padding-left:4px!important;padding-right:4px!important}
  .nippu-module-event_stream .tv-day-empty{grid-template-columns:32px minmax(0,1fr)!important}
}

/* NippuSystems design 2.4 – mobiilin millimetrikorjaukset
   27.8.2026: oikean puhelimen testikuvien perusteella.
   Tavoite: enemmän tilaa sisällölle ilman pienempää perustekstiä. */

@media(max-width:430px){
  /* --- TILANNEVIRTA -------------------------------------------------- */

  /* Kun tapahtuma on avattu muokkaukseen, päivän tunniste kutistuu vain
     orientaatiomerkiksi. Näin lomake saa lähes koko käytettävän leveyden. */
  .nippu-module-event_stream .tv-day:has(.tv-entry.is-open){
    grid-template-columns:24px minmax(0,1fr)!important;
  }
  .nippu-module-event_stream .tv-day:has(.tv-entry.is-open) .tv-date{
    padding:4px 0!important;
  }
  .nippu-module-event_stream .tv-day:has(.tv-entry.is-open) .tv-date-bubble{
    width:20px!important;height:20px!important;margin:0 auto 1px!important;
    font-size:.50rem!important;border-width:1px!important;
  }
  .nippu-module-event_stream .tv-day:has(.tv-entry.is-open) .tv-date-number{
    font-size:.48rem!important;letter-spacing:-.02em!important;
  }
  .nippu-module-event_stream .tv-day:has(.tv-entry.is-open) .tv-day-body{
    padding-left:4px!important;padding-right:3px!important;
  }

  /* Suljetun tapahtuman otsikkorivi: tila annetaan itse asialle.
     Jaettu-tunniste on pieni metamerkki, ei otsikon kilpailija. */
  .nippu-module-event_stream .tv-entry-title{
    position:relative!important;
    display:block!important;
    min-width:0!important;
    padding:2px 28px 2px 14px!important;
    line-height:1.10!important;
    overflow-wrap:break-word!important;
  }
  .nippu-module-event_stream .tv-entry-title:before{
    position:absolute!important;left:1px!important;top:7px!important;
    margin:0!important;
  }
  .nippu-module-event_stream .tv-entry-time{
    display:inline!important;margin:0 4px 0 0!important;
  }
  .nippu-module-event_stream .tv-entry-title .tv-badge{
    position:absolute!important;right:1px!important;top:1px!important;
    display:inline-flex!important;align-items:center!important;justify-content:center!important;
    max-width:25px!important;min-width:20px!important;min-height:18px!important;
    margin:0!important;padding:1px 2px!important;
    font-size:.50rem!important;line-height:.9!important;
    border-radius:999px!important;overflow-wrap:anywhere!important;
  }
  .nippu-module-event_stream .tv-entry-toggle-icon{
    position:absolute!important;right:6px!important;bottom:1px!important;
    margin:0!important;font-size:.82rem!important;line-height:1!important;
  }

  /* Projektin/metatiedon ei tarvitse kasvattaa tapahtumaa ylimääräisillä väleillä. */
  .nippu-module-event_stream .tv-entry-project,
  .nippu-module-event_stream .tv-entry-meta{
    margin-top:2px!important;margin-bottom:0!important;
  }
  .nippu-module-event_stream .tv-entry-description{
    margin:3px 0 0 14px!important;
  }

  /* Pikajako ja jälkitoiminnot käyttäytyvät työkalurivinä. */
  .nippu-module-event_stream .tv-quick-share{
    margin-left:14px!important;
  }
  .nippu-module-event_stream .tv-entry-actions{
    margin-left:14px!important;width:calc(100% - 14px)!important;
    border-top:1px solid rgba(23,58,91,.08)!important;
  }
  .nippu-module-event_stream .tv-entry-actions input[type=date]{
    flex:0 1 104px!important;width:104px!important;
  }

  /* Avattu muokkaus ei näytä kortilta kortin sisällä. */
  .nippu-module-event_stream .tv-entry.is-open{
    margin-left:0!important;margin-right:0!important;
    padding:3px!important;
  }
  .nippu-module-event_stream .tv-entry.is-open .tv-edit-core{
    margin-left:0!important;margin-right:0!important;padding:4px!important;
    box-shadow:none!important;
  }
  .nippu-module-event_stream .tv-entry.is-open .tv-edit-core input,
  .nippu-module-event_stream .tv-entry.is-open .tv-edit-core select,
  .nippu-module-event_stream .tv-entry.is-open .tv-edit-core textarea{
    width:100%!important;max-width:100%!important;box-sizing:border-box!important;
  }
  .nippu-module-event_stream .tv-entry.is-open .tv-edit-core textarea{
    min-height:58px!important;
  }
  .nippu-module-event_stream .tv-edit-save{
    min-height:36px!important;padding:5px 9px!important;font-size:.72rem!important;
  }

  /* --- TASKULISTA ---------------------------------------------------- */

  /* Oikealla puhelimella toimintoja on vähän: ne saavat muodostaa yhden
     kompaktin työkalurivin tehtävän alle. */
  .nippu-module-project_control .tl-row{
    padding-top:6px!important;padding-bottom:6px!important;
  }
  .nippu-module-project_control .tl-row-actions{
    display:flex!important;align-items:center!important;flex-wrap:wrap!important;
    gap:2px 5px!important;margin-top:2px!important;min-height:30px!important;
  }
  .nippu-module-project_control .tl-row-actions button,
  .nippu-module-project_control .tl-row-actions .tl-mini,
  .nippu-module-project_control .tl-stream>summary.tl-mini{
    min-height:32px!important;min-width:32px!important;padding:0 5px!important;
  }
  .nippu-module-project_control .tl-mini.complete{
    min-height:32px!important;padding:2px 5px!important;font-size:.68rem!important;
  }

  /* Projektivalinnassa viimeinenkin rivi jää varmasti alavalikon yläpuolelle. */
  .nippu-module-project_control .tl-project-pick{
    padding-bottom:10px!important;
  }
  .nippu-module-project_control .tl-select-actions:not([hidden]){
    display:flex!important;align-items:center!important;justify-content:flex-end!important;
    margin:5px 0 8px!important;padding:4px!important;
    border:1px solid var(--line)!important;border-radius:9px!important;
    background:rgba(255,253,248,.92)!important;
  }

  /* --- YHTEINEN MOBIILIMITTA ---------------------------------------- */
  /* iOS:n safe-area ja alavalikko huomioidaan ilman turhaa tyhjää kenttää. */
  .nippu-module-project_control .tl,
  .nippu-module-event_stream .tv-content{
    padding-bottom:calc(64px + env(safe-area-inset-bottom))!important;
  }
}

@media(max-width:360px){
  /* Erittäin kapealla näytöllä avattu Tilannevirta saa vielä pari pikseliä lisää. */
  .nippu-module-event_stream .tv-day:has(.tv-entry.is-open){
    grid-template-columns:20px minmax(0,1fr)!important;
  }
  .nippu-module-event_stream .tv-day:has(.tv-entry.is-open) .tv-date-bubble{
    width:18px!important;height:18px!important;font-size:.46rem!important;
  }
  .nippu-module-event_stream .tv-day:has(.tv-entry.is-open) .tv-date-number{
    font-size:.44rem!important;
  }
  .nippu-module-event_stream .tv-entry-title{
    padding-right:25px!important;
  }
}

/* NippuSystems Design 2.5 — yhteinen brändi- ja värijärjestelmä */
:root{
  --nippu-brand-navy:#162f5f;
  --nippu-brand-navy-2:#10284f;
  --nippu-brand-orange:#f39a2d;
  --nippu-brand-paper:#faf6ec;
  --nippu-brand-card:#fffdf8;
  --nippu-brand-rule:#ded4bf;
  --nippu-brand-muted:#6d7a86;
  --nippu-brand-soft:#edf4f7;
  --nippu-ink:var(--nippu-brand-navy);
  --nippu-orange:var(--nippu-brand-orange);
  --nippu-paper:var(--nippu-brand-paper);
  --nippu-paper-2:var(--nippu-brand-card);
  --nippu-rule:var(--nippu-brand-rule);
  --nippu-pencil:var(--nippu-brand-muted);
  --nippu-blue-soft:var(--nippu-brand-soft);
  --nippu-nav-bg:#f7f0df;
  --nippu-nav-ink:var(--nippu-brand-navy);
  --nippu-nav-accent:var(--nippu-brand-navy);
}

body.nippu-with-nav{color:var(--nippu-brand-navy);background:var(--nippu-brand-paper)}
body.nippu-with-nav .wrapper.nippu-page{background:var(--nippu-brand-paper)}
.card,.module-card{background:var(--nippu-brand-card);border-color:var(--nippu-brand-rule)}
.muted,.module-card span,.module-card small{color:var(--nippu-brand-muted)}
h1,h2,h3,.module-card strong{color:var(--nippu-brand-navy)}

/* Brändimerkki sivunavigaatiossa: tunnus on allekirjoitus, ei banneri. */
.nippu-nav__brand{
  display:flex;align-items:center;gap:9px;margin:0 7px 18px;padding:3px 2px!important;
  color:var(--nippu-brand-navy)!important;letter-spacing:0!important;font-size:1rem!important;
}
.nippu-nav__brand img{width:148px;height:auto;max-height:78px;object-fit:contain;border-radius:8px;flex:0 0 auto}
.nippu-nav__brand-word{display:flex;align-items:baseline;gap:4px;line-height:1}
.nippu-nav__brand-word b{font-size:1.02rem;letter-spacing:.01em;text-transform:none}
.nippu-nav__brand-word em{font-size:.72rem;font-style:normal;font-weight:900;letter-spacing:.13em;text-transform:uppercase;color:var(--nippu-brand-orange)}

.nippu-nav a.active{
  color:var(--nippu-brand-navy);background:#fffaf0;
  box-shadow:inset 3px 0 0 var(--nippu-brand-orange);
}
.nippu-nav__context-title{color:#9a6220}

/* Työpöydän pieni merkki ei vie pystysuuntaista työtilaa. */
.nippu-dashboard-topbar{align-items:flex-start!important}
.nippu-dashboard-title{min-width:0}
.nippu-dashboard-mark{
  width:150px;height:auto;max-height:88px;object-fit:contain;border-radius:8px;flex:0 0 auto;
  margin-top:-2px;opacity:.96;
}
.nippu-dashboard-topbar .muted{font-weight:650;letter-spacing:.01em}

/* Työpöydän kortit: paperinen pinta + brändin tummansininen, ei kylmää harmaata. */
.nippu-module-dashboard .card{background:transparent!important;border:0!important;box-shadow:none!important;padding-top:8px!important}
.nippu-module-dashboard .module-grid{gap:10px!important}
.nippu-module-dashboard .module-card{
  background:rgba(255,253,248,.92)!important;border:1px solid var(--nippu-brand-rule)!important;
  box-shadow:0 1px 0 rgba(22,47,95,.025)!important;
}
.nippu-module-dashboard .module-card:hover,.nippu-module-dashboard .module-card:focus-visible{
  border-color:#c8b88f!important;background:#fffdf8!important;box-shadow:0 3px 14px rgba(22,47,95,.06)!important;
}

/* Työpöytä 2.7 — kevyt moduulivalikko. Nimi kertoo tehtävän; selitetekstit pois. */
.nippu-module-dashboard .nippu-dashboard-card>h2{margin-bottom:12px!important;font-size:1.22rem!important}
.nippu-module-dashboard .module-grid{grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:10px!important;margin-top:0!important}
.nippu-module-dashboard .module-card{
  position:relative;min-height:82px!important;justify-content:center!important;gap:0!important;
  padding:14px 18px 20px!important;border-radius:11px!important;
}
.nippu-module-dashboard .module-card strong{font-size:1.08rem!important;line-height:1.16!important;padding-right:34px}
.nippu-module-dashboard .module-card span{display:none!important}
.nippu-module-dashboard .module-card small{
  display:block!important;position:absolute;right:12px;bottom:8px;font-size:.68rem!important;line-height:1!important;opacity:.72;
}
@media(max-width:1100px){.nippu-module-dashboard .module-grid{grid-template-columns:repeat(3,minmax(0,1fr))!important}}
@media(max-width:700px){
  .nippu-module-dashboard .module-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .nippu-module-dashboard .module-card{min-height:58px!important;padding:10px 12px 15px!important}
  .nippu-module-dashboard .module-card strong{font-size:.94rem!important;padding-right:0}
  .nippu-module-dashboard .module-card small{font-size:.61rem!important;right:8px;bottom:5px}
}
@media(max-width:390px){.nippu-module-dashboard .module-grid{grid-template-columns:1fr!important}}

/* BottomNav: aktiivinen kohta tunnistetaan lämpimästi, oranssi vain pienenä signaalina. */
.nippu-bottom-bar{background:rgba(255,253,248,.97)!important;border-top-color:var(--nippu-brand-rule)!important}
.nippu-bottom-bar__item{color:#60707d!important}
.nippu-bottom-bar__item.active,.nippu-bottom-more[open]>.nippu-bottom-bar__item{
  color:var(--nippu-brand-navy)!important;background:#f7ecd3!important;
  box-shadow:inset 0 2px 0 var(--nippu-brand-orange);
}
.nippu-bottom-more__sheet{background:#fffdf8!important;border-color:var(--nippu-brand-rule)!important}
.nippu-bottom-more__title{display:flex;align-items:center;gap:8px;color:var(--nippu-brand-navy)!important}
.nippu-bottom-more__title img{width:28px;height:28px;object-fit:cover;border-radius:50%}
.nippu-bottom-more__grid a{background:#fffdf8!important;border-color:#e6dece!important;color:var(--nippu-brand-navy)!important}
.nippu-bottom-more__grid a.active{background:#f7ecd3!important;border-color:#d4bd86!important;color:var(--nippu-brand-navy)!important}

/* Yleinen toimintohierarkia. Oranssia ei käytetä isona nappipintana. */
.button:not(.secondary):not(.danger),button:not(.secondary):not(.danger){background:var(--nippu-brand-navy);color:#fff}
.button-link,a.button-link{color:#155f9b}
input,select,textarea{border-color:#d6c8a8;background:#fffefa;color:#21364b}
input:focus,select:focus,textarea:focus{outline:2px solid rgba(243,154,45,.26);outline-offset:1px;border-color:#bd9450}

@media(max-width:900px){
  .nippu-dashboard-mark{width:120px;height:auto;max-height:70px;margin-top:0}
  .nippu-module-dashboard .card{padding-left:4px!important;padding-right:4px!important}
  .nippu-module-dashboard .module-card{min-height:64px!important}
}
@media(max-width:390px){
  .nippu-dashboard-mark{width:105px;height:auto;max-height:62px}
  .nippu-dashboard-topbar{gap:8px!important}
  .nippu-dashboard-topbar h1{font-size:clamp(1.45rem,7.3vw,1.82rem)!important}
  .nippu-dashboard-topbar .muted{font-size:.8rem}
}

/* =========================================================
   NippuSystems Design 2.6 — Taskulista / Siirrä mobiilissa
   ========================================================= */
@media (max-width:700px){
  /* Siirto ei ole enää pelkkä arvoituksellinen nuoli. */
  .tl-stream>summary.tl-mini{
    width:auto!important;
    min-width:46px!important;
    height:29px!important;
    padding:0 6px!important;
    display:inline-flex!important;
    align-items:center!important;
    justify-content:center!important;
    gap:3px!important;
    font-size:.66rem!important;
    color:#657582!important;
    border-radius:7px!important;
    text-decoration:none!important;
  }
  .tl-stream>summary.tl-mini::before{
    content:'→'!important;
    font-size:.82rem!important;
    line-height:1!important;
  }
  .tl-stream>summary.tl-mini::after{
    content:'Siirrä'!important;
    font-size:.62rem!important;
    font-weight:800!important;
    line-height:1!important;
  }
  .tl-stream[open]>summary.tl-mini{
    background:rgba(23,58,92,.07)!important;
    color:var(--ink)!important;
  }

  /* Avattu siirto toimii omana rauhallisena alapaneelina eikä
     irrallisena lomakkeena muun tehtävärivin päällä. */
  .tl-stream[open]::before{
    content:'';
    position:fixed;
    inset:0;
    z-index:198;
    background:rgba(19,37,53,.18);
    backdrop-filter:blur(1px);
    -webkit-backdrop-filter:blur(1px);
  }
  .tl-stream-form{
    position:fixed!important;
    z-index:199!important;
    left:7px!important;
    right:7px!important;
    bottom:calc(66px + env(safe-area-inset-bottom))!important;
    top:auto!important;
    width:auto!important;
    max-width:none!important;
    max-height:min(62dvh,470px)!important;
    overflow:auto!important;
    display:grid!important;
    grid-template-columns:minmax(0,1fr) minmax(0,.78fr)!important;
    gap:6px 7px!important;
    align-items:end!important;
    padding:9px!important;
    border:1px solid rgba(183,164,120,.58)!important;
    border-radius:12px!important;
    background:rgba(255,253,247,.99)!important;
    box-shadow:0 14px 34px rgba(24,38,49,.22)!important;
  }
  .tl-stream-form label{
    min-width:0!important;
    margin:0!important;
    display:grid!important;
    gap:2px!important;
    font-size:.62rem!important;
    font-weight:800!important;
    color:#536674!important;
  }
  .tl-stream-form input,
  .tl-stream-form input[name=duration_hours]{
    box-sizing:border-box!important;
    min-width:0!important;
    width:100%!important;
    max-width:100%!important;
    min-height:34px!important;
    height:34px!important;
    margin:0!important;
    padding:4px 6px!important;
    border:1px solid rgba(183,164,120,.58)!important;
    border-radius:7px!important;
    background:#fffefa!important;
    font-size:.78rem!important;
    color:var(--text)!important;
  }
  .tl-stream-form label:nth-of-type(5){
    grid-column:1/-1!important;
  }
  .tl-stream-form button{
    grid-column:1/-1!important;
    min-height:36px!important;
    margin-top:1px!important;
    border-radius:8px!important;
    background:var(--ink)!important;
    border-color:var(--ink)!important;
    color:#fff!important;
    font-size:.76rem!important;
  }
}

@media (max-width:360px){
  .tl-stream-form{
    left:5px!important;
    right:5px!important;
    padding:8px!important;
    gap:5px!important;
  }
  .tl-stream-form input,
  .tl-stream-form input[name=duration_hours]{font-size:.73rem!important;padding-left:4px!important;padding-right:4px!important}
}

/* ================================================================
   NippuSystems Design 2.7 — latausilmaisin + vaakapuhelimen BottomNav
   27.8.2026
   ================================================================ */

/* Latausilmaisin ei saa koskaan osallistua sivun normaaliin layoutiin.
   Näkyviin vain JS:n lisäämällä is-visible-luokalla. */
#tv-global-upload:not(.is-visible),
#tl-global-upload:not(.is-visible),
.tv-global-upload[aria-hidden="true"],
.tl-global-upload[aria-hidden="true"]{
  display:none!important;
  visibility:hidden!important;
  pointer-events:none!important;
}
#tv-global-upload.is-visible,
#tl-global-upload.is-visible{
  display:flex!important;
  visibility:visible!important;
  position:fixed!important;
  inset:0!important;
  z-index:99999!important;
  align-items:center!important;
  justify-content:center!important;
}

/* Vaakapuhelin: BottomNav muuttuu matalaksi työkaluriviksi.
   Rajataan matalaan viewportiin, jotta tabletit eivät vahingossa tiivisty. */
@media (orientation:landscape) and (max-height:520px) and (pointer:coarse){
  body.nippu-with-nav{
    padding-bottom:calc(46px + env(safe-area-inset-bottom))!important;
  }
  .nippu-bottom-bar{
    min-height:44px!important;
    height:auto!important;
    padding:2px max(6px,env(safe-area-inset-right)) calc(2px + env(safe-area-inset-bottom)) max(6px,env(safe-area-inset-left))!important;
    grid-template-columns:repeat(5,minmax(0,1fr))!important;
    gap:2px!important;
    box-shadow:0 -2px 12px rgba(54,45,30,.10)!important;
  }
  .nippu-bottom-bar__item{
    min-height:40px!important;
    height:40px!important;
    padding:2px 5px!important;
    border-radius:8px!important;
    flex-direction:row!important;
    gap:5px!important;
    white-space:nowrap!important;
  }
  .nippu-bottom-bar__item>span{
    height:auto!important;
    line-height:1!important;
    font-size:.95rem!important;
    flex:0 0 auto!important;
  }
  .nippu-bottom-bar__item small{
    display:block!important;
    font-size:.61rem!important;
    line-height:1!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
    white-space:nowrap!important;
  }
  .nippu-bottom-bar__item.active,
  .nippu-bottom-more[open]>.nippu-bottom-bar__item{
    box-shadow:inset 0 -2px 0 var(--nippu-brand-orange)!important;
    background:#fffaf0!important;
  }
  .nippu-bottom-more__sheet{
    max-height:calc(100dvh - 48px)!important;
    overflow:auto!important;
  }
  .nippu-bottom-more__handle{display:none!important}
}

/* Erittäin matala vaakapuhelin: nimet säilyvät, mutta tila puristetaan minimiin. */
@media (orientation:landscape) and (max-height:390px) and (pointer:coarse){
  body.nippu-with-nav{padding-bottom:calc(42px + env(safe-area-inset-bottom))!important}
  .nippu-bottom-bar{min-height:40px!important;padding-top:1px!important}
  .nippu-bottom-bar__item{min-height:36px!important;height:36px!important;padding:1px 4px!important;gap:4px!important}
  .nippu-bottom-bar__item>span{font-size:.86rem!important}
  .nippu-bottom-bar__item small{font-size:.56rem!important}
}

/* NippuSystems Design 2.9 — Tilannevirta desktop refinement */
@media (min-width: 901px) {
  .nippu-module-event_stream .tv-content{
    max-width:1480px!important;
    margin:0 auto!important;
    padding-left:18px!important;
    padding-right:18px!important;
  }
  .nippu-module-event_stream .tv-week{
    border-radius:14px!important;
    overflow:hidden!important;
  }
  .nippu-module-event_stream .tv-day{
    grid-template-columns:82px minmax(0,1fr)!important;
  }
  .nippu-module-event_stream .tv-date{
    padding:12px 8px!important;
  }
  .nippu-module-event_stream .tv-date-bubble{
    width:46px!important;
    height:46px!important;
    margin-bottom:4px!important;
    font-size:.94rem!important;
    box-shadow:none!important;
  }
  .nippu-module-event_stream .tv-date-number{
    font-size:.78rem!important;
  }
  .nippu-module-event_stream .tv-day-body{
    padding:10px 22px 12px!important;
    border-left:1px solid #cad6df!important;
  }
  .nippu-module-event_stream .tv-day-title{
    margin-bottom:3px!important;
    font-size:.9rem!important;
    color:#5f7180!important;
  }
  .nippu-module-event_stream .tv-entry{
    gap:12px!important;
    padding:7px 0!important;
  }
  .nippu-module-event_stream .tv-entry-title{
    font-size:1rem!important;
    line-height:1.2!important;
    padding:2px 0!important;
  }
  .nippu-module-event_stream .tv-entry-title:before{
    width:8px!important;
    height:8px!important;
    margin-right:8px!important;
    box-shadow:0 0 0 3px #eaf3f8!important;
  }
  .nippu-module-event_stream .tv-entry-project,
  .nippu-module-event_stream .tv-entry-meta{
    margin-top:2px!important;
    font-size:.76rem!important;
    line-height:1.25!important;
  }
  .nippu-module-event_stream .tv-entry-description{
    max-width:980px!important;
    margin-top:5px!important;
    font-size:.91rem!important;
    line-height:1.35!important;
  }

  /* Kuvanauha: kuva, ei tumma ohjauspaneeli */
  .nippu-module-event_stream .tv-carousel,
  .nippu-module-event_stream .tv-entry:not(.is-open) .tv-carousel{
    width:118px!important;
    height:78px!important;
    margin:7px 0 2px 20px!important;
    border:1px solid #d7dfe5!important;
    border-radius:9px!important;
    background:#fff!important;
    box-shadow:0 1px 4px rgba(23,52,84,.08)!important;
  }
  .nippu-module-event_stream .tv-carousel:hover{
    border-color:#aac4d8!important;
    box-shadow:0 2px 8px rgba(23,52,84,.12)!important;
  }
  .nippu-module-event_stream .tv-carousel-nav{
    width:24px!important;
    height:28px!important;
    border:1px solid rgba(255,255,255,.72)!important;
    border-radius:999px!important;
    background:rgba(255,255,255,.86)!important;
    color:#173454!important;
    font-size:19px!important;
    box-shadow:0 1px 4px rgba(10,31,54,.18)!important;
    backdrop-filter:blur(3px)!important;
  }
  .nippu-module-event_stream .tv-carousel-prev{left:5px!important}
  .nippu-module-event_stream .tv-carousel-next{right:5px!important}
  .nippu-module-event_stream .tv-carousel-count{
    right:5px!important;
    bottom:4px!important;
    padding:1px 5px!important;
    background:rgba(255,255,255,.88)!important;
    color:#173454!important;
    border:1px solid rgba(23,52,84,.12)!important;
    font-size:.62rem!important;
    box-shadow:0 1px 3px rgba(10,31,54,.12)!important;
  }

  /* Jako on toissijainen toiminto desktopilla */
  .nippu-module-event_stream .tv-quick-share{
    gap:6px!important;
    margin:6px 0 0 20px!important;
  }
  .nippu-module-event_stream .tv-quick-share button,
  .nippu-module-event_stream .tv-entry-actions button:not(.done),
  .nippu-module-event_stream .tv-link-action{
    min-height:34px!important;
    padding:5px 10px!important;
    border:1px solid #d5dfe6!important;
    border-radius:8px!important;
    background:#fff!important;
    color:#173454!important;
    box-shadow:none!important;
    font-size:.78rem!important;
  }
  .nippu-module-event_stream .tv-quick-share button:hover,
  .nippu-module-event_stream .tv-entry-actions button:not(.done):hover,
  .nippu-module-event_stream .tv-link-action:hover{
    border-color:#9fb9cd!important;
    background:#f7fafc!important;
  }
  .nippu-module-event_stream .tv-entry-actions{
    gap:6px!important;
    padding-top:5px!important;
  }
  .nippu-module-event_stream .tv-entry-actions button.done{
    min-height:34px!important;
    padding:5px 9px!important;
    border:0!important;
    background:transparent!important;
    color:#356649!important;
    box-shadow:none!important;
  }
  .nippu-module-event_stream .tv-entry-toggle-icon{
    font-size:1.2rem!important;
    color:#718391!important;
  }
}

/* NippuSystems Design 3.0 — Tilannevirta desktop, kevyt aikajana */
@media (min-width: 901px) {
  .nippu-module-event_stream .tv-content{
    max-width:1360px!important;
  }
  .nippu-module-event_stream .tv-day-body{
    padding:9px 18px 10px!important;
  }
  .nippu-module-event_stream .tv-entry{
    padding:6px 0!important;
    gap:8px!important;
  }
  .nippu-module-event_stream .tv-day-title{
    margin-bottom:2px!important;
  }
  .nippu-module-event_stream .tv-entry-title{
    font-size:.98rem!important;
    line-height:1.18!important;
  }
  .nippu-module-event_stream .tv-entry-description{
    max-width:900px!important;
    margin:4px 0 0 18px!important;
    line-height:1.3!important;
  }
  .nippu-module-event_stream .tv-entry-project,
  .nippu-module-event_stream .tv-entry-meta{
    margin-left:0!important;
  }

  /* Kuvan klikkauspinta ei saa periä yleistä tummaa button-tyyliä. */
  .nippu-module-event_stream .tv-carousel,
  .nippu-module-event_stream .tv-entry:not(.is-open) .tv-carousel{
    width:108px!important;
    height:72px!important;
    margin:6px 0 2px 18px!important;
    padding:0!important;
    border:1px solid #d7dfe5!important;
    border-radius:9px!important;
    background:#fff!important;
    overflow:hidden!important;
    box-shadow:0 1px 3px rgba(23,52,84,.08)!important;
  }
  .nippu-module-event_stream .tv-carousel-link,
  .nippu-module-event_stream button.tv-carousel-link,
  body.nippu-with-nav .nippu-module-event_stream button.tv-carousel-link{
    display:block!important;
    width:100%!important;
    height:100%!important;
    min-height:0!important;
    padding:0!important;
    margin:0!important;
    border:0!important;
    border-radius:8px!important;
    background:transparent!important;
    color:inherit!important;
    box-shadow:none!important;
    outline-offset:-2px!important;
  }
  .nippu-module-event_stream .tv-carousel-link:hover,
  body.nippu-with-nav .nippu-module-event_stream button.tv-carousel-link:hover{
    background:transparent!important;
  }
  .nippu-module-event_stream .tv-carousel img{
    width:100%!important;
    height:100%!important;
    display:block!important;
    object-fit:cover!important;
    border-radius:8px!important;
  }
  .nippu-module-event_stream .tv-carousel-nav,
  body.nippu-with-nav .nippu-module-event_stream .tv-carousel-nav{
    width:25px!important;
    height:25px!important;
    min-height:25px!important;
    padding:0!important;
    border:1px solid rgba(23,52,84,.14)!important;
    border-radius:50%!important;
    background:rgba(255,255,255,.92)!important;
    color:#173454!important;
    font-size:17px!important;
    line-height:1!important;
    box-shadow:0 1px 3px rgba(10,31,54,.12)!important;
    opacity:.88!important;
  }
  .nippu-module-event_stream .tv-carousel:hover .tv-carousel-nav{
    opacity:1!important;
  }
  .nippu-module-event_stream .tv-carousel-prev{left:4px!important}
  .nippu-module-event_stream .tv-carousel-next{right:4px!important}
  .nippu-module-event_stream .tv-carousel-count{
    right:4px!important;
    bottom:3px!important;
    padding:0 5px!important;
    background:rgba(255,255,255,.92)!important;
    color:#173454!important;
    border:1px solid rgba(23,52,84,.12)!important;
    font-size:.58rem!important;
    line-height:1.45!important;
    box-shadow:none!important;
  }

  /* Jakotoiminnot ovat apuvälineitä, eivät tapahtuman pääsisältöä. */
  .nippu-module-event_stream .tv-quick-share{
    gap:5px!important;
    margin:5px 0 0 18px!important;
  }
  .nippu-module-event_stream .tv-quick-share button,
  body.nippu-with-nav .nippu-module-event_stream .tv-quick-share button{
    min-height:30px!important;
    padding:3px 8px!important;
    border-radius:7px!important;
    background:#fff!important;
    color:#173454!important;
    font-size:.73rem!important;
    box-shadow:none!important;
  }
  .nippu-module-event_stream .tv-entry-toggle-icon{
    font-size:1.08rem!important;
    opacity:.72!important;
  }

  /* Valmiit rivit saavat olla hiljaisia, mutta edelleen luettavia. */
  .nippu-module-event_stream .tv-entry.completed{
    opacity:.72!important;
  }
  .nippu-module-event_stream .tv-entry.completed .tv-entry-description,
  .nippu-module-event_stream .tv-entry.completed .tv-entry-project{
    opacity:.82!important;
  }
}

/* NippuSystems Design 3.1 — Tilannevirta: kevyt kuvanauha kaikilla ruuduilla */
.nippu-module-event_stream .tv-carousel{
  padding:0!important;
  border:1px solid #d7dfe5!important;
  background:#fff!important;
  overflow:hidden!important;
  box-shadow:0 1px 3px rgba(23,52,84,.08)!important;
}
.nippu-module-event_stream .tv-carousel-link,
.nippu-module-event_stream button.tv-carousel-link,
body.nippu-with-nav .nippu-module-event_stream button.tv-carousel-link{
  display:block!important;
  width:100%!important;
  height:100%!important;
  min-height:0!important;
  padding:0!important;
  margin:0!important;
  border:0!important;
  border-radius:inherit!important;
  background:transparent!important;
  color:inherit!important;
  box-shadow:none!important;
  transform:none!important;
}
.nippu-module-event_stream .tv-carousel-link:hover,
.nippu-module-event_stream .tv-carousel-link:active,
body.nippu-with-nav .nippu-module-event_stream button.tv-carousel-link:hover,
body.nippu-with-nav .nippu-module-event_stream button.tv-carousel-link:active{
  background:transparent!important;
  box-shadow:none!important;
  transform:none!important;
}
.nippu-module-event_stream .tv-carousel img{
  width:100%!important;
  height:100%!important;
  display:block!important;
  object-fit:cover!important;
}
.nippu-module-event_stream .tv-carousel-nav,
body.nippu-with-nav .nippu-module-event_stream .tv-carousel-nav{
  width:25px!important;
  height:25px!important;
  min-width:25px!important;
  min-height:25px!important;
  padding:0!important;
  border:1px solid rgba(23,52,84,.14)!important;
  border-radius:50%!important;
  background:rgba(255,255,255,.92)!important;
  color:#173454!important;
  font-size:17px!important;
  line-height:1!important;
  box-shadow:0 1px 3px rgba(10,31,54,.12)!important;
}
.nippu-module-event_stream .tv-carousel-count{
  padding:0 5px!important;
  border:1px solid rgba(23,52,84,.12)!important;
  background:rgba(255,255,255,.92)!important;
  color:#173454!important;
  box-shadow:none!important;
}

/* Desktop: teksti ja kuvanauha samalle informaatioriville. */
@media (min-width: 901px) {
  .nippu-module-event_stream .tv-entry:not(.is-open) .tv-entry-main:has(.tv-carousel){
    display:grid!important;
    grid-template-columns:minmax(320px,720px) 108px!important;
    grid-template-rows:auto auto auto auto!important;
    column-gap:16px!important;
    align-items:start!important;
    justify-content:start!important;
  }
  .nippu-module-event_stream .tv-entry:not(.is-open) .tv-entry-main:has(.tv-carousel) .tv-entry-title,
  .nippu-module-event_stream .tv-entry:not(.is-open) .tv-entry-main:has(.tv-carousel) .tv-entry-project,
  .nippu-module-event_stream .tv-entry:not(.is-open) .tv-entry-main:has(.tv-carousel) .tv-entry-meta{
    grid-column:1 / -1!important;
  }
  .nippu-module-event_stream .tv-entry:not(.is-open) .tv-entry-main:has(.tv-carousel) .tv-entry-description{
    grid-column:1!important;
    grid-row:4!important;
    max-width:720px!important;
    margin:5px 0 0 18px!important;
    padding-right:4px!important;
  }
  .nippu-module-event_stream .tv-entry:not(.is-open) .tv-entry-main:has(.tv-carousel) .tv-carousel{
    grid-column:2!important;
    grid-row:4!important;
    width:108px!important;
    height:72px!important;
    margin:5px 0 0!important;
    align-self:start!important;
  }
  /* Jos kuvalla ei ole varsinaista asia-tekstiä, kuva pysyy silti otsikon alla siististi. */
  .nippu-module-event_stream .tv-entry:not(.is-open) .tv-entry-main:has(.tv-carousel):not(:has(.tv-entry-description)) .tv-carousel{
    grid-column:1!important;
    margin-left:18px!important;
  }
}

/* NippuSystems Design 3.2 — Tilannevirta: kuvarajaus + päivän sisäinen ryhmittely */

/* Valokuvalla on aina oma selvä reuna. Tämä auttaa erityisesti vaaleissa kuvissa,
   joissa taivas, seinä tai paperi muuten katoaa käyttöliittymän taustaan. */
.nippu-module-event_stream .tv-carousel{
  border:1px solid #aeb9c4!important;
  background:#fff!important;
  box-shadow:0 1px 3px rgba(23,52,84,.10), inset 0 0 0 1px rgba(255,255,255,.45)!important;
}
.nippu-module-event_stream .tv-carousel img{
  border-radius:inherit!important;
}

/* Isolla näytöllä päivä on yksi selkeä lukuyksikkö. Päivän tapahtumat pysyvät
   samassa vaaleassa kentässä ja yksittäiset tapahtumat erotetaan kevyellä viivalla. */
@media (min-width: 901px){
  .nippu-module-event_stream .tv-day{
    position:relative!important;
  }
  .nippu-module-event_stream .tv-day-body{
    background:rgba(255,255,255,.38)!important;
    box-shadow:inset 0 1px 0 rgba(23,52,84,.035), inset 0 -1px 0 rgba(23,52,84,.035)!important;
  }
  .nippu-module-event_stream .tv-day-body > .tv-entry{
    border-bottom:1px solid rgba(91,112,132,.14)!important;
  }
  .nippu-module-event_stream .tv-day-body > .tv-entry:last-child{
    border-bottom:0!important;
  }
  .nippu-module-event_stream .tv-day-title{
    display:flex!important;
    align-items:center!important;
    gap:10px!important;
    color:#56697a!important;
  }
  .nippu-module-event_stream .tv-day-title::after{
    content:"";
    height:1px;
    flex:1 1 auto;
    background:linear-gradient(90deg, rgba(91,112,132,.18), rgba(91,112,132,0));
  }
  /* Päivän sisällä otsikon ja ensimmäisen merkinnän väli pidetään pienenä,
     jotta kaikki näyttää kuuluvan samaan päivään. */
  .nippu-module-event_stream .tv-day-title + .tv-entry{
    margin-top:0!important;
  }
}

/* NippuSystems Design 3.5 — Tilannevirta: teknisen piirustuksen vino viitejohdin päivälle */
@media (min-width: 901px){
  /* Päiväkohtainen opastusväri. Sävyjä on tarkoituksella vain kolme ja ne ovat
     NippuSystemsin muun värimaailman kanssa yhteensopivia. */
  .nippu-module-event_stream .tv-day{
    --tv-day-guide:#2b7fbe;
  }
  .nippu-module-event_stream .tv-day:nth-child(3n + 2){
    --tv-day-guide:#e79522;
  }
  .nippu-module-event_stream .tv-day:nth-child(3n){
    --tv-day-guide:#6f9274;
  }

  /* Päiväpallon ja sisältöalueen välinen lyhyt viiteviiva. */
  .nippu-module-event_stream .tv-day:not(.is-empty) .tv-date{
    position:relative!important;
  }
  .nippu-module-event_stream .tv-day:not(.is-empty) .tv-date::after{
    content:"";
    position:absolute;
    /* Teknisen piirustuksen tapainen johdin: pallolta hieman alaviistoon
       kohti päivän pystyselkää. Viiva alkaa vasta päiväpallon kehän ulkopuolelta,
       eikä enää leikkaa pallon sisään. Oikea pää ankkuroidaan selkään. */
    top:48px;
    right:-1px;
    width:21px;
    height:2px;
    border-radius:999px;
    background:var(--tv-day-guide);
    opacity:.88;
    transform:rotate(15deg);
    transform-origin:right center;
    pointer-events:none;
  }

  /* Selkämys elää päivän todellisen sisältökorkeuden mukana. Se ei siis ole
     koristeellinen koko sivun viiva vaan kertoo, mitkä merkinnät kuuluvat päivään. */
  .nippu-module-event_stream .tv-day:not(.is-empty) .tv-day-body{
    position:relative!important;
    border-left-color:transparent!important;
  }
  .nippu-module-event_stream .tv-day:not(.is-empty) .tv-day-body::before{
    content:"";
    position:absolute;
    z-index:2;
    left:-2px;
    top:8px;
    bottom:8px;
    width:3px;
    border-radius:999px;
    background:var(--tv-day-guide);
    opacity:.88;
    pointer-events:none;
  }

  /* Päivän otsikkorivi liittyy visuaalisesti selkämykseen eikä aloita uutta laatikkoa. */
  .nippu-module-event_stream .tv-day:not(.is-empty) .tv-day-title{
    position:relative!important;
  }
  .nippu-module-event_stream .tv-day:not(.is-empty) .tv-day-title::before{
    content:"";
    flex:0 0 12px;
    height:2px;
    margin-left:-2px;
    border-radius:999px;
    background:var(--tv-day-guide);
    opacity:.72;
  }

  /* Päiväpallon oma reuna saa vain hyvin kevyen vihjeen samasta väristä. */
  .nippu-module-event_stream .tv-day:not(.is-empty) .tv-date-bubble{
    border-color:color-mix(in srgb, var(--tv-day-guide) 38%, #d7dfe5)!important;
  }

  /* Nykyisen päivän tunnistus saa edelleen olla hieman voimakkaampi. */
  .nippu-module-event_stream .tv-day.is-today:not(.is-empty) .tv-day-body::before,
  .nippu-module-event_stream .tv-day.is-today:not(.is-empty) .tv-date::after{
    opacity:1;
  }
}

/* Kapeilla ruuduilla pidetään viiteviiva tarkoituksella hyvin kevytversiona:
   desktopin pitkä selkämys ei saa kaventaa puhelimen sisältöaluetta. */
@media (max-width: 900px){
  .nippu-module-event_stream .tv-day:not(.is-empty) .tv-day-body{
    border-left-color:#cbd6df!important;
  }
}

/* NippuSystems Design 3.6 — Tilannevirta: sisältö ensin, jako kuvan yhteyteen ja mobiilikirjaus */
.nippu-module-event_stream .tv-inline-create{
  background:#fffdf8!important;
  border:1px solid #d7c79f!important;
  border-left:4px solid #c98b2b!important;
  box-shadow:0 4px 14px rgba(23,52,84,.07)!important;
  padding:13px 15px 12px!important;
}
.nippu-module-event_stream .tv-inline-create-head{
  color:#173454!important;
  margin-bottom:9px!important;
}
.nippu-module-event_stream .tv-inline-create input,
.nippu-module-event_stream .tv-inline-create textarea{
  width:100%!important;
  max-width:100%!important;
  box-sizing:border-box!important;
  background:#fff!important;
}
.nippu-module-event_stream .tv-inline-create textarea{
  min-height:42px!important;
  height:42px;
}
.nippu-module-event_stream .tv-inline-create-row > button{
  min-height:42px!important;
  margin:0!important;
  align-self:end!important;
}

/* Otsikko ja tarkenne ovat tapahtuman pääsisältöä. Toiminnot eivät saa katkaista lukemista. */
.nippu-module-event_stream .tv-entry-description{
  position:relative;
  z-index:1;
}
.nippu-module-event_stream .tv-quick-share button.is-sharing{
  opacity:.65!important;
  cursor:wait!important;
}

@media (min-width:901px){
  /* Kun tapahtumalla on kuva, kuva + lähetys ovat yksi kevyt apuvälinealue oikealla. */
  .nippu-module-event_stream .tv-entry:not(.is-open) .tv-entry-main:has(.tv-carousel){
    grid-template-columns:minmax(320px,720px) 132px!important;
    grid-template-rows:auto auto auto auto auto!important;
    column-gap:18px!important;
  }
  .nippu-module-event_stream .tv-entry:not(.is-open) .tv-entry-main:has(.tv-carousel) .tv-carousel{
    grid-column:2!important;
    grid-row:4!important;
    width:124px!important;
    height:78px!important;
    margin:5px 0 0!important;
  }
  .nippu-module-event_stream .tv-entry:not(.is-open) .tv-entry-main:has(.tv-carousel) .tv-quick-share{
    grid-column:2!important;
    grid-row:5!important;
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:4px!important;
    width:124px!important;
    margin:5px 0 0!important;
  }
  .nippu-module-event_stream .tv-entry:not(.is-open) .tv-entry-main:has(.tv-carousel) .tv-quick-share button,
  body.nippu-with-nav .nippu-module-event_stream .tv-entry:not(.is-open) .tv-entry-main:has(.tv-carousel) .tv-quick-share button{
    width:100%!important;
    min-height:27px!important;
    padding:2px 5px!important;
    font-size:.68rem!important;
    text-align:left!important;
  }
  .nippu-module-event_stream .tv-entry:not(.is-open) .tv-entry-main:has(.tv-carousel) .tv-entry-description{
    grid-column:1!important;
    grid-row:4 / span 2!important;
    padding-right:10px!important;
  }
}

@media (max-width:850px){
  .nippu-module-event_stream .tv-inline-create{
    margin:4px 0 8px!important;
    padding:12px!important;
    border-radius:12px!important;
  }
  .nippu-module-event_stream .tv-inline-create-row{
    display:grid!important;
    grid-template-columns:minmax(0,1fr)!important;
    gap:10px!important;
    align-items:stretch!important;
  }
  .nippu-module-event_stream .tv-inline-create-row > label,
  .nippu-module-event_stream .tv-inline-create-row > button{
    min-width:0!important;
    width:100%!important;
  }
  .nippu-module-event_stream .tv-inline-create textarea{
    height:72px!important;
    min-height:72px!important;
  }
  .nippu-module-event_stream .tv-inline-create-row > button{
    min-height:46px!important;
  }
  .nippu-module-event_stream .tv-inline-create .tv-advanced{
    margin-top:8px!important;
  }
}

@media (max-width:650px){
  /* Puhelimessa uusi kirjaus on selvä oma korttinsa ja päiväsarake ei syö leveyttä. */
  .nippu-module-event_stream .tv-day:has(.tv-inline-create){
    grid-template-columns:1fr!important;
  }
  .nippu-module-event_stream .tv-day:has(.tv-inline-create) .tv-date{
    padding-bottom:2px!important;
  }
  .nippu-module-event_stream .tv-day:has(.tv-inline-create) .tv-day-body{
    padding:6px 10px 16px!important;
  }
  .nippu-module-event_stream .tv-inline-create-head{
    justify-content:space-between!important;
    flex-wrap:wrap!important;
  }
  .nippu-module-event_stream .tv-inline-create input,
  .nippu-module-event_stream .tv-inline-create textarea,
  .nippu-module-event_stream .tv-inline-create select{
    font-size:16px!important; /* estää iOS:n automaattizoomauksen */
  }
  .nippu-module-event_stream .tv-entry:not(.is-open) .tv-quick-share{
    margin-top:6px!important;
    gap:5px!important;
  }
}

/* NippuSystems Design 3.7 — Tilannevirta: jakoalue aina oikealle + Air Mail -korjaus */
@media (min-width:901px){
  /* Suljetun tapahtuman jakoalue on aina samassa oikeassa sarakkeessa, myös ilman kuvia. */
  .nippu-module-event_stream .tv-entry:not(.is-open) .tv-entry-main{
    display:grid!important;
    grid-template-columns:minmax(320px,1fr) 132px!important;
    grid-auto-rows:auto!important;
    column-gap:18px!important;
    align-items:start!important;
  }
  .nippu-module-event_stream .tv-entry:not(.is-open) .tv-entry-main > .tv-entry-title,
  .nippu-module-event_stream .tv-entry:not(.is-open) .tv-entry-main > .tv-entry-project,
  .nippu-module-event_stream .tv-entry:not(.is-open) .tv-entry-main > .tv-entry-meta,
  .nippu-module-event_stream .tv-entry:not(.is-open) .tv-entry-main > .tv-entry-description,
  .nippu-module-event_stream .tv-entry:not(.is-open) .tv-entry-main > .tv-attachments{
    grid-column:1!important;
    min-width:0!important;
  }
  .nippu-module-event_stream .tv-entry:not(.is-open) .tv-entry-main > .tv-quick-share{
    grid-column:2!important;
    grid-row:1 / span 3!important;
    align-self:start!important;
    justify-self:end!important;
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:4px!important;
    width:124px!important;
    margin:2px 0 0!important;
  }
  .nippu-module-event_stream .tv-entry:not(.is-open) .tv-entry-main > .tv-quick-share button,
  body.nippu-with-nav .nippu-module-event_stream .tv-entry:not(.is-open) .tv-entry-main > .tv-quick-share button{
    width:100%!important;
    min-height:27px!important;
    padding:2px 5px!important;
    font-size:.68rem!important;
    text-align:left!important;
  }

  /* Kuvallisessa tapahtumassa kuva on saman oikean reunan jakoalueen yläpuolella. */
  .nippu-module-event_stream .tv-entry:not(.is-open) .tv-entry-main:has(.tv-carousel) > .tv-carousel{
    grid-column:2!important;
    grid-row:1 / span 3!important;
    justify-self:end!important;
    width:124px!important;
    height:78px!important;
    margin:2px 0 0!important;
  }
  .nippu-module-event_stream .tv-entry:not(.is-open) .tv-entry-main:has(.tv-carousel) > .tv-quick-share{
    grid-column:2!important;
    grid-row:4 / span 2!important;
    justify-self:end!important;
    width:124px!important;
    margin:5px 0 0!important;
  }
  .nippu-module-event_stream .tv-entry:not(.is-open) .tv-entry-main:has(.tv-carousel) > .tv-entry-description{
    grid-column:1!important;
  }
}

@media (max-width:900px){
  /* Puhelimessa sisältö säilyy yhden palstan lukujärjestyksessä. */
  .nippu-module-event_stream .tv-entry:not(.is-open) .tv-entry-main{
    display:block!important;
  }
  .nippu-module-event_stream .tv-entry:not(.is-open) .tv-quick-share{
    display:flex!important;
    width:auto!important;
    margin:6px 0 0!important;
    gap:5px!important;
    flex-wrap:wrap!important;
  }
}


/* =========================================================
   Työpöytä 2.8 — yhden sarakkeen käyttäjäkohtainen työkalupakki
   ========================================================= */
.nippu-module-dashboard .nippu-dashboard-card{max-width:760px!important;padding-top:4px!important}
.nippu-module-dashboard .nippu-dashboard-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}
.nippu-module-dashboard .nippu-dashboard-heading h2{margin:0!important}
.nippu-module-dashboard .dashboard-edit-toggle{background:transparent!important;color:var(--nippu-brand-navy)!important;border:1px solid #d8ccb3!important;border-radius:8px!important;padding:6px 10px!important;font-size:.78rem!important;font-weight:750!important;box-shadow:none!important}
.nippu-module-dashboard .dashboard-edit-toggle:hover{background:#fffaf0!important}
.nippu-module-dashboard .dashboard-edit-help{font-size:.78rem;color:var(--nippu-brand-muted);margin:0 0 8px 0;line-height:1.35}
.nippu-module-dashboard .dashboard-module-list{display:grid!important;grid-template-columns:1fr!important;gap:6px!important;margin-top:0!important;max-width:720px!important}
.nippu-module-dashboard .dashboard-module-row{display:grid;grid-template-columns:0 minmax(0,1fr) 0;align-items:center;gap:0;transition:opacity .15s ease,transform .15s ease}
.nippu-module-dashboard .dashboard-module-row.is-user-hidden{display:none}
.nippu-module-dashboard .module-card{min-height:54px!important;height:54px!important;padding:7px 34px 7px 10px!important;border-radius:9px!important;display:grid!important;grid-template-columns:38px minmax(0,1fr) auto 14px!important;align-items:center!important;gap:9px!important;position:relative!important}
.nippu-module-dashboard .module-card strong{font-size:1rem!important;line-height:1.08!important;padding:0!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nippu-module-dashboard .module-card small{position:static!important;display:block!important;font-size:.66rem!important;line-height:1!important;opacity:.60!important;white-space:nowrap}
.nippu-module-dashboard .dashboard-module-icon{width:34px;height:34px;border:1px solid #dfd2b7;border-radius:8px;display:grid!important;place-items:center;background:#fffaf1;color:var(--nippu-brand-navy)}
.nippu-module-dashboard .dashboard-module-icon svg{width:20px;height:20px;display:block}
.nippu-module-dashboard .dashboard-arrow{font-size:1.35rem;color:#9aa5ad;line-height:1;display:block!important}
.nippu-module-dashboard .dashboard-drag,.nippu-module-dashboard .dashboard-visibility{display:none}
.nippu-module-dashboard .dashboard-save-state{height:18px;font-size:.72rem;color:var(--nippu-brand-muted);padding-top:3px}
.dashboard-editing .nippu-module-dashboard .dashboard-module-row{grid-template-columns:26px minmax(0,1fr) 34px;gap:5px}
.dashboard-editing .nippu-module-dashboard .dashboard-module-row.is-user-hidden{display:grid;opacity:.48}
.dashboard-editing .nippu-module-dashboard .dashboard-drag{display:block;cursor:grab;color:#9b8d72;font-size:1rem;text-align:center;letter-spacing:-3px;user-select:none}
.dashboard-editing .nippu-module-dashboard .dashboard-module-row.is-dragging{opacity:.35;transform:scale(.995)}
.dashboard-editing .nippu-module-dashboard .dashboard-visibility{display:grid!important;place-items:center;width:30px!important;height:30px!important;min-height:0!important;padding:0!important;border-radius:8px!important;border:1px solid #ddd0b7!important;background:#fffaf1!important;color:var(--nippu-brand-navy)!important;font-size:1rem!important;box-shadow:none!important}
.dashboard-editing .nippu-module-dashboard .module-card{pointer-events:none}
@media(max-width:700px){
  .nippu-module-dashboard .nippu-dashboard-card{padding-left:0!important;padding-right:0!important}
  .nippu-module-dashboard .dashboard-module-list{gap:5px!important}
  .nippu-module-dashboard .module-card{height:50px!important;min-height:50px!important;padding:6px 10px!important;grid-template-columns:34px minmax(0,1fr) 12px!important;gap:8px!important}
  .nippu-module-dashboard .dashboard-module-icon{width:31px;height:31px;border-radius:7px}
  .nippu-module-dashboard .dashboard-module-icon svg{width:18px;height:18px}
  .nippu-module-dashboard .module-card strong{font-size:.94rem!important}
  .nippu-module-dashboard .module-card small{display:none!important}
  .nippu-module-dashboard .dashboard-arrow{font-size:1.2rem}
  .nippu-module-dashboard .nippu-dashboard-heading{margin-bottom:6px}
  .nippu-module-dashboard .dashboard-edit-toggle{font-size:.72rem!important;padding:5px 8px!important}
}

/* =========================================================
   Työpöytä 2.8.1 — korjaus: moduulirivi säilyttää oikean leveyden
   ========================================================= */
.nippu-module-dashboard .nippu-dashboard-card{
  width:min(100%,620px)!important;
  max-width:620px!important;
}
.nippu-module-dashboard .nippu-dashboard-heading,
.nippu-module-dashboard .dashboard-edit-help,
.nippu-module-dashboard .dashboard-module-list,
.nippu-module-dashboard .dashboard-save-state{
  width:min(100%,520px)!important;
  max-width:520px!important;
  box-sizing:border-box!important;
}
.nippu-module-dashboard .dashboard-module-list{
  display:grid!important;
  grid-template-columns:minmax(0,1fr)!important;
  justify-items:stretch!important;
  align-items:stretch!important;
}
.nippu-module-dashboard .dashboard-module-row{
  display:block!important;
  width:100%!important;
  min-width:0!important;
  max-width:none!important;
  box-sizing:border-box!important;
}
.nippu-module-dashboard .dashboard-module-row > .module-card{
  width:100%!important;
  max-width:none!important;
  min-width:0!important;
  box-sizing:border-box!important;
  min-height:56px!important;
  height:56px!important;
  padding:7px 10px!important;
  display:grid!important;
  grid-template-columns:36px minmax(0,1fr) auto 14px!important;
  align-items:center!important;
  gap:10px!important;
  overflow:hidden!important;
}
.nippu-module-dashboard .dashboard-module-row > .module-card > span.dashboard-module-icon{
  display:grid!important;
  width:34px!important;
  height:34px!important;
  place-items:center!important;
}
.nippu-module-dashboard .dashboard-module-row > .module-card > strong{
  display:block!important;
  min-width:0!important;
  margin:0!important;
  padding:0!important;
  white-space:nowrap!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
}
.nippu-module-dashboard .dashboard-module-row > .module-card > small{
  display:block!important;
  position:static!important;
  min-width:max-content!important;
  margin:0!important;
  padding:0!important;
}
.nippu-module-dashboard .dashboard-module-row > .module-card > span.dashboard-arrow{
  display:block!important;
}
.dashboard-editing .nippu-module-dashboard .dashboard-module-row{
  display:grid!important;
  grid-template-columns:26px minmax(0,1fr) 34px!important;
  gap:6px!important;
  width:100%!important;
  align-items:center!important;
}
.dashboard-editing .nippu-module-dashboard .dashboard-module-row > .module-card{
  width:100%!important;
}
@media(max-width:700px){
  .nippu-module-dashboard .nippu-dashboard-card{
    width:100%!important;
    max-width:none!important;
  }
  .nippu-module-dashboard .nippu-dashboard-heading,
  .nippu-module-dashboard .dashboard-edit-help,
  .nippu-module-dashboard .dashboard-module-list,
  .nippu-module-dashboard .dashboard-save-state{
    width:100%!important;
    max-width:none!important;
  }
  .nippu-module-dashboard .dashboard-module-row > .module-card{
    height:52px!important;
    min-height:52px!important;
    grid-template-columns:32px minmax(0,1fr) 12px!important;
    gap:8px!important;
    padding:6px 9px!important;
  }
  .nippu-module-dashboard .dashboard-module-row > .module-card > span.dashboard-module-icon{
    width:30px!important;
    height:30px!important;
  }
  .nippu-module-dashboard .dashboard-module-row > .module-card > small{
    display:none!important;
  }
}


/* =========================================================
   Taskulista 4.5 — Taskuta / Uusi merkintä: itsenäinen dialogikerros
   ========================================================= */
body.nippu-module-project_control.tl-add-open{overflow:hidden!important}
body.nippu-with-nav.nippu-module-project_control .tl-addportal-backdrop{
  position:fixed!important;inset:0!important;z-index:4990!important;background:rgba(23,34,42,.28)!important;
  backdrop-filter:blur(1.5px);-webkit-backdrop-filter:blur(1.5px);
}
body.nippu-with-nav.nippu-module-project_control .tl-addpanel.tl-body-portal{
  display:block!important;visibility:visible!important;position:fixed!important;z-index:5000!important;
  left:calc(var(--nippu-nav-w) + (100vw - var(--nippu-nav-w))/2)!important;right:auto!important;
  top:50%!important;bottom:auto!important;transform:translate(-50%,-50%)!important;
  width:min(620px,calc(100vw - var(--nippu-nav-w) - 48px))!important;max-width:none!important;
  max-height:min(82vh,760px)!important;overflow:auto!important;-webkit-overflow-scrolling:touch!important;
  padding:20px 22px 22px!important;border:1px solid #d7cbae!important;border-radius:14px!important;
  background:#fffdf8!important;color:#202b38!important;box-shadow:0 20px 55px rgba(23,34,42,.24)!important;
}
body.nippu-with-nav.nippu-module-project_control .tl-addpanel.tl-body-portal .tl-add-title{
  display:block!important;margin:0 38px 14px 0!important;color:#173a5c!important;font-size:1.05rem!important;font-weight:850!important;line-height:1.2!important;
}
body.nippu-with-nav.nippu-module-project_control .tl-addpanel.tl-body-portal form{
  display:grid!important;gap:10px!important;margin:0!important;padding:0!important;position:static!important;
}
body.nippu-with-nav.nippu-module-project_control .tl-addpanel.tl-body-portal label{
  display:grid!important;gap:5px!important;margin:0!important;color:#173a5c!important;font-size:.84rem!important;font-weight:800!important;line-height:1.2!important;
}
body.nippu-with-nav.nippu-module-project_control .tl-addpanel.tl-body-portal input:not([type=checkbox]):not([type=radio]),
body.nippu-with-nav.nippu-module-project_control .tl-addpanel.tl-body-portal select,
body.nippu-with-nav.nippu-module-project_control .tl-addpanel.tl-body-portal textarea{
  width:100%!important;min-height:42px!important;height:auto!important;margin:0!important;padding:8px 10px!important;
  border:1px solid #d5c8aa!important;border-radius:9px!important;background:#fffefa!important;color:#21364b!important;
  font:inherit!important;font-size:.92rem!important;box-shadow:none!important;
}
body.nippu-with-nav.nippu-module-project_control .tl-addpanel.tl-body-portal textarea{min-height:110px!important;resize:vertical!important}
body.nippu-with-nav.nippu-module-project_control .tl-addpanel.tl-body-portal input[type=file]{
  display:block!important;min-height:52px!important;padding:8px!important;border-style:dashed!important;background:#fff!important;
}
body.nippu-with-nav.nippu-module-project_control .tl-addpanel.tl-body-portal .tl-dimensions{display:flex!important;align-items:center!important;gap:6px!important;flex-wrap:wrap!important;margin:2px 0!important}
body.nippu-with-nav.nippu-module-project_control .tl-addpanel.tl-body-portal .tl-dimensions label{display:inline-flex!important;align-items:center!important;gap:4px!important;font-size:.76rem!important}
body.nippu-with-nav.nippu-module-project_control .tl-addpanel.tl-body-portal .tl-dimensions input[type=checkbox]{width:auto!important;margin:0!important}
body.nippu-with-nav.nippu-module-project_control .tl-addpanel.tl-body-portal .tl-dim-panel[hidden],
body.nippu-with-nav.nippu-module-project_control .tl-addpanel.tl-body-portal [hidden]{display:none!important}
body.nippu-with-nav.nippu-module-project_control .tl-addpanel.tl-body-portal .tl-two{display:grid!important;grid-template-columns:1fr 1fr!important;gap:9px!important}
body.nippu-with-nav.nippu-module-project_control .tl-addpanel.tl-body-portal .tl-pocket-note,
body.nippu-with-nav.nippu-module-project_control .tl-addpanel.tl-body-portal .tl-min-note{color:#6f7b85!important;font-size:.76rem!important;line-height:1.35!important}
body.nippu-with-nav.nippu-module-project_control .tl-addpanel.tl-body-portal button[type=submit]{
  position:static!important;width:max-content!important;min-height:40px!important;margin:4px 0 0 auto!important;padding:8px 14px!important;
}
body.nippu-with-nav.nippu-module-project_control .tl-addportal-close{
  position:absolute!important;right:10px!important;top:10px!important;z-index:2!important;width:34px!important;height:34px!important;min-height:34px!important;
  padding:0!important;border:1px solid #ddd1b8!important;border-radius:50%!important;background:#fffaf0!important;color:#526273!important;
  font:700 22px/32px Arial,sans-serif!important;box-shadow:none!important;transform:none!important;
}
@media(max-width:900px){
  body.nippu-with-nav.nippu-module-project_control .tl-addpanel.tl-body-portal{
    left:8px!important;right:8px!important;top:8px!important;bottom:calc(84px + env(safe-area-inset-bottom))!important;
    width:auto!important;max-height:none!important;transform:none!important;padding:18px 14px 24px!important;border-radius:13px!important;
  }
  body.nippu-with-nav.nippu-module-project_control .tl-addpanel.tl-body-portal .tl-two{grid-template-columns:1fr!important}
}

/* NippuSystems 1.0.8 — yksi päälogo. Starttimerkki on toimintaleima, ei toinen kyltti. */
.nippu-dashboard-topbar{justify-content:flex-start}
.nippu-dashboard-mark{display:none!important}
.nippu-start-watermark{position:absolute;right:1.25rem;bottom:1rem;width:72px;height:72px;object-fit:contain;opacity:.045;pointer-events:none;user-select:none}
.tl-bulk-detect.show{line-height:1.35}
