/* Sofialize — Area Riservata: stili scoped sotto .sof-portal, brand Sofialize
   (Midnight Violet · Dusty Grape · Periwinkle · Parchment · Atomic Tangerine — DM Sans + Fraunces) */
.sof-portal{
  --sof-violet:#160029;
  --sof-violet-soft:#2b0a48;
  --sof-grape:#6B508E;
  --sof-grape-tint:#9C86C2;
  --sof-periwinkle:#C8CEF9;
  --sof-parchment:#FEF8F4;
  --sof-tangerine:#E07A45;
  --sof-tangerine-deep:#B5541F;
  --sof-tangerine-bg:#FBE6D8;
  --sof-green:#2F7A56;
  --sof-green-bg:#DCF0E6;
  --sof-ink:#221733;
  --sof-muted:#7a7186;
  --sof-line:#E7E1F2;
  --sof-card-bg:#ffffff;
  --sof-radius-lg:18px;
  --sof-radius-md:12px;
  --sof-radius-sm:8px;
  --sof-shadow:0 4px 18px rgba(22,0,41,0.07);
  --sof-shadow-hover:0 8px 28px rgba(22,0,41,0.12);
  background:var(--sof-parchment);
  color:var(--sof-ink);
  font-family:'DM Sans', -apple-system, BlinkMacSystemFont, sans-serif;
  line-height:1.5;
  border-radius:var(--sof-radius-lg);
  padding:0;
  max-width:1100px;
  margin:32px auto;
  overflow:hidden;
  box-shadow:0 20px 60px rgba(22,0,41,.12);
  border:1px solid var(--sof-line);
}
.sof-portal *{box-sizing:border-box;}
.sof-portal a{color:inherit;text-decoration:none;}
.sof-portal button{font-family:inherit;cursor:pointer;}
.sof-portal h1,.sof-portal h2,.sof-portal h3{margin:0;font-family:'DM Sans', sans-serif;}
.sof-serif{font-family:'Fraunces', Georgia, serif;}

.sof-logo-img{display:block;object-fit:contain;}
.sof-logo-lg{height:40px;margin:0 auto 18px;}
.sof-logo-sm{height:26px;}

