:root, [data-theme="light"] {
  --text-xs: clamp(0.75rem, 0.7rem + 0.25vw, 0.875rem);
  --text-sm: clamp(0.875rem, 0.8rem + 0.35vw, 1rem);
  --text-base: clamp(1rem, 0.95rem + 0.25vw, 1.125rem);
  --text-lg: clamp(1.125rem, 1rem + 0.75vw, 1.5rem);
  --text-xl: clamp(1.5rem, 1.2rem + 1.25vw, 2.25rem);
  --space-1: 0.25rem; --space-2: 0.5rem; --space-3: 0.75rem; --space-4: 1rem;
  --space-5: 1.25rem; --space-6: 1.5rem; --space-8: 2rem; --space-10: 2.5rem;
  --space-12: 3rem; --space-16: 4rem;
  /* Palette EM3DESIGN */
  --color-bg: #ffffff;                 /* sfondo pagina */
  --color-surface: #fdf7f2;            /* pannelli principali */
  --color-surface-2: #ffffff;          /* superfici interne */
  --color-surface-offset: #ffb32f;     /* bordi ocra */
  --color-border: #ffb32f;             /* bordi ocra */
  --color-divider: #ffb32f;

  --color-text: #000000;               /* heading/body */
  --color-text-muted: #6c6c6c;
  --color-text-faint: #a0a0a0;

  --color-primary: #ff0005;            /* rosso brand */
  --color-primary-hover: #e02b20;      /* link/hover brand */
  --color-primary-highlight: #ffb32f;     /* bordi ocra */
  --color-success: #2f8f2f;            /* puoi lasciarlo neutro/compatibile */
  --color-error: #e02b20;              /* allineato al rosso brand */

  --color-text-inverse: #ffffff;       /* testo su bottoni rossi */

  --radius-sm: .5rem;
  --radius-md: .75rem;
  --radius-lg: 1rem;
  --radius-xl: 1.25rem;
  --radius-full: 9999px;

  --shadow-sm: 0 1px 2px rgba(0,0,0,.06);
  --shadow-md: 0 8px 24px rgba(0,0,0,.08);
  --shadow-lg: 0 18px 60px rgba(0,0,0,.12);

  --font-body: 'Instrument Sans', system-ui, sans-serif;
  --font-display: 'Instrument Sans', system-ui, sans-serif;
}

[data-theme="dark"] {
  --color-bg: #171614;
  --color-surface: #1c1b19;
  --color-surface-2: #201f1d;
  --color-surface-offset: #22211f;
  --color-border: #393836;
  --color-divider: #262523;
  --color-text: #cdccca;
  --color-text-muted: #9e9b95;
  --color-text-faint: #6d6b67;
      --color-primary: #ffb32f;
    --color-primary-hover: #e0920a;
  --color-primary-highlight: #313b3b;
  --color-success: #6daa45;
  --color-error: #d163a7;
  --color-text-inverse: #171614;
  --shadow-sm: 0 1px 2px rgba(0,0,0,.25);
  --shadow-md: 0 8px 24px rgba(0,0,0,.35);
  --shadow-lg: 0 18px 60px rgba(0,0,0,.45);
}

*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
body{
  margin:0;
  min-height:100vh;
  font-family:var(--font-body);
  font-size:var(--text-base);
  line-height:1.6;
  background:var(--color-bg);
  color:var(--color-text);
}
img,svg{display:block;max-width:100%}
button,input,textarea,select{font:inherit;color:inherit}
button{cursor:pointer}
a{color:inherit}
:focus-visible{outline:2px solid var(--color-primary);outline-offset:3px}

.app{display:grid;grid-template-columns:300px 1fr;min-height:100vh}
.sidebar{
  padding:var(--space-8);
  background:var(--color-surface);
  border-right:1px solid var(--color-border);
  position:sticky;top:0;height:100vh;
  overflow:auto;
}
.main{padding:var(--space-8);display:grid;gap:var(--space-8)}

.brand{display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-8);    text-align: center;     justify-content: center;}
.logo{
  width:38px;height:38px;
  border-radius:12px;
  background:linear-gradient(135deg,var(--color-primary-highlight),var(--color-surface-offset));
  display:grid;place-items:center;color:var(--color-primary);
}
.brand h1 {
  position: relative;
  display: inline-flex;
  align-items: center;
  padding: 5px 18px 5px 60px;
  margin: 0 auto 20px;
  border-radius: 18px;
  background: var(--color-primary-highlight);
  color: var(--color-primary);
  font-size: 25px;
  font-weight: 800;
  line-height: 1;
  letter-spacing: -0.03em;
}

