diff --git a/src/pages/saju/_shell/shell.css b/src/pages/saju/_shell/shell.css
new file mode 100644
index 0000000..596ff34
--- /dev/null
+++ b/src/pages/saju/_shell/shell.css
@@ -0,0 +1,81 @@
+/* 호령 사주 v2 — 배경 + ornament + animation */
+
+/* paper texture */
+.saju-v2 .paper-bg {
+ background:
+ radial-gradient(ellipse at top, rgba(212, 175, 55, 0.06), transparent 60%),
+ radial-gradient(ellipse at bottom, rgba(106, 76, 124, 0.04), transparent 60%),
+ linear-gradient(180deg, var(--ivory) 0%, var(--ivory-soft) 100%);
+ position: relative;
+}
+.saju-v2 .paper-bg::after {
+ content: '';
+ position: absolute; inset: 0; pointer-events: none;
+ background-image:
+ radial-gradient(circle at 20% 30%, rgba(180, 140, 80, 0.04) 0, transparent 40%),
+ radial-gradient(circle at 80% 70%, rgba(180, 140, 80, 0.04) 0, transparent 40%);
+}
+
+/* night sky */
+.saju-v2 .night-bg {
+ background:
+ radial-gradient(ellipse 80% 50% at 30% 20%, rgba(232, 199, 107, 0.18), transparent 60%),
+ radial-gradient(ellipse 60% 40% at 80% 80%, rgba(106, 76, 124, 0.3), transparent 60%),
+ linear-gradient(180deg, var(--navy-deep) 0%, var(--navy) 55%, #1A2238 100%);
+ position: relative;
+ color: var(--ivory);
+}
+
+/* mountain wash (desktop hero) */
+.saju-v2 .mt-wash {
+ position: relative;
+ background:
+ radial-gradient(ellipse 70% 50% at 10% 80%, rgba(31, 42, 68, 0.06), transparent 65%),
+ radial-gradient(ellipse 60% 40% at 90% 70%, rgba(31, 42, 68, 0.05), transparent 65%),
+ radial-gradient(ellipse 100% 60% at 50% 100%, rgba(212, 175, 55, 0.04), transparent 70%),
+ linear-gradient(180deg, var(--ivory-soft) 0%, #F4ECDB 100%);
+}
+.saju-v2 .mt-wash::before,
+.saju-v2 .mt-wash::after {
+ content: ''; position: absolute; pointer-events: none;
+ background-repeat: no-repeat; opacity: 0.35; background-size: contain;
+}
+.saju-v2 .mt-wash::before {
+ left: 0; bottom: 0; width: 320px; height: 160px;
+ background-image: url("data:image/svg+xml;utf8,");
+}
+.saju-v2 .mt-wash::after {
+ right: 0; bottom: 0; width: 380px; height: 180px;
+ background-image: url("data:image/svg+xml;utf8,");
+}
+
+/* screen entry */
+@keyframes saju-screen-in {
+ from { transform: translateY(6px); opacity: 0.8; }
+ to { transform: translateY(0); opacity: 1; }
+}
+.saju-v2 .screen-in {
+ animation: saju-screen-in 0.3s cubic-bezier(0.16, 1, 0.3, 1) both;
+}
+
+/* paw bob */
+@keyframes saju-paw-bob {
+ 0%, 100% { transform: translateY(0); }
+ 50% { transform: translateY(-2px); }
+}
+.saju-v2 .paw-bob {
+ animation: saju-paw-bob 2.4s ease-in-out infinite;
+ display: inline-block;
+}
+
+/* page container */
+.saju-v2 .page {
+ min-height: 100vh;
+ padding-bottom: var(--bottom-nav-h);
+}
+@media (min-width: 1024px) {
+ .saju-v2 .page {
+ padding-bottom: 0;
+ padding-top: var(--desktop-header-h);
+ }
+}