/* Login */
.sof-login-box{
  max-width:440px;margin:0 auto;padding:52px 40px;
  background:linear-gradient(135deg, var(--sof-violet) 0%, var(--sof-violet-soft) 100%);
  position:relative;overflow:hidden;
}
.sof-login-box::after{
  content:"";position:absolute;right:-70px;top:-70px;width:260px;height:260px;border-radius:50%;
  background:radial-gradient(circle, rgba(224,122,69,0.30), transparent 70%);
}
.sof-login-head{text-align:center;margin-bottom:26px;position:relative;z-index:1;}
.sof-login-head h2{font-family:'Fraunces', serif;font-size:29px;margin:8px 0 10px;color:#fff;font-weight:600;}
.sof-login-head p{color:var(--sof-periwinkle);font-size:14px;margin:0;font-family:'Fraunces', serif;font-style:italic;line-height:1.5;}
.sof-portal .login-username,.sof-portal .login-password{position:relative;z-index:1;}
.sof-portal .login-username label,.sof-portal .login-password label{display:block;font-size:11.5px;color:var(--sof-periwinkle);margin-bottom:6px;text-transform:uppercase;letter-spacing:.06em;font-weight:700;}
.sof-portal .login-username input,.sof-portal .login-password input{width:100%;background:rgba(255,255,255,.06);border:1px solid rgba(200,206,249,.35);color:#fff;padding:12px 14px;border-radius:999px;font-size:14.5px;margin-bottom:16px;font-family:'DM Sans',sans-serif;}
.sof-portal .login-username input::placeholder,.sof-portal .login-password input::placeholder{color:rgba(255,255,255,.4);}
.sof-portal .login-username input:focus,.sof-portal .login-password input:focus{outline:none;border-color:var(--sof-tangerine);background:rgba(255,255,255,.1);}
.sof-portal .login-remember{color:var(--sof-periwinkle);font-size:13px;margin-bottom:18px;display:flex;align-items:center;gap:6px;position:relative;z-index:1;}
.sof-portal .login-submit{position:relative;z-index:1;}
.sof-portal .login-submit input[type="submit"]{width:100%;background:var(--sof-tangerine);color:#fff;border:none;padding:13px 0;border-radius:999px;font-size:14.5px;font-weight:700;letter-spacing:.02em;box-shadow:var(--sof-shadow);}
.sof-portal .login-submit input[type="submit"]:hover{background:var(--sof-tangerine-deep);}
.sof-login-foot{text-align:center;margin-top:20px;font-size:13px;position:relative;z-index:1;}
.sof-login-foot a{color:var(--sof-periwinkle);}
.sof-login-foot a:hover{color:#fff;}

.sof-alert{background:#fff;border:1px solid var(--sof-periwinkle);border-radius:var(--sof-radius-md);padding:13px 18px;font-size:13.5px;color:var(--sof-grape);margin:20px 24px;}
.sof-alert-error{border-color:var(--sof-tangerine);color:var(--sof-tangerine-deep);background:var(--sof-tangerine-bg);}

/* Topbar */
.sof-topbar{
  display:flex;justify-content:space-between;align-items:center;padding:20px 32px;
  background:linear-gradient(135deg, var(--sof-violet) 0%, var(--sof-violet-soft) 100%);
}
.sof-who{font-size:13px;color:var(--sof-periwinkle);}
.sof-who span{color:#fff;font-weight:600;}
.sof-who a{color:var(--sof-periwinkle);}
.sof-who a:hover{color:#fff;}

/* Layout */
.sof-page-head{padding:30px 32px 0;}
.sof-page-title{font-family:'Fraunces', serif;font-size:26px;color:var(--sof-violet);font-weight:600;}
.sof-sub{color:var(--sof-muted);font-size:13.5px;margin-top:4px;}
.sof-back-link{padding:18px 32px 0;font-size:13px;}
.sof-back-link a{color:var(--sof-grape);font-weight:600;}
.sof-back-link a:hover{color:var(--sof-tangerine-deep);}

.sof-project-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px;padding:20px 32px 34px;}
.sof-project-card{background:var(--sof-card-bg);border:1px solid var(--sof-line);border-radius:var(--sof-radius-lg);padding:20px;display:block;box-shadow:var(--sof-shadow);transition:box-shadow .15s,transform .15s;}
.sof-project-card:hover{box-shadow:var(--sof-shadow-hover);transform:translateY(-2px);}
.sof-project-card h3{font-family:'Fraunces',serif;font-size:16.5px;margin-bottom:4px;color:var(--sof-violet);}
.sof-sector{font-size:12px;color:var(--sof-muted);}

.sof-tabs{display:flex;gap:10px;padding:22px 32px 0;flex-wrap:wrap;}
.sof-tab-btn{
  background:#fff;border:1px solid var(--sof-line);color:var(--sof-grape);
  padding:11px 20px;border-radius:999px;font-size:14px;font-weight:600;box-shadow:var(--sof-shadow);
}
.sof-tab-btn:hover{border-color:var(--sof-grape);}
.sof-tab-btn.active{background:var(--sof-tangerine);color:#fff;border-color:var(--sof-tangerine);}
.sof-tab-panel{display:none;padding:24px 32px 40px;}
.sof-tab-panel.active{display:block;}

.sof-empty{color:var(--sof-muted);font-size:13.5px;padding:34px;text-align:center;border:1px dashed var(--sof-line);border-radius:var(--sof-radius-lg);background:#fff;}

/* Brand manual */
.sof-bm-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
@media (max-width:640px){.sof-bm-grid{grid-template-columns:1fr;}}
.sof-bm-card{background:var(--sof-card-bg);border-radius:var(--sof-radius-lg);padding:22px 24px;box-shadow:var(--sof-shadow);}
.sof-bm-card h3{font-size:11.5px;text-transform:uppercase;letter-spacing:.07em;color:var(--sof-tangerine-deep);margin-bottom:11px;font-weight:700;}
.sof-bm-card p{margin:0;font-size:14.5px;line-height:1.65;color:var(--sof-ink);font-family:'Fraunces',serif;}
.sof-bm-card.sof-wide{grid-column:1/-1;}
.sof-pill-row{display:flex;flex-wrap:wrap;gap:8px;}
.sof-pill{background:var(--sof-parchment);border:1px solid var(--sof-line);padding:6px 14px;border-radius:999px;font-size:13px;color:var(--sof-violet);font-weight:600;}
.sof-list{margin:0;padding-left:20px;color:var(--sof-ink);font-size:14.5px;line-height:1.85;font-family:'Fraunces',serif;}
.sof-palette{display:flex;gap:10px;flex-wrap:wrap;}
.sof-swatch{width:66px;}
.sof-chip{height:44px;border-radius:var(--sof-radius-sm);border:1px solid var(--sof-line);}
.sof-hex{font-size:11px;color:var(--sof-muted);margin-top:5px;text-align:center;font-family:monospace;}

/* Calendario */
.sof-post-card{background:var(--sof-card-bg);border-radius:var(--sof-radius-lg);padding:18px 20px;margin-bottom:14px;box-shadow:var(--sof-shadow);border:1px solid transparent;transition:box-shadow .15s;}
.sof-post-card:hover{box-shadow:var(--sof-shadow-hover);}
.sof-post-row1{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap;}
.sof-post-meta{font-size:12px;color:var(--sof-muted);display:flex;gap:8px;align-items:center;margin-bottom:6px;flex-wrap:wrap;font-weight:600;text-transform:uppercase;letter-spacing:.02em;}
.sof-dot{opacity:.5;}
.sof-post-title{font-family:'Fraunces',serif;font-size:17px;font-weight:600;margin:2px 0 6px;color:var(--sof-violet);line-height:1.3;}
.sof-post-desc{font-size:13.5px;color:var(--sof-muted);line-height:1.6;font-family:'Fraunces',serif;}
.sof-post-desc p{margin:0 0 8px;}
.sof-status-badge{font-size:11px;font-weight:700;padding:5px 13px;border-radius:999px;white-space:nowrap;}
.sof-status-bozza{background:#EDEAF2;color:var(--sof-muted);}
.sof-status-revisione{background:var(--sof-tangerine-bg);color:var(--sof-tangerine-deep);}
.sof-status-approvato{background:var(--sof-green-bg);color:var(--sof-green);}
.sof-status-programmato{background:#E4E1F7;color:#4A3A66;}
.sof-status-pubblicato{background:var(--sof-tangerine);color:#fff;}
.sof-post-actions{display:flex;gap:10px;margin-top:16px;flex-wrap:wrap;}
.sof-btn{border:1px solid var(--sof-line);background:var(--sof-parchment);color:var(--sof-grape);padding:9px 18px;border-radius:999px;font-size:12.5px;font-weight:700;}
.sof-btn:hover{border-color:var(--sof-grape);background:#F3EAFB;}
.sof-btn-ok{background:var(--sof-green);border-color:var(--sof-green);color:#fff;}
.sof-btn-ok:hover{background:#256345;border-color:#256345;}
.sof-comment-box{margin-top:14px;display:none;border-top:1px dashed var(--sof-line);padding-top:14px;}
.sof-comment-box.open{display:block;}
.sof-comment-text{width:100%;background:#FCFAFE;border:1px solid var(--sof-line);border-radius:var(--sof-radius-sm);color:var(--sof-ink);padding:11px 13px;font-size:14px;font-family:'Fraunces',serif;resize:vertical;min-height:60px;}
.sof-comment-text:focus{outline:none;border-color:var(--sof-grape);background:#fff;}
.sof-comment-submit{margin-top:10px;}
.sof-comment-list{margin-top:12px;display:flex;flex-direction:column;gap:8px;}
.sof-comment-item{background:var(--sof-parchment);border:1px solid var(--sof-line);border-radius:var(--sof-radius-sm);padding:10px 13px;font-size:13px;}
.sof-comment-who{font-weight:700;color:var(--sof-tangerine-deep);font-size:11.5px;text-transform:uppercase;letter-spacing:.03em;}
.sof-comment-txt{color:var(--sof-ink);margin-top:3px;font-family:'Fraunces',serif;}
.sof-form-msg{font-size:12.5px;margin-top:8px;font-weight:600;}
.sof-form-msg.sof-msg-error{color:var(--sof-tangerine-deep);}

/* Media */
.sof-media-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px;}
.sof-media-card{background:var(--sof-card-bg);border-radius:var(--sof-radius-lg);overflow:hidden;box-shadow:var(--sof-shadow);transition:box-shadow .15s;}
.sof-media-card:hover{box-shadow:var(--sof-shadow-hover);}
.sof-media-thumb{height:150px;position:relative;background:var(--sof-periwinkle);display:flex;align-items:center;justify-content:center;overflow:hidden;}
.sof-media-thumb img{width:100%;height:100%;object-fit:cover;}
.sof-type-tag{position:absolute;top:10px;left:10px;background:rgba(22,0,41,.55);font-size:11px;font-weight:700;padding:4px 10px;border-radius:999px;color:#fff;}
.sof-media-body{padding:15px 16px;}
.sof-media-title{font-family:'Fraunces',serif;font-size:14.5px;font-weight:600;margin-bottom:2px;color:var(--sof-violet);}
.sof-media-date{font-size:12px;color:var(--sof-muted);margin-bottom:13px;}
.sof-btn-dl{display:block;text-align:center;background:var(--sof-tangerine);color:#fff;padding:10px 0;border-radius:999px;font-size:12.5px;font-weight:700;}
.sof-btn-dl:hover{background:var(--sof-tangerine-deep);color:#fff;}
.sof-media-note{display:block;text-align:center;font-size:11.5px;color:var(--sof-muted);font-style:italic;padding:6px 0;}

/* Calendario a griglia (anteprima mese, prima dell'elenco script) */
.sof-cal-wrap{margin-bottom:26px;}
.sof-cal-month{margin-bottom:22px;}
.sof-cal-month-title{font-family:'Fraunces',serif;font-size:18px;color:var(--sof-violet);margin-bottom:10px;}
.sof-cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;}
.sof-cal-weekday{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--sof-muted);text-align:center;padding-bottom:4px;}
.sof-cal-cell{background:var(--sof-card-bg);border:1px solid var(--sof-line);border-radius:var(--sof-radius-sm);min-height:64px;min-width:0;padding:6px;display:flex;flex-direction:column;gap:4px;overflow:hidden;}
.sof-cal-cell-empty{background:transparent;border:none;}
.sof-cal-daynum{font-size:11px;color:var(--sof-muted);font-weight:700;}
.sof-cal-item{display:flex;align-items:center;gap:6px;background:var(--sof-parchment);border-radius:7px;padding:3px 6px;min-width:0;max-width:100%;}
.sof-cal-thumb{width:22px;height:22px;border-radius:5px;object-fit:cover;flex-shrink:0;}
.sof-cal-thumb-icon{display:flex;align-items:center;justify-content:center;font-size:13px;background:var(--sof-periwinkle);}
.sof-cal-item-body{display:flex;flex-direction:column;min-width:0;flex:1;overflow:hidden;}
.sof-cal-item-title{font-size:10.5px;font-weight:600;color:var(--sof-violet);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.sof-cal-item-time{font-size:9.5px;color:var(--sof-muted);}
.sof-status-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;}
@media (max-width:640px){
  .sof-cal-grid{grid-template-columns:repeat(7,minmax(0,1fr));}
  .sof-cal-item-title{display:none;}
}

/* Pannello Admin */
.sof-admin-card{background:var(--sof-card-bg);border-radius:var(--sof-radius-lg);padding:24px 26px;box-shadow:var(--sof-shadow);margin-bottom:20px;}
.sof-admin-card h3{font-family:'Fraunces',serif;font-size:17px;color:var(--sof-violet);margin-bottom:16px;}
.sof-admin-form{display:flex;flex-direction:column;gap:14px;}
.sof-form-row{display:flex;flex-direction:column;gap:6px;}
.sof-form-row label{font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--sof-tangerine-deep);}
.sof-form-row input[type="text"],.sof-form-row input[type="email"],.sof-form-row input[type="date"],.sof-form-row input[type="time"],.sof-form-row input[type="file"],.sof-form-row textarea,.sof-form-row select{
  border:1px solid var(--sof-line);border-radius:var(--sof-radius-sm);padding:10px 12px;font-size:14px;font-family:'DM Sans',sans-serif;color:var(--sof-ink);background:#FCFAFE;
}
.sof-form-row input:focus,.sof-form-row textarea:focus,.sof-form-row select:focus{outline:none;border-color:var(--sof-grape);background:#fff;}
.sof-form-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:14px;}
.sof-form-grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px;}
@media (max-width:640px){.sof-form-grid-2,.sof-form-grid-3{grid-template-columns:1fr;}}
.sof-font-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;}
.sof-font-grid input{border:1px solid var(--sof-line);border-radius:var(--sof-radius-sm);padding:10px 12px;font-size:13.5px;font-family:'DM Sans',sans-serif;background:#FCFAFE;}
.sof-color-grid{display:flex;gap:10px;flex-wrap:wrap;}
.sof-color-grid input[type="color"]{width:52px;height:40px;border:1px solid var(--sof-line);border-radius:var(--sof-radius-sm);padding:2px;background:#fff;cursor:pointer;}
.sof-form-hint{font-size:11.5px;color:var(--sof-muted);font-style:italic;}
.sof-alert-ok{border-color:var(--sof-green);color:var(--sof-green);background:var(--sof-green-bg);}
.sof-admin-list{display:flex;flex-direction:column;gap:8px;}
.sof-admin-list-row{display:flex;align-items:center;gap:10px;padding:9px 12px;border:1px solid var(--sof-line);border-radius:var(--sof-radius-sm);font-size:13px;}
.sof-admin-list-date{color:var(--sof-muted);font-size:11.5px;min-width:44px;}
.sof-admin-list-title{flex:1;font-weight:600;color:var(--sof-violet);}
.sof-btn-sm{border:1px solid var(--sof-line);background:var(--sof-parchment);color:var(--sof-grape);padding:5px 12px;border-radius:999px;font-size:11.5px;font-weight:700;}
.sof-btn-sm:hover{border-color:var(--sof-grape);background:#F3EAFB;}