.brand h1::before {
  content: "";
  position: absolute;
  left: -15px;
  top: 50%;
  width: 68px;
  height: 68px;
  transform: translateY(-50%);
  background: url("../images/favicon.png") center/contain no-repeat;
}
.brand p {
    color: var(--color-text-muted);
    font-size: 78%;
    text-align: center;
    max-width: 120px;
    line-height: 1.2;
    margin: 0 auto 10px;
}
.brand-credit {
    display: flex;
    align-items: center;
    gap: 0;
    font-style: italic;
    margin: 0 !important;
}
/* Logo EM3DESIGN come SVG locale */
#logo-EM3DESIGN{
  display:inline-block;
  width:140px;
  height:40px;
  vertical-align:middle;
  background:url("../images/Logo-EM3DESIGN_full.svg") center/contain no-repeat;
  text-decoration:none;
  flex:0 0 auto;
}
#logo-EM3DESIGN:hover,
#logo-EM3DESIGN:focus-visible{
  opacity:.88;
}
.favicon {
  display:block;
  width:16px;
  height:16px;
  border-radius:4px;
  flex-shrink:0;
}
.panel{
  background:var(--color-surface);
  border:1px solid var(--color-border);
  border-radius:var(--radius-xl);
  box-shadow:var(--shadow-sm);
}
.panel-pad{padding:var(--space-6)}

.toolbar{
  display:grid;
  grid-template-columns:1.4fr .9fr auto;
  gap:var(--space-4);
  align-items:end;
}

.field{display:grid;gap:var(--space-2)}
.label{font-size:var(--text-sm);font-weight:600}
.input,.textarea,.select{
  width:100%;
  padding:.9rem 1rem;
  border:1px solid var(--color-border);
  border-radius:var(--radius-md);
  background:var(--color-surface-2);
}
.textarea{min-height:110px;resize:vertical}

.actions{display:flex;flex-wrap:wrap;gap:var(--space-3)}
.btn{
  border:1px solid var(--color-border);
  background:var(--color-surface-2);
  padding:.85rem 1rem;
  border-radius:var(--radius-md);
  font-weight:600;
        transition: .5s;
}
.btn:hover {
    border-color: var(--color-primary);
}
.btn-primary{
  background:var(--color-primary);
  color:var(--color-text-inverse);
  border-color:var(--color-primary);
}
.btn-primary:hover{background:var(--color-primary-hover)}
.btn-ghost{background:transparent}
.btn-ghost:hover[data-action="delete"] {
    background: var(--color-primary);
    color: var(--color-text-inverse);
}
.btn-ghost:hover {
    background: var(--color-primary-highlight);
}
.hero{display:grid;grid-template-columns:1.25fr .9fr;gap:var(--space-6)}
.dropzone{
  border:2px dashed color-mix(in srgb, var(--color-primary) 35%, var(--color-border));
  border-radius:var(--radius-xl);
  padding:var(--space-8);
  background:linear-gradient(180deg,var(--color-surface-2),transparent);
  min-height:240px;
  display:grid;var(--color-text-inverse)
  align-content:center;
  gap:var(--space-4);
  transition:.18s ease;
}
.dropzone.is-over{
  transform:translateY(-2px);
  border-color:var(--color-primary);
  box-shadow:var(--shadow-md);
}
.dropzone h2{
  margin:0;
  font-family:var(--font-display);
  font-size:clamp(2rem,1.2rem + 2vw,3.2rem);
  line-height:1;
}

.muted{color:var(--color-text-muted)}
.tiny{font-size:var(--text-xs);color:var(--color-text-faint)}

.quick-grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:var(--space-4);
  margin-top:var(--space-4);
}
.stat{
  padding:var(--space-4);
  border:1px solid var(--color-border);
  border-radius:var(--radius-lg);
  background:var(--color-surface-2);
}
.stat strong{display:block;font-size:var(--text-lg)}

.category-list,.link-list{display:grid;gap:var(--space-3)}

.chip{
  display:inline-flex;
  align-items:center;
  gap:.45rem;
  padding:.45rem .8rem;
  border-radius:var(--radius-full);
      border: 1px solid var(--color-border);
  color:var(--color-primary);
  font-size:var(--text-xs);
  font-weight:700;
}
.category-item[data-category="all"] span {
  font-weight: 700;
}
.category-item {
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:var(--space-3);
  padding:.75rem .9rem;
  border-radius:var(--radius-md);
  background:var(--color-surface-2);
  border:1px solid var(--color-border);
  cursor:pointer;
  transition: background .15s ease, border-color .15s ease, color .15s ease;
      position: relative;
          transition: .5s;
}

.category-item .category-name {
  flex:1;
}

.category-meta {
  display:flex;
  align-items:center;
  gap:.15rem;
}

/* numero categoria */
.category-meta > strong {
  min-width: 1.5em;
  text-align: right;
  font-variant-numeric: tabular-nums;
}

/* bottoni azione categoria: piccoli e discreti */
.cat-btn {
  border:none;
  background:transparent;
  margin-left:.05rem;
  cursor:pointer;
  line-height: 1;
    opacity: 0;
    position: absolute;
    top: 4px;
    right: -25px;
    padding: 5px;
    transition: .5s;
        font-size: 75%;
}
.cat-btn.cat-delete {
    transform: translateY(100%);
}
.category-item:hover .cat-btn {
    opacity: 0.5;
}
.cat-btn:hover,
.cat-btn:focus-visible {
  opacity:1 !important;
}

/* Hover / attivo */
.category-item:hover {
  border-color: var(--color-primary);
  background: var(--color-surface-offset);
}

.category-item.is-active {
  background: var(--color-primary-highlight);
  color: var(--color-primary);
}

/* "Tutte" sempre un po' in evidenza */
.category-item[data-category="all"] span.category-name {
  font-weight: 700;
}

/* opzionale: nessuna icona sulla riga "Tutte" (già così, ma per sicurezza) */
.category-item[data-category="all"] .cat-btn {
  display:none;
}

.category-item:hover {
  border-color: var(--color-primary);
}

.category-item.is-active {
  background: var(--color-primary-highlight);
  color: var(--color-primary);
}

.cards-header{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:var(--space-4);
}

.link-card{
  padding:var(--space-5);
  border-radius:var(--radius-lg);
  border:1px solid var(--color-border);
  background:var(--color-surface);
  display:grid;
  gap:var(--space-3);
}

.link-top{
  display:flex;
  justify-content:space-between;
  gap:var(--space-4);
  align-items:flex-start;
}

.link-card h3{margin:0;font-size:1.05rem}
.link-url{
  font-size:var(--text-sm);
  color:var(--color-text-muted);
  word-break:break-all;
}

.link-notes{white-space:pre-wrap}

/* Toggle note */
.notes-toggle{
  display:inline-flex;
  align-items:center;
  gap:.45rem;
  padding:.5rem .75rem;
  border:1px solid var(--color-border);
  border-radius:var(--radius-full);
  background:var(--color-surface-2);
  font-size:var(--text-xs);
  font-weight:700;
  color:var(--color-text-muted);
        transition: .5s;
}
.notes-toggle:hover{
  color:var(--color-primary);
  border-color:var(--color-primary);
}
.notes-panel{
  display:grid;
  gap:var(--space-3);
  padding-top:var(--space-2);
}
.notes-panel[hidden]{display:none}

.tags{display:flex;flex-wrap:wrap;gap:var(--space-2)}
.tag{
  padding:.35rem .65rem;
  border-radius:var(--radius-full);
      border: 1px solid var(--color-border);
  font-size:var(--text-xs);
}

.empty{
  padding:var(--space-12);
  text-align:center;
  color:var(--color-text-muted);
  border:1px dashed var(--color-border);
  border-radius:var(--radius-lg);
  background:var(--color-surface-2);
}

.topbar{
  display:flex;
  justify-content:space-between;
  gap:var(--space-4);
  align-items:center;
}

.theme-toggle{
  width:44px;
  height:44px;
  border-radius:50%;
  display:grid;
  place-items:center;
}

dialog{
  border:none;
  padding:0;
  background:transparent;
  max-width:min(860px,calc(100vw - 2rem));
  width:100%;
}
dialog::backdrop{
  background:rgba(0,0,0,.48);
  backdrop-filter:blur(4px);
}

.modal{
  background:var(--color-surface);
  color:var(--color-text);
  border:1px solid var(--color-border);
  border-radius:1.25rem;
  box-shadow:var(--shadow-lg);
  overflow:hidden;
}
.modal-head,.modal-body,.modal-foot{padding:var(--space-6)}
.modal-head,.modal-foot{border-bottom:1px solid var(--color-divider)}
.modal-foot{
  border-top:1px solid var(--color-divider);
  border-bottom:none;
  display:flex;
  justify-content:space-between;
  gap:var(--space-4);
  flex-wrap:wrap;
}
.modal-head {
  border-bottom:1px solid var(--color-divider);
}

.modal-close {
  border:none;
  background:transparent;
  font-size:3rem;
  line-height:1;
  padding:0;
  margin:-10px 0 0;
  cursor:pointer;
  color:var(--color-text-muted);
}

.modal-close:hover,
.modal-close:focus-visible {
  color:var(--color-primary);
}

.grid-2{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:var(--space-4);
}

.prompt-preview{
  padding:var(--space-4);
  border-radius:var(--radius-lg);
  background:var(--color-surface-2);
  border:1px solid var(--color-border);
  white-space:pre-wrap;
  font-size:var(--text-sm);
  max-height:220px;
  overflow:auto;
}

.notice{
  padding:.85rem 1rem;
  border-radius:var(--radius-md);
  background:var(--color-primary);
  color:var(--color-text-inverse);
  font-size:var(--text-sm);
  display:none;
  border: 4px solid var(--color-primary-highlight);
}
.notice.show{display:block}

.sr-only{
  position:absolute;
  width:1px;
  height:1px;
  padding:0;
  margin:-1px;
  overflow:hidden;
  clip:rect(0,0,0,0);
  white-space:nowrap;
  border:0;
}

@media (max-width: 980px){
  .app{grid-template-columns:1fr}
  .sidebar{
    position:relative;
    height:auto;
    border-right:none;
    border-bottom:1px solid var(--color-border);
  }
  .hero,.toolbar,.grid-2{grid-template-columns:1fr}
  .main,.sidebar{padding:var(--space-5);padding-top: var(--space-10);}
  .quick-grid{grid-template-columns:1fr}
